diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b3bb2668..edb7a9e2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: cache: true cache-workspaces: true components: clippy, rustfmt - toolchain: nightly + toolchain: stable - name: 'Install dependencies: Node' run: yarn - name: 'Install dependencies: Rust' diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5bda002a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "rust-analyzer.trace.server": "verbose" +} diff --git a/.yarn/cache/@emnapi-runtime-npm-1.2.0-36d2203035-c9f5814f65.zip b/.yarn/cache/@emnapi-runtime-npm-1.2.0-36d2203035-c9f5814f65.zip new file mode 100644 index 00000000..098a9d6a Binary files /dev/null and b/.yarn/cache/@emnapi-runtime-npm-1.2.0-36d2203035-c9f5814f65.zip differ diff --git a/.yarn/cache/@img-sharp-darwin-arm64-npm-0.33.5-c319591c53-8.zip b/.yarn/cache/@img-sharp-darwin-arm64-npm-0.33.5-c319591c53-8.zip new file mode 100644 index 00000000..ac54a013 Binary files /dev/null and b/.yarn/cache/@img-sharp-darwin-arm64-npm-0.33.5-c319591c53-8.zip differ diff --git a/.yarn/cache/@img-sharp-libvips-darwin-arm64-npm-1.0.4-d0d063884a-8.zip b/.yarn/cache/@img-sharp-libvips-darwin-arm64-npm-1.0.4-d0d063884a-8.zip new file mode 100644 index 00000000..9323ffce Binary files /dev/null and b/.yarn/cache/@img-sharp-libvips-darwin-arm64-npm-1.0.4-d0d063884a-8.zip differ diff --git a/.yarn/cache/@puppeteer-browsers-npm-1.9.1-f9743bc3b8-1ea82e34af.zip b/.yarn/cache/@puppeteer-browsers-npm-1.9.1-f9743bc3b8-1ea82e34af.zip deleted file mode 100644 index d7216d5f..00000000 Binary files a/.yarn/cache/@puppeteer-browsers-npm-1.9.1-f9743bc3b8-1ea82e34af.zip and /dev/null differ diff --git a/.yarn/cache/@puppeteer-browsers-npm-2.4.0-853d13247c-c5f9890f1b.zip b/.yarn/cache/@puppeteer-browsers-npm-2.4.0-853d13247c-c5f9890f1b.zip new file mode 100644 index 00000000..7f3753dc Binary files /dev/null and b/.yarn/cache/@puppeteer-browsers-npm-2.4.0-853d13247c-c5f9890f1b.zip differ diff --git a/.yarn/cache/@types-node-npm-22.5.4-50cd3ae186-77ac225c38.zip b/.yarn/cache/@types-node-npm-22.5.4-50cd3ae186-77ac225c38.zip new file mode 100644 index 00000000..69ddd763 Binary files /dev/null and b/.yarn/cache/@types-node-npm-22.5.4-50cd3ae186-77ac225c38.zip differ diff --git a/.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip b/.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip deleted file mode 100644 index b4f50434..00000000 Binary files a/.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip and /dev/null differ diff --git a/.yarn/cache/chromium-bidi-npm-0.5.8-73f0da8592-4e4bb8d390.zip b/.yarn/cache/chromium-bidi-npm-0.5.8-73f0da8592-4e4bb8d390.zip deleted file mode 100644 index d94bcddb..00000000 Binary files a/.yarn/cache/chromium-bidi-npm-0.5.8-73f0da8592-4e4bb8d390.zip and /dev/null differ diff --git a/.yarn/cache/chromium-bidi-npm-0.6.5-f799a450f2-7e240ef392.zip b/.yarn/cache/chromium-bidi-npm-0.6.5-f799a450f2-7e240ef392.zip new file mode 100644 index 00000000..05cce323 Binary files /dev/null and b/.yarn/cache/chromium-bidi-npm-0.6.5-f799a450f2-7e240ef392.zip differ diff --git a/.yarn/cache/cross-fetch-npm-4.0.0-9c67668db4-ecca4f37ff.zip b/.yarn/cache/cross-fetch-npm-4.0.0-9c67668db4-ecca4f37ff.zip deleted file mode 100644 index bddbef91..00000000 Binary files a/.yarn/cache/cross-fetch-npm-4.0.0-9c67668db4-ecca4f37ff.zip and /dev/null differ diff --git a/.yarn/cache/debug-npm-4.3.7-385645adf9-822d74e209.zip b/.yarn/cache/debug-npm-4.3.7-385645adf9-822d74e209.zip new file mode 100644 index 00000000..f3a0c54c Binary files /dev/null and b/.yarn/cache/debug-npm-4.3.7-385645adf9-822d74e209.zip differ diff --git a/.yarn/cache/decompress-response-npm-6.0.0-359de2878c-d377cf47e0.zip b/.yarn/cache/decompress-response-npm-6.0.0-359de2878c-d377cf47e0.zip deleted file mode 100644 index bbc1db51..00000000 Binary files a/.yarn/cache/decompress-response-npm-6.0.0-359de2878c-d377cf47e0.zip and /dev/null differ diff --git a/.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip b/.yarn/cache/detect-libc-npm-2.0.3-2ddae34945-2ba6a939ae.zip similarity index 60% rename from .yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip rename to .yarn/cache/detect-libc-npm-2.0.3-2ddae34945-2ba6a939ae.zip index 1db92146..99bfcca3 100644 Binary files a/.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip and b/.yarn/cache/detect-libc-npm-2.0.3-2ddae34945-2ba6a939ae.zip differ diff --git a/.yarn/cache/devtools-protocol-npm-0.0.1232444-8db7c59cf2-b421a3c205.zip b/.yarn/cache/devtools-protocol-npm-0.0.1232444-8db7c59cf2-b421a3c205.zip deleted file mode 100644 index fb7baaf4..00000000 Binary files a/.yarn/cache/devtools-protocol-npm-0.0.1232444-8db7c59cf2-b421a3c205.zip and /dev/null differ diff --git a/.yarn/cache/devtools-protocol-npm-0.0.1330662-c766f6c875-de34cf3330.zip b/.yarn/cache/devtools-protocol-npm-0.0.1330662-c766f6c875-de34cf3330.zip new file mode 100644 index 00000000..5420cfa8 Binary files /dev/null and b/.yarn/cache/devtools-protocol-npm-0.0.1330662-c766f6c875-de34cf3330.zip differ diff --git a/.yarn/cache/expand-template-npm-2.0.3-80de959306-588c198472.zip b/.yarn/cache/expand-template-npm-2.0.3-80de959306-588c198472.zip deleted file mode 100644 index ec0c34f0..00000000 Binary files a/.yarn/cache/expand-template-npm-2.0.3-80de959306-588c198472.zip and /dev/null differ diff --git a/.yarn/cache/framer-motion-npm-10.16.5-7b95c1a890-189e26745c.zip b/.yarn/cache/framer-motion-npm-10.16.5-7b95c1a890-189e26745c.zip deleted file mode 100644 index e0427285..00000000 Binary files a/.yarn/cache/framer-motion-npm-10.16.5-7b95c1a890-189e26745c.zip and /dev/null differ diff --git a/.yarn/cache/framer-motion-npm-11.3.24-ea37a09fd9-c036284f7a.zip b/.yarn/cache/framer-motion-npm-11.3.24-ea37a09fd9-c036284f7a.zip new file mode 100644 index 00000000..8ff3ecec Binary files /dev/null and b/.yarn/cache/framer-motion-npm-11.3.24-ea37a09fd9-c036284f7a.zip differ diff --git a/.yarn/cache/framer-motion-npm-11.5.4-2c83cdc870-da7cee2203.zip b/.yarn/cache/framer-motion-npm-11.5.4-2c83cdc870-da7cee2203.zip new file mode 100644 index 00000000..b3c78463 Binary files /dev/null and b/.yarn/cache/framer-motion-npm-11.5.4-2c83cdc870-da7cee2203.zip differ diff --git a/.yarn/cache/github-from-package-npm-0.0.0-519f80c9a1-14e448192a.zip b/.yarn/cache/github-from-package-npm-0.0.0-519f80c9a1-14e448192a.zip deleted file mode 100644 index 0b7c782c..00000000 Binary files a/.yarn/cache/github-from-package-npm-0.0.0-519f80c9a1-14e448192a.zip and /dev/null differ diff --git a/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-670858c8f8.zip b/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-670858c8f8.zip new file mode 100644 index 00000000..39696ec7 Binary files /dev/null and b/.yarn/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-670858c8f8.zip differ diff --git a/.yarn/cache/https-proxy-agent-npm-7.0.5-94c14d4619-2e1a28960f.zip b/.yarn/cache/https-proxy-agent-npm-7.0.5-94c14d4619-2e1a28960f.zip new file mode 100644 index 00000000..efe2f98a Binary files /dev/null and b/.yarn/cache/https-proxy-agent-npm-7.0.5-94c14d4619-2e1a28960f.zip differ diff --git a/.yarn/cache/lucide-react-npm-0.439.0-f219c67bf3-3de85588b6.zip b/.yarn/cache/lucide-react-npm-0.439.0-f219c67bf3-3de85588b6.zip new file mode 100644 index 00000000..de5bad3a Binary files /dev/null and b/.yarn/cache/lucide-react-npm-0.439.0-f219c67bf3-3de85588b6.zip differ diff --git a/.yarn/cache/mimic-response-npm-3.1.0-a4a24b4e96-25739fee32.zip b/.yarn/cache/mimic-response-npm-3.1.0-a4a24b4e96-25739fee32.zip deleted file mode 100644 index a47a9a62..00000000 Binary files a/.yarn/cache/mimic-response-npm-3.1.0-a4a24b4e96-25739fee32.zip and /dev/null differ diff --git a/.yarn/cache/mkdirp-classic-npm-0.5.3-3b5c991910-3f4e088208.zip b/.yarn/cache/mkdirp-classic-npm-0.5.3-3b5c991910-3f4e088208.zip deleted file mode 100644 index 8663492e..00000000 Binary files a/.yarn/cache/mkdirp-classic-npm-0.5.3-3b5c991910-3f4e088208.zip and /dev/null differ diff --git a/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip b/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip new file mode 100644 index 00000000..2b635f28 Binary files /dev/null and b/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip differ diff --git a/.yarn/cache/napi-build-utils-npm-1.0.2-892e4bba56-06c14271ee.zip b/.yarn/cache/napi-build-utils-npm-1.0.2-892e4bba56-06c14271ee.zip deleted file mode 100644 index 3088994c..00000000 Binary files a/.yarn/cache/napi-build-utils-npm-1.0.2-892e4bba56-06c14271ee.zip and /dev/null differ diff --git a/.yarn/cache/node-abi-npm-3.55.0-ab5bdeaea6-ceb55af473.zip b/.yarn/cache/node-abi-npm-3.55.0-ab5bdeaea6-ceb55af473.zip deleted file mode 100644 index 8583710c..00000000 Binary files a/.yarn/cache/node-abi-npm-3.55.0-ab5bdeaea6-ceb55af473.zip and /dev/null differ diff --git a/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip b/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip deleted file mode 100644 index 012df449..00000000 Binary files a/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip and /dev/null differ diff --git a/.yarn/cache/prebuild-install-npm-7.1.1-cb9fc9d341-dbf96d0146.zip b/.yarn/cache/prebuild-install-npm-7.1.1-cb9fc9d341-dbf96d0146.zip deleted file mode 100644 index 57754217..00000000 Binary files a/.yarn/cache/prebuild-install-npm-7.1.1-cb9fc9d341-dbf96d0146.zip and /dev/null differ diff --git a/.yarn/cache/preshape-npm-18.1.3-09f510a77e-1cfa49dc50.zip b/.yarn/cache/preshape-npm-18.1.3-09f510a77e-1cfa49dc50.zip deleted file mode 100644 index ab128afd..00000000 Binary files a/.yarn/cache/preshape-npm-18.1.3-09f510a77e-1cfa49dc50.zip and /dev/null differ diff --git a/.yarn/cache/preshape-npm-19.1.0-641a60f534-7716ddbc6b.zip b/.yarn/cache/preshape-npm-19.1.0-641a60f534-7716ddbc6b.zip new file mode 100644 index 00000000..531e41cb Binary files /dev/null and b/.yarn/cache/preshape-npm-19.1.0-641a60f534-7716ddbc6b.zip differ diff --git a/.yarn/cache/proxy-agent-npm-6.4.0-21d2d38035-4d3794ad5e.zip b/.yarn/cache/proxy-agent-npm-6.4.0-21d2d38035-4d3794ad5e.zip new file mode 100644 index 00000000..f3df44b9 Binary files /dev/null and b/.yarn/cache/proxy-agent-npm-6.4.0-21d2d38035-4d3794ad5e.zip differ diff --git a/.yarn/cache/puppeteer-core-npm-21.11.0-fe767cff64-953018ca67.zip b/.yarn/cache/puppeteer-core-npm-21.11.0-fe767cff64-953018ca67.zip deleted file mode 100644 index ef0e9088..00000000 Binary files a/.yarn/cache/puppeteer-core-npm-21.11.0-fe767cff64-953018ca67.zip and /dev/null differ diff --git a/.yarn/cache/puppeteer-core-npm-23.3.0-fe0ca4687c-e8c9cb505d.zip b/.yarn/cache/puppeteer-core-npm-23.3.0-fe0ca4687c-e8c9cb505d.zip new file mode 100644 index 00000000..f5159b14 Binary files /dev/null and b/.yarn/cache/puppeteer-core-npm-23.3.0-fe0ca4687c-e8c9cb505d.zip differ diff --git a/.yarn/cache/puppeteer-npm-21.11.0-344588be44-0f2e6f6d92.zip b/.yarn/cache/puppeteer-npm-21.11.0-344588be44-0f2e6f6d92.zip deleted file mode 100644 index 9899004d..00000000 Binary files a/.yarn/cache/puppeteer-npm-21.11.0-344588be44-0f2e6f6d92.zip and /dev/null differ diff --git a/.yarn/cache/puppeteer-npm-23.3.0-326c5bb603-a7b4b47507.zip b/.yarn/cache/puppeteer-npm-23.3.0-326c5bb603-a7b4b47507.zip new file mode 100644 index 00000000..eddbc7e2 Binary files /dev/null and b/.yarn/cache/puppeteer-npm-23.3.0-326c5bb603-a7b4b47507.zip differ diff --git a/.yarn/cache/semver-npm-7.6.3-57e82c14d5-4110ec5d01.zip b/.yarn/cache/semver-npm-7.6.3-57e82c14d5-4110ec5d01.zip new file mode 100644 index 00000000..44fe1071 Binary files /dev/null and b/.yarn/cache/semver-npm-7.6.3-57e82c14d5-4110ec5d01.zip differ diff --git a/.yarn/cache/sharp-npm-0.32.6-6b3822c437-0cca1d16b1.zip b/.yarn/cache/sharp-npm-0.32.6-6b3822c437-0cca1d16b1.zip deleted file mode 100644 index 3b922544..00000000 Binary files a/.yarn/cache/sharp-npm-0.32.6-6b3822c437-0cca1d16b1.zip and /dev/null differ diff --git a/.yarn/cache/sharp-npm-0.33.5-a76aeda369-04beae8991.zip b/.yarn/cache/sharp-npm-0.33.5-a76aeda369-04beae8991.zip new file mode 100644 index 00000000..ee80e625 Binary files /dev/null and b/.yarn/cache/sharp-npm-0.33.5-a76aeda369-04beae8991.zip differ diff --git a/.yarn/cache/simple-concat-npm-1.0.1-48df70de29-4d211042cc.zip b/.yarn/cache/simple-concat-npm-1.0.1-48df70de29-4d211042cc.zip deleted file mode 100644 index 6b694bed..00000000 Binary files a/.yarn/cache/simple-concat-npm-1.0.1-48df70de29-4d211042cc.zip and /dev/null differ diff --git a/.yarn/cache/simple-get-npm-4.0.1-fa2a97645d-e4132fd27c.zip b/.yarn/cache/simple-get-npm-4.0.1-fa2a97645d-e4132fd27c.zip deleted file mode 100644 index 95cce5fb..00000000 Binary files a/.yarn/cache/simple-get-npm-4.0.1-fa2a97645d-e4132fd27c.zip and /dev/null differ diff --git a/.yarn/cache/tar-fs-npm-2.1.1-e374d3b7a2-f5b9a70059.zip b/.yarn/cache/tar-fs-npm-2.1.1-e374d3b7a2-f5b9a70059.zip deleted file mode 100644 index f256de33..00000000 Binary files a/.yarn/cache/tar-fs-npm-2.1.1-e374d3b7a2-f5b9a70059.zip and /dev/null differ diff --git a/.yarn/cache/tar-fs-npm-3.0.4-fa3da2e321-dcf4054f9e.zip b/.yarn/cache/tar-fs-npm-3.0.4-fa3da2e321-dcf4054f9e.zip deleted file mode 100644 index bfc23b92..00000000 Binary files a/.yarn/cache/tar-fs-npm-3.0.4-fa3da2e321-dcf4054f9e.zip and /dev/null differ diff --git a/.yarn/cache/tar-fs-npm-3.0.5-5a44f34a8a-e31c7e3e52.zip b/.yarn/cache/tar-fs-npm-3.0.5-5a44f34a8a-e31c7e3e52.zip deleted file mode 100644 index 3de759e7..00000000 Binary files a/.yarn/cache/tar-fs-npm-3.0.5-5a44f34a8a-e31c7e3e52.zip and /dev/null differ diff --git a/.yarn/cache/tar-fs-npm-3.0.6-b07eb8a600-b4fa09c70f.zip b/.yarn/cache/tar-fs-npm-3.0.6-b07eb8a600-b4fa09c70f.zip new file mode 100644 index 00000000..1fac4ac3 Binary files /dev/null and b/.yarn/cache/tar-fs-npm-3.0.6-b07eb8a600-b4fa09c70f.zip differ diff --git a/.yarn/cache/tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip b/.yarn/cache/tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip deleted file mode 100644 index 5256e200..00000000 Binary files a/.yarn/cache/tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip and /dev/null differ diff --git a/.yarn/cache/typed-query-selector-npm-2.12.0-682535ccea-c4652f2eec.zip b/.yarn/cache/typed-query-selector-npm-2.12.0-682535ccea-c4652f2eec.zip new file mode 100644 index 00000000..f7701e8b Binary files /dev/null and b/.yarn/cache/typed-query-selector-npm-2.12.0-682535ccea-c4652f2eec.zip differ diff --git a/.yarn/cache/undici-types-npm-6.19.8-9f12285b7a-de51f1b447.zip b/.yarn/cache/undici-types-npm-6.19.8-9f12285b7a-de51f1b447.zip new file mode 100644 index 00000000..432bfb3b Binary files /dev/null and b/.yarn/cache/undici-types-npm-6.19.8-9f12285b7a-de51f1b447.zip differ diff --git a/.yarn/cache/uuid-npm-10.0.0-4872b46ff8-4b81611ade.zip b/.yarn/cache/uuid-npm-10.0.0-4872b46ff8-4b81611ade.zip new file mode 100644 index 00000000..20cf6637 Binary files /dev/null and b/.yarn/cache/uuid-npm-10.0.0-4872b46ff8-4b81611ade.zip differ diff --git a/.yarn/cache/ws-npm-8.16.0-46943f6199-feb3eecd2b.zip b/.yarn/cache/ws-npm-8.16.0-46943f6199-feb3eecd2b.zip deleted file mode 100644 index cfe988bc..00000000 Binary files a/.yarn/cache/ws-npm-8.16.0-46943f6199-feb3eecd2b.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip b/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip new file mode 100644 index 00000000..d1dd2ccc Binary files /dev/null and b/.yarn/cache/ws-npm-8.18.0-56f68bc4d6-91d4d35bc9.zip differ diff --git a/.yarn/cache/zod-npm-3.23.8-11c49c85b5-15949ff821.zip b/.yarn/cache/zod-npm-3.23.8-11c49c85b5-15949ff821.zip new file mode 100644 index 00000000..2c8a6171 Binary files /dev/null and b/.yarn/cache/zod-npm-3.23.8-11c49c85b5-15949ff821.zip differ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index f7684c58..b08e3f8b 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/Cargo.lock b/Cargo.lock index 03b4d072..ce1065ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,7 +34,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -55,7 +55,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -80,7 +80,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", - "getrandom", "once_cell", "version_check", "zerocopy", @@ -157,9 +156,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.77" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "async-channel" @@ -179,7 +178,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" dependencies = [ "concurrent-queue", - "event-listener 5.1.0", + "event-listener 5.3.1", "event-listener-strategy 0.5.0", "futures-core", "pin-project-lite", @@ -247,7 +246,7 @@ dependencies = [ "futures-lite 2.2.0", "parking", "polling 3.4.0", - "rustix 0.38.28", + "rustix 0.38.34", "slab", "tracing", "windows-sys 0.52.0", @@ -343,9 +342,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -413,11 +412,11 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -438,7 +437,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -481,10 +480,10 @@ version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -501,9 +500,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "colorgrad" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5f405d474b9d05e0a093d3120e77e9bf26461b57a84b40aa2a221ac5617fb6" +checksum = "7b8d55c12145df1b7c4b9a5e8741101c405461f9025add91fd9a54223711cba2" dependencies = [ "csscolorparser", ] @@ -650,9 +649,9 @@ dependencies = [ [[package]] name = "csscolorparser" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" +checksum = "46f9a16a848a7fb95dd47ce387ac1ee9a6df879ba784b815537fcd388a1a8288" dependencies = [ "phf", ] @@ -678,7 +677,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -689,7 +688,7 @@ checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" dependencies = [ "darling_core", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -798,9 +797,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.1.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -823,7 +822,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" dependencies = [ - "event-listener 5.1.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -969,7 +968,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -1050,9 +1049,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -1060,20 +1059,11 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" -dependencies = [ - "hashbrown 0.14.3", -] - -[[package]] -name = "heck" -version = "0.4.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" dependencies = [ - "unicode-segmentation", + "hashbrown 0.14.5", ] [[package]] @@ -1084,9 +1074,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -1178,22 +1168,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "insta" -version = "1.34.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" +checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" dependencies = [ "console", "lazy_static", "linked-hash-map", "serde", "similar", - "yaml-rust", ] [[package]] @@ -1233,9 +1222,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1272,9 +1261,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libsqlite3-sys" -version = "0.27.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ "cc", "pkg-config", @@ -1292,7 +1281,6 @@ dependencies = [ "serde", "serde-wasm-bindgen", "serde_json", - "wasm-bindgen", ] [[package]] @@ -1337,9 +1325,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] @@ -1377,13 +1365,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1520,16 +1509,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" version = "0.32.2" @@ -1568,7 +1547,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -1675,7 +1654,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -1762,7 +1741,7 @@ dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite", - "rustix 0.38.28", + "rustix 0.38.34", "tracing", "windows-sys 0.52.0", ] @@ -1791,18 +1770,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.71" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1908,9 +1887,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.4.2", "errno", @@ -1965,9 +1944,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -1985,21 +1964,34 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", "itoa", "ryu", "serde", @@ -2007,9 +1999,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64", "chrono", @@ -2025,14 +2017,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -2066,6 +2058,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -2111,6 +2109,9 @@ name = "smallvec" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -2170,9 +2171,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" dependencies = [ "sqlx-core", "sqlx-macros", @@ -2183,11 +2184,10 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" dependencies = [ - "ahash", "async-io 1.13.0", "async-std", "atoi", @@ -2197,12 +2197,13 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 2.5.3", + "event-listener 5.3.1", "futures-channel", "futures-core", "futures-intrusive", "futures-io", "futures-util", + "hashbrown 0.14.5", "hashlink", "hex", "indexmap 2.2.6", @@ -2224,27 +2225,27 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] name = "sqlx-macros-core" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "async-std", "dotenvy", "either", - "heck 0.4.1", + "heck", "hex", "once_cell", "proc-macro2", @@ -2256,16 +2257,16 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 1.0.109", + "syn 2.0.77", "tempfile", "url", ] [[package]] name = "sqlx-mysql" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" dependencies = [ "atoi", "base64", @@ -2306,9 +2307,9 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" dependencies = [ "atoi", "base64", @@ -2345,9 +2346,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" dependencies = [ "atoi", "chrono", @@ -2361,10 +2362,10 @@ dependencies = [ "log", "percent-encoding", "serde", + "serde_urlencoded", "sqlx-core", "tracing", "url", - "urlencoding", ] [[package]] @@ -2409,9 +2410,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2420,50 +2421,49 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.11" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87341a165d73787554941cd5ef55ad728011566fe714e987d1b976c15dbc3a83" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" dependencies = [ - "cfg-if", "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", "rayon", "windows", ] [[package]] name = "tempfile" -version = "3.9.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand 2.0.1", - "redox_syscall", - "rustix 0.38.28", - "windows-sys 0.52.0", + "once_cell", + "rustix 0.38.34", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -2586,26 +2586,23 @@ dependencies = [ name = "tiling-wasm" version = "0.0.0" dependencies = [ - "anyhow", "console_error_panic_hook", "console_log", "log", "serde", "serde-wasm-bindgen", "serde_json", - "thiserror", "tiling", "tiling-renderer", - "typeshare", "wasm-bindgen", "web-sys", ] [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -2624,9 +2621,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -2649,46 +2646,44 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.5", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -2723,7 +2718,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -2769,9 +2764,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "typeshare" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99877a66770b25072a67101e80790fd7fe9ed9eff8c69ffb81e9bf5cbea7733f" +checksum = "04f17399b76c2e743d58eac0635d7686e9c00f48cd4776f00695d9882a7d3187" dependencies = [ "chrono", "serde", @@ -2781,12 +2776,12 @@ dependencies = [ [[package]] name = "typeshare-annotation" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecce25dea8aeaadc44909f4c1226d22d84512fccd07d22447ecbad176bc09545" +checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" dependencies = [ "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] @@ -2810,12 +2805,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" - [[package]] name = "unicode_categories" version = "0.1.1" @@ -2833,12 +2822,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "utf8parse" version = "0.2.1" @@ -2881,28 +2864,48 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm" +version = "0.0.0" +dependencies = [ + "circular-sequence", + "console_error_panic_hook", + "console_log", + "line_segment_extending", + "log", + "pretty_assertions", + "serde", + "serde-wasm-bindgen", + "serde_json", + "tiling", + "tiling-renderer", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -2920,9 +2923,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2930,28 +2933,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -2987,12 +2990,12 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.0", + "windows-core 0.57.0", + "windows-targets 0.52.6", ] [[package]] @@ -3006,11 +3009,45 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.52.0" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ - "windows-targets 0.52.0", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3028,7 +3065,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3048,17 +3094,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3069,9 +3116,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3081,9 +3128,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3093,9 +3140,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3105,9 +3158,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3117,9 +3170,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3129,9 +3182,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3141,18 +3194,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" - -[[package]] -name = "yaml-rust" -version = "0.4.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "yansi" @@ -3177,7 +3221,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.77", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 13f5b90d..8f2da00d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,36 +14,37 @@ members = [ "workspaces/circular-sequence", "workspaces/line-segment-extending", "workspaces/tilings/src-rust/*", + "workspaces/wasm", ] resolver = "2" [workspace.dependencies] -anyhow = "1.0" +anyhow = "1.0.87" chrono = { version = "0.4.38", features = ["serde"] } console_error_panic_hook = "0.1.7" console_log = "1.0.0" derivative = "2.2.0" futures = "0.3.27" futures-util = "0.3.27" -insta = { version = "1.26.0", features = ["json"] } -log = "0.4.17" +insta = { version = "1.40.0", features = ["json"] } +log = "0.4.22" pretty_assertions = "1.3.0" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0.94" +serde = { version = "1.0.210", features = ["derive"] } +serde_json = "1.0.128" serde-wasm-bindgen = "0.6.5" -serde_with = "3.7.0" -sqlx = { version = "0.7.4", features = [ +serde_with = "3.9.0" +sqlx = { version = "0.8.2", features = [ "chrono", "macros", "postgres", "runtime-async-std-native-tls", ] } -thiserror = "1.0" -tokio = { version = "1.26.0", features = ["full"] } -tokio-util = "0.7.7" +thiserror = "1.0.63" +tokio = { version = "1.40.0", features = ["full"] } +tokio-util = "0.7.12" tracing = { version = "0.1.37" } tracing-appender = "0.2" tracing-subscriber = "0.3" -typeshare = { version = "1.0.2" } -wasm-bindgen = "0.2" -web-sys = { version = "0.3.60" } +typeshare = { version = "1.0.3" } +wasm-bindgen = "0.2.93" +web-sys = { version = "0.3.70" } diff --git a/hogg.io.sketch b/hogg.io.sketch index d2d9deea..36ed0fce 100644 Binary files a/hogg.io.sketch and b/hogg.io.sketch differ diff --git a/package.json b/package.json index 63504980..8a97d116 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ ], "scripts": { "build": "yarn workspaces foreach -ptvR --from @hogg/website run build", - "clean": "yarn workspaces foreach -ptvR --from @hogg/website run clean", + "clean": "yarn clean:root && yarn clean:workspaces", + "clean:root": "rm -rf .firebase target yarn-error.log", + "clean:workspaces": "yarn workspaces foreach -ptvR --from @hogg/website run clean", "deploy": "firebase deploy", "dev": "yarn workspaces foreach -pviR --from @hogg/website -j unlimited run dev", "format": "prettier --write .", @@ -50,6 +52,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "preshape": "^18.1.3" + "preshape": "^19.1.0" } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..713525e5 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +components = ["rustfmt", "clippy"] +targets = ["wasm32-unknown-unknown"] +profile = "minimal" diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index d261ccec..3b47c0ab 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./@types/index.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/@types/react/node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/lucide-react/dist/lucide-react.d.ts","./node_modules/preshape/dist/types.d.ts","./node_modules/preshape/dist/hooks/useintersectionobserver.d.ts","./node_modules/preshape/dist/hooks/uselocalstorage.d.ts","./node_modules/preshape/dist/hooks/usematchmedia.d.ts","./node_modules/preshape/dist/hooks/useresizeobserver.d.ts","./node_modules/preshape/dist/hooks/usewindowscrollto.d.ts","./node_modules/preshape/dist/hooks/useurlstate.d.ts","./node_modules/preshape/dist/hooks/index.d.ts","./node_modules/preshape/dist/variables.d.ts","./node_modules/preshape/dist/box/box.d.ts","./node_modules/preshape/dist/alert/alert.d.ts","./node_modules/preshape/node_modules/framer-motion/dist/index.d.ts","./node_modules/preshape/dist/motion/motion.d.ts","./node_modules/preshape/dist/appear/appear.d.ts","./node_modules/preshape/dist/article/article.d.ts","./node_modules/preshape/dist/text/text.d.ts","./node_modules/preshape/dist/article/articleheading.d.ts","./node_modules/preshape/dist/article/articleparagraph.d.ts","./node_modules/preshape/dist/article/articlesection.d.ts","./node_modules/preshape/dist/blockquote/blockquote.d.ts","./node_modules/preshape/dist/bulletpoints/bulletpoint.d.ts","./node_modules/preshape/dist/bulletpoints/bulletpoints.d.ts","./node_modules/preshape/dist/button/button.d.ts","./node_modules/preshape/dist/button/buttonasync.d.ts","./node_modules/preshape/dist/button/buttons.d.ts","./node_modules/preshape/dist/selectinputlabel/selectinputlabel.d.ts","./node_modules/preshape/dist/checkbox/checkbox.d.ts","./node_modules/preshape/dist/checkbox/checkboxindicator.d.ts","./node_modules/preshape/dist/code/syntaxhighlight.d.ts","./node_modules/preshape/dist/code/code.d.ts","./node_modules/preshape/dist/code/codeblock.d.ts","./node_modules/preshape/dist/code/codewindow.d.ts","./node_modules/preshape/node_modules/lucide-react/dist/lucide-react.d.ts","./node_modules/preshape/dist/transitionbox/transitionbox.d.ts","./node_modules/preshape/dist/configmenu/configmenu.d.ts","./node_modules/preshape/dist/datepicker/datepicker.d.ts","./node_modules/preshape/dist/form/useform.d.ts","./node_modules/preshape/dist/form/formprovider.d.ts","./node_modules/preshape/dist/form/form.d.ts","./node_modules/preshape/dist/form/formerror.d.ts","./node_modules/preshape/dist/form/useformcontext.d.ts","./node_modules/preshape/dist/form/useformregisterfield.d.ts","./node_modules/preshape/dist/grid/grid.d.ts","./node_modules/preshape/dist/grid/griditem.d.ts","./node_modules/preshape/dist/image/image.d.ts","./node_modules/preshape/dist/input/inputwrapper.d.ts","./node_modules/preshape/dist/input/input.d.ts","./node_modules/preshape/dist/input/inputlabel.d.ts","./node_modules/preshape/dist/label/label.d.ts","./node_modules/preshape/dist/label/labels.d.ts","./node_modules/preshape/dist/link/link.d.ts","./node_modules/preshape/dist/list/list.d.ts","./node_modules/preshape/dist/list/listitem.d.ts","./node_modules/preshape/dist/modal/usemodalcontext.d.ts","./node_modules/preshape/dist/modal/modal.d.ts","./node_modules/preshape/dist/modal/modalbody.d.ts","./node_modules/preshape/dist/modal/modalfooter.d.ts","./node_modules/preshape/dist/modal/modalfooterinsert.d.ts","./node_modules/preshape/dist/modal/modalheader.d.ts","./node_modules/preshape/dist/modal/modalmanager.d.ts","./node_modules/preshape/dist/modal/modalpadding.d.ts","./node_modules/preshape/dist/modal/modalpaddingoffset.d.ts","./node_modules/preshape/dist/modal/modaltitle.d.ts","./node_modules/preshape/dist/radiobutton/radiobutton.d.ts","./node_modules/preshape/dist/options/option.d.ts","./node_modules/preshape/dist/selectinputlabel/selectinputlabels.d.ts","./node_modules/preshape/dist/options/options.d.ts","./node_modules/@floating-ui/utils/src/index.d.ts","./node_modules/@floating-ui/utils/src/types.d.ts","./node_modules/@floating-ui/core/src/computeposition.d.ts","./node_modules/@floating-ui/core/src/detectoverflow.d.ts","./node_modules/@floating-ui/core/src/middleware/arrow.d.ts","./node_modules/@floating-ui/core/src/middleware/autoplacement.d.ts","./node_modules/@floating-ui/core/src/middleware/flip.d.ts","./node_modules/@floating-ui/core/src/middleware/hide.d.ts","./node_modules/@floating-ui/core/src/middleware/inline.d.ts","./node_modules/@floating-ui/core/src/middleware/offset.d.ts","./node_modules/@floating-ui/core/src/middleware/shift.d.ts","./node_modules/@floating-ui/core/src/middleware/size.d.ts","./node_modules/@floating-ui/core/src/types.d.ts","./node_modules/@floating-ui/dom/src/autoupdate.d.ts","./node_modules/@floating-ui/dom/src/platform.d.ts","./node_modules/@floating-ui/utils/dom/src/index.d.ts","./node_modules/@floating-ui/dom/src/index.d.ts","./node_modules/@floating-ui/dom/src/types.d.ts","./node_modules/@floating-ui/react-dom/src/arrow.d.ts","./node_modules/@floating-ui/react-dom/src/usefloating.d.ts","./node_modules/@floating-ui/react-dom/src/types.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usedismiss.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingarrow.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingdelaygroup.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingfocusmanager.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatinglist.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingoverlay.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingportal.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingtree.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useclick.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useclientpoint.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usefloating.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usefocus.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usehover.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useid.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useinteractions.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/uselistnavigation.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usemergerefs.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/userole.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usetransition.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usetypeahead.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/inner.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/safepolygon.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/index.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/types.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/index.d.ts","./node_modules/preshape/dist/placement/useplacement.d.ts","./node_modules/preshape/dist/placement/placement.d.ts","./node_modules/preshape/dist/placement/placementcontent.d.ts","./node_modules/preshape/dist/placement/placementopencondition.d.ts","./node_modules/preshape/dist/placement/placementreference.d.ts","./node_modules/preshape/dist/placement/useplacementcontext.d.ts","./node_modules/preshape/dist/radiobutton/radiobuttonindicator.d.ts","./node_modules/preshape/dist/range/range.d.ts","./node_modules/preshape/dist/separator/separator.d.ts","./node_modules/preshape/dist/spinner/spinner.d.ts","./node_modules/preshape/dist/tab/tab.d.ts","./node_modules/preshape/dist/tab/tabcontent.d.ts","./node_modules/preshape/dist/tab/tabs.d.ts","./node_modules/preshape/dist/table/table.d.ts","./node_modules/preshape/dist/table/tablebody.d.ts","./node_modules/preshape/dist/table/tablecell.d.ts","./node_modules/preshape/dist/table/tableheader.d.ts","./node_modules/preshape/dist/table/tableheadercell.d.ts","./node_modules/preshape/dist/table/tablerow.d.ts","./node_modules/preshape/dist/textarea/textarea.d.ts","./node_modules/preshape/dist/textarea/textarealabel.d.ts","./node_modules/preshape/dist/themeswitcher/themeprovider.d.ts","./node_modules/preshape/dist/themeswitcher/usethemecontext.d.ts","./node_modules/preshape/dist/toggle/toggle.d.ts","./node_modules/preshape/dist/themeswitcher/themeswitcher.d.ts","./node_modules/preshape/dist/tooltip/tooltip.d.ts","./node_modules/preshape/dist/index.d.ts","./workspaces/common/src/article/articlecallout.tsx","./node_modules/@remix-run/router/dist/history.d.ts","./node_modules/@remix-run/router/dist/utils.d.ts","./node_modules/@remix-run/router/dist/router.d.ts","./node_modules/@remix-run/router/dist/index.d.ts","./node_modules/react-router/dist/lib/context.d.ts","./node_modules/react-router/dist/lib/components.d.ts","./node_modules/react-router/dist/lib/hooks.d.ts","./node_modules/react-router/dist/index.d.ts","./node_modules/react-router-dom/dist/dom.d.ts","./node_modules/react-router-dom/dist/index.d.ts","./node_modules/react-use/lib/useintersection.d.ts","./workspaces/common/src/inview/inview.tsx","./workspaces/common/src/article/usearticlecontext.ts","./workspaces/common/src/article/articlefig.tsx","./workspaces/common/src/article/articlefigcodeblock.tsx","./workspaces/common/src/article/articlefigs.tsx","./workspaces/common/src/article/articlefiglink.tsx","./workspaces/common/src/article/articleprovider.tsx","./workspaces/common/src/article/articlepage.tsx","./workspaces/common/src/article/getcodesnippetfromfile.tsx","./workspaces/common/src/copytoclipboardcard/usecopytoclipboard.ts","./workspaces/common/src/copytoclipboardcard/copytoclipboardcard.tsx","./workspaces/common/src/imagecover/imagecover.tsx","./workspaces/common/src/lines/lines.tsx","./node_modules/framer-motion/dist/index.d.ts","./workspaces/common/src/svglabels/types.ts","./node_modules/@types/sat/index.d.ts","./workspaces/common/src/svglabels/utils/hascollided.ts","./workspaces/common/src/svglabels/utils/getlabelshifts.ts","./workspaces/common/src/svglabels/usesvglabelscontext.ts","./workspaces/common/src/svglabels/uselabelshift.ts","./workspaces/common/src/svglabels/svglabel.tsx","./workspaces/common/src/types.ts","./workspaces/common/src/utils.ts","./workspaces/common/src/svglabels/utils/algorithms.ts","./workspaces/common/src/svglabels/svglabelsprovider.tsx","./workspaces/common/src/projectwindow/patternbackground.tsx","./workspaces/common/src/projectpage/useprojectpagecontext.ts","./workspaces/common/src/projectpage/projectpageheader.tsx","./workspaces/common/src/projectpage/projectpagedualview.tsx","./workspaces/common/src/projectpage/projectpagesingleview.tsx","./workspaces/common/src/projectpage/projectpage.tsx","./workspaces/common/src/projectpage/projectpagelink.tsx","./workspaces/common/src/projectpage/projectpageprovider.tsx","./workspaces/common/src/projectwindow/projectcontrol.tsx","./workspaces/common/src/projectwindow/projectcontrolgroup.tsx","./workspaces/common/src/projectwindow/projectcontrols.tsx","./workspaces/common/src/projectwindow/projectprogressbar.tsx","./workspaces/common/src/projectwindow/useprojectwindowcontext.ts","./workspaces/common/src/projectwindow/projecttab.tsx","./workspaces/common/src/projectwindow/projecttabs.tsx","./workspaces/common/src/projectwindow/projectwindowcontents.tsx","./node_modules/screenfull/index.d.ts","./workspaces/common/src/projectwindow/projectwindowprovider.tsx","./workspaces/common/src/projectwindow/projectwindow.tsx","./workspaces/common/src/spinner/spinner.tsx","./workspaces/common/src/wasmprovider/usewasmcontext.ts","./workspaces/common/src/wasmprovider/wasmprovider.tsx","./node_modules/@artsy/fresnel/dist/breakpoints.d.ts","./node_modules/@artsy/fresnel/dist/media.d.ts","./node_modules/@artsy/fresnel/dist/index.d.ts","./workspaces/common/src/media/mediaprovider.tsx","./workspaces/common/src/media/media.tsx","./workspaces/common/src/index.ts","./node_modules/bitset/bitset.d.ts","./workspaces/circle-intersections/src/article/rulebox.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph1.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph3.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","./workspaces/circle-intersections/src/article/traversals.json","./workspaces/circle-intersections/src/article/index.tsx","./node_modules/classnames/index.d.ts","./workspaces/circle-intersections/src/usegraph/circle.ts","./workspaces/circle-intersections/src/utils/ispointwithincircle.ts","./workspaces/circle-intersections/src/usegraph/traversal.ts","./workspaces/circle-intersections/src/usegraph/validate.ts","./workspaces/circle-intersections/src/usegraph/node.ts","./workspaces/circle-intersections/src/usegraph/graph.ts","./workspaces/circle-intersections/src/usegraph/edge.ts","./workspaces/circle-intersections/src/usegraph/index.ts","./workspaces/circle-intersections/src/utils/getarcpath.ts","./workspaces/circle-intersections/src/utils/gettraversalpath.ts","./workspaces/circle-intersections/src/presentation/useintersectionexplorercontext.ts","./workspaces/circle-intersections/src/presentation/node/nodebadge.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentcurrent.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodevalidationmessage.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentnext.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentnostart.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentprevious.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentstart.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontent.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltip.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphbounds.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/graphcircle.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/getgraphedgetransitiondurationms.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphedge.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphlabel.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphnode.tsx","./workspaces/circle-intersections/src/presentation/traversallist/bitsettooltip.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphtraversal.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/getscaledprops.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/graphrenderer.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerconfigmenu.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorercontrols.tsx","./workspaces/circle-intersections/src/presentation/node/nodeicon.tsx","./workspaces/circle-intersections/src/presentation/nodegrid/nodegriditem.tsx","./workspaces/circle-intersections/src/presentation/nodegrid/nodegrid.tsx","./workspaces/circle-intersections/src/presentation/traversalhistory/traversalhistory.tsx","./workspaces/circle-intersections/src/presentation/nodepanel/nodepanel.tsx","./workspaces/circle-intersections/src/presentation/traversallist/traversallistitem.tsx","./workspaces/circle-intersections/src/presentation/traversallist/traversallist.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerprojectwindow.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerprovider.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorer.tsx","./workspaces/circle-intersections/src/project.tsx","./workspaces/circle-intersections/src/utils/atan2.ts","./workspaces/circle-intersections/src/utils/ispointovercircleedge.ts","./workspaces/circle-intersections/src/index.ts","./workspaces/circle-art/src/presentation/editorcircle.tsx","./workspaces/circle-art/src/presentation/editorintersection.tsx","./node_modules/@types/file-saver/index.d.ts","./node_modules/@types/uuid/index.d.ts","./node_modules/@types/uuid/index.d.mts","./workspaces/circle-art/src/presentation/cursor.ts","./workspaces/circle-art/src/presentation/useeditorhistory.ts","./workspaces/circle-art/src/presentation/useeditorcontext.ts","./workspaces/circle-art/src/presentation/editorprovider.tsx","./workspaces/circle-art/src/presentation/editorviewer.tsx","./workspaces/circle-art/src/presentation/configurations/fox.json","./workspaces/circle-art/src/presentation/configurations/monkey.json","./workspaces/circle-art/src/presentation/configurations/mushroom.json","./workspaces/circle-art/src/presentation/configurations/profile.json","./workspaces/circle-art/src/presentation/configurations/twitter.json","./workspaces/circle-art/src/presentation/configurations/whale.json","./workspaces/circle-art/src/presentation/configurations/index.ts","./workspaces/circle-art/src/article.tsx","./node_modules/@floating-ui/react/src/components/composite.d.ts","./node_modules/@floating-ui/react/src/components/floatingarrow.d.ts","./node_modules/@floating-ui/react/src/components/floatingdelaygroup.d.ts","./node_modules/@floating-ui/react/src/components/floatingfocusmanager.d.ts","./node_modules/@floating-ui/react/src/components/floatinglist.d.ts","./node_modules/@floating-ui/react/src/components/floatingoverlay.d.ts","./node_modules/@floating-ui/react/src/components/floatingportal.d.ts","./node_modules/@floating-ui/react/src/components/floatingtree.d.ts","./node_modules/@floating-ui/react/src/hooks/useclick.d.ts","./node_modules/@floating-ui/react/src/hooks/useclientpoint.d.ts","./node_modules/@floating-ui/react/src/hooks/usedismiss.d.ts","./node_modules/@floating-ui/react/src/hooks/usefloating.d.ts","./node_modules/@floating-ui/react/src/hooks/usefocus.d.ts","./node_modules/@floating-ui/react/src/hooks/usehover.d.ts","./node_modules/@floating-ui/react/src/hooks/useid.d.ts","./node_modules/@floating-ui/react/src/hooks/useinteractions.d.ts","./node_modules/@floating-ui/react/src/hooks/uselistnavigation.d.ts","./node_modules/@floating-ui/react/src/hooks/usemergerefs.d.ts","./node_modules/@floating-ui/react/src/hooks/userole.d.ts","./node_modules/@floating-ui/react/src/hooks/usetransition.d.ts","./node_modules/@floating-ui/react/src/hooks/usetypeahead.d.ts","./node_modules/@floating-ui/react/src/inner.d.ts","./node_modules/@floating-ui/react/src/safepolygon.d.ts","./node_modules/@floating-ui/react/src/index.d.ts","./node_modules/@floating-ui/react/src/types.d.ts","./workspaces/circle-art/src/presentation/editortoolbarreference.tsx","./workspaces/circle-art/src/presentation/editortoolbar.tsx","./workspaces/circle-art/src/presentation/editorcanvas.tsx","./workspaces/circle-art/src/presentation/editorcontrols.tsx","./workspaces/circle-art/src/presentation/editordownloadmenu.tsx","./workspaces/circle-art/src/presentation/editorgalleryitem.tsx","./workspaces/circle-art/src/presentation/editorgallery.tsx","./workspaces/circle-art/src/presentation/editorhistorycontrols.tsx","./workspaces/circle-art/src/presentation/index.tsx","./workspaces/circle-art/src/project.tsx","./workspaces/circle-art/src/index.ts","./workspaces/circle-art/src/react-app-env.d.ts","./workspaces/circle-intersections/src/react-app-env.d.ts","./workspaces/circle-intersections/src/article/images/index.tsx","./workspaces/circular-sequence/pkg/circular_sequence.d.ts","./workspaces/circular-sequence/pkg/circular_sequence_bg.wasm.d.ts","./workspaces/tilings/src/article/index.tsx","./workspaces/tilings/src/types.ts","./workspaces/tilings/src/presentation/arrangement/usearrangementcontext.ts","./workspaces/tilings/src/presentation/arrangement/arrangementprovider.tsx","./workspaces/tilings/pkg/tiling_wasm.d.ts","./workspaces/tilings/src/presentation/wasmapi/usewasmapi.ts","./workspaces/tilings/src/presentation/notation/usenotationcontext.ts","./workspaces/tilings/src/presentation/notation/notationprovider.tsx","./workspaces/tilings/src/presentation/player/useplayer.ts","./workspaces/tilings/src/presentation/player/useplayercontext.ts","./workspaces/tilings/src/presentation/settings/usesettingscontext.ts","./workspaces/tilings/src/presentation/renderer/canvas.tsx","./workspaces/tilings/src/presentation/renderer/renderer.tsx","./workspaces/tilings/src/presentation/wasmapi/wasmapi.tsx","./workspaces/tilings/src/tilingrenderer.tsx","./workspaces/tilings/src/presentation/arrangement/arrangementcard.tsx","./workspaces/tilings/src/presentation/arrangement/utils.ts","./workspaces/tilings/src/presentation/arrangement/edgetype.tsx","./workspaces/tilings/src/presentation/arrangement/shapetype.tsx","./workspaces/tilings/src/presentation/arrangement/vertextype.tsx","./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/lodash/groupby.d.ts","./workspaces/tilings/results/output.json","./workspaces/tilings/src/presentation/utils/results.ts","./workspaces/tilings/src/presentation/library/uselibrarycontext.ts","./workspaces/tilings/src/presentation/library/libraryprovider.tsx","./workspaces/tilings/src/presentation/image/croppedimage.tsx","./node_modules/@types/luxon/src/zone.d.ts","./node_modules/@types/luxon/src/settings.d.ts","./node_modules/@types/luxon/src/_util.d.ts","./node_modules/@types/luxon/src/misc.d.ts","./node_modules/@types/luxon/src/duration.d.ts","./node_modules/@types/luxon/src/interval.d.ts","./node_modules/@types/luxon/src/datetime.d.ts","./node_modules/@types/luxon/src/info.d.ts","./node_modules/@types/luxon/src/luxon.d.ts","./node_modules/@types/luxon/index.d.ts","./workspaces/tilings/src/presentation/utils/formatting.ts","./workspaces/tilings/src/presentation/tiling/tilinginformation.tsx","./workspaces/tilings/src/presentation/tiling/tilingresult.tsx","./workspaces/tilings/src/presentation/library/libraryresultsgrid.tsx","./workspaces/tilings/src/presentation/library/library.tsx","./workspaces/tilings/src/presentation/notation/notationinput.tsx","./workspaces/tilings/src/presentation/player/playercontrolbar.tsx","./workspaces/tilings/src/presentation/player/playercontrols.tsx","./workspaces/tilings/src/presentation/player/playerprovider.tsx","./workspaces/tilings/src/presentation/settings/settings.tsx","./workspaces/tilings/src/presentation/settings/settingsprovider.tsx","./workspaces/tilings/src/presentation/index.tsx","./workspaces/tilings/src/project.tsx","./workspaces/tilings/src/index.ts","./workspaces/circular-sequence/src/article/wasmapi/usewasmapi.ts","./workspaces/circular-sequence/src/article/sequenceview/getsequencecolor.ts","./workspaces/circular-sequence/src/article/sequenceview/sequencelabel.tsx","./workspaces/circular-sequence/src/article/sequenceview/sequencelength.tsx","./workspaces/circular-sequence/src/article/sequenceview/sequencesingle.tsx","./workspaces/circular-sequence/src/article/sequenceview/sequenceview.tsx","./workspaces/circular-sequence/src/article/wasmapi/wasmapi.tsx","./workspaces/circular-sequence/src/article/figs/concatenatedsequencesfig.tsx","./workspaces/circular-sequence/src/article/figs/minpermutationfig.tsx","./workspaces/circular-sequence/src/article/index.tsx","./workspaces/circular-sequence/src/project.tsx","./workspaces/circular-sequence/src/index.ts","./workspaces/common/src/article/articleheading.tsx","./workspaces/common/src/article/articleparagraph.tsx","./workspaces/common/src/article/articlesection.tsx","./workspaces/line-segment-extending/pkg/line_segment_extending.d.ts","./workspaces/line-segment-extending/pkg/line_segment_extending_bg.wasm.d.ts","./workspaces/line-segment-extending/src/article.tsx","./workspaces/line-segment-extending/src/presentation/uselinesegmentcontext.ts","./workspaces/line-segment-extending/src/presentation/controls.tsx","./workspaces/line-segment-extending/src/presentation/wasmapi/usewasmapi.ts","./workspaces/line-segment-extending/src/presentation/linesegmentprovider.tsx","./workspaces/line-segment-extending/src/presentation/shapes/circle.tsx","./workspaces/line-segment-extending/src/presentation/shapes/line.tsx","./workspaces/line-segment-extending/src/presentation/shapes/text.tsx","./workspaces/line-segment-extending/src/presentation/layers/atan2annotations.tsx","./workspaces/line-segment-extending/src/presentation/shapes/rect.tsx","./workspaces/line-segment-extending/src/presentation/layers/bounds.tsx","./workspaces/line-segment-extending/src/presentation/layers/extendedlinesegment.tsx","./workspaces/line-segment-extending/src/presentation/shapes/draghandle.tsx","./workspaces/line-segment-extending/src/presentation/layers/originallinesegment.tsx","./workspaces/line-segment-extending/src/presentation/renderer.tsx","./workspaces/line-segment-extending/src/presentation/settings.tsx","./workspaces/line-segment-extending/src/presentation/wasmapi/wasmapi.tsx","./workspaces/line-segment-extending/src/presentation/index.tsx","./workspaces/line-segment-extending/src/project.tsx","./workspaces/line-segment-extending/src/index.ts","./workspaces/line-segment-extending/src/react-app-env.d.ts","./workspaces/line-segment-extending/src/presentation/shapes/circlesegment.tsx","./workspaces/preshape/src/index.ts","./workspaces/preshape/src/react-app-env.d.ts","./workspaces/snake/src/article/solutions/euclideandistance.ts","./workspaces/snake/src/article/solutions/hamiltoniancycle.ts","./workspaces/snake/src/article/solutions/manhattandistance.ts","./workspaces/snake/src/article/solutions/tailescape.ts","./workspaces/snake/src/article/solutions/index.ts","./workspaces/snake/src/article/snakesolution.tsx","./node_modules/@types/lodash/flatten.d.ts","./workspaces/snake/src/presentation/types.ts","./workspaces/snake/src/presentation/usesnakecontext.ts","./workspaces/snake/src/presentation/snakecontrols.tsx","./workspaces/snake/src/presentation/solutionrunner.ts","./workspaces/snake/src/presentation/utils/iscellinbounds.ts","./workspaces/snake/src/presentation/utils/iscellequal.ts","./workspaces/snake/src/presentation/utils/iscellincluded.ts","./workspaces/snake/src/presentation/utils/getsurroundingcells.ts","./workspaces/snake/src/presentation/utils/historyblock.ts","./workspaces/snake/src/presentation/utils/history.ts","./workspaces/snake/src/presentation/snakeprovider.tsx","./workspaces/snake/src/presentation/utils/getgradientcolor.ts","./workspaces/snake/src/presentation/snakerenderer.tsx","./workspaces/snake/src/presentation/utils/getcompletedhistory.ts","./workspaces/snake/src/presentation/utils/getmean.ts","./workspaces/snake/src/presentation/utils/getaverage.ts","./workspaces/snake/src/presentation/utils/getscore.ts","./workspaces/snake/src/presentation/snakescores.tsx","./workspaces/snake/src/presentation/snakeprojectwindow.tsx","./workspaces/snake/src/presentation/index.ts","./node_modules/@visx/scale/lib/types/base.d.ts","./node_modules/@visx/scale/lib/types/scaleinterpolate.d.ts","./node_modules/@visx/scale/lib/types/basescaleconfig.d.ts","./node_modules/@visx/scale/lib/types/nice.d.ts","./node_modules/@types/d3-time/index.d.ts","./node_modules/@types/d3-scale/index.d.ts","./node_modules/@visx/vendor/d3-scale.d.ts","./node_modules/@visx/scale/lib/types/scale.d.ts","./node_modules/@visx/scale/lib/types/scaleconfig.d.ts","./node_modules/@visx/scale/lib/scales/band.d.ts","./node_modules/@visx/scale/lib/scales/point.d.ts","./node_modules/@visx/scale/lib/scales/linear.d.ts","./node_modules/@visx/scale/lib/scales/radial.d.ts","./node_modules/@visx/scale/lib/scales/time.d.ts","./node_modules/@visx/scale/lib/scales/utc.d.ts","./node_modules/@visx/scale/lib/scales/log.d.ts","./node_modules/@visx/scale/lib/scales/power.d.ts","./node_modules/@visx/scale/lib/scales/ordinal.d.ts","./node_modules/@visx/scale/lib/scales/quantize.d.ts","./node_modules/@visx/scale/lib/scales/quantile.d.ts","./node_modules/@visx/scale/lib/scales/symlog.d.ts","./node_modules/@visx/scale/lib/scales/threshold.d.ts","./node_modules/@visx/scale/lib/scales/squareroot.d.ts","./node_modules/@visx/scale/lib/createscale.d.ts","./node_modules/@visx/scale/lib/updatescale.d.ts","./node_modules/@visx/scale/lib/utils/inferscaletype.d.ts","./node_modules/@visx/scale/lib/utils/coercenumber.d.ts","./node_modules/@visx/scale/lib/utils/getticks.d.ts","./node_modules/@visx/scale/lib/utils/tostring.d.ts","./node_modules/@visx/scale/lib/utils/scalecanbezeroed.d.ts","./node_modules/@visx/scale/lib/index.d.ts","./node_modules/@visx/text/lib/types.d.ts","./node_modules/@visx/text/lib/text.d.ts","./node_modules/@visx/axis/lib/constants/orientation.d.ts","./node_modules/@visx/axis/lib/types.d.ts","./node_modules/@visx/axis/lib/axis/axis.d.ts","./node_modules/@visx/axis/lib/axis/axisleft.d.ts","./node_modules/@visx/axis/lib/axis/axisright.d.ts","./node_modules/@visx/axis/lib/axis/axistop.d.ts","./node_modules/@visx/axis/lib/axis/axisbottom.d.ts","./node_modules/@visx/axis/lib/index.d.ts","./node_modules/@types/d3-path/index.d.ts","./node_modules/@types/d3-shape/index.d.ts","./node_modules/@visx/curve/lib/index.d.ts","./node_modules/@visx/shape/lib/types/base.d.ts","./node_modules/@visx/shape/lib/types/accessor.d.ts","./node_modules/@visx/shape/lib/util/stackoffset.d.ts","./node_modules/@visx/shape/lib/util/stackorder.d.ts","./node_modules/@visx/shape/lib/types/d3shapeconfig.d.ts","./node_modules/@visx/shape/lib/types/area.d.ts","./node_modules/@visx/shape/lib/types/bargroup.d.ts","./node_modules/@visx/shape/lib/types/stack.d.ts","./node_modules/@visx/shape/lib/types/barstack.d.ts","./node_modules/@visx/shape/lib/types/link.d.ts","./node_modules/@visx/shape/lib/types/index.d.ts","./node_modules/@visx/shape/lib/shapes/arc.d.ts","./node_modules/@visx/shape/lib/shapes/pie.d.ts","./node_modules/@visx/shape/lib/shapes/line.d.ts","./node_modules/@visx/shape/lib/shapes/linepath.d.ts","./node_modules/@visx/shape/lib/shapes/lineradial.d.ts","./node_modules/@visx/shape/lib/shapes/area.d.ts","./node_modules/@visx/shape/lib/shapes/areaclosed.d.ts","./node_modules/@visx/shape/lib/shapes/stack.d.ts","./node_modules/@visx/shape/lib/shapes/areastack.d.ts","./node_modules/@visx/shape/lib/shapes/bar.d.ts","./node_modules/@visx/shape/lib/shapes/barrounded.d.ts","./node_modules/@visx/shape/lib/shapes/bargroup.d.ts","./node_modules/@visx/shape/lib/shapes/bargrouphorizontal.d.ts","./node_modules/@visx/shape/lib/shapes/barstack.d.ts","./node_modules/@visx/shape/lib/shapes/barstackhorizontal.d.ts","./node_modules/@visx/shape/lib/util/trigonometry.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkhorizontal.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkvertical.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkradial.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkhorizontalcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkverticalcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkradialcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkhorizontalline.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkverticalline.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkradialline.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkhorizontalstep.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkverticalstep.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkradialstep.d.ts","./node_modules/@visx/shape/lib/shapes/polygon.d.ts","./node_modules/@visx/shape/lib/shapes/circle.d.ts","./node_modules/@visx/shape/lib/util/getsplitlinesegments.d.ts","./node_modules/@visx/shape/lib/shapes/splitlinepath.d.ts","./node_modules/@visx/shape/lib/util/d3shapefactories.d.ts","./node_modules/@visx/shape/lib/index.d.ts","./node_modules/@visx/annotation/lib/types/index.d.ts","./node_modules/@visx/annotation/lib/components/annotation.d.ts","./node_modules/@visx/annotation/lib/components/editableannotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/private/baseannotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/animatedannotation.d.ts","./node_modules/@visx/text/lib/util/getstringwidth.d.ts","./node_modules/@visx/text/lib/hooks/usetext.d.ts","./node_modules/@visx/text/lib/index.d.ts","./node_modules/react-use-measure/types/index.d.ts","./node_modules/@visx/annotation/lib/components/label.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationlabel.d.ts","./node_modules/@visx/annotation/lib/components/connector.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationconnector.d.ts","./node_modules/@visx/annotation/lib/components/circlesubject.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationcirclesubject.d.ts","./node_modules/@visx/annotation/lib/components/linesubject.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationlinesubject.d.ts","./node_modules/@visx/react-spring/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/components/axis/baseaxis.d.ts","./node_modules/@visx/xychart/lib/components/axis/animatedaxis.d.ts","./node_modules/@visx/react-spring/lib/axis/animatedticks.d.ts","./node_modules/@visx/react-spring/lib/axis/animatedaxis.d.ts","./node_modules/@visx/grid/lib/types.d.ts","./node_modules/@visx/grid/lib/grids/gridrows.d.ts","./node_modules/@visx/react-spring/lib/grid/animatedgridrows.d.ts","./node_modules/@visx/grid/lib/grids/gridcolumns.d.ts","./node_modules/@visx/react-spring/lib/grid/animatedgridcolumns.d.ts","./node_modules/@visx/react-spring/lib/index.d.ts","./node_modules/@visx/xychart/lib/components/grid/basegrid.d.ts","./node_modules/@visx/xychart/lib/components/grid/animatedgrid.d.ts","./node_modules/@visx/xychart/lib/components/axis/axis.d.ts","./node_modules/@visx/xychart/lib/components/grid/grid.d.ts","./node_modules/@visx/tooltip/lib/tooltips/tooltip.d.ts","./node_modules/@visx/tooltip/lib/portal.d.ts","./node_modules/@visx/tooltip/lib/hooks/usetooltipinportal.d.ts","./node_modules/@visx/xychart/lib/types/axis.d.ts","./node_modules/@visx/responsive/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/classes/dataregistry.d.ts","./node_modules/@visx/xychart/lib/types/theme.d.ts","./node_modules/@visx/xychart/lib/types/data.d.ts","./node_modules/@visx/xychart/node_modules/mitt/index.d.ts","./node_modules/@visx/xychart/lib/types/event.d.ts","./node_modules/@visx/xychart/lib/types/series.d.ts","./node_modules/@visx/tooltip/lib/hooks/usetooltip.d.ts","./node_modules/@visx/xychart/lib/types/tooltip.d.ts","./node_modules/@visx/xychart/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/components/tooltip.d.ts","./node_modules/@visx/xychart/lib/hooks/usedimensions.d.ts","./node_modules/@visx/xychart/lib/providers/dataprovider.d.ts","./node_modules/@visx/xychart/lib/components/xychart.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseareaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/areaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseareastack.d.ts","./node_modules/@visx/xychart/lib/components/series/areastack.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/bargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebarseries.d.ts","./node_modules/@visx/xychart/lib/components/series/barseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebarstack.d.ts","./node_modules/@visx/xychart/lib/components/series/barstack.d.ts","./node_modules/@visx/xychart/lib/enhancers/withregistereddata.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseglyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/glyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baselineseries.d.ts","./node_modules/@visx/xychart/lib/components/series/lineseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedareaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedareastack.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbarseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbarstack.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedglyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedlineseries.d.ts","./node_modules/@visx/xychart/lib/context/datacontext.d.ts","./node_modules/@visx/xychart/lib/context/eventemittercontext.d.ts","./node_modules/@visx/xychart/lib/context/themecontext.d.ts","./node_modules/@visx/xychart/lib/context/tooltipcontext.d.ts","./node_modules/@visx/xychart/lib/providers/eventemitterprovider.d.ts","./node_modules/@visx/xychart/lib/providers/themeprovider.d.ts","./node_modules/@visx/xychart/lib/providers/tooltipprovider.d.ts","./node_modules/@visx/event/node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@visx/event/node_modules/@types/react/index.d.ts","./node_modules/@visx/event/lib/types.d.ts","./node_modules/@visx/point/lib/point.d.ts","./node_modules/@visx/point/lib/sumpoints.d.ts","./node_modules/@visx/point/lib/subtractpoints.d.ts","./node_modules/@visx/point/lib/index.d.ts","./node_modules/@visx/event/lib/localpoint.d.ts","./node_modules/@visx/event/lib/localpointgeneric.d.ts","./node_modules/@visx/event/lib/touchpoint.d.ts","./node_modules/@visx/event/lib/index.d.ts","./node_modules/@visx/xychart/lib/hooks/useeventemitter.d.ts","./node_modules/@visx/xychart/lib/theme/themes/light.d.ts","./node_modules/@visx/xychart/lib/theme/themes/dark.d.ts","./node_modules/@visx/xychart/lib/theme/buildcharttheme.d.ts","./node_modules/@visx/xychart/lib/theme/colors.d.ts","./node_modules/@visx/xychart/lib/index.d.ts","./node_modules/numbro/numbro.d.ts","./workspaces/snake/src/article/snakesolutioncomparison.tsx","./workspaces/snake/src/article/results/euclideandistance.json","./workspaces/snake/src/article/results/hamiltoniancycle.json","./workspaces/snake/src/article/results/manhattandistance.json","./workspaces/snake/src/article/results/tailescape.json","./workspaces/snake/src/article/snakesolutioncomparisonaverage.tsx","./workspaces/snake/src/article/snakesolutioncomparisonscore.tsx","./workspaces/snake/src/article/index.tsx","./workspaces/snake/src/project.tsx","./workspaces/snake/src/index.ts","./workspaces/snake/src/react-app-env.d.ts","./workspaces/snake/src/presentation/solutionrunnerworker.ts","./workspaces/snake/src/presentation/react-app-env.d.ts","./node_modules/gl-matrix/index.d.ts","./node_modules/regl/dist/regl.d.ts","./workspaces/spirals/src/presentation/userotationaltheta.ts","./workspaces/spirals/src/presentation/ease.ts","./workspaces/spirals/src/presentation/usetransitiont.ts","./workspaces/spirals/src/presentation/spiralsvisual.tsx","./workspaces/spirals/src/presentation/spiralsprojectwindow.tsx","./node_modules/@types/lodash/random.d.ts","./workspaces/spirals/src/presentation/algorithms.ts","./workspaces/spirals/src/presentation/usespiralscontext.ts","./workspaces/spirals/src/presentation/spiralsprovider.tsx","./workspaces/spirals/src/presentation/index.ts","./workspaces/spirals/src/article/figs/constants.ts","./workspaces/spirals/src/article/figs/sinewavescircleplot.tsx","./workspaces/spirals/src/article/figs/sinewavesplot.tsx","./workspaces/spirals/src/article/figs/yplot.tsx","./workspaces/spirals/src/article/figs/yplotfig.tsx","./workspaces/spirals/src/article/index.tsx","./workspaces/spirals/src/project.tsx","./workspaces/spirals/src/index.ts","./workspaces/spirals/src/react-app-env.d.ts","./workspaces/spirals/src/presentation/react-app-env.d.ts","./workspaces/tilings/pkg/tiling_wasm_bg.wasm.d.ts","./workspaces/tilings/src/react-app-env.d.ts","./workspaces/tilings/src/presentation/library/libraryfilters.tsx","./workspaces/tilings/src-rust/renderer/pkg/tiling_renderer.d.ts","./workspaces/tilings/src-rust/renderer/pkg/tiling_renderer_bg.wasm.d.ts","./workspaces/website/react-app-env.d.ts","./node_modules/@swc/types/index.ts","./node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core/spack.d.ts","./node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core/index.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseast.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/types.d-agj9qkwt.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/vite/node_modules/source-map-js/source-map.d.ts","./node_modules/vite/node_modules/postcss/lib/previous-map.d.ts","./node_modules/vite/node_modules/postcss/lib/input.d.ts","./node_modules/vite/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/vite/node_modules/postcss/lib/declaration.d.ts","./node_modules/vite/node_modules/postcss/lib/root.d.ts","./node_modules/vite/node_modules/postcss/lib/warning.d.ts","./node_modules/vite/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/vite/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/vite/node_modules/postcss/lib/processor.d.ts","./node_modules/vite/node_modules/postcss/lib/result.d.ts","./node_modules/vite/node_modules/postcss/lib/document.d.ts","./node_modules/vite/node_modules/postcss/lib/rule.d.ts","./node_modules/vite/node_modules/postcss/lib/node.d.ts","./node_modules/vite/node_modules/postcss/lib/comment.d.ts","./node_modules/vite/node_modules/postcss/lib/container.d.ts","./node_modules/vite/node_modules/postcss/lib/at-rule.d.ts","./node_modules/vite/node_modules/postcss/lib/list.d.ts","./node_modules/vite/node_modules/postcss/lib/postcss.d.ts","./node_modules/vite/node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/dist/node/runtime.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@vitejs/plugin-react-swc/index.d.ts","./workspaces/website/vite.config.ts","./node_modules/react-helmet-async/lib/dispatcher.d.ts","./node_modules/react-helmet-async/lib/helmetdata.d.ts","./node_modules/react-helmet-async/lib/types.d.ts","./node_modules/react-helmet-async/lib/provider.d.ts","./node_modules/react-helmet-async/lib/index.d.ts","./workspaces/website/src/components/themeswitcher/themeswitcher.tsx","./workspaces/website/src/components/header/ascii.tsx","./workspaces/website/src/components/header/header.tsx","./workspaces/website/src/components/page/page.tsx","./workspaces/website/src/components/page/pagebackbutton.tsx","./workspaces/website/src/pages/landing/me/me.tsx","./workspaces/website/src/pages/404.tsx","./workspaces/website/src/pages/landing/aboutme.tsx","./node_modules/@react-spring/types/dist/react-spring_types.modern.d.ts","./node_modules/@react-spring/shared/dist/react-spring_shared.modern.d.ts","./node_modules/@react-spring/animated/dist/react-spring_animated.modern.d.ts","./node_modules/@react-spring/core/dist/react-spring_core.modern.d.ts","./node_modules/@react-spring/web/dist/react-spring_web.modern.d.ts","./workspaces/website/src/projects.ts","./workspaces/website/src/pages/landing/projects/projectcard.tsx","./workspaces/website/src/pages/landing/projects/projectcards.tsx","./workspaces/website/src/pages/landing/sectiontitle.tsx","./workspaces/website/src/types.ts","./workspaces/website/src/data.ts","./workspaces/website/src/pages/landing/timeline/timelinedate.tsx","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-mdx-expression/lib/index.d.ts","./node_modules/mdast-util-mdx-expression/index.d.ts","./node_modules/mdast-util-mdx-jsx/lib/index.d.ts","./node_modules/mdast-util-mdx-jsx/index.d.ts","./node_modules/mdast-util-mdxjs-esm/lib/index.d.ts","./node_modules/mdast-util-mdxjs-esm/index.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/util/info.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/util/schema.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/find.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/hast-to-react.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/normalize.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/index.d.ts","./node_modules/hast-util-to-jsx-runtime/lib/components.d.ts","./node_modules/hast-util-to-jsx-runtime/lib/index.d.ts","./node_modules/hast-util-to-jsx-runtime/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/unist-util-is/lib/index.d.ts","./node_modules/unist-util-is/index.d.ts","./node_modules/unist-util-visit-parents/lib/index.d.ts","./node_modules/unist-util-visit-parents/index.d.ts","./node_modules/unist-util-visit/lib/index.d.ts","./node_modules/unist-util-visit/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./workspaces/website/src/components/markdown/markdown.tsx","./workspaces/website/src/pages/landing/timeline/timelineentry.tsx","./workspaces/website/src/pages/landing/timeline/timeline.tsx","./workspaces/website/src/pages/landing/landing.tsx","./workspaces/website/src/components/page/pagechangebutton.tsx","./workspaces/website/src/components/page/pagechangebuttons.tsx","./workspaces/website/src/pages/project/project.tsx","./workspaces/website/src/pages/tilinggenerationpage.tsx","./workspaces/website/src/app.tsx","./node_modules/@types/react-dom/node_modules/@types/react/index.d.ts","./node_modules/@types/react-dom/client.d.ts","./workspaces/website/src/entry-client.tsx","./node_modules/@types/react-dom/server.d.ts","./node_modules/react-router-dom/server.d.ts","./workspaces/website/src/entry-server.tsx","./workspaces/website/src/react-app-env.d.ts","./workspaces/website/src/vite-env.d.ts","./workspaces/website/src/components/asciitaggrid/asciitaggrid.tsx","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./node_modules/@types/react-dom/node_modules/@types/react/global.d.ts","./workspaces/circles/src/react-app-env.d.ts","./node_modules/@types/node/ts3.5/fs.d.ts","./node_modules/@types/node/ts3.5/util.d.ts","./workspaces/line-segement-extending/src/react-app-env.d.ts","./workspaces/wasm-api/src/react-app-env.d.ts","./node_modules/mitt/index.d.ts","./node_modules/@swc/core/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"0fbe4bf85fa82317d0d624916755d9883148bf8b401de80699f1098b34583588",{"version":"0bd5e7096c7bc02bf70b2cc017fc45ef489cb19bd2f32a71af39ff5787f1b56a","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","b1bf87add0ccfb88472cd4c6013853d823a7efb791c10bb7a11679526be91eda",{"version":"008a6bcc04c14904b9d0aad4cbbb6e5f9c7c38de1f2e80dac5f5b3803e15f19e","affectsGlobalScope":true},"2879a055439b6c0c0132a1467120a0f85b56b5d735c973ad235acd958b1b5345","8935ce0742b6321282e0e47bcd4c0a9d2881ca99f4285fbc6a838983d8618db3","4f7f44b5056318578becf612b3c5db4c830f6a5f34bf778377faae17c42974d3","99d0e3aa414a5b1a7c93ebe1c56c9771d779cf799178beed1a638f60df85cc9b","0182224be94fa912b5a5a0ffe9a3173841c3eb049a2fa1bb2571c1acb51f9b5e","226cdd06703f7bee0123b44d6a61d253a4d9422f1e17cfc471d9d76465532121","5759a370c72141c4c282abe76b7f01769f91d763b067cde5df18c3810aa58368","ac633955e18ace62eee12752b874917f1e6f27d26884503a3e739df6387b53fc","725b0ab08036feab3c553cfdf13a8e1b9ba7c2b1bf5a3480d08ae57e7de430b3","a682d9308732da3c50d9181dc4b4f93742009caf4afd73265c8fc7d20adc5acd","f5442a8db01e9a0c48dba064c580e523ff93e8ca4e87766be0e9639824f554fc","7f9476cec0161929ebde0e005ac51d3daa233a1a1c63e23621c9c59c5982624b","72831e2802616446dbc20553b1e8fe71611a36827198cd78b9065f9e1fe7c310",{"version":"8664623bfe116b3282660b1c33b79e9841506de8dfed040b2ad1606e21032c8f","affectsGlobalScope":true},"35566b58141006560dd6c8a5ba715e82f6216e2a4139f1a40a203d75e82e1c68","1b1dceea0c2546301e1292bbc41d1aaf2ae83828ae0f2492bb893fd2270db5df","4b270c3d6b61cd9d219d2237e4af8c7bbdbd7d473a4c29d2272b57ed134ab2dc","4e8fe998e3cef3b1e35a4b9c6596f45402d2275fd09ee72a8d58620f44a34fd6","056d93e5e7a7996c55f505f4827e1127ef4f1b658d3ee016c9fbed8dc7e33d69","2697a109af718c676eb1e434a52c81357452b97a9e4b65f1c7a605126726e801","1c7ec57aa4866ca663acac64b75219ac37b53f1160649d45df451e41b7b0e468","7e2d8fc68f42d96041553659c1a6320838ca541fe2700d002d0e7cbeadb11409","94be3dc22c754bb3a9898e2cac04c14b7e34d622c9ed255e1a9a3b4826ebee01","526964e11ca761c090e6c401e7dddcabed28fd03298333fc15ac5c5f2495c544","a6d37d6888321a637b29f97dfaae745b77946340bc716459fae8b2cc5536de62","7cb5d16164a532de267bf682a8d23a725f64a8b8e05b5b54d3159faa512dacf5","32894796e78a6bd3a62a86ea5298bfa5537fe274a79d439fc6394e8e9e96c148","96150cb580a8f5e181c99a2c528181aef0bcb894e9a18556858ede39eccd5e9c","1568e59cdcc16e34d40b684681c23fe851fccb49f46f8f8f52a9bfc0f53a0d54","c21058c9ccfa51d95b992e2ea97fa5427e30be44af9b46aeb744dbfc81784ebe","9b49c9b4e8668c52cb222dfd764929f1f22d33dcb3519426fc11cb207636dbc0","703c25baf53c1d16b9d1fd267cc470b70da38ce041f15ee8cd82268fadc28149","cb493a7c8e8bceda0607937b78ddeb6570f3000aca454de6f60864d5609c90fb","7908a84b6bb9ce7c4388df85f2d149ceb03177b4111b52232be3b74a947b28d0","85b8eb9bac40cac2962d5d2a6d3a477a9a3d51c4ee665e83c597b0b8c83c0d5b","f28bd1871c5778ef7d65baf0e422aa6b5358e08254f628653b1592c2727f6484","b83dda8cfa4a079205bbd816ff2e75a3816366aa9e1f03fbd60d7a75b603a857","886df844a3014e832411c0a3b5e300782aa80afc979e0b0409acc1204727f201","4f1445333af325b76b0b8f0953fa75aac5940202329968e33a308f103f3e9b38","d0a97a7587537d413e56e22755dd4fede67cdada4adb2c4c47d2380c7b849d7c","b8f9b3ee1f55276c656607d737e96c33306236edb9e35c91066ecad4e70380d3","2ce5bdc3fe1a7b13b43c8472a321ba5cb28fbaf7498257d64ef92a5be8333698","3d6a4790738b5f72fef10fa879297ffc573ffc4b183d878a41664b378b33b174","054f2d6ae62cede3fbe299602237951e067a6e1a3b2dae159c6246da7f425a1c","ef0c32c98e410dfb73c4dca5fa9057a59a575d081f1a095e52a7dff0817d77c8","158ae26b2efd66807a339ad5a24c670a1e170c6e9061c412cabf3e500ed39f76","1c739e1c95df379b826668238421a8ca52500ae2e442f72aad003a9e443d525c","0465accf2f20af06da9f431801eeb460b19e5ef18e37a47cff2c7986e0a956c8","30a0948f8a9e5975e13e0d4e8ea4aa73d1c3c4dce574efbdeb45970ee36ee009","83231eaa8331e2c77799af0f3d2d48b4981100c279b77bbbf69c296bb7ae4f1e","bc7a9d1af8b8f4033d5d5257e15e6958eed6f8820c03348b44e3ce38e38a1439","e86834c1eabef82c3a5b2c3bfec735645efb29909a4a9476f0b8047d72fcb23a","80aa25a07d6fefde912b2c1e3b8901a3c8ab83211ca4cee1fc168c80101a7942","1c345425fcd7d1c220cba17e2dbf35d8f0f3cd705978ed51175e00eb462640f3","c6c696bc0d6f1de232102f2bc998befb79aec104f8aca057fbc47d5d7f6e267a","2702f5667c1d2ca39b0104da245ef355f37049ef080c8a6c48ab4e9a8e044e1f","8663fd343714b07cabb913f5e2368370ab8080c74b4828ea64e9657aca5a0adf","64269b24dafa3abfc1b4ca206bac0deace8c23cd7f8aaeb5712db7b7e27dae21","a414ea0f0134e0c003a913e5be552d81ebe58c8fee3dff23cdb410613e254aee","6e694d967527c0c10727dcd09bdcad8d72697eb09171ba5e5bcc5de7fcadc076","b22365768acd4a11cc9e80687beee8a9f3736c1a7d2d84fb5a144db4833e7a7e","4501d113c6f90e04f41efee9b986910357f2328596b01e03fdf60c44077f9304","ba72f1a198c0ada0edae817cfdcc16c16a8c12620d65a1194ce2da54a4deadf5","1165740a8ccc9d17c70522fc64d19315c8c36456e3f6ea475091afec19cf75cc","2839b8ca951f06960fb40376c8486052d793526d227940e1703c3a49a846c0da","f44ed3eec7cb4e66d6de21d899c58ac83c730d0b9d5889f0216c6656049a4bbe","10553384df7327463bddab2a2a73491e62d5b5e4ad8fbefcd26fccefda45e31d","6c1b8ec3c2cbe6129bf157b8f5dfed4c3144c3ea3e18120bc0b7fa2af7fb63bc","ed882dba8835458475302f14e9ac10d0d614abc8ef20a9bced82e787c99e4201","db8fc5c1917265860fd2a6963989985322e37882515284e5a33e3e61362798e3","4336423981fc67f99d5c364a64ec671641d4a5a796dee33bc4ddbc852da7de72","8dc56f817d20cf0717842ac1dcf3ac1a450ac3c667f1285754901e4af97bbe47","72156b7624d678a2686a22a45014218be4da7147f1058a5a5072fe981c492dd5","a20d054b8be41316bcc29752c5b9b42fab727b887a076a3af3bee18813d6e8c2","2eba4ddfbd6837ef33e58644f7dffbfe465d7222f9a9101789f02427f9541488","bb82c16e8371bfc6ee2ffd0095fd321d6acfa57c6c6445019567fec1b6b5e92a","6c65126b657a275259c4759b2b2f7b04879e61bc6c51df025b3748f87652a9eb","a5ad75d3dd3d3df0f62cb7a8ea12e76e0b4a3143ecde9e29c9cc0586b88365c0","03cd482c80ad0b724ca7d55cef7e3823d593b7cced98d7ef9d1bf757c5055b77","e93f395b0d6e68525181a6ecb3e7b81b1c5bf551f32f6cebbdffdef354fbe4a3","b881b069efb9d55b4b4b98de76d8c3920a29254e24f8f0c38557186e38cf6955","deb697b1102b461b0ea63a7fb59738a6c218d61b095e6040f3e0f00f18d870c1","1f542c79756fda13fdeda2c6c90a560ebddb14758eb5c3278ef8b750a03c9bec","b0ed00813c153e350a56faa8c15668bf21375928e9b88bcc482d20f1f8415179","2c421f4e1d8793d38c14a8c9985acb26d3a3ed517dd02fd7ebafb4f069536d48","93557733190db162b067dd324a0516b8cd4313fda14c228468d865145245ed04","8ace7c551f55726a0bd825aa163fa5789a1f816a236739ca122ca80aac13661f","2597f47a65f63ee775d4c8a9ac9923f6e3422e19130401253c407acba2a17712","825151a14f9661a82fc1a0603c0c288e3225e7a153b0399d4f81f5693bf5fc5a","e73d0a1df69652595185fd648818bf9debc5ce526d030854acfa944ac1db9b50","3fa8c502adfd1e125e658501fe9001b934cbeb71bb912fb940d69ce570f3345f","5584821a824aee88a06f29bde309aa1f52933bf3450681c820d0c713bc5d1dd1","6216c65f72d2f0db713e7b5e483c95c937bc779a18f9e52afa72702f01f83b89","8ef5a55e956a7a0a8ef406f96168a55a9940e9cbe05fb0565cf40097580b4377","d4b5b7028959c3e1e8847c71b7e845604ff49ffe6e3edf57af07d838d69668c7","db3f4c30a1c61447687dab0185608906e9e69212c2120f19a947b2078573ca41","d040618a5813241aa410992be3427fc18f50005dd47de86cb0aa25856f8e82cb","d17718ff094281efa9a20798eec185815ecd4f5affa1f479d954880cc89758b4","52740032b2d8c0ef763fe40bbf9a6c6b7e215f59cd218b9a4912b377580d3856","205eeb1efdf796604cc543cb81894f598345555c4b1f89450dcceda768e61076","e9c213e0c278ba15ef2446c365c12e78e87a6240df1d2a6e80abcc04f3860512","a8bd7d44ffda53ff0d543c5133b073c6735b935f1ef535d59a81d28e81f4569f","73191fd675953c2aa8b757b38d347fe803bf0faefe3b3f6c2f662d9216806f7b","56c90a2b4699433a11ee09e068e59e0135340213a41046a4c11cfc9ed5ccef77","da3c82549a428acb82afe8032f31d0ab992e382fc12dd65d526a422ac5a2d865","d46eaae8ff0d8524aa4ded96bdc4abebcc77376085317b3419b2741b387ab59a","3a97c0c4e8f19915f4feb50f2cf0c06edb6cd85e9ffbf8382deedcaebc1f74b4","a75962251edcd1f1e949fe2828558d235cc81f6523cdf05c179c552e16df556d","583c4f3f1c233ecfd273f1bb315699aed9eeae4bc40b1a1398f56de889309e7f","b82185269794856a51705d86ad34a31c1b0d51a19d158e42f0208cc906478c85","f2a2be315c3df9ef66b167785a4fdac194268411af71e71489f3767dbc2ef8fa","e58682765ca9ad05163a6545719ba16e9a70011fb6d60f3b808c6d22df4a22e1","7b5f2ea430a0848f93b8b132e4f51349401c4aee6fcb27659bae1d2c66e53258","29b791811b81a67c10c96a2c86a0a7244a62a6fc15d3540c3207c8a6e5753a8d","b42d535c794251030828022716b5c1d526014d71a1b868679ecbe6599bb3fea1","c2232452e3a5b87b845318d06b23fc209a9f289004a6e4857c18584f15343074","dac51c4438e67af6f1e74c5a4313d94340bb63d5e89620dfd22a290154948cb6","d0dc69a2ba0ab3c757bd98ae619fbd6321548dfe7e4afdbb24d8a505c1ac6404","8705ee621568fb5b7d4ed86301fb2fa1d569a3c798a5c615c6726a99cecac064","c70e9d960a19725b106e4e7c3d2ee3b3ddca52f166ed7b504b8cb3247242d79d","3c84ec821efb82e8782836b9303fe0afd2c2f58ac162999cce9946f8fc97d62f","fb70d50bed7ee067f4d695781a03479e65c274aee4331efaff641a1d86659841","d3ff1592555410547ffe4c25df611b598f92edbddf61abc30fc16cf377f24a17","2e3a62af3d1745e2a47c679f7945d59bf2d47f95f2a41c74646c7ffd37ec55c4","bb777eca342899dfb05f50b1dd94e4dfa541da0e74428aff511e501f135c24a8","31413f558f87877bbf5b74fcc06adee06e3f6e5de72087fe5a8dc50a007beb7d","4128af422f70e178231c4aa8f79e3c169c947c22e999041b687529bccc6916a3","617167d54a089bc17311c9ff0e791a4f0c3af54ea58a3c52d7210ec3f7b59124","78d29b2162ba1a2ada4934e28c277a982ed7f33e11d7c9e8867fe7a324000e2e","333ab23171825e7204f29e9be8d4b6798e6d15d90edd5303f66e3b6741c18b83","24fec0a4aea6302ddc320d5fe9671ba647fc8aab101cc8704b1c02d610b13122","235af1b6a18b1c320d15391904b05d6b73b0209697f84b5068dc751d4747523b","c1d42c7cb2848b75d9cff946e0e11b8ff1f41639ea115258b87a2fc762025282","eea88faa3dd8d3c7ed914122d10d2a7095870e42b7a21b95c66241900b33866b","15fc73b9debcb483d8eac6024a432940d4e785cfca26c732c8f4e9c2e8176767","ecd7adcb25d7500603d8b5bf4bd6a9ee6a15a587711a9925e2502d8cd160a7da","beacc9e963b63c175a9a911979be5432a3dfd1fa4d3cf41f575dafb7ce1f13ae","9fd01922c47a84ea5a482c61cdbee41efa10b26da6b0274c2dd2869589d1ec1a","334677bda56d782700f213584dc5f95e769b441d5bcdfe9bff3f6747afcd6775","8fd75856049c3ff938659772e3941fe3153d05ab5d211df2f469a4caf6ca9694","a69922ba11340fbc21aa86f6e0a52db40128dc35439eea1a7fa8d982d73dc8ec","801472ee27a5c6460cb2b87642dabbc18295cde88dbcda72d4bbfebd0275b6b3",{"version":"36e7da321d2b4201c29336c0adf9fc1e2eef2aa2f014e7311878f17f22fd3ff7","signature":"07faff99b67361a303ce67361d89f7bd642e359d4345fa6d245afd13061cd933"},"5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","c13fafcf224b6bd65d643e65da8e2459f66dcf611c5d554bdf482bf59796a390","b40892f2e803e0588550b90c7104da7fb4711602051436da49b97e0a56a4667d","184745b3e3e9787d991244fb6a7bc07b7f4d6411f462f9d8210f98fe282f3937","77fece556a4a2b473584f4ae514a48bd169640c50b17d766638e7681e1c0e24a","cfda9f4232aaac69fc68244d0809266e18863df71140722fbe78425fffee214e","339131c408d2a1039b10f5752b283dbcead3e637fec6034fbca0e5647794bd95","6774158432f23ba9505df4f2ffd360cc66affc4c445d247d67a243b0a903cd83","7b2fda6cfa66c24d25aeda2f463b377c3b9d898d03450e283cfa2e134be9fdd7",{"version":"568dc013ef4f6c3181bba376b50553d586497548e2586ec81d5b13067db9beba","affectsGlobalScope":true},"a326bdfeb83f5dde8206b938bf217d9f490ed186c9b7349c24bb9f7d7c462236",{"version":"e83fabe43c83ae3da37073519437f5356be1109be49206f4b38d31b3aaf403d4","signature":"67b4ca977dcdc5a1dc1eeea794dd5827cae87a3e9e891c59846c5f0a6bb4e4aa"},{"version":"a95d076335c194f7bf999853a291ce7ccb9c53424031acccf53ee6f76244fce9","signature":"7611fd4c5af499f7076b2ed7f5d16c5f679b21494348f043d58c01affab40d14"},{"version":"cee2c5a506aa20a34d76e688968f2f1cbbddb6eaddd6f8238cea3cb314217534","signature":"e280e3a6c10dc994a89887d32af114c21c35958f21ff77e8b4c0ac12719e752a"},{"version":"3d9a5926db3664d2a696873a27b0bdec8246ca07577d09422ad0a49e5305e290","signature":"0ea3640d62b1f5fc97c04e478064a34f1b640f20dee80b5a93ccbef3a22202a6"},{"version":"fb8cbb8594800412525c2d7f8ceab1fac79f726d72cb880ae85e3dab802a8a28","signature":"cf0bf23eae14178b759456bea034365ffc32828136a6b8fea58353aabc43ebfe"},{"version":"c6ff8e5fd9be1f548e9626f3b445bced949c234fe82760b2c31c1d4d5520ff14","signature":"7a03d1e49ed8badd15fba6784c2f7a2a94cd42faed6a2b2cd9267ff5e61d0cae"},{"version":"4d19015a3b76bddc83a48ca9a50cfa12e52cd6d0c7c8bf281c47c426e8807022","signature":"0896a34349a1047257d5b7fd6e91866472cc5896eb85c8e8f2e59de56dcb7191"},{"version":"862d942ddc4b816546c34795aa896dce55170a8618628f4bb247792b0918bf1e","signature":"14a9ccde20bcb678a7fe46a8e7d6566f4b73c4becd720b2a89e9597e75de67ac"},{"version":"ae387df5d6dcf9b5e144216d394feddb08951a01280e7ae5c16ac59d21622022","signature":"c671bff13d5d24b0c3f2ba2db693c7c926d6c9a5e2a991dda07bc5677c3b450f"},{"version":"8a8d87b187c8ff685f3e5fb48da9667be063eff7ae8d3b8be19dca76b2947fc2","signature":"ce4bcfa17dfd525bcfb8b4ec19fa6e670e24d3d82106522d28962cdc82fe3580"},{"version":"7214f9ab9904bd25741130ef4f9f0dcc1e393b8bbf850aef88a1a17d19d927b7","signature":"472b8b6104520cf7ceed84a9aa25007e46ed2fc5acd7ffe7b207b7fd83c52884"},{"version":"0a6faed32f9244f7748da3a8ba844e76abcede938f9287a175cb625774ac1ab5","signature":"0c527d431ddde8333ab9ad6e0e13964fca708013e41f4f293398bd780240313b"},{"version":"116291d4b27aac7c71b59b8b216a551ba2895bc167338f503e80a652449531ee","signature":"0d609340a010a75bdc5513511943a46b97283b71eb204e983bab1b48d664afa2"},{"version":"131cd42f3903572a55a9d510d8f71b1f44adcfc9ce0e3cba6b4c48ba15603cf6","affectsGlobalScope":true},{"version":"e6e9a61a298715a335b6139748c848c3433fbeaf49fe20455876e3c3101fefcd","signature":"123b340d30d7e3cd2b6d8ab36a7ab210b3d9e33104e307769ce0e7e74496687a"},{"version":"9dd8bc1512400a25fe6cc0da8034d4a91220e428adcbc20286a01539a194ffd6","affectsGlobalScope":true},{"version":"2709bc869dce620bf7e4f69f2f412ddb076c6d2a82a002aee18c6c40a0d3ac99","signature":"59bf8e874a5c39d8c9e87f37b882f3e06c82063a4ddb986e0ef3ab0d1f122d54"},{"version":"1cd42aa62bc6dcb9362bbb9f55c31378e1c2af21f6b9931549e114eea1eaf689","signature":"cceb246c9a4da9a5d7b03677f5f05d6cdea611ab7689364c2216df83cb9b4cd4"},{"version":"010f21204ca0d8d1701f71e2809313db18b45381beccdd2f7beb5fe97475c71f","signature":"95aed43bfbbac258baa7906ddb8e3adecb1c3cabd47f7bd49f5eb6588789b554"},{"version":"295fea13c4e013587a69cbe91dc5b11eb887e2ccf50ab9bb46a5690c5863a965","signature":"1474c0d5c332131f6d7b6fcb6824757c607c3427d20128296a7fe04d6fae0879"},{"version":"8acf9ed422a24dbc7a22b2b96c2966ae3b851b4d3e82e7d1b5263d240c92bdc0","signature":"e1b18851789e1b3f484c840c46c5b842a6face77541cd6c696bd444e305ec0f1"},{"version":"c9fa3da488b168714b761e08d95b2d9aeffcdb30e3d54a89b1bdcbdfa5ec43f3","signature":"b8bd7028d1f9ebc2e98ab0e5a8c24fdb74eca7fc37e8a055143990f1e43c6491"},{"version":"5fca3e8527cb1b6f9fdf9885b2b1bb66fdc8fec77473db6e05137532a79f58ee","signature":"80a9d4004c51b91c095d1904a720eff67506d6885c2c19d8c07e7a54e1d571ed"},{"version":"50a24189d7766bee3fe438add2ef759d0829cca99ef309ab42d26802ec3429d4","signature":"c11d94a10ca5bb0348ddf183dc3d7f0a3b304ee08ed74be3f0af60028168d954"},{"version":"72de8120738e19c52f64906a55ca2dc825e8a2018e0008cdb3060aeeb9063347","signature":"fce44b28a3015c2d0bb0d80d9fcb17afce3b4e9cab40296051aecdbbbc1f2a8b"},{"version":"0f9dea1159bc580d80921bf0cec3a255b03a4515899b33ee78f8577e6d0b1432","signature":"ebbe8a2b0f9a78b54c94192a909a0cbdaa2826218dbae9a7627ab2b14569d481"},{"version":"5e8f6be6163a2b37f8a10ec09438c9d0638a4c37d6ea83668f9e54d343b767d4","signature":"5b625e6401397acc5f15a5496154f24633a62bdf424943c896d9179e50bcf0f7"},{"version":"e5918785df90500903e0fe59a80928586583322db21fb6ee18cf4efe52dcc1ea","signature":"febf25e73b3bcd191538186babbaf46d060bf21ddf84b9ccc0482ff546607bfc"},{"version":"6959d93e873a4d1b7d9e3eb1091d147abe89f2eb3dd72560948bf50d61cadb8c","signature":"0825a6f70a040adefc4a6c1c87629910984df44d1d32957c3e9b19c8cdf80090"},{"version":"cc00ca8ae105f40be45b9f2ef3de4c07ef139b190c43295d8ae170cca790dc66","signature":"8e426c510fbe54852557f19b266b856ea2b648f2146defe43a5108ebf2576d52"},{"version":"f8a297deb673bed7b0141be33cf0837a9e1d7b522cae8bda1c4763a3fe123280","signature":"c32f148e12d3a7607b7d9646394efdf7f0b1808596f6f492dd0f76ab58c0cdf5"},{"version":"657b551ee96085fd80d47c116babc0c030040d2486d883d216e62b80980daf4d","signature":"381ef50c768a4a1c352bcf79a9afd6750ba34783a60cab3dea2a3ace38eebd35"},{"version":"e4a61fd68d6d8cbe0936cf80cc4587fba03d794be73aede7105dfcd53914770c","signature":"893b28679bb267bd54dba6178a08f8fd23920f0beed6b091051625a25e91574f"},{"version":"3ec266cfbdec6252891101f9bcf821605d20f7c1f6ef5a889456d3792c3fa65f","signature":"4fe4ab060dec7646b243c50ff64c404d2384f0446723bf44d079c79ab528bb7f"},{"version":"37312d7322e0bc5b0f452fe6a41f20045d00ff3028863472aa6b8dc55f695e56","signature":"55b927a9129eb4a60a940cd9b72c747b310056bfe255da9b047e5fa61c0e1cd4"},{"version":"465e9902458355e44f06733e2b55cdf900577e6c2f085d36d44958ceea07f844","signature":"8a1364279726186c5edba2cfc86dccfd140565d1eee8c3f925e217bf8a1b9dff"},{"version":"7ffdcdf088a5821e339292b168bdacf8e75dfaeb375b24d8de00d5d058133588","signature":"0dd0823f177d8bfe201c556efad5a7419dc4e2b4691f8b1439efa2e62bca59cd"},{"version":"b4ab7e741e3376f657c1c09310715a47c4a2dd1eb8515190c1a24a555674c922","signature":"adf6308eaeed200389f4790c5f3ffbc0efa98cd3aac80b4262d9d1db4f258745"},{"version":"02820b3f61fe7644e46621edca9bf8b4059fdba6e29358f5eb8e966bd54901ab","signature":"4190d9b9b033bd11d1cc9b4aa21f2492dab55e7897871c5bdb83d1aa712b460f"},{"version":"bbfc42a3bdc2e25387dbb9679913cc155a9a8b8837606db25a9e2e2951e3ceb3","signature":"f5280ed56841e928ceaa60fd40cdd872a2cb05e01f398c52a43ce0c8bbb7b419"},{"version":"ecc90e690fbd666b79944480aac4a266a8d8c01d6db0baaf382b1274849efeee","signature":"138da8befe344f74982450b0e80ab9719a422af7f624ddac4c1fad5ccce1a5ce"},"1f7d6bcbf942978a862f3d1c5650b0decc05f0ce0914db5c6bf91fd702f3d1fa",{"version":"fd35919398ebfdf338ebe44ee41cbacfd380cca2b8047b720dffd8deb6fc6df3","signature":"8174a86d2bf61bddc0aee3c8acbd1660136c7d7d391abb2fe808c1f41e01f093"},{"version":"5f33c7921af227addaccf7397e472c2465027a127d53aa46f8fd531d859abf33","signature":"7e3caf96853d523adc93623ada08ba041e09f936da18b870097034cdbdfc82a7"},{"version":"3a537f7d1070f8011d386b97fc002b0713468df954b5769892b6841c8715de84","signature":"213d810064cb45a9bdf35d7685c74ef5fc4ec052dc925a341a7accefd8bcc5d0"},{"version":"23ecf6552885643c579ff0bdd5a418518146757ab99e24e1c0cd37ac34e5fcb1","signature":"b350544545e345935254b0d21dd8fc7b79946cacaf487698e214fa83f36d7b17"},{"version":"cc9324f753e793552f462b9726e702114c5118397fd4d4f607f09d4d0ee2df33","signature":"8fdeb8d1ca876ede8d46d65fb13383fbdddd06dbefe569c54cb888d56fd1bfad"},"a6c4469ceb72cbb435b605e618c02bcdd9143165bedbfc6958b5da2409408b9e","4333bb1b8804e9e2907aad68924753dfdc0c5b8a16febb8ff20ed8a6d656aeea","761ebaa46bc206fe6c3746912bf897b46a580ecb36c59817eb92fead3911b42a",{"version":"97acbde067e9bcdd27de2357298a2a3f4bcd560513ab97c10f7071818844b424","signature":"6a2b350f8668ede2c2011613cffbc5a4aa72e9b88abc46efeff0fe27eab70ab7"},{"version":"71ce28e1c9e5e0702bb7c956e58d3dbe0f9eddc63772591738cfdd36f7deee15","signature":"9d057a1bd5d62619d172fe5b14209ede7986caa4c1afb6c3ad9460141296b470"},{"version":"71a3a011e7c297039bd941d39b82b81fa3c82a8d108ca4b8ae45f74454d57809","signature":"8e290d1940057146a655b0217ebb5283d53d5a4a57d6edd98f6cdc74efe502e5"},"f7c43a992df2d32517f7dd2901e0fe734e305473a135068e57efdb7c6735ed05",{"version":"e2ce0767274c900880ef0059c141d8e7e72e09b8568b713bee71d773b887f636","signature":"a931047e9d5d2f324a9202bffcc5ca9e20419bb34483558bbd41d1d9f12a5dfc"},{"version":"31900c7cb17c92d7e916ce8a600b4f73c4df3943fbff0fac70bac2d5a6252499","signature":"f21ccacffe1de5c66628a1e8ee0a764b78720da3de81663f070f1206c57925d5"},{"version":"b4079b67e503f65c1fc4ba17e655b7b74e280a7d5cd6e11ff27a064e756062a1","signature":"ee4c79635d2aa5f2f11b4b5408bd84ed6b925fc7a6248c8fe99c1f6cd74dac41"},{"version":"a22a3863858ca5445f8e5423290da9bcb321f04d615f8f2f79f88ce8106e94bd","signature":"8c5f2a4a664a9fba16cad506c730fca9cb45919cb6d97ae9714b5e48d91a13a4"},{"version":"e4cab57df8a612c848f20a166a8ef03897cf12d03c5db4ee75f92ac23fe07a33","signature":"73fa75cb37c40e23bec9b1a9ec6d3c682e9cf451b64ea4eb38f9562ff7ae0ce2"},{"version":"5a62cb0e351ad91c7dc51081c06ee7d65fbb232cd089dfdc101863f202d67fa6","signature":"18e8303f4c9e455b83594b3a10032a74512d590a9846c7bf0eeca39e0e81187d"},{"version":"4ed0fef28a22bca007311d40a58da1d2c44bcda196b25b8eff833bbe21b16f91","signature":"1e6e734ad086a326583de1cc802f6695320f509b34ba6209fdcf65b295ee55a7"},{"version":"2742ad39d18c7e06713f047bb4181343701d6f08fd2a0f9eb1a7d314e65eca88","signature":"bf52e13a535d7e47f8f2c8951814f82d5bdbe5e4d4e0f3b8ea15476c503b9cde"},"2bcb1acd536e696b5e4405ab92e847eb7b7eaa121c8e80c96394c130f141919f",{"version":"edb9492ef04a3a0690d5f59ce32f1ef95de97b76ed069a0e3596c37d2430c515","signature":"015e30109fbbdfd98fde26d0386ded7389f17204180465da8b33520b69b5f0b6"},{"version":"f7402c8601bedeac3437e603294bdaab5efad951d995358990ec98e224263021","signature":"e1b28a0a73ed874f6a81db51faed8f6e2fddd0774732cd2f264f3e950e5d4970"},{"version":"e373262f7e7fb85ba1a0a8d339e300372f222b6c5d202655e37b576d42d37261","signature":"d0df0b432617ae09f5387b7da2fced65a69fbd25f260b3aa84237b8f33767cca"},{"version":"8e3edbc6b7d7e73924ec3ddcabc4b0135ddbad59c9204075ca8200bf2c83c1c8","signature":"09f9a24b06c249f18645bb1cd2a6da3ed44d514a02c4962ccc01bfae4614360e"},{"version":"f9bd4e296e6eafca35f75e2a1f523602d1ba54dc91762a9b4ee1e157b6b0dc38","signature":"124cacf5b4d66841aa970bdc0b45a7bf4dfd1d74dc7f114183c7cb4dad4509ae"},{"version":"9c9e5a62e58c79b24b264e621f39f9e57cd3536244bb150beef4931576332628","signature":"0216e31b9b2ac75481a84011ced1174c711a541df01f22e44de596152d170633"},{"version":"c70c833b0c7fa3314295092d0febe044ff16f192512e700612c1b5864e3905f8","signature":"28b7234e0e8d529b5f7c7c46c17aeab6747f29a09f19638f681d4bd64f48661d"},{"version":"ac2913404ea04c20f62d180af086a121abf1f225f99014b7a078bcd31ba3bab9","signature":"4e70f788502410f74a6f059972630ba892008ae2540c162f850968dc40b97eee"},{"version":"ac0f7905283832a493f549f9681d7d6c5c94f9d88887fb6e5c6e0186b22646b3","signature":"d3ce11b8fded455dd6b98ddbd816dceca5616ea5651d91df2c1955364328bd12"},{"version":"3c79559dde4297aa5cf73826c419792608821d96147ddcc3e050c2a4976395a1","signature":"da8c3b7508dd1c674746dc42e27069c5303c8a8aaa54f3b054a295d1d60df9e9"},{"version":"11712f5921648c6137a095e43bfb552793c69db85bc3f9cf3191e8cecf244505","signature":"c1943801f7e8d273e8ea9d336f820a5077b81c18b9f3a012bd4d6a2ac785656b"},{"version":"63484889d01cafc28c0c481af8ec20d3c523a5cb220a9cb55783ac310df9aa5e","signature":"92dbf05acd1e466a90f9b3f9a1991c749550fbfa8eced6aa352af9946659fa38"},{"version":"5f5fcdf90eda2035da17e9dcf738b18edfa75dcb9372936e2143bf4899380996","signature":"c21800ab4d79bea9aab123c32afc957046af24261a6f872f399c66e908fa37f5"},{"version":"bfdf2a818ac405eed9dc4c0dccfcf1f19a65cb01a7f4793714f76a860ff262a0","signature":"a808423bb35ced579b4d75517a2daf0cdd87ac62ed899a37ecc7e17f765b6a70"},{"version":"4a87186dbfdecf0bd3e3e258c9e947e204c3b101138aaa430192e4b7882383e8","signature":"4a59b03cf2daa5df3f280fde829dc1da0f0afa50c049f82fbc04480090b0750d"},{"version":"2213b217cbef587ee7dd5b19acf9a08aea06ad74022811fbddc1f0af724cd7d4","signature":"f172c0fe8eba5f21122981e4f9f18167dee43a9ea49bcb8c03981797b03c6ff7"},{"version":"f7913cae630fcfb3aacdd71088e1102f498781abdc5a595c21b1df9c9de508af","signature":"c21800ab4d79bea9aab123c32afc957046af24261a6f872f399c66e908fa37f5"},{"version":"4f997ede1303ed11ce07be172daa0100af3be3efdd165b991b48a1b74dc13462","signature":"48dc311671089b4571f7eccbf1e0a90d555f373e72a1e6317dcc47d54d55391b"},{"version":"e54625d19e83eca9d2a56b73e9c2fd416734a2bfa0b431203fc12b3cded2c159","signature":"c44d15a726b057fb10025794f2a557d99eee81fd0fceb95442079d2a48a30f96"},{"version":"74c10d15fe8a16d1410ab5fb049b97ca6bdcdf5488881e772eb78cfe5923f92a","signature":"6275dd1d3bb9f3c3163fa0359d0ce2eabeda626c61bab485c21a3f5ab4c30b8b"},{"version":"9a9a0df120889dc332a238655acc6b1d0e67b6f776aa251b5bf77c5011d49e2b","signature":"8a62b88e249fe623a971013e85905d24e95603fbeec17f5653a89cdc7f82738d"},{"version":"21a2fed14900156b183ce5f475092942107f2ca71d1631ead4f86547ed3d7027","signature":"75d72ded111c4ca9ca5633b7ae8b52f5c1fb52e2e5f4efe6af5ad2487af89d2c"},{"version":"bcfe7d77c45531e8e4bcef3a7741cd5ee4f7a766c1fe1ce1834a6fbf9dfba261","signature":"095d07b6f144ca257cffc439fe9e4d7e405b3dff9869d23b2387b73decefc4fd"},{"version":"88171f82114b7a270046d867f9c0f6beca3aeca06ec40309f93b6b77ee7d6bac","signature":"0294a4a84cce22f0e851bbe1bebf4eae436d4977528261b8a6f9988b41419ac8"},{"version":"27dd6bf9effb16b6f0abcf787d6647c34f2dfa36d6a5f8678e2fd8732a33eb5b","signature":"854f2059017998b86ff9c7d4f8e130ffbbd7ad62c7ef7094756726cbc5a2826f"},{"version":"9685ecf90b947e20fe3ade5f9e68000a76e4c74550537b604178c68a75b28793","signature":"2607e83888409d669e9066b20e7a3ee1e06af7e80323bd7ac7695f6a04e4ced3"},{"version":"b02e04b910998f6930c17f14a647c6e496318b241e121c8eca360e87a8f15fa9","signature":"a8984994d383eee4bc14d4566e005ca10f1f0b2eb33156f20e27f08a902ce88f"},{"version":"076bfad968908bf414a083e4cf175f9682b2b1b8963f034487b96ad220e4ca54","signature":"68074efb613c10d9009384b22beafbf092779bad459ca1a36305462c6a3d2f67"},{"version":"dfaa08567e03d2c5f4558fa844f6c8a70b2545977292ae235f3cf543d85c3ae6","signature":"da5ccf253b84de8deb3064a6dc95802856e3972101a1e06891655139a6ffdee4"},{"version":"7c6fb799116f42f5b1bd6ba42d7b9eee19a9745ec91c3ace7298789ef3f1fc3a","signature":"977dd7c416f66e07e7679ea03aa563e9534b4d8837cadad442b5883eb0580005"},{"version":"a631b4950f985f4691657abd6574877d3e0303e165242cf0f1093110b924173b","signature":"ea3ccd0f2e943082ce1952763a6a3c6bd724d6b6eb75869291ead814988d391c"},{"version":"60f6295dffd62984863fb9451172b20d7525557687d6bd408caf34a1551e2c93","signature":"ca292bddf4eaa4c3d9cbe6d95d5ec518c9fb76c50c6241957fd370b2571615e2"},{"version":"f19529e2eae67a2f02377e69d1cbc9c2182f2302f11fba5b3a5679ddcfd42d34","signature":"58930341f9ab67517c01729d958fde28583f99d4567472585bdcb5995926278e"},{"version":"6b465cb8b06f24591eb5c60fab9a11e077bbc84a12a59ce7cc45128277a19bca","signature":"970e355d00725e15b6c22145977aaf186e91d1dd304e6f8d49be6cac0e6420c2"},{"version":"504b72fc2def6fdbf3dac9309abdaf2e79e7e1da357880fe44aa319d4951ff36","signature":"4cc20ee9c8641d735723a0a1b0d9e04f5b72bff835c10a36d46803d18592a21d"},{"version":"d2bd8586927b39c72df0c0ce552b7304272a26050d8299719fbdaacc7b0be9eb","signature":"cf0fdb225ad857c875a377deefb2f3286a2dd6438422c800255e9daa997e6fb4"},{"version":"ca2483f2d841aa137d9f250f910301929a5c92adb70c719dc63185c79f3f81c4","signature":"5df85396fd83ce49b16e48f04780c8952fc6d192c5568f700344297523f4370c"},{"version":"6c4eac27cfea4022dfb59d8874921503d444792ef5552db8a289d1fa20982429","signature":"22cc8e9888b759e04d2b834addfd89a949569424c04190da4d195212e813df14"},{"version":"ca35a6c975b40540d621f55034e43e3a78581c6d82d257b729ecb01a83df9d54","signature":"e64d87e8d9efa1e7b9698f2c3faa6c5b5cb341907c5983152d76368eda65bef0"},{"version":"c6f7fddac7570e9842d625061def26c39d89c021b362525a5ead856c55e844f6","signature":"2ad9eba3c89736c71ae5b7363f7a91472b7088953e4ded0bea245865cf2d726d"},{"version":"2bcee57c196521a342521f2b456bdaf4c8f1ee94d5c4b619caaa58dd55363ddc","signature":"3f7f23f0a16b6669dbf3b8ef4e1981f3d17ed2262de9da09cc9a02e600e2f0be"},{"version":"32768be38c269c8e39f833ac87d13c4f38681c0773fc3e0387775baf9b650651","signature":"2088cb6c62a17da7651bcf50b2829ee77a23da2f73879431babfda2d1d4f2593"},{"version":"63d68ca56aca3614088229c1eaa267f646c06e5201100f95d28af8584fecdf36","signature":"41e7917c06ab6a32d0822c7a15b51ecbd78231554f2465afc6d8ef1ad7f076c4"},{"version":"f8625db3926bd5b958fe76803d30ec75294d55aed4df782068216e29deac13d7","signature":"8db2db267e97eeb5f27544726ee7d2e85d1a5abcf90310bbcffb0436942c5557"},{"version":"1e7785f7b59e1608afbda7b7be09bfdef0b92573caeab372d1264d8e7bbb2858","signature":"4cfead3a0ce6ef891f706baf7d9c66852c7c70b563cd0448f744634138b96342"},{"version":"6dbd2bf28c04642a455b86f98936880d18884c49d85cbfb9a94924fcda8b7cfe","signature":"e5e8152d8967d4cdf7e288597ac28db6173e8b816f6b385dea6abf81491bb9f9"},{"version":"674734ad8200b54ed55b0379c8537e93b467e40616ece6cbe66871912985d24f","signature":"ae74e5caa344258ca082ed9480f240bf943664356c0babe3b1c02eedbf9a6c12"},{"version":"bc2e461d7b01183fc6ac1ac6400573f605b34aaa0044a6479aa4e7ed172901f0","signature":"82c8616f6c03718610a75bbe08f20ef6a41efe748b04a553b4a5141413f38477"},"ba854883a418fca4343b51cb93718d481770f3b81e978bbf6378a2385264e55c","7d2b7fe4adb76d8253f20e4dbdce044f1cdfab4902ec33c3604585f553883f7d","4c6f71accd23f1de8ace6810f72418d4a644087deeb059ed72b30710885ec70a",{"version":"e9f8d4cb76a789c4e5a70b63427de59505e98fcc2aa885b6e1a17cb7ce41e5f6","signature":"f8c6b359e6b17086908bac0190f1df28edbdd8434cc9b3a3764be98fe70ae342"},{"version":"8aa46d2e3cc490e4f3a83e7fd95baad712af34ed15dc1fb7949889219c5bddcc","signature":"13ffc018663517911c187c659acbb6aaf78f7c2576413109d4a52cdd4b7a398e"},{"version":"0a797d5fbc31690e87eb91fd54b7477de65643520b7d8e7db1ddd50effc5b078","signature":"1cec4765e54c2a3f3c788301c50b87afd1660229e9d4e61bf52e773280085b84"},{"version":"5960eddb7ee37957448c9a29023d20161a0ad81dfd3547231fc14b443544ccf4","signature":"e8a2dd795430aec4527df852bfc06b03003fe0d24b850dd811861de842c4d7d6"},{"version":"1849d3e118158461a3a4a13ac4dc7780076bca1280ec3100f5ef7845dbc73ea1","signature":"6c4d96869929c7448f3f635c73aac43d3f0d2f9433f4cf2ecf8284b0498a9f50"},{"version":"3ee959f371dc68bc32fd68029c60628a2b93948a322d3dddd1cb59e0c2661616","signature":"c03a7175631a5e6a2a38bfc6e101453dbdcbc625956717c97df0647d8c5b3c68"},{"version":"dc4abc65708de4f0aa44bfe18aea84a31d25bcdd7d7a2211718a9cf6de687995","signature":"de964b545c328d909e7f41cdc02d785db981607bca0fc941de6ee4a3f0ed4395"},{"version":"6558770b288c6d2ab61c6dbdb5e1888c495532f577001e4215145a1383524dc8","signature":"cda5b4df284cd2595cade488d48da25a4ef94b643b430906332cfd795ca56f10"},{"version":"0a015c14a925e6ef024e03d7df422ebbe2dfcd1749a86fcb829b329763943aad","signature":"072a7c737c22ebc9afd294fc730c6a2104c8d49addf5f822fa7dc74d2afac0ee"},{"version":"dff9735439271a9f419a15fcb8cb6e15db59933fe4273d6e44aa7cf4b3b31904","signature":"521036f1f4298cbc5493232ad42d85898be588c574aff7973ae25d9202f40dfd"},{"version":"76df777fdea68ef914431892c2542e66915ccfa1f21b497fb73b365ddaf659c5","signature":"4a5790cbce4050ac1176ec1fbb1996ac933b098505dae57f31d19f572daa83d4"},{"version":"11a035da56079fba733e55a7e3307c29dd7d7f76a9fceff6f7c29854525d6d82","signature":"3efdf9d4065571301c0399698d41e6a3300d9a87f1e9d99191fd6ec00f7e2af8"},{"version":"3a91a6ffed6599c4648c80d5608c8703287f291d39662f970ee072685cc2f160","signature":"16cde3c7b07a80f5faf9a80dec4f4d81215e0729cd2adc4fcb860d1edcbd0840"},"dc8434313627a9bb9e7108ac2d3ecd60848bd624782539aa2f8980e71bf3bab4","4d0ccec357785fbd68e09276300d909b84f933fecc1ea5d92761a9c7d36b1bb4","6216c65f72d2f0db713e7b5e483c95c937bc779a18f9e52afa72702f01f83b89","8ef5a55e956a7a0a8ef406f96168a55a9940e9cbe05fb0565cf40097580b4377","d4b5b7028959c3e1e8847c71b7e845604ff49ffe6e3edf57af07d838d69668c7","db3f4c30a1c61447687dab0185608906e9e69212c2120f19a947b2078573ca41","c7d8badd213c396f54f9ffa4204e7b23a32cdd1956226c4a3cec71a0e207c14e","d17718ff094281efa9a20798eec185815ecd4f5affa1f479d954880cc89758b4","52740032b2d8c0ef763fe40bbf9a6c6b7e215f59cd218b9a4912b377580d3856","205eeb1efdf796604cc543cb81894f598345555c4b1f89450dcceda768e61076","edd37dfe4936b4c1bb13ba3f4fc3c6736d55735e9039cdacc1a57f6e8e4ffdb4","73574bfc85a01ddfb93acc76d73b23fd65d289f4efd6a6a43625b736ca270212","4a0e6d702351d06abfa7b309c671d3231c98fe305a08d0422e99c049fbed3b88","73191fd675953c2aa8b757b38d347fe803bf0faefe3b3f6c2f662d9216806f7b","56c90a2b4699433a11ee09e068e59e0135340213a41046a4c11cfc9ed5ccef77","8aa4776ac23bf44dfb42da46b1c4588807f7c66ffcde77246064b78cb61aa170","e75629407d0cbe5f8c160d2d35b5afae3d9ed1042cde9ab9e1edc444d1d6c9ee","3a97c0c4e8f19915f4feb50f2cf0c06edb6cd85e9ffbf8382deedcaebc1f74b4","7a8d8dc0b29118e1040c8009f61050cb03a35e7bd9be612a3eec5e9c8e7485b4","583c4f3f1c233ecfd273f1bb315699aed9eeae4bc40b1a1398f56de889309e7f","b82185269794856a51705d86ad34a31c1b0d51a19d158e42f0208cc906478c85","f2a2be315c3df9ef66b167785a4fdac194268411af71e71489f3767dbc2ef8fa","e58682765ca9ad05163a6545719ba16e9a70011fb6d60f3b808c6d22df4a22e1","1fe3569c0268b82287a07b82866f5cbb95bc80fafad176b2627a11a0ab80d688","2397dbf9799b6ed26f452d38c8f59e46f08578b23502b8761f77c250ddb7fa8b",{"version":"b94258e48323969437655f7b6f50fbb065ea78d785be7339a1557845d4bb8ae8","signature":"2dedfffe2734062885dd18127a03991e4066979e300e1c611feb9450c2f9264d"},{"version":"75fd661c906f3ffb908b2258e41bbe01d86a976724c08e4378c94e972f1d3735","signature":"e3e33a7e65cb63c2a4709ac52a981ec84bc5d966f16308634475b41daeb7a06c"},{"version":"29f05ed3bc7283d608aac4dfc4830627ef6ecc86dc623a753c7fc0e8c5c8fc50","signature":"32badb6e8a8ae6c21f63c75002e2a8289a54647eee6ef19ce4ad9695c30f7edb"},{"version":"1def7796fb8c85aa59f46d1a072e9ef966990e8af866dc492514c1dfa97b618a","signature":"7549b6d1d159111dc0d05fb90205eedb5c4eaaae9f43f1e46cca036d735b1e97"},{"version":"fe49ac69780265bfd5419574bb8db7f86450651fad88d41414972070667707e9","signature":"5e1e8ea8c98f11a86b70a757ddae66f5cbeb2efbec10d7cb21805b64f23a83c5"},{"version":"d6b533bb77475413c842f084c18603cee8803938819e1f4b80ac6751b26b605a","signature":"2effbe3735bf5df04c67f68be3d2f804eee710230ffc7ff7dfd2e52221279824"},{"version":"ade27963af3150e7761e60b8151222b3736446f5923d24e64822eaf7f49db444","signature":"b99a34a3a13a0d2909bf93d1ebbe3b8345a3ee9c908dfe6af6cf90e2a849a73b"},{"version":"72488e163f797a70ed4416b9c53d5aef6347904dfbdc1bb9224213a23362e044","signature":"8a40a79cc684e0f803ce7ccefd681ef96f845fb1d03ee83f1550bcc376df4817"},{"version":"f95f5a12c820c49f9416b6fa1b3f518084b604680d40f3f7ec067396074fc54d","signature":"5e8682cba921d41168e7b93fb4938679283e830ff194cd48c194060d097b644d"},{"version":"6b59d1ba88d918416f348840fceed0dedb12a7b5f9ef152e83bff7a64500fc59","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"160094f78215cf543ccbef49a2b1bc0ef31e6e7a07c0581058d657bc0921ab7d","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6","8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","b54b70665a946ad3d3139b533f12db29dfab50e4d9ed742e9dcc6e89315e5742","6577ae48a3d2f8e16839c35aa7c9394cd81315c1d12b8b0c576ebcae72e4fd5a",{"version":"441ccdb4f6372054f4efe7cbcb09b4a183f014cecbd1bdd02b27ff62a1288684","signature":"3dabddced4379d0e4cf58b6780b42c3234b5d4d84e77803cd9d7e61895b52f19"},{"version":"d579bf6887b4844651cc6b7f15f74c86190b4c5de1750beef8176dfb50ec7f1b","signature":"5a8b24701d9f0ca9b1193e2e1a1f4c9e40eac82bfe5a4f846b93ddae7ba24eb4"},{"version":"7332b0ca21fdece284844194b38a1cd53030a54abb5585ff4d08eded2bfc7e62","signature":"23191e0d6ad2164a45713ed5dde3aa64bde16d7fa0ecaf9cfd1853e5f01a93fb"},{"version":"a4e82889ff25d9d5970a5e649c9f55a568784bfb2ce0f3ce100f0b2b193c8a79","signature":"e1eff15265e9e5ec8d398d91b894937859a7e3450c3a8349b82028207c76cf30"},"2aedf5153fef77301d3cbd1f5375581d353920e3fc006962a2784e539c26e539",{"version":"690bfbdb3d91c00560e38c96b904ed87fe6d13188274f3c216ee88179bad2985","signature":"c03465ae34e422059071673f7134cb5d3af49d29d0fbf720c5d9f693fda1f99b"},{"version":"673eea42b1b8643e75700d69e8c8db1b4502d233f78511ce7ada18cbf98ef158","signature":"ea6a1eac736bf1a8a3677a1c2e3ae06dbcc07b60d33a99e49041f3e4e0959cda"},{"version":"1e3a1dd82fa5a9a63d20914f9e6b2d91bfa583ef4162407b634b5266b5010bee","signature":"1d0f39c71d8f59bc3d60a7f7b8138dc2888408995175c4d2b1c7e4d9f180d80a"},{"version":"72ed3352217db301fb2aff7fad5be1d9374aca3a9fed719d17e74b2f3fc59955","signature":"c68e6d392d4d704e33512a51b9b8cb7e2f88267a38278034be79f937380f0ea0"},{"version":"00256cdbaea991974393a80a357c9358f1a85b4aae5518866c27a17bb8ac1f2e","signature":"e168b22f5e32d3050e3d97e57614e51e726bf9797d55b60f6c056b020b602814"},{"version":"aedf6697dd5b3c29c2046df06be9ec52918a5071ff041872cccbc7804b140bca","signature":"5c95375f7b8135531c3765af29165b685a0f5e9da1efbbf3bd57152a9fc4d0ec"},{"version":"9224eef208b75e96dca29e8fecaa67e68cede43ed9c8929751271536fa44808b","signature":"70f921f860dce49ef5192edc68a4f06d66f223bd68a4916ec32e2236c38ab272"},{"version":"991154c5b5c1a0e5d2d9217dcaee66746bfcba064a8019b38dcabcfd2798ea38","signature":"650b1b349d1b77ca848075261625707b873d40c36fbce1da503e6335fd552cc7"},{"version":"92a82bcd53491a6ad1ebef9d8101cd1be1a582add43e99c55a8d5cea49309918","signature":"a600ef9627586d5607d7baa41846c7c603850e7929433acad56e5d6cbe25fe33"},{"version":"403e5b9aa16eab318041f96bbedd41491b8a5696744fd0325d0f260f3522951c","signature":"2478e2017c71f69b97f26877a6f310b15fb72ad43ac161abcafd090be1b5aa0c"},{"version":"03cc2fc248b2405ae7d41496165be126838d09190b6af7dc3a20bf5727390094","signature":"f031ef73cc8452b47396b88dcc2514c1e7d2b222d236f876cc4d809f70e308bb"},{"version":"51921b2d71f670633243c6ad96cf1ba75d1c9652fb2a2a12fe9b50d3eef4d0d2","signature":"dd9a6de9fe35aea0d2b96c17a374778d9b299a24fe592fd79e3bdf64e907354e"},{"version":"e2ba9ae5aa87517e29236a2e1eccad16a5d745a073f1d4b8596cfcf0c1c1b0e0","signature":"48aca09b5bdcd406482b79009f857cf254ef1a66f37be7b7f531e40c144b24a1"},{"version":"05cdbca45d7fc3ee53716961101d7711079ecb0620754ca12443021c5944145a","signature":"668bb16da01945baeabf781ec795ed4e5acc6a00590180f25c4d5d8805d0dac9"},{"version":"e2af63744ca6f3747a056715061fb47ae1bb04696f42f6144743b4bb3a92c59c","signature":"9ba55eb19f1d0ef461a47b9f076caac4f20844443434f1d7395d89e562d54dd2"},{"version":"e45bdf1cff9eff9d05f2c5fc29b3dcdf6596d7f20c5ad9aa51a4b5cf34360c35","signature":"235a8b31cc258089d785facda6ba1d2545114b1d9ab03bcc0b37436825e6686e"},"b8442e9db28157344d1bc5d8a5a256f1692de213f0c0ddeb84359834015a008c","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","68a0d0c508e1b6d8d23a519a8a0a3303dc5baa4849ca049f21e5bad41945e3fc","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","c66ecd83ad8b9f67a983516d544cfee5b4b1266141b69b293080ef19683c36dd",{"version":"2533226f232d96cf40785b1d9fdca70b38f7eff8149d707137c557aeb242dcc0","signature":"ebf7ff6f03e46335c915e3d54a615e55c887e5a771014146513142f382c1c7d9"},{"version":"ef545df7c918f0a913ee91ba4c989393fa7aeff0bd9af78a394fe78bb3307a46","signature":"54339895a6be6528ba8306bce274fc973122757676ed93901635ca2bf3981179"},{"version":"3f96ef5273959f41f5eba1c138105c14341d93085782d8a2e8a56a4e461a6109","signature":"2a0066baf88bac0a25eed9d006b53072ebbf14d987f0bd54963a99bc3d20ba8c"},{"version":"04ae68757a70d46853e9b964088e60c1c2df4e98aa4465b1bb92f6c6431f5b79","signature":"9804c3bc11a78baa26ee51680a7991f8de7426b9ad00e072a076db41bfc0b5d1"},{"version":"dc717cb056f1c83484c4d20125d05404d5cfc5fc542d3c982f7baf3a08eb1561","signature":"8d0c8f5d1da63ba8482cf56d5f671397453137e9dc75fe52601b1124b229fc40"},"5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","6eb0f0a3e3774e1bde7e234eb8f4df875d1588de267ed91dce7aff84c4e5cf1e","fa8f7c91687cdfdbdd2e12e7bc83662f95bf5652f8c3dda59c1b0f4d4b6454b3","25d0e0fe3731bc85c7bd2ef7f7e1faf4f5201be1c10ff3a19e1afa6ec4568669","26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","02f634f868780eaaff5e2d3fb4570dac8e7f018a8650bb9a0ac1deb4915df8d1",{"version":"811363a9bbdad32d3a1f79754a748c734c7b274da7d09b216848ec5c86b2d8d5","signature":"737719b99cb39d70cdacaf1f7d6e21fa32328c08118a5b37da7df92118922311"},{"version":"bc64e0bb890b3b86aa2d60194275394c28771e027f9be3f1f18548f2ea34a6a7","signature":"06549e3b56668b2a803610699b54540afc215209b90eeda7cccf22ea9195b384"},{"version":"caf65866d67dc49c5bba89aa95e878227686f24f97f5f064048161e5b751f2f0","signature":"5d1a89a888d009849e0bf56c6b33c1a59ce4ede1487c63ed145594c78576e876"},{"version":"32baf0d7a19f8a191fe762677a618ca9723e77349f4fb58d195059b2a9146014","signature":"e0386286a73697af2b7d0a16ae98c05aae11e6b7326af64594c2bf490a27d9a6"},{"version":"16194399bc16250fb58894bb3a7ba178be6c770b399820130bf318350c87e473","signature":"b30ecac9268cf17eb01125cc5f60338a645e6758e9735346431ebb7c1622e97f"},{"version":"3a5206cc7df45f4a2a607c0370cbee19639b24f39fb8bf802295d3e0a5996698","signature":"eaaca88092fccdbafc3004e1b842c3f8b9fd743f0ceb8b843338ebeff04582ff"},{"version":"e7bb18d2b9c9b3d67be2efc11642d0a72472444158384fb623c7b64d46b3ecbd","signature":"918242d8b33b72b809f523e32b3c5fa382c1d5b6be2de33d7d1f55f34f4d0f4a"},{"version":"0238c794db6165678cd645a94ec5098b21857b00cd17421ba3568f4be868e97b","signature":"3558432c04e8108e539cba3381ecb6e0e1aac11d7a509f93828a0163b49631b4"},{"version":"aa4f5878185b6b7ec57a4d4fefc2d07eb150d732135806e2720b2293baac2aa4","signature":"a1a253b50754c516ee15c728cbba7b9abd6f63f4c534673733761c286dbfc822"},{"version":"9814645f0f76ebf3203906e9ea703d90c62c050998b92f56f8f45fecf453bbe8","signature":"94704cc41e3e30aa43cd22e93695364b4e69a457317f4d577efb89e83865f2ea"},{"version":"a6ccc8cae8dd6a9328f2d9ab6edf8c9e52eef1abe9a99aac405c33158dbb6d9f","signature":"2cdc339390f20ed61190d043718b8fb8e640fbe7b55a7a5455d018ff6196385b"},{"version":"1226e9104d085a34071759b1f805da9c1d3f9cb440afa76cb67ea6e5dbaf310d","signature":"b7e2e690d250d028f29065fae02e66b266eafd054368b25a4c50e79ed821e167"},{"version":"fe2ec52e5f674bead0a3911084ea137a1b4d7a398876ab283b6abc33bb796bc7","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"6c1d3db82112daaad52e04e105f26788ee70369f855abf57ba2fa434b937844b","signature":"f9344a341b9058c86722a66118d331a27f1f53087bf315372c0e4d49b91ec5f2"},{"version":"d293d6d17393a978d134a173d201538e1e1ebe5a3d85206172cb2642a69bd669","signature":"14fc3c4dff0b385028bb171714d734d5ad9bd5d105d66fb50644ca64008fe07e"},{"version":"24f289cf1f55044ad940f4777d49eeaa7fcddc5c5139a51e32c3490b355eb732","signature":"e7df62b51f37c5210fcbad6f966a45e0dadd36c7595aebe874d655a5a5baccfe"},{"version":"bd7ba99b269e7cf1972b7ebdf816bbe1cec76b6ce2b90e2e253fc09d29a69127","signature":"071b55325b7a91276e50803df964d2b5725ad5e268030b7e2c5f4dd80c341ab1"},{"version":"a6eb0878c4917ffda0c9117cd46589cc3ed817736f43c5f3553726574baecb93","signature":"07dcb4920802dabd6c79fad484ef4d39606b17e3205a67626c975e109b817e94"},{"version":"a25dd2203f70ac3a59b04cc6aba1f47bd824ceac235d7f7d7c8a93a29f8125f1","signature":"e9c3be3767d0e5f7d3f0a28b94b37fd26f25209244064f0c970d0bb3f5d41c5d"},{"version":"423f37d054071e8ba2833101ba97e119970f61833ab331ab3fab19bf475442d1","signature":"4636be27321bd5c73607f3e511fa2ec638144f5cf1b64d4c362255a6ec39e802"},{"version":"d25e8b756b7c83ef7e8e87d6d0ee68b55a9c5bebf659fb52912d1d70c3bb1b94","signature":"a600ef9627586d5607d7baa41846c7c603850e7929433acad56e5d6cbe25fe33"},{"version":"202615e318dca7eb37493bb47d281c29cd63f147e72dae88b4906c077afac1e4","signature":"dbece8a5febb009e50fa07de97466a2a0eb3d6f1033849df2a43dd59f89ed115"},{"version":"6d5d836c7e37dcdaf866c2dd83056280501a75dc73cb70a827a9e1aa30708531","signature":"b398fe9d75399ab30fd5a1512a6801248a138982476fbd71d543875a55e6867f"},{"version":"64752b1fc3a7683a6c1759d36635fb8493fe773716aeb7776bd82bf603957ad0","signature":"dc4c611413e4e9921d257ad64a5cb0b66a0010d2998ca7503896ea5fda5481af"},{"version":"2c2fa6adf2c92ebac85f7f4c6fedc3efa700daddf658ccbb6d861c167ce9cccb","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"359d712af43ee93a9492ab81187c21f433e86d76f8a901002bc7bfb069cd8718","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},{"version":"c79a10273efa527025de068d5fb83e35360d82e404cdd63f088e51d2ffd47015","signature":"f3ff7306fa2e4cb93aa5bd8b1561bac5a4d372a4bd5b07f94c8698d3369dfc00"},{"version":"9b823d0849ec13ed255211eaec61efea3f37f401d39353bf132eae87ffa5b4c0","signature":"d28c7e1a3118a6618bdf61daef47d179b42bca68721c37de943088e553bd6edf"},{"version":"941dfc818e6fc370dd5afc6457de95952c30c1a3f3f090887279fd0a2581475c","signature":"cc17352c57ada124b82c87e1dc507a351d34357296b2c3f6f521ba0e5a7e6c1a"},"65f619098cc6eea32c4d1f89787681472633cc146fca09bf1cdb04711a15f584","cde42793164eac82421a13c3e291300c321c66771bbda57ad61184d338d353ca",{"version":"43558523bc6bfa9a00bd4b2f3ce1265b3f579a523ecc3cf123bb7b0674bb7d01","signature":"3dabddced4379d0e4cf58b6780b42c3234b5d4d84e77803cd9d7e61895b52f19"},{"version":"28128b1a5d0a775263512648cc221b5beae6aa1bd6a843ce0000e08c66c35a88","signature":"f8e76cd8292c837938826aa8b9677c65bf6b6ff5175a2c211efe78c0086de905"},{"version":"9a7740d7c2d0217ba3cd30ca4f9a99b136b068779f026cf8cb0c5e70abcb8ee2","signature":"a56471e2639e1760cda5e1902b425904b9851ef551ee2e5623f4aba63de37e86"},{"version":"2299995f4f1944e183215705c44a9ab7e460cf0606f33f24f171b97684d477b6","signature":"3c1f035fc31fc201a4c48f13fdb241f13944c9cd4c44aa6b6bea5d2befb36b72"},{"version":"58af4537a0ea93d2a13f8e79c39019bf765e51cac868c84ee8a4671445815da2","signature":"a34b65f3e25407c77cf3467e306e35ab062a9fbed65ce944194d64e5dfc8f4d9"},{"version":"f06a8d0fd3b0fab7ff7935ec6c5b78c58a48cccdfbf92cc328e57ded2c5bb163","signature":"a26449b5226a251efb1e3095cc5560b05c37b1c8a66394da8c3b2a2e44c0af13"},{"version":"dc62004181bf35193f36d45d7111724dcb10c7c2b346e1661dd89c16f8804ae7","signature":"16f80cbc1e0baee3ae166fa977d04675e18912ec55c5ce00f91c0ba53200766d"},{"version":"b40ed40e89ecb9345f253d1f3d58c1adac8076d9f0dec2dc32a364aa880e2eca","signature":"3e82184e048156cd37dc16848409e67408db8fc55430bcfdadf0c7e467ca78ff"},{"version":"8f0248996f450fcf96e5d65eb6d75fbbff978809af5e7f427298a2a3c11f2dfe","signature":"4c23827cded1af5f3952702a5589e4cfa9c74b7a903dbad078393ea34abc7061"},{"version":"171b0016e016c301653d1d60ba645128993dd0a51bc401098af831c5a5b794e1","signature":"7a3d2826039368a52883890fdf071d69fe54f7bd44da1aad25f8dc2bc139626d"},{"version":"826094a2c644380d40ee520b01b0655de351d57878454cc45bd4285e1cd0ad1e","signature":"10e022c1d1916ff1922f38a64e2e57be0c324d9aae628dd894d55d598fe18e21"},{"version":"ef7956f661a94184dfdb1292eeeb4a08fe3486642431ef6d3ebb29795161aa13","signature":"4e6075f4749acdc47fd3d3946f41f54841f907fa54098c775db7770fd9faf7e0"},{"version":"a8e8c4fb63c467cec84286320f966acf6541affbc07e29f791e454560014e890","signature":"63c078ddc91f01784a12b4d4a39cfaf83586d4d659782a6db0cb775bb090bd43"},{"version":"33ae76c6e38ee3a28f8094efe7a2165c9f1addd6c9e947dc8074ab41deeca1cd","signature":"cedd729939ecb29580189de3b72bdebb97516242e41a96adae2119b5b2eed27b"},{"version":"71c7ca26dd7441693ca4e78e41ecd01ee6054c6053eb4ee42e82d1faeea5e0af","signature":"ee4cb4012b261ad2d8fcaf52fa1729394abacb6abbd48361bfae920e96c5f5c5"},{"version":"df304c2c5827fe3ae78dfdd5316ad882aed05457cf03136848d1a8393a5ea765","signature":"94704cc41e3e30aa43cd22e93695364b4e69a457317f4d577efb89e83865f2ea"},{"version":"67aa92d7c06ef2fedc943c6e8eeaf45d738555d51e1b67eb8f65d40a9e712b94","signature":"a600ef9627586d5607d7baa41846c7c603850e7929433acad56e5d6cbe25fe33"},{"version":"4f05ad8fd91d4f17215de8eb3cd50059df41e9c891711991ee46dcbb038a1284","signature":"9d8bef9304f444560302ebfbf2171532cf28b17602f146dc460703f61e5798e8"},{"version":"fe2ec52e5f674bead0a3911084ea137a1b4d7a398876ab283b6abc33bb796bc7","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"b712bf68d3162d0062afcbb01e070073839e749a3f73e6be5d0bc17e951da82d","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"6a9e3bb8ca9146ff52d5b9458521802017982cfd530bb719397b1d1dc263fb3f",{"version":"8be43f20757d28a069ca0751b9d00ce7b7092ee2dbc7e66600af8a2d13bfd1b4","signature":"b612fc819814b4faf63b7955e4488609a40635d1f3951fed3fe5867c64aea961"},{"version":"d590613861d123d074c8257e415a671f72d7959f467256787543029ea9d1773d","signature":"7fd49be311d6756d73d61b0cd76e9acc1420cf72ef321f961367985a4ab665db"},"106d10633b752c5ef983ebdfa5460aec9728431c49dbfecbb7e49a9b8e5ac111",{"version":"06be96f2020cb6e3c23be85db3155568c8308256d0b92a977e1ad05ab1d705c1","signature":"5a56d5daf9fc80e3b67dfc0d57244be6627413d0086baefef4e795802b4c8ed6"},{"version":"70abbd7ce8ace47e80f6e9e14b68f260d77334ec590087c0fed7a5a5c548c441","signature":"b814783a9804bff9df9a904aca99ff445daa716a0c27582012fadd5622824a9b"},{"version":"f5c251840bb57987ba31ffb28ed0ecfd13ca68abd6f84035713d00f922b70ee6","signature":"e2591fa5e77a87a188bd2f8d069b09c45e905ce6de30bbb64d6cf6969c592bc8"},{"version":"2362ac4512ad74bcdca5d6d5d7b9c0fd51da2e7f3678c655bd6423e06f7677bc","signature":"310b10bf8582da6be362d15542709487dfc52893a2e7c9d10cfd70c04ad7970e"},{"version":"c16e4abd1ded8449720e10f6b4e6f9c65ebb058ce010cd0b2cf350c29869d974","signature":"64ff8883ec7e319d9754f08b9861614ddcd60ab7e77e3c9714ae63d02e585bdf"},{"version":"a06e1aca27f3aaa539e6e70fd7c522263e6b7ce0c2b31fb8f336dcfc14b4af13","signature":"ec4e35ba50854212e3835ae49e0753ae78cd74903c8040371def4a4528d9c90f"},"3888fff85f42ffed7b4ef7ffa460e9627087dfd382d41ad14a016207e6638bea",{"version":"63ea237d09694e52a2f45e7937b6f2538550f26ae23240cc54eeccaeb2c4eee0","signature":"d13068b95d79cfa6e02b34b9bcfc07086a566da92acbacbce2f3e57d6f87d8dd"},{"version":"c5f02fffdd7d4196a971593333e807ffb905013e392961be30228fef1b15a7da","signature":"bd08506013eaac40f15f7d6049fd8174cdbf551a1452bbc74d629fdfc9b6f4f6"},{"version":"261059728b8a4fec4a7b41b2f651d01dfb87a2607fbfefa34bff2c5d376cc58c","signature":"e64b6923dab61400d06ec162412cbcdc5ae121649a9336404620f14b8953fc39"},{"version":"f3af878b59176f57e98ea3e17d266d92aed5400574aa196406592bba4e119df3","signature":"ce0c41deaa2f5cea085954b45fea893a33742678dceada5c1013a0108429fe4a"},{"version":"3ae69f5ba3e06afd7c6ee9321a5e32b03cea480537f927c146d1bb6fca82ebcf","signature":"bb0a1409619a6c7c41aeb0d7499806c32bedca991bbadfb832927da54f338c26"},{"version":"764ab13707be1ab0ec1bb4a2fea1b76fd2c901b365ba843622e61b3b3fb5be22","signature":"0edcc46e2d86ff31bcc3337d02f427ffc8f372afa9c617f0fb3495049052176e"},{"version":"af235212e0338e0a3cb74fb2561a0c22377b5f8b037112fec649c1c707d6581b","signature":"221ac380969808617938e67ae60d8bc79ba073974b447e37b0dfedc6220b82c7"},{"version":"07607a704c3f04e2f0093efdb9854e742bdcfa5ff6fd7d97a243a7c0201f8cd1","signature":"19ca662b26e476d37fe274e7593b37319b3e598424cb267a2e93504493bec785"},{"version":"4e033ba436c8db7701433382de2f1b7519bf55f12399c526643ac619c610a2d4","signature":"5aadc0f1866f7331d46c4523669ffd5e5b07efb43284aa0b5bb196b045f7301d"},{"version":"c59e1d6b75e23acd064f8436700bec3fd57ef29fe3f88eb8b5cf9c4165ec07f1","signature":"141f0c6a85f58e1ebabd615d6113f1534cef4c53c25b3a2e532cb679c9fe85db"},{"version":"7325cf59e649ca9d1fd65ac6561be2d46dd52554a3ea34c7796c6681a182d079","signature":"fc245d77a460c0b36858bd6005eb0b730172abad7dafecc27d2cec4400a5f299"},{"version":"55a34d26d03d687d26cad595802c335f4d922728ccd0c4c9ff1a96a14db11c7c","signature":"3e8d4b712796b788770f551298131b05d5a34b52d8ae431165f9ffdb5be3beb8"},{"version":"2bfb84d1b0de9ec25360e0e364af379565e289a0739deaa84dc4c173c8e0cff6","signature":"c08ab67ae7b620f46c03a5e33754842ee9d15bc068d220369b362d760e065915"},{"version":"075b83636476be440cb7b67842bf158148e649131a111a4c753a60ed302542dc","signature":"60e95b9651b46ec879cad06b12b07e2ba9c5ad4922f2a9966f572db8642d73c1"},{"version":"f018faacf9e93a03828da54a7afd5560a2a967f36916e0818fba176f7202fc2e","signature":"43c714c1b00f427322676bc98f82ff72861ea8e1acd74f4c3d594afef1729d84"},{"version":"dad4957a70c554c5bd188047d573ee3744e99e43e119a29d844c05e8b480286d","signature":"667ae3c9c86fb761659e03dce6d322d195b1cdf363bc3b50bc9cc1f2a0737078"},{"version":"922ea5f383f450a4685b27e6db233e6d0c349133ba6af5847496ab1951916bee","signature":"b9e4c8ba82a019e95cfa5b5be74c01fd51e69ad7b9826304a6e5f98aa0db5b63"},{"version":"c45c49513a44bc1ef323f4182e93b32af90350667ba0636f82347b10a4f641c7","signature":"d5153a5a72ea47b5bd0c84db40c7be380a947b5b75104ee45fb2ecddcc9b9a0f"},{"version":"ad8e74fd381cde370b78dda28b2aae080a912db67a2b52812d87866689ba9473","signature":"9f9e2a86bf10f5699ed7821016267594f721e83441cd183ec544d6b170bbc6c6"},{"version":"f559677a993212708ef471dac85d9b668a18945ab12497dd7f8c3beaffadb651","signature":"4cbab0e7533e9a3fe54a6760d9e98f2b93ab20c3baad67dd014a52005a7b9c6d"},"d9d6497739d816c313c1ac84cbc91ffc6d3fd74cf9c19eb41ae463966446cd81","a4391503c6aea2077cc8abe2d018eb6dbe1a771a838099e0754b3be5252710ff","d53b20bf1caaa57cc505d9b6cd9c72ef8eb88c56faaf67c7908fd3ba7dd48375","d61a995cc1b0e9379cc697936083bab7ec591697c21528e7d9f5050393de697a","432a61971738da04b67e04e08390ac124cc543479083709896b2071d0a790066","96eb86ef716d05be717fd99718e158dcb5adb609447d45a1f577600c008b53e1","93f40416c65de66411ece03b2f7193c3ccc73595a3c487df942b800ba837aff7","387b66ce5e1bde2f44308269e762e5094a278e1b5e6b5f33085586d0881d441e","34c10d99861d192a900b9a532f3236f34483e544d81163fc9e36f9651573e3e3","aab2377ca90e5749e191ffe28b6d92193f8dd0b32cdb18605425b60b814417da","5b26d5b7c6dfd66c104420e7abf9dcdd2f97898fd3851a224f8c9600cd4be35c","f316722ac40120db03c07230e06a232ce5cf130b7134b047acfdd870dca37d52","0f61c1e90da5f731524c7b034187c03f376090a7d50d427154822495636573c8","151de7acf6be0aeb55a9f10ea3495feea4a8069688afa1c93ebbf9aa76c10ac7","7343cedd945574d4ba63d8f1080cb673a727958bac5f71df17140b647262c645","793460bac09d2b423bd0a83f28249d3e5b8842a4040fc22f8c42c5b5d32a99dc","ac0e6639cd51b02e547979d5885ae0b70efdd176165933cadcae1194e2e57e64","f552a0f7a64ae9d7d9dc49bdbd4980fbe84df56d5689141219df6cb2645abb7e","b178db4ba9126aae15fe4f1b23115f26d3f829372fce1fadc34772f841d6b61d","2e9da8ac430f0553691b3a0baecd78e76974466d1197b1273f7f021a03b942af","da05a5ec14813eabb29e5a7b97d09fbf41155f977b9748d1cb1ffe6589b8ad8c","c0f390cd62a9335a11d517368617f268ed4b253d17db6a247f598191f10b86f6","a90d60564a4076b72cf461e642edb9a6eceda2e9437d74ed96e5237f315d078f","a1f3fafccd657142de9ed3b10255fc5ed757f344fa28ec75b2f914f692b15b31","252b4d9bb646738413b74af60625d312b4652bf50aa50f9a415e8dbb90181044","aa227ad08d3140f43f22985aa18cf9cd0c28fe3a57ea3e585ff31a72e47ad92a","a0874ac23417626dcdfcfa253a1197d5998ee11b633573b862e34d9925a410b0","7558ef461677d53f58199a2f2e849a5cf12453cc19d4861cd159318669dd50e8","cb95d41deccc65eba78fd9b961a44cef9288caff4430062589d71dac667b6494","f736db3631dac6b3a26b2ed092d6372ec9a53f25d235405cbcc6991a27a6b8fc","ca0b1aeec6906bef682a7c5ebe76a823aa4f72d3591e3a50250092edf76f4f85","633a5e5398d92be5e7389cea7cabd60183307f1fc328aa968e963ada5659319d","ff15e9558618940b53c63a9104a5bc6261da47e7a9ff9caa0b7bfe8decfafe13","4da715a33b964422d55c8e574eb032e9a9c993636d4a0455bab46f1dd448d9d7","529072b94527f62d328347a5c47335aaa6430d16e33a85ea214969c9027ff985","9175b5f598009735a9777526327a772107231e653dec6e9d7abcc72102aef12a","d126fb9d0938845bb5c27b58c6c375b0a82c179505755e3de1ef932c230345c8","eaf886fc3a19709125c2b4b9c603902668a2ef209d1d153692d6d6e3476d6185","a101c17b854ea84b3960120f05c74096618a42ff505171abc85df8514479ba4a","1e7a324976215b35d22df3d93be1da088465ec7d324c50af5d199eda13395375","0dc039199a23022bc6dec76501d100adfd160a16f3c277f26bdd69cbb176c23a","a5a362a67cbaf83d5a2bc330f65481f3cfec7b1078dec7efad76166b3157b4dc",{"version":"ecf78c072af4ca30eda369734fff1c1196d927fddf22a3cd831766416f329524","affectsGlobalScope":true},"64972bdfa5b5a377a5e03a0ab97a3c2c614941897a602d75528f8f0e57ed9b50","58afc41a2666cd50623bc25f623ffb050845c65530da6ea63adcf6883a0787cd","423023f2a629bea41874bc22704f629e1a7d451623c444679f384eed9d9a9359","f3594a03f87d6294ff6d38b406aa5fd68ad2c658241d6baf9433bb429e04dcfa","da4f622f89cbe4a36e0eeaaa200805e45d632d2f0dc7bffe719324fea15c9245","404aaa3dae15ac2fc53ad838674275052c785eedad432a4b664dfd8a1675b07f","80053f3935605c81f45290d2bf8f315391a27201a9ed52d82c3930f7bbb39f5d","d4a033e5c412a2e8115a03c4f808ff2516381f0d9367160ade644c9bac7c6bbd","acdc2a3af93c87fff7d24f5e05dc762167b4867f4356fec54ffea533bef6a6db","6d659463fdc3dd72f3c758f379ce664cf99b88a418f6eb558c1bc8271df4068a","5c49cb36872b88af7947983b105c40eb405ddba094ce20aad80b38aefdedffde","7f3e77ed62c75376c79634df5000bb39ede3ac5ce44157334e32465ea5265877","3649a19bcb6cf7c5bfbde5144376345e784e5556531852885cccb37d3ed77223","5164a738d7dbe8d7573df59a70d3f90c15c51d079bb9ba906aedc4a40f16810c","cb57217d94d6913318c870e9d723f2250bfb0f223496e556fe55c58100485ced","9b2080619a70c9cb477c39fdfb6776beedb3cfbf2fd8bcb8e8a2bfb476fe8aef","c3756e14ed40dceabbfc95d28987ddac4de2b1edd73a623bcc633c5be725ab94","cc98f86e291cec9af14674f1ed8d51a1f253f630bc3cef959b1cdf188293e9e3","ddd79aad14526bd45eff0b3c6daa584693975d604e0eec8742a73e6f7fdde3fd","12e4bd8f262e455dc8b5c0c14db62d86737f8aa39718897949193368cde9ef35","9d6b8955fd1024096bcca6dc2061c6c4905a82a7e59e0b5cd0280e68c7ef1358","16e1dbbff953da654ddc99a1a1f69d36ff39ae7134389f9a02bc104b46ddaf55","cbd48fd6c459fe998319fdd09e8df77af198f4d0526d95fbdc705eca2e929aa6","9f7528bc0cb1bae33e1966e0eb44e41fc4dd6ec2189afa3961e02f3047075622","7c5532365d306cf01e351c1dd97fd7eb3bd1e3ed98c3e1b8cae4821be600d01d","d07577ebd137dd173a413a549abf8b6119405da8023cb92c60c1bf2b082d7c66","ca3527fdc0f30230bff90e80b9bb27ee6f6417f348de204e812d78b0c2764b38","58306029d64e91ccd8528d5280995b596c2076e4f1ff59dcf9e22fb2cfbd06c5","185ff609c3f9ae4f1a353bdac3f53a24ba4a5bd187f49bcdf8c6a8821e63e042","1f74af411e524e4ebc2b85c888c9b02a732f588953b00fba2d51f86fb4072d7f","1a8c788a152539ad0019e2cb36a358e42b6d660012cbc13c935bac4b20262b9e","de44db1f58245de49d2c168cf218a24bd1afca549c09c485ad91c97fd924faf5","7eea08b08a6ccb920da118da58c4812fb14e1791b2e7a47419f1b219ae0878bc","19f3ca2c80f5d33e7c8f88a166c709b9fc8da19f9b4da2c48f86854ec8956288","bce71ca09f50411c85c871017930a962f5205630e8f94537d49d3e459accc3ad","756d40de34a77951a74186f28b35c651b782cb9d86f786ffe8155273a2f8607f","ccfcb8b6f26c7f6f9a41682e996c06a867d7d0b26a3159237c71a3c8b3436bbc","66dfe0aef5d991e12c81206cf0ad6e0d7e9e02308af650370868d3f19bd88e15","d4ea1acd3c31a116d770e47a3a4499c8739dcc56ecc592c7dbdd24a043ad4246","1096bf0ce13d52fc7a7359b5988a908de7fe911d42fca93b3531174f44bd233d","fc78f82e92423599748abcc76d776608d4e34a27e36f35f19230e9e9828a0e20","711b2307b82efc238e219b28727ac5700d40c650d842620746f4495b2a0918d9","669407de5f3a5fa9d726ba4ec6660a028549673ca7cb3218fe0b0a249f857fcb","dde21e44d98bf43a857db42f65379f2f659e07aa5f91571d565a1510359cef13","19855c590793eac9bc723c272b701ef761f3cba6300ff3023ec57c2a4de63351","8963b5ab3e88aa20f10c63f5ab951aa99c4adf3e7ce584e16a319fdafadf4502","78e372b6f90f05d3d167bb2e0f2618eff28fb28ac05425d2c917c147370cea59","e1074eceecf81f3bdc322620403eb4d73958752ce668b033a1469e51845b2321","bf178f64ff585542d2f2499383cd3ca885ba1439b24a67a4976a2f1b6f1d61b4","b7b1161c27a3f9df53569a20bf01f787bed3973d5b066f353f2ea33a428c6125","5809786c582ecf2188dd788ca4472c0a0baab7c0496ddac2c27f306f69dffc80","0652a8afac9923c9059fd91866f88ca5662d1f1b62a02928aaf8b25bfeff2ef6","31fc705294fa8302f657c17ff1e52c6a16e3433314afd84dd5c61577c70ea3a4","298b4632597917c00b55ec21d1c128c79d1a7c4eba9c2e46740ab6d3f4de832a","d90e89c235c763d79f242384309d4f037740e83eca5da200abd5b36e71529e65","4454ad1362637a1e0a36b6bc4ba460ca89dbabc0769c2bc5204a6ec0c08523d9","d43c5213763a0f7e0222bf61a47a8fd45a5cd6aeeb903fc54d9b9c8c34a94c4c","9c5c8a9c0de5d396f9e8a84f062a567c619770077ad08f44653543b9aa9943f8","f9f8e73a71c35eb7c110dfa4e57e2d09ab51c0959a273ba1f6c0bbeeb3898ece","3ec0b24ef45ecf15c0d65619271a7ee5e61bbd4365fc9f2c1fea7f16e6ec44eb","a2e9e78e23531b7ffcfc2be2d8449417d56cf73ccb506c401863b5cbf66d0470","5d4956de5917121f1723147c38c1530d422a959ec65be0fe8688d6549255ad09","0efc4e36b76e9520f774254cf34b6d5f1a070c63c31d18c3c851ad2d5589b422","7691aea1847511c4dc180b41b42a8b6857f6e4e391dcf91085f180994b6ff86c","b851bcdbba2272f59f476d1121265762428c3599ff1581baef17371f14200d06","c0b870fcebc3a14428f28e2d1af1e36e5fb46f7b3169199126651e5a416893f3","516abab191af000c8d5f28d956f810bdbfd211c17e667e5e99d99733b2f9e48e","8e84cf9968d91be77a6a1c42b21dcf9faf99e4b295fb3eed938348d24ee0befd","e095f6e676d25eebff0413b09ae84694e34bcc0932672ee8ccee243f2bc2c4ed","3e9a53c2fc59c26b3c680e31a511da0ac17b89e5a79299b5cd686ec7394f8788","2d54ec3e4d7480d167be265c1d67514de5cc92af12c76b765f2d310d33204b19","7fed1c3755e94dca180bc1d5868be4c8f8021989c7b6ab87c6ea46c376b096c5","42931092b97287cbe98f63ab135d1fdc1e866a69f1843154d8d3799a6551f6f1","b3ca23fd064d446f81db449883df5f7e6b2bd893fad4a56189f4060227b462d9","5781ea87ae1dcb0403baeac1958e733457a1482df4f7a5bc9e191a6667a5dfc9","d5de69cef677c1ff6c10bc4623aaefb8806cc3dbc0fc4189a290590f3d606ecc","4d86c64738154a36f58666968852509de532d11098ab61111f806ec1d09cbc5f","0d5d282f8f4af120209c98c7f0eb9fef86b40d10a9b44d668c9fbb68d051ecb9","3659a9dd44ce010fd1b6fc3bdd0a015cfe15eb1f2856eb0255bbd98c329cda1e","e591ccb717a1baa8d215c2f08dd475c1494b9276dd8cd92682b38b3e5856315a","d82950cdb32fe5c2ba2e76d60f4c562cd3a28264b1ee40247c15ca12859cbba9","b8e9d7f6213c3dd807315d0d61725c8ce188dfd7905e6431739b647834145647","6ab30de57f8f77a36357303322313d91a1208f99cb7e1af50359bf2ac3aa9453","ec9d6bfe0437d112ba86d395267fa6a1fd09fc84ad386396ff9b2014a6bd6548","a39d660aa935920f320b24c258941c050f7354fba465c1d50b5d92b6082db6b0","e9138aefbe509d1610c5e51faf44589eb57e9657f57a5c9d51f61e2f63352c1e","105e7784d14a50694d0c6268f07cffac604c6601a03e4fe60c15e2fcbc5c7b65","a2cff12f329024fe861df7e5b99dafb756716b4bfb050552bd15385fbc5ff323","7e38e6ea02a584e6f0ce8b16d504b0350b249ca1cf1d01f58dd63c6ab461c27a","93e4eca3747fccea95856796710ed931b7f94febb118317cf9747d131cc1a98e","7aea96b15ef6a0656bcd0326ac59ed31938cda8956a503ee21283568dbbbfb25","2a9a901f072e4aee97f3fe7fe0557a4702ddd42a11e6d381a8e5fcbe6e8eb242","0e2bfb01db1d5e5751c068da2c333cdaf5e31fd7fe24438978c11dc8c00ebff4","ddcbb27557d265e69aae8caea5ce655880061df156576fa5cfc37ae6b43a9643","1cf3caa55359438a459c8de7f6f6de4fb0759d08b735b1a9a72fde58b786ecf5","6db6087be65a7ed63b898f9eedae1a0c2688133eb410006546822bc34f3bfa3a","6823b0b952fe41d6c104984da40ade01d4a8e4ce68363dcd46087ec3b48b2b23","9e82b9bcd0246cd8f7ef2af0247c73c584f5c5b7f760c1d07b76a1776fa525a4","daa1ac49655deed1e2f0830c2793fe6fb3fa0e6df98ff9d02952ffb548192f8b","7ce9a04f13fa0d2c2fe79aad2d7d46ce84e1c19fa3ff836eb2672eb5bd6e1920","f9bd840e3a4b82dbe01124578a80abd4d7c0e1c0fef99bba0230e8129e92512d","67d543f0e1af4547f19a61fe256ba7911c0d8e3117715fd1872c7924a2bf482c","860d7a4cd709d58b4a03126a6643c81c79d87bfcc0e3f1b94e5aee4edc65d8d8","52cf26056a641b2cdf69920089cff79d98020ebdffd74cb3b056fe375647a1a5","3c923b90a5bf5e6196f106c5545685ab0560bab0021e427d62765adef7a308e9","21b736192b1562ac2637d8a54b18be10a151f5f2e1b489cfe9b52c782f2b2b64","09eef3b84d5d7f3f489379199246e5c3e2acb6d51f882a4449e87b93c75525b1","cac06c09eab9366d407bee9f48afba3f5fb6cc374bcc12f6ae8242d1a678e1d8","302e04f641dc9d0dd52e3652f9aaf8bce77b80153df21d5a41e8869e1e93f641","69f0d00f706b24eec843f6b50b6a42efff02dfb0de1b828a74fc42696f00d46c","df72905e3f089122e249fc462697e13945ac4bbe0c12c5f20b37518bcbf2af5d","6838bde789145e3813771d734e8ccf5a025d87c9578ef1402b5f8fb50554b7f9","366bda9a32871f1327ea4e9c285726a4328d9d81e206966d8ba31abd66dcd347","9c846f46291c73a8849c57adbdbfeb76465bf6517b7ffad19a01acda0c5d68da","1bc3219dd1c81cdfca679395e239d79fc9c93cec821ae514d880f9ecf894dec5","7114f6922dc85d71c9e2198d292405fcd7db77194bf75658b1246e76128c51e4","cceaad5da041e389691e63293452e6f250729b08bf60f167e447b972d64026f4","5d39f58798099b8c405f0e59b0ba00af7fa218451f19998067f5b4f629123273","cccef834fce9f394c954f30586468598a1b01ab9df18e4a654b6d88801b42dff","92c9a85d87c985361ca2604cf479c944912d1e344dfc733cfc9f812ac6ade09e","a26f3842bd23ef9da6c21e47514fcdced126ec856888f29fd45407c6ee4e3b00","93e27a89a60f3e1578a8e0baaa92dab9e72a35ba280ee60bedc042749d208e6e","315be18a66de43d63b703d4b58aa8bac32f07eab0496cf0d2efc477bc087b151","b9047ef3e4ea3e1754b493216d4c28d46c3f7453d8454ad96b2c3b30ffedb99c","d1ed3e66a70be5efa6f4c3d43bc4bb76799cd5233f9df79ec8a9dfc15054d10a","221502f6ee6426ad108ca2a465e2b0bd838ebad2df1943446a33f42630297bd6",{"version":"b4cd656db9b65fff477f65dbda00a5de4e2e765375316abd0c3ffd1282664ccc","affectsGlobalScope":true},"a849a53cf1d5a35db4ae42e8bef37b82e43c58a805356f45d1f08de2ab905ccc",{"version":"bca898ed5e156c4e4a272e3f4f39a576fe78ffd474f23857b1146279949e1460","affectsGlobalScope":true},"894b224dff82b86c6475f29f95ffc918406b7f47c582b65246e1b21bec528a36","f507080866ab2ca83f3ec6fb112e62071f6753c5efcf77148bb7c3770a6c6ff4","9711fe25c99c988710fac29f1c9096a5d8e2c6119b721b4c603293eb8d0e914c","ff2205b3703c3f309da4b451dc609d63ed04bed75161aed6a87e5d6a64efd78b","6661ecd57a976fb80e99043330951945ae7612d86adb4f60447f53a96c680954","7f1d9fdd4faec785ec153d6a39c266b631c4358d02ad9568fa711210297f56f7","d3fe5c13ec7a1e74772231c13b8fd93130066116f12a048fa8111d6195b55ea7","844dc45243c694998b1e3ec2039e513c260a3f62fa91074cf170d96eb6ff3da0","726e78cd337e0b608d2a07fb10dac1318c16d05041297c1c6c7a755d54ec97ee","67902c5b0de78155a4b26372c11fc3064333401fdb70e1913e11d2271fc2d17e","cbf88540ebc08e5ed1b2ae6fccf8d705ec16d8852afcaa63a59578d1f91ea8ed","cbf88540ebc08e5ed1b2ae6fccf8d705ec16d8852afcaa63a59578d1f91ea8ed","5ed2c7c37d9717de11a92b0cfeb00a4894a7418529370183825756738da80aef","778e0507c0d649f6ad2fa9e1f4ca61c8a429bcc104672a6449d1c782918b3b92","b33ff6be332b48bb491e36e7bd00df6b2e8de635da18d2e82cbcb6124bcf66b7","ee6570614688062fa0bb635c8abbb7a4dc3d6968d7b66f8b59254b2a1afb360b",{"version":"74cd3abdd5e3b3167bd3d4fc3bff7321f3bb73b8182adcde5c02858bbf171f47","signature":"4005d469150f4cd3aa91cb9ceed4594265ab7f184ceea08c099ae1936e97d6a8"},{"version":"bcb04b07bee1ba338a029d6eb49a867fe33dde03873fca63fa3f686d308cfc62","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"abe303b8470070dbb6bee4f634fcf74e461d2d17bd03500b3c43d899a7b80994","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"eb7b343af6a2388692abaa37a63df71b1b7ae6178abc72545bc467b43b3a655b","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"23e8380caaa9d2c116d384f1d317beaa9ac135e2657174685061f707e2f88651","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"dee08f139a611c5a340b86869f46869bd00977f28e0dc905a7cbad5c972f0a9a","signature":"149f5e6cb96c078ef427d1a78daf410759e16041c3f446113371d82ae4dcff9f"},{"version":"ef95ee96d062eceef0095f798994b8c102ca05ac034b5157d66fdc06bbf7cb15","signature":"af47c81be02d7e0b0a52b96e1fd048d30892442d8edfb8060fe107387f7dfc5d"},{"version":"47c538fbdc5ccb44c6fd915d55705fc2658e1e5e2cf4ed8ecc5566bb3c629fba","signature":"0bfb8452643f092f8df57bc9f6027ff77472519d53f397632909ced05322c9bb"},{"version":"721faf7d076e40de8ca22a8be1af76dcba4d05f5de8ca919df1f7b480a80d85a","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"15cc0be6a600032e7ac440b428bd5388003976ff65b3da9948e18188153d0af7","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"07ab851eeafb3b4fc94093774bbce48f6ef11ca7cb7f4d1fce90996a94cc9d20",{"version":"3eccc8eb531edcfe4550a025b5a8e68c4e558f4ac9779af6a258c7e400584a56","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","6b729c3274f6d4738fe470109bcb08b09ef98a6b356c01da3ca8dc0996b4458b","1344f614adcf534756712e9a672523bb8c814e5fbb8f8464007190a553561c03",{"version":"0a72ad57af8dae018dbef944b54c047fcf302ab8a593c5cc58c601ef756abe0e","signature":"0fdb785666f5fc11a226eca9793cc9251501c700ab57adab00275ed2336ca836"},{"version":"5b4e6762925be7a91fc9e3d25c9fb5039dae2ab3e2a96b1f566f620c4817a3f7","signature":"7776770fdf3d1025cd314b78c7cd9ad34c94460aac0523d8e02acdabc1b92d2b"},{"version":"5094824a5d65332a364308a54d6410617d20ecb699a3bae480bdf31da23db2d7","signature":"6c7951dc44103b668c4023d0e15e5d67d8d7bde0157c85e23e2dd42a0286bd23"},{"version":"1f3d116e8e56d9436de26023afe59ea5fa454ec3739f7d8a657ab85f937e3193","signature":"b6ac4cfd55355af05387bce2e894e2f3b00ea9d8674670a6b30eef564d160da0"},{"version":"b0ba910e8ed5685e0d9ea4c7f4a687671c1989d9985530da500a78d7ebe9a910","signature":"d20fe4376cf65817d5f7e8475aeeacd9611503aec33a6a1b5c207000d52a06bd"},"9b0e0e8756131143065a76f2e5bbf2a15b1f53e6e40f5aa464c7b1b60dda5ea7",{"version":"67a05eef301142343897ac51e0edfdb6809966440f54b76d0424f1e23dea96e9","signature":"56375539bcf9744d116081f3389da86ef1cad0a5a2d5c6902bb3b1795907c516"},{"version":"a86842ec75a9465a9f8d95f92714bef43727318c9c2a703aea15d212d16e0b92","signature":"29022247bf8dce1d033039525abc64466445b2482518beab2be9dc509d605de5"},{"version":"49b8d12940c55585e3593f134cdfdd93b65ad773e02880672e05e78dc807b438","signature":"f0a2a5e084cda1fcdd21e31d25ca8b69615dbc985b8e3db9659539f587bed148"},"55446c61892bdc1681c725b5989041492da8fad5f251748d571d26060be0770a",{"version":"d63130c545e7e43763c7863dba67b77e13fc484241817c917b60fb78452d2179","signature":"355893155b6e80bb1d801e19ecf8b00c1c837681b0876f0571afb9a12325e43f"},{"version":"c3fe2c171cd463d2655a7402da543ef5988aa816714ba5f6b71ffb506f4658d0","signature":"f4d0c8ca6ef2fb3e132b369af7032592109020c910ebe53a3513d4b35357f1ef"},{"version":"6e9d92d371c1637e60cfe995680bb7938fb4d7614ecbe3cef8eb1969435c7c98","signature":"52e8767d17103237782a41096f5b45869ce53b6792ab8c4f999f397728383e9c"},{"version":"5ac2ab4fd6d35bda760cd9f538954cacf07bedcb27b8a8c9ee93659fd7da75a0","signature":"7c1bbaef8acc374bb974dc2808ea4cd903cb2cd94a3c5da593de4a94645bec5b"},{"version":"7a2005e41e876b1cf875c76a8f4b17df35194d9a915f32d3ade2c18de0eeec6e","signature":"aef270720c7caad49df8bc8f261987420bd8b43495b4e1c0d8957ff9d1ddf912"},{"version":"6a3b4689f4e4a8255cad0235e88239bc1ebd7e7e392e3a872640d3af4aba088e","signature":"dc4c611413e4e9921d257ad64a5cb0b66a0010d2998ca7503896ea5fda5481af"},{"version":"3cba20ccce8ecf867f078b0e1fcddced67a4b309e27f42759ae5d0516d1dbe04","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"35eefd49534ba56fc0ffe216e44f956007020f03e590d48d733791ed88b0a58d","signature":"44628fb3346124d4d0bc67756af38b85e513430663d07a8dfdef3aa460fcfbed"},"106d10633b752c5ef983ebdfa5460aec9728431c49dbfecbb7e49a9b8e5ac111","93721bf674bd68e23139150aa18b9afb9621add9028f49aad688a160341713dc","fd11414e8036028ccaaf56dae468313681c17592a174c4316381073ef12374a2","8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6",{"version":"e369cd1b12ef5c7d509022979e520a7a1738222cd1c7cf91cf0fcd26afa6888b","signature":"d6e6b70824f82183d421664cb91d78991f68eae8848c50d989286f597f29feb9"},"f1f453117c3ebef03b246fb6c89cdd1c4412145d124605d03a83579a80c47a8a","d7fe888be285818be929143dc84225a661134589a904eef5ad03721fb5f783cf","5563108fbd431dd0a90cfc87d9f1ee550680df94df33e4690fa6acfc0b6b8757","8bffa969fa7e6e1d7f194c14f2f324265532a8fa6c046b3560cf9ee2c638fec1","8f44a78d1ad769dbc5f2668f2b7a02b43404724849e7afe0cda188957d47ccd0","485c95ea74479320db266f03fa702ad9b0823b8154a0a2b81e5a4c633bf9ac4a","efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"16d74fe4d8e183344d3beb15d48b123c5980ff32ff0cc8c3b96614ddcdf9b239","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"7ae9dc7dbb58cd843065639707815df85c044babaa0947116f97bdb824d07204","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","f1ace2d2f98429e007d017c7a445efad2aaebf8233135abdb2c88b8c0fef91ab","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea",{"version":"ae900471ea16b852ce62c0cd17477ca332af7004045242d41b01a505c678950a","affectsGlobalScope":true},"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","80d02a787d4aa00e2e22dcf3ea9d40390f38dfb0c3497bc6855978974a63e20c","cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87",{"version":"55bbfa2fcb7692e366773b23a0338463fc9254301414f861a3ae46ff000b5783","affectsGlobalScope":true},"858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","44fe135be91bc8edc495350f79cd7a2e5a8b7a7108b10b2599a321b9248657dc","1d51250438f2071d2803053d9aec7973ef22dfffd80685a9ec5fb3fa082f4347","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","edf7cf322a3f3e6ebca77217a96ed4480f5a7d8d0084f8b82f1c281c92780f3a","e97321edbef59b6f68839bcdfd5ae1949fe80d554d2546e35484a8d044a04444","96aed8ec4d342ec6ac69f0dcdfb064fd17b10cb13825580451c2cebbd556e965","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","28ffc4e76ad54f4b34933d78ff3f95b763accf074e8630a6d926f3fd5bbd8908","304af95fcace2300674c969700b39bc0ee05be536880daa844c64dc8f90ef482","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","670ddaf1f1b881abaa1cc28236430d86b691affbeaefd66b3ee1db31fdfb8dba","77926a706478940016e826b162f95f8e4077b1ad3184b2592dc03bd8b33e0384","82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","b47803e8337ad5fb0b7f7edc2f22887b0e5e847c61ed2ea8bac4454d2c35fe56","d294c49571f1b75f75479227e33d6f2fd2326302bce5f9f4dff0c719819dbfdc",{"version":"c513a7b0cb88ad501839b81cde882e744d284272a825c65a481a6435a2db5667","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},"91a13ac688071c6d324d59569d8b6173441df1c04df2fed58a225d5a37554dde","6a8373d630ef99295e3d79e3d41759745d91c0f682424be3d60159274b494c86","ab25fe47299beb26f3a68b97c9b508da1bf761ce5722ef9424044a08c86733d1","13dfd22af7049998c31ba7320087ec2068a4f50712a9ecde67b85868a5c63c72","16c361605a88a341f19d086959923ffb3ade54999b0e5c1db6f4dd1604144b79",{"version":"512e1e49bb8e0947cee9d5e089c04a28a7932217057c628a84cb3b3cacac3cc6","signature":"b410d76cb499efc6d7ac7348af586bb0af99f6c6e650f855b1d58c063402fdaf"},{"version":"d1bbce2be0b099e64c11b60bfb57a88608932e5050940481cb12b80600ac7db2","signature":"51e89d5f3ce0920cf6eaf1b62168e575881aa36ccfadf9893f29e97699409960"},{"version":"9fafecd653c58ccedbc4f7b34fc5f9abb98e1fd5ae995fc3ac3639cfefb9be40","signature":"4179d7c505f28a0022dfade3359f61036b478df1ef0631e0775a4bb75740512a"},{"version":"e762642ccbda12df1b3dda919df072b50cb8743836a1fbf39b00b0036b665427","signature":"0bfde0c7a2944547bfe25ab0eca35a1316c30d8b55bc59f4b1960ec972aa7cdc"},{"version":"28cbb0f68a8edaad960272a004cc895e58b68158c4a1b7f1929694a2d5bc8aca","signature":"c62b20a9452879d791dd019667469994c6843ff5a56936696801933c89947a21"},{"version":"b0df688731cf4bfa701e56053392227a09a7b18b207527c454031e2198e295ea","signature":"cba3f131979017671ed9d34181bb6dc288617af12aa2971d1897a5b4900ec8d2"},{"version":"524d5a59d71edb303e121bf163d61a7f076e25be959c474344e0b5b8388044cb","signature":"24fe331e9df1202bfaf0320fa1c1b866949dc6557c13783ae701ade0b745be1f"},{"version":"524f4fd043c567fd4e883a4a4f647bd08283628f5ac4119ff711f20838de5088","signature":"d49a8eb3cb5a522b3cb7e684589138a12b46075479cd688dc770ad8d09b62ac0"},"338ffc09a052c2296c8d8ac2dc2237be5bb85dffb28f110be640b4dd4d3ecf2d","1ed985d3f6b3b2608bbdc4bf4d0c09a6e351cbf9ae429eb3b7bdebe4944b2fa4","7e875aebefb8528398930da830e00ebeeae443aa01bb4c7c7059e77dc35168e2","9b8d54263cb56a66421cb3723f6997a10d0eb4733d3368ce54e10e57f72aaedb","a25c881c2c683a04a856cd3f8f9ec1afccf07f6e4615bb246cad446237b95bee",{"version":"dd958db0892cf33fba1c78c96b9e13e08e62653f6c58d822063cb513e6482752","signature":"e242664547d6ac9d3680c87f97946cc359520f30e83adab59fd9e17c52134584"},{"version":"5b6bb49625a66a15611b433c0d470395c0f7f8924a0b01aef364525b365b1bf2","signature":"20791db0424a87512ad9fbb1f7e90ad3dde0cbc95ed0ab703770e6dfd950d9e5"},{"version":"a8cd7ae2a469aae44de9b3dba3271c4e4f35da6f0d88c84994f5677e42752655","signature":"27e4ad440682225c103bfc3c1998eaa870b54ee4f1abc4457e8ae64ce2e5de0e"},{"version":"6d3293380654981295c421815f527e56deb6a04a0465eeda84f3c958743d8919","signature":"241da0d2ab3e33c2c826581e1b96e0cb0bbcba93df4a2b13cfdf917a332435f7"},{"version":"8e65635a64be2c57f32734284a018c6167cc594cae89f2a709fa4d5089fca23d","signature":"d5d722a336189be9f101559ace973522805864c92de50a7b21015622f94b455e"},{"version":"bd6998dcff920a2f1c1911812fd975014c00d9858fc958bc6744ff38f1e34357","signature":"44b404fc0b11828310b77aa3e1913ccb5f65bbf6341ead562de641c10627d0d9"},{"version":"fc826e84b2ea407985485e7b63388f060d725c7c861701104d6a737d198a93cf","signature":"54e16b22f293c81e3522bcc79502d6eb508ce002de3f7fa13e961109abfd4942"},"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","446b5dbbcbd8b9b1676f0ed77cb6bcd0d3adec82feddfd2f9d99ce9174126bd3","1af1f2c02132bafa25c4c4b7c415e0a59ba959d6db6bd1800a43fb5d943e3f77","6ed78c0dd85bba4f0f286f8dea1bf8a65632cf671133f621125e34f5d63c57b5","8c50d5e8aaae8af1362963b1bdebdab08e4749bfb833c02e0ae9c20dd8419411","8840ac63b448062ed3c171c343493b988cbba758d3a4625f99052eb3a22a7fb9","d1fa26fa13ee8d9fffffce8e839feddc77d863597f2ac18d208c6966b3314f57","01e12c80ec3b6e60769389683fb87c47535a34a038977cd4ff9486c061a3a53d","a1b8d849266b3da0edb3705570fc7b34bd53c788afbd9d981fdcc44e73e89757","32b41b7a40546ed6eb38c7e51c721d006129cdf3bd9433149e4f9c5a0239638a","5143ac65b70252c4dce46785efdd41edf551abac29552bff7d2e3c559bd44c8b","c4115f1e5c67644a394ae1aa1439d6dc8fb08e9bb6a58cfd42d64b467f418f05","614eebb8e3a89f0b7445e23327bdc37dc426fd870a3b6b96e0de774869f19395","ab4267d371387f8be164f1743a5d2c844b8ec5b5fbefa1d9674eee34904eb221","e2dbbc9fac1688b3ca7a7a2fb98649b58ecc017576c7d745e10b27d7fbdb1fc3","69b96da62577eab48668dd4cbe9567f6f94f157c05507c6da7a8ea0bd9da63a2","3692f683fb4f3ec5b0eba15431cd90e37e891702e21ab1387461dbe89252c07c","bae0af9b71bebd58beeb607e048fa06ff5a976e0dd757f346f242cb50b5f4f13","e8951674626aedee6be73ff6bd659945032655453e8877fb484931f2254007cc","6b1a03729280176509798e8b295ae9abcf4fa71a58e7187ed9f10379d405840e","830e13e8e62f8bfcb291edaecb85641fe4dfe9608b3a0c0f8759c3ac966e95f4","53d7651005902b904b28ff9d97dac4061d5a6eadce2a2b96731e64168e9313be","f89599bbfa52914cc6ea40b837871a3cea4b86fb841fa05df1ea8aba868dc074","9533ab81da567cbf24762de21a1d41ce9fa41eb1f3cf5b906967c907974f0ee9","84fe919f192f518f05f0ddcc91b1b93b01eca8b9a9c791f502c93a82a2bcfce0","edb778e757329c6966494edab61f8ecfd2b747ef143da47bf23af148a465aeff","dd896a01076bff523df123124d67f4e6bfb29da9cb87c17ed2fddaed547bd888","e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","a598dc895431672aa781c14e7a2f898e26730ce06e9cc5009d39fe103b950061","13d6ded2bd2b0910e09aca1f2378fcf8b6861eb672c559655368a98ab81dc860","985d310b29f50ce5d4b4666cf2e5a06e841f3e37d1d507bd14186c78649aa3dd","ddc04c65d7282d24e7341eb1e198729998710b40bd2ef087ec42c8eb4aadb663","61937e4027635e7f12746b58d1e3bb7145114697a555bfe912aca9bc34415367","1ab840e4672a64e3c705a9163142e2b79b898db88b3c18400e37dbe88a58fa60","48516730c1cf1b72cac2da04481983cfe61359101d8563314457ecb059b102a9","f1226c85c75dba57bf83b0df3fcf20af9c8d8a6f1043f33a637425bc41abda85","f2d80ce361931836b85db164e993b2770538c0ca2c13119dcbcdbc8962e2fdaf","a38fbe9176d15bbdfc75bec1e64c8adee2fdc1a3c9c65c1fb15d66ce764cc881","7a819c7133551418f5dcdbf7038879edcf2392baefde8296389f5c3c20cec2e7","a458446a6e4ef3db8be5f214f42490acd6d2bebc9c15c397077b0aae75da6a74","0413281c480cbe10fc6de715e912bf05688c53024884c57d0433981c06e5eb7d","6f27bc22042d5504aa2bf1ca4a0e4d415c96e69df45cf8f3e34d6794d8bd4618","0220ba3013de8eb3022af6c8881e48e5b9ea57fa5f045d4d40caa81cbab5c8b1","36c0840683680e9f4c2fc4157bbc8ff283cd147d729a27043a35238c39182530","5c5d901a999dfe64746ef4244618ae0628ac8afdb07975e3d5ed66e33c767ed0","85d08536e6cd9787f82261674e7d566421a84d286679db1503432a6ccf9e9625","113976386a1fd6065bb91eb0ec5958245c42548019f6da49f85bcbd50324cb8a","a1e9b1740facf44f7331b0f80223320656fce7a0781fee36fbd82e8fe73dcfec","1a46cc5a0c51fa06ed1acc1f9ee45e2ce889d4b3db45fae9068973461d3cf99c","33b8dcfdbd807bec327291afc1ef01ba79fa8d9ed1d9196701b549b257102c5b","447d006ae3eb00f96af15c77999273d2521d1b5b8744df62cd7c5e5e03973049","4c859bc41e4be5d0a51714c06a7f59cc9e4115c628d383aed57a592089d3fc54","c6658e3d10486947e1678aab34dab37183fd950bd17e1d0390dbc07faa5630c0","2261d69ccc41c056cbf5cc5674f1f931b6dfc57bae6eab762037b1821b7f92a3","46efaa5e9c4b1da7ce2f586b913db6144595cf927ffc6c8288ad1c76c6dec5ce","e05e23ad9282ace300cc99478ac578fb19f8b0d38f094378ef9208dc8ab66d28","573a3eda38e40e776cdae17c671cea3b58dfb19a1094831369cdf3feed84e746","9bbabb3c3efcb1e9ddf68fe90f695063ea43d0f0bc5baf28f9baca3633eeeb7a","eab4499baf0ff71ba110254dd694308e078544222dbf6ff60b9a68bac0592027","1d15d2f8888f3c02798ae4fe2fb8ad395bf4c5a4b84a16095c4c432cc78bc407","e54520d1663e6ac2fb38e157e23aa9b9616bd6a1ceb54a6b7a69f8ca892ac2e4","a7b1b8bb7b2b5a98057433bd52cb19ebbc411d7df10e8736946da5dad2d9600e","de9b48332e7d27cd5b2e39d0b6d52856da89923b3f8f3999d5bc72b2ec41c931","bbb4d08cd8441d17d28dbaa02fa9b15071ebb92649f7e7db196d1044cb1903e3","9ed08d9ed11d4f0cea817d3e6bd3065028e64e5be7e1974ffba0c87008f7d5ac","21fed563e62d6aab7c461407dbcee685b9e1b976c2aa41bd4dbebc0a1aab90a0","5d64102c5282174a0c61746fd6e593edaf45ca6f09cfc6908e4e96ed1a28772d","50939a03a6cb09ee9d3803053c034a564f15a2aa97f0210cdf34fd93fbab6efa","626c63121530f17f3c7d10e608e034a1f12c91012d8e6a4e0bdfa334c6efee13","0b38217d5c3a30483640ada208f6b5e469d6d66ac8380e80517e870ebbc7f8dc","8f016fe26950ee2d9f7167d35eb3bf882eaf94df817239b0c7e004fa1e63dd4b","7a00ad6a0f72353e2c94bef6e6b94345450980f44ef66893bfed6a84e43e00b4","bbad2d7fd3649826108302c952065b1914a886bedb94469e66d945f07b06ada5","f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","b7e708f140db732cc3fb369905dd2f472f8952635a3711a04a792d885d19c6a5","8b059dcecc0229f1390bbe27e321b843f02927538b1e0fb09ec149902fa53ce5","17d3f26684a88e7651e52ecce18b292bab01a9241670fadd6bb76910022fb492","b487d434cbc327e78a667d31b34ac001433ecd482e487557bc9c737d6f5a24fa","46e8d2193f476a7a7de3cdd24743a2eafd009175159fe8494f0e3001a0e681be","e924774b42ff4558194d6531a3c368aef7b257e52cf001f01f7eda4655d1a125","c93dceadb06e3cb565421474fa7feb4ce94592637df7c9d7034cb27644b2ca59","10f97da752d7aea1734a2098f7537fca63165dd48882ce3d08ef2aed4ac47667","60b93ce0381b11434394616a5db9762950a0501d748998c6932150bb249e0394","a4ead38d64e1720c52f26457738484a61cd50be51abfd2bfc234c951fb79d20c","1a82e5569808c2987a9d6882e5b910beacb0165b6d18656540170038d6b8661e","6b243d0f6cf1786f6e3b10a99db080a977cc27e6f49bcff2b6264cf0339063d5","ef12df927e5deeaa09efeaf9f79336fa33745a4b3d745a8a35f43ea587bbcf40","083609ca47c047c6802bd40e974346a9509ef28367bb07769dbcead77cc7359f","364918fa15f9021675fe091510ed8f1ef91d63be82ca07712c9f93b45c3e4a1f","3a2d62eeb42c8163cb300e447b124824ed0aaf1a504ae23ded431b7adb4a7fd8",{"version":"c9299d543e4f0d22d6326018526f44fab5b3dd7519ccc68204f53d7d3c03a42e","signature":"042cd1ece7b448c4c481dbe0cb9a6ff9ce9c36182970a79e4d3b0a224fdd3dfb"},{"version":"18828ee7877b1eb99d7712a843a6fc656850d8d672b4264993c356f8ef000190","signature":"970ff8e1c8512773a918e0cd4d13c646efc61b6c4674decb4ad2094de90a4e2e"},{"version":"1e644cd956cfb411a0c1729e7da1123138fcc384c73b25e52adad60a132a7487","signature":"07fa95e93a72d3e3aa736e757e02b77ff80621f3aa39065e74fb80b0efa2f919"},{"version":"90b76344e54df64f78af2a6af1c49e217b15d8db680d75cd5c7bf27cca32b5a7","signature":"d5f733730d68f112578467bc50188cf79ac2ab59f3e84cce1a2fcf1070c38f6a"},{"version":"daf42d49ad73cbbf5a17c611aa1655f58de2f7163d6394bd8663d73247f40c3a","signature":"7edb79a7bba8b4498aab0cefd3b4610ead160f84542ac6cfe2a0e0449f7fc2d5"},{"version":"2299a4cafb9587922bdd6bad7e03226c696874054991f1bdae06043b933c860d","signature":"c6430c01d1257e13ce1ba2c0744986a7c2b426b4ff4b5aaf47cad442455392b6"},{"version":"22ad4b69094145363a7e06522ff46b02ce9fa19bb8543c510038dcf59cf734c8","signature":"5f534adea9f12a2e0a23c73f669628eda2df37207f82276b4eb5704179cca6bf"},{"version":"392b2c8e8a0ad458ab1e589639571f681d3855f2ed877edb48c35bc2bb6d8c74","signature":"d70945e0f97a9e8bb360cbfe8027b07d73a3a5d5c127c97b39dafdd27a06bc65"},{"version":"0341316e609ac33111b21afa83c66134f79bdc4964108531d331a8e0257ac170","signature":"c948fb76605d9fee8eb14f486c068ee2ca6d7dbcd1afee51e036c8d4a1fee035"},{"version":"bca898ed5e156c4e4a272e3f4f39a576fe78ffd474f23857b1146279949e1460","affectsGlobalScope":true},"c83e65334a9dc08a338f994a34bd70328c626976881d71d6aaa8dc7d66b08d96",{"version":"af653525be6dd6e067a631b379bc287004c5f2f132ad2d1e28c282824621737f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0f699060a560e260b588e3d45931d26c6dc795335792eb80e528b9de28e5ddbe","affectsGlobalScope":true},"6551aedc5ccd64a70644837b0921d2588102662133b0e25d191f3d5cfeb628d3",{"version":"3bc07e52057f5e74fc6f6b30e98c1ba65a7db9f874590d65e86d3f23b9c6d6bb","signature":"a0c6f02eb101d9ec6efca7eddc147d22541872cc0237c145258ef65057793625"},"e2d29e47501add2c940d63cf7e1597445d9ec21e483755e99d96c72e29f06605",{"version":"3c64bde1067a0f2dd2619dbd7121e3c3d71a2c7aa31d17c52e5a960d65759095","affectsGlobalScope":true},{"version":"bb02440049be5a30a034f22e7b4906194d1ff5d68245b00ba9a39845e840746f","signature":"4f67e1875a09c8a7489a275520671371023acce1fa2830d9c7751a55e6ae8ea2"},{"version":"4025a454b1ca489b179ee8c684bdd70ff8c1967e382076ade53e7e4653e1daec","affectsGlobalScope":true},{"version":"c4baf2c38b00f29adfb4e60554de4152ebf4c17f3365c0f2ff34af7f3b35ef1d","affectsGlobalScope":true}],"root":[66,214,[226,238],240,[242,266],[268,272],[276,278],[280,285],287,[289,336],[340,344],351,352,[378,414],[430,433],[444,504],[506,525],714,[719,726],[729,733],[735,754],878,[884,891],[897,903],[995,1003],1006,[1009,1012]],"options":{"allowImportingTsExtensions":true,"composite":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noUnusedLocals":true,"noUnusedParameters":true,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[389,390,495,498,724,747,748,750,754,1010,1014],[274,389,390,495,498,724,747,748,750,754,1010,1014],[273,274,389,390,495,498,724,747,748,750,754,1010,1014],[71,273,389,390,495,498,724,747,748,750,754,1010,1014],[153,389,390,495,498,724,747,748,750,754,1010,1014],[144,153,389,390,495,498,724,747,748,750,754,1010,1014],[142,143,144,145,146,147,148,149,150,151,152,389,390,495,498,724,747,748,750,754,1010,1014],[158,389,390,495,498,724,747,748,750,754,1010,1014],[153,154,155,156,158,389,390,495,498,724,747,748,750,754,1010,1014],[153,154,155,156,157,389,390,495,498,724,747,748,750,754,1010,1014],[71,158,389,390,495,498,724,747,748,750,754,1010,1014],[71,158,159,160,389,390,495,498,724,747,748,750,754,1010,1014],[161,389,390,495,498,724,747,748,750,754,1010,1014],[71,389,390,495,498,724,747,748,750,754,1010,1014],[71,377,389,390,495,498,724,747,748,750,754,1010,1014],[377,389,390,495,498,724,747,748,750,754,1010,1014],[161,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,389,390,495,498,724,747,748,750,754,1010,1014],[366,377,389,390,495,498,724,747,748,750,754,1010,1014],[71,161,354,356,361,362,363,365,366,369,371,372,373,374,376,389,390,495,498,724,747,748,750,754,1010,1014],[142,389,390,495,498,724,747,748,750,754,1010,1014],[141,389,390,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,754,892,1010,1014],[71,389,390,495,498,724,747,748,750,754,892,893,894,1010,1014],[71,389,390,495,498,724,747,748,750,754,892,1010,1014],[71,389,390,495,498,696,724,747,748,750,754,892,893,895,1010,1014],[215,216,217,389,390,495,498,724,747,748,750,754,1010,1014],[215,216,389,390,495,498,724,747,748,750,754,1010,1014],[215,389,390,495,498,724,747,748,750,754,1010,1014],[72,389,390,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,530,724,747,748,750,754,1010,1014],[389,390,495,498,567,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,754,845,906,1010,1014],[389,390,495,498,724,747,748,750,754,904,1010,1014],[389,390,415,417,418,419,420,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,418,419,420,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,416,417,418,419,420,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,419,420,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,420,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,421,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,422,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,423,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,422,424,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,422,423,425,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,422,423,424,426,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,422,423,424,425,427,495,498,724,747,748,750,754,1010,1014],[389,390,427,495,498,724,747,748,750,754,1010,1014],[389,390,415,416,417,418,419,420,421,422,423,424,425,426,495,498,724,747,748,750,754,1010,1014],[389,390,442,495,498,724,747,748,750,754,1010,1014],[389,390,435,495,498,724,747,748,750,754,1010,1014],[389,390,434,436,438,439,443,495,498,724,747,748,750,754,1010,1014],[389,390,436,437,440,495,498,724,747,748,750,754,1010,1014],[389,390,434,437,440,495,498,724,747,748,750,754,1010,1014],[389,390,436,438,440,495,498,724,747,748,750,754,1010,1014],[389,390,434,435,437,438,439,440,441,495,498,724,747,748,750,754,1010,1014],[389,390,434,440,495,498,724,747,748,750,754,1010,1014],[389,390,436,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,754,758,1010,1014],[389,390,495,498,724,747,748,750,754,794,1010,1014],[389,390,495,498,724,747,748,750,754,795,800,828,1010,1014],[389,390,495,498,724,747,748,750,754,796,807,808,815,825,836,1010,1014],[389,390,495,498,724,747,748,750,754,796,797,807,815,1010,1014],[389,390,495,498,724,747,748,750,754,798,837,1010,1014],[389,390,495,498,724,747,748,750,754,799,800,808,816,1010,1014],[389,390,495,498,724,747,748,750,754,800,825,833,1010,1014],[389,390,495,498,724,747,748,750,754,801,803,807,815,1010,1014],[389,390,495,498,724,747,748,750,754,794,802,1010,1014],[389,390,495,498,724,747,748,750,754,803,804,1010,1014],[389,390,495,498,724,747,748,750,754,807,1010,1014],[389,390,495,498,724,747,748,750,754,805,807,1010,1014],[389,390,495,498,724,747,748,750,754,794,807,1010,1014],[389,390,495,498,724,747,748,750,754,807,808,809,825,836,1010,1014],[389,390,495,498,724,747,748,750,754,807,808,809,822,825,828,1010,1014],[389,390,495,498,724,747,748,750,754,792,795,841,1010,1014],[389,390,495,498,724,747,748,750,754,803,807,810,815,825,836,1010,1014],[389,390,495,498,724,747,748,750,754,807,808,810,811,815,825,833,836,1010,1014],[389,390,495,498,724,747,748,750,754,810,812,825,833,836,1010,1014],[389,390,495,498,724,747,748,750,754,758,759,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,1010,1014],[389,390,495,498,724,747,748,750,754,807,813,1010,1014],[389,390,495,498,724,747,748,750,754,814,836,841,1010,1014],[389,390,495,498,724,747,748,750,754,803,807,815,825,1010,1014],[389,390,495,498,724,747,748,750,754,816,1010,1014],[389,390,495,498,724,747,748,750,754,817,1010,1014],[389,390,495,498,724,747,748,750,754,794,818,1010,1014],[389,390,495,498,724,747,748,750,754,819,835,841,1010,1014],[389,390,495,498,724,747,748,750,754,820,1010,1014],[389,390,495,498,724,747,748,750,754,821,1010,1014],[389,390,495,498,724,747,748,750,754,807,822,823,1010,1014],[389,390,495,498,724,747,748,750,754,822,824,837,839,1010,1014],[389,390,495,498,724,747,748,750,754,795,807,825,826,827,828,1010,1014],[389,390,495,498,724,747,748,750,754,795,825,827,1010,1014],[389,390,495,498,724,747,748,750,754,825,826,1010,1014],[389,390,495,498,724,747,748,750,754,828,1010,1014],[389,390,495,498,724,747,748,750,754,829,1010,1014],[389,390,495,498,724,747,748,750,754,794,825,1010,1014],[389,390,495,498,724,747,748,750,754,807,831,832,1010,1014],[389,390,495,498,724,747,748,750,754,831,832,1010,1014],[389,390,495,498,724,747,748,750,754,800,815,825,833,1010,1014],[389,390,495,498,724,747,748,750,754,834,1010,1014],[389,390,495,498,724,747,748,750,754,815,835,1010,1014],[389,390,495,498,724,747,748,750,754,795,810,821,836,1010,1014],[389,390,495,498,724,747,748,750,754,800,837,1010,1014],[389,390,495,498,724,747,748,750,754,825,838,1010,1014],[389,390,495,498,724,747,748,750,754,814,839,1010,1014],[389,390,495,498,724,747,748,750,754,840,1010,1014],[389,390,495,498,724,747,748,750,754,795,800,807,809,818,825,836,839,841,1010,1014],[389,390,495,498,724,747,748,750,754,825,842,1010,1014],[389,390,495,498,697,724,747,748,750,754,1010,1014],[69,389,390,495,498,696,724,747,748,750,754,1010,1014,1015],[389,390,495,498,697,724,747,748,750,754,1005,1010,1014],[67,68,69,70,389,390,495,498,724,747,748,750,754,1010,1014],[338,389,390,495,498,724,747,748,750,754,1010,1014],[71,389,390,495,498,615,724,747,748,750,754,1010,1014],[71,389,390,495,498,623,624,724,747,748,750,754,1010,1014],[71,389,390,495,498,559,560,724,747,748,750,754,1010,1014],[71,389,390,495,498,560,724,747,748,750,754,1010,1014],[389,390,495,498,556,724,747,748,750,754,1010,1014],[389,390,495,498,559,560,561,562,563,564,565,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,558,559,724,747,748,750,754,1010,1014],[389,390,495,498,568,724,747,748,750,754,1010,1014],[389,390,495,498,703,705,724,747,748,750,754,1010,1014],[389,390,495,498,698,702,724,747,748,750,754,1010,1014],[389,390,495,498,704,724,747,748,750,754,1010,1014],[69,389,390,495,498,695,696,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,583,638,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,724,747,748,750,754,1010,1014],[389,390,495,498,699,700,701,724,747,748,750,754,1010,1014],[389,390,495,498,699,724,747,748,750,754,1010,1014],[71,389,390,495,498,560,561,633,724,747,748,750,754,1010,1014],[71,389,390,495,498,560,633,724,747,748,750,754,1010,1014],[71,389,390,495,498,633,638,641,724,747,748,750,754,1010,1014],[71,389,390,495,498,633,638,639,724,747,748,750,754,1010,1014],[389,390,495,498,633,636,637,640,642,724,747,748,750,754,1010,1014],[389,390,495,498,526,533,534,724,747,748,750,754,1010,1014],[389,390,495,498,526,527,529,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,724,747,748,750,754,1010,1014],[389,390,495,498,526,528,532,534,724,747,748,750,754,1010,1014],[389,390,495,498,526,528,532,533,534,724,747,748,750,754,1010,1014],[389,390,495,498,526,532,534,724,747,748,750,754,1010,1014],[389,390,495,498,526,527,724,747,748,750,754,1010,1014],[389,390,495,498,526,532,724,747,748,750,754,1010,1014],[389,390,495,498,526,528,529,533,724,747,748,750,754,1010,1014],[389,390,495,498,526,724,747,748,750,754,1010,1014],[389,390,495,498,533,724,747,748,750,754,1010,1014],[389,390,495,498,526,534,724,747,748,750,754,1010,1014],[389,390,495,498,572,573,574,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,724,747,748,750,754,1010,1014],[71,389,390,495,498,568,580,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,588,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,580,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,568,580,724,747,748,750,754,1010,1014],[71,389,390,495,498,568,580,584,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,611,724,747,748,750,754,1010,1014],[71,389,390,495,498,568,574,724,747,748,750,754,1010,1014],[389,390,495,498,570,724,747,748,750,754,1010,1014],[71,389,390,495,498,570,576,577,724,747,748,750,754,1010,1014],[389,390,495,498,568,571,572,573,724,747,748,750,754,1010,1014],[389,390,495,498,570,571,574,575,576,577,578,579,724,747,748,750,754,1010,1014],[389,390,495,498,574,724,747,748,750,754,1010,1014],[389,390,495,498,568,580,724,747,748,750,754,1010,1014],[389,390,495,498,557,724,747,748,750,754,1010,1014],[389,390,495,498,557,558,621,622,724,747,748,750,754,1010,1014],[71,389,390,495,498,557,724,747,748,750,754,1010,1014],[71,389,390,495,498,624,648,649,724,747,748,750,754,1010,1014],[389,390,495,498,531,724,747,748,750,754,1010,1014],[389,390,495,498,566,655,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,618,724,747,748,750,754,1010,1014],[71,389,390,495,498,629,724,747,748,750,754,1010,1014],[71,389,390,495,498,627,724,747,748,750,754,1010,1014],[71,389,390,495,498,625,724,747,748,750,754,1010,1014],[71,389,390,495,498,631,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,616,617,724,747,748,750,754,1010,1014],[71,389,390,495,498,560,633,634,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,634,724,747,748,750,754,1010,1014],[71,389,390,495,498,561,566,724,747,748,750,754,1010,1014],[71,389,390,495,498,643,644,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,638,639,641,724,747,748,750,754,1010,1014],[71,389,390,495,498,644,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,666,724,747,748,750,754,1010,1014],[71,389,390,495,498,560,668,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,670,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,672,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,674,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,661,677,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,679,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,568,584,586,614,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,586,614,661,666,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,580,661,672,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,661,676,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,568,584,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,648,650,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,652,661,664,724,747,748,750,754,1010,1014],[71,389,390,495,498,566,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,656,724,747,748,750,754,1010,1014],[71,389,390,495,498,661,724,747,748,750,754,1010,1014],[71,389,390,495,498,706,724,747,748,750,754,1010,1014],[389,390,495,498,619,620,626,628,630,632,635,645,646,647,661,662,664,665,667,669,671,673,675,678,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,707,708,709,710,711,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,652,661,663,724,747,748,750,754,1010,1014],[71,389,390,495,498,654,724,747,748,750,754,1010,1014],[389,390,495,498,712,724,747,748,750,754,1010,1014],[389,390,495,498,566,724,747,748,750,754,1010,1014],[389,390,495,498,556,566,652,653,654,724,747,748,750,754,1010,1014],[389,390,495,498,556,566,656,724,747,748,750,754,1010,1014],[389,390,495,498,651,654,655,657,658,660,724,747,748,750,754,1010,1014],[71,389,390,495,498,556,566,568,724,747,748,750,754,1010,1014],[71,389,390,495,498,558,724,747,748,750,754,1010,1014],[389,390,495,498,658,659,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,754,757,876,1010,1014],[389,390,495,498,724,747,748,750,754,755,756,1010,1014],[389,390,495,498,724,747,748,750,754,755,1010,1014],[389,390,495,498,724,747,748,750,754,946,947,1010,1014],[389,390,495,498,724,747,748,750,754,905,935,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,845,904,905,906,935,937,939,945,946,980,1010,1014],[389,390,495,498,724,747,748,750,754,940,941,942,943,944,1010,1014],[389,390,495,498,724,747,748,750,754,940,941,1010,1014],[389,390,495,498,724,747,748,750,754,940,1010,1014],[389,390,495,498,724,747,748,750,754,908,909,1010,1014],[389,390,495,498,724,747,748,750,754,904,907,908,910,935,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,905,906,907,934,935,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,910,933,935,937,1010,1014],[389,390,495,498,724,747,748,750,754,904,905,906,907,910,933,935,936,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,910,933,937,1010,1014],[389,390,495,498,724,747,748,750,754,905,906,907,935,937,938,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,910,933,937,939,1010,1014],[389,390,495,498,724,747,748,750,754,905,907,935,937,939,953,954,978,979,980,1010,1014],[389,390,495,498,724,747,748,750,754,905,935,937,939,953,980,1010,1014],[389,390,495,498,724,747,748,750,754,905,907,935,937,939,953,980,1010,1014],[389,390,495,498,724,747,748,750,754,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,1010,1014],[389,390,495,498,724,747,748,750,754,905,907,935,937,939,952,954,980,1010,1014],[389,390,495,498,724,747,748,750,754,911,912,932,1010,1014],[389,390,495,498,724,747,748,750,754,907,911,935,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,907,935,937,939,980,1010,1014],[389,390,495,498,724,747,748,750,754,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,1010,1014],[389,390,495,498,724,747,748,750,754,904,907,933,935,937,939,980,1010,1014],[71,83,389,390,495,498,724,747,748,750,754,1010,1014],[71,83,85,86,389,390,495,498,724,747,748,750,754,1010,1014],[71,89,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,89,389,390,495,498,724,747,748,750,754,1010,1014],[71,96,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,83,389,390,495,498,724,747,748,750,754,1010,1014],[71,99,389,390,495,498,724,747,748,750,754,1010,1014],[71,89,102,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,106,107,389,390,495,498,724,747,748,750,754,1010,1014],[71,83,111,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,110,389,390,495,498,724,747,748,750,754,1010,1014],[111,389,390,495,498,724,747,748,750,754,1010,1014],[71,111,389,390,495,498,724,747,748,750,754,1010,1014],[75,76,77,78,79,80,389,390,495,498,724,747,748,750,754,1010,1014],[74,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,89,119,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,83,87,127,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,495,498,724,747,748,750,754,1010,1014],[83,85,389,390,495,498,724,747,748,750,754,1010,1014],[71,100,137,389,390,495,498,724,747,748,750,754,1010,1014],[71,139,389,390,495,498,724,747,748,750,754,1010,1014],[71,187,389,390,495,498,724,747,748,750,754,1010,1014],[71,83,87,389,390,495,498,724,747,748,750,754,1010,1014],[186,389,390,495,498,724,747,748,750,754,1010,1014],[71,119,389,390,495,498,724,747,748,750,754,1010,1014],[71,85,106,389,390,495,498,724,747,748,750,754,1010,1014],[71,120,389,390,495,498,724,747,748,750,754,1010,1014],[71,121,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,74,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,210,389,390,495,498,724,747,748,750,754,1010,1014],[71,74,82,389,390,495,498,724,747,748,750,754,1010,1014],[71,187,188,189,389,390,495,498,724,747,748,750,754,1010,1014],[71,87,389,390,495,498,724,747,748,750,754,1010,1014],[74,389,390,495,498,724,747,748,750,754,1010,1014],[185,389,390,495,498,724,747,748,750,754,1010,1014],[71,185,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,185,389,390,495,498,724,747,748,750,754,1010,1014],[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,389,390,495,498,724,747,748,750,754,1010,1014],[174,185,389,390,495,498,724,747,748,750,754,1010,1014],[71,161,162,163,165,170,171,173,174,177,179,180,181,182,184,389,390,495,498,724,747,748,750,754,1010,1014],[71,389,390,495,498,724,747,748,750,754,881,1010,1014],[389,390,495,498,724,747,748,750,754,879,881,1010,1014],[71,389,390,495,498,724,747,748,750,754,880,881,882,1010,1014],[71,389,390,495,498,724,747,748,750,754,880,881,1010,1014],[71,389,390,495,498,724,747,748,750,754,880,1010,1014],[389,390,495,498,724,747,748,750,754,948,993,1010,1014],[389,390,495,498,724,747,748,750,754,905,935,937,939,948,980,984,986,992,1010,1014],[218,389,390,495,498,724,747,748,750,754,1010,1014],[71,218,222,223,389,390,495,498,724,747,748,750,754,1010,1014],[71,218,224,389,390,495,498,724,747,748,750,754,1010,1014],[218,219,220,221,389,390,495,498,724,747,748,750,754,1010,1014],[71,218,219,389,390,495,498,724,747,748,750,754,1010,1014],[71,218,389,390,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,754,980,985,1010,1014],[389,390,495,498,724,747,748,750,754,905,907,935,937,939,952,980,984,1010,1014],[389,390,495,498,724,747,748,750,754,846,875,1010,1014],[389,390,495,498,724,747,748,750,754,769,773,836,1010,1014],[389,390,495,498,724,747,748,750,754,769,825,836,1010,1014],[389,390,495,498,724,747,748,750,754,764,1010,1014],[389,390,495,498,724,747,748,750,754,766,769,833,836,1010,1014],[389,390,495,498,724,747,748,750,754,815,833,1010,1014],[389,390,495,498,724,747,748,750,754,844,1010,1014],[389,390,495,498,724,747,748,750,754,764,844,1010,1014],[389,390,495,498,724,747,748,750,754,766,769,815,836,1010,1014],[389,390,495,498,724,747,748,750,754,761,762,765,768,795,807,825,836,1010,1014],[389,390,495,498,724,747,748,750,754,761,767,1010,1014],[389,390,495,498,724,747,748,750,754,765,769,795,828,836,844,1010,1014],[389,390,495,498,724,747,748,750,754,795,844,1010,1014],[389,390,495,498,724,747,748,750,754,785,795,844,1010,1014],[389,390,495,498,724,747,748,750,754,763,764,844,1010,1014],[389,390,495,498,724,747,748,750,754,769,1010,1014],[389,390,495,498,724,747,748,750,754,763,764,765,766,767,768,769,770,771,773,774,775,776,777,778,779,780,781,782,783,784,786,787,788,789,790,791,1010,1014],[389,390,495,498,724,747,748,750,754,769,776,777,1010,1014],[389,390,495,498,724,747,748,750,754,767,769,777,778,1010,1014],[389,390,495,498,724,747,748,750,754,768,1010,1014],[389,390,495,498,724,747,748,750,754,761,764,769,1010,1014],[389,390,495,498,724,747,748,750,754,769,773,777,778,1010,1014],[389,390,495,498,724,747,748,750,754,773,1010,1014],[389,390,495,498,724,747,748,750,754,767,769,772,836,1010,1014],[389,390,495,498,724,747,748,750,754,761,766,767,769,773,776,1010,1014],[389,390,495,498,724,747,748,750,754,795,825,1010,1014],[389,390,495,498,724,747,748,750,754,764,769,785,795,841,844,1010,1014],[389,390,495,498,724,747,748,750,754,952,983,1010,1014],[389,390,495,498,724,747,748,750,754,904,952,981,982,984,1010,1014],[389,390,495,498,724,747,748,750,754,987,1010,1014],[389,390,495,498,724,747,748,750,754,988,989,1010,1014],[389,390,495,498,724,747,748,750,754,904,988,1010,1014],[389,390,495,498,724,747,748,750,754,988,990,991,1010,1014],[389,390,495,498,724,747,748,750,754,904,988,990,1010,1014],[389,390,495,498,724,747,748,750,754,949,1010,1014],[389,390,495,498,724,747,748,750,754,951,1010,1014],[389,390,495,498,724,747,748,750,754,904,950,952,1010,1014],[389,390,495,498,724,747,748,750,754,1010,1013],[389,390,495,498,724,747,748,750,754,807,808,810,811,812,815,825,833,836,842,844,846,847,848,849,850,851,852,872,873,874,875,1010,1014],[389,390,495,498,724,747,748,750,754,848,849,850,851,1010,1014],[389,390,495,498,724,747,748,750,754,848,849,850,1010,1014],[389,390,495,498,724,747,748,750,754,868,1010,1014],[389,390,495,498,724,747,748,750,754,866,868,1010,1014],[389,390,495,498,724,747,748,750,754,857,865,866,867,869,1010,1014],[389,390,495,498,724,747,748,750,754,855,1010,1014],[389,390,495,498,724,747,748,750,754,858,863,868,871,1010,1014],[389,390,495,498,724,747,748,750,754,854,871,1010,1014],[389,390,495,498,724,747,748,750,754,858,859,862,863,864,871,1010,1014],[389,390,495,498,724,747,748,750,754,858,859,860,862,863,871,1010,1014],[389,390,495,498,724,747,748,750,754,855,856,857,858,859,863,864,865,867,868,869,871,1010,1014],[389,390,495,498,724,747,748,750,754,871,1010,1014],[389,390,495,498,724,747,748,750,754,853,855,856,857,858,859,860,862,863,864,865,866,867,868,869,870,1010,1014],[389,390,495,498,724,747,748,750,754,853,871,1010,1014],[389,390,495,498,724,747,748,750,754,858,860,861,863,864,871,1010,1014],[389,390,495,498,724,747,748,750,754,862,871,1010,1014],[389,390,495,498,724,747,748,750,754,863,864,868,871,1010,1014],[389,390,495,498,724,747,748,750,754,856,866,1010,1014],[389,390,495,498,724,747,748,750,754,853,1010,1014],[389,390,495,498,724,747,748,750,754,848,1010,1014],[389,390,495,498,724,747,748,750,754,849,1010,1014],[389,390,495,498,724,747,748,750,754,850,874,1010,1014],[389,390,495,498,724,747,748,750,754,846,1010,1014],[72,213,278,334,344,351,389,390,495,498,724,747,748,750,754,1010,1014],[72,278,387,389,390,495,498,724,747,748,750,754,1010,1014],[72,343,345,346,347,348,349,350,389,390,495,498,724,747,748,750,754,1010,1014],[72,334,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,288,342,343,344,379,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,288,334,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,278,342,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,342,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,351,383,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,278,334,342,344,351,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,334,337,339,340,341,342,344,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,342,378,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,377,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,288,334,335,336,343,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,278,343,380,381,382,384,385,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,334,341,343,344,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,278,351,352,386,389,390,495,498,724,747,748,750,754,1010,1014],[390,495,498,724,747,748,750,754,1010,1014],[72,213,278,280,281,282,283,284,285,286,331,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,389,390,495,498,724,747,748,750,754,1010,1014],[72,278,290,296,298,331,332,333,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,296,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,239,288,296,299,311,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,288,296,299,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,288,297,298,299,308,309,310,312,313,314,316,317,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,239,288,296,299,315,389,390,495,498,724,747,748,750,754,1010,1014],[72,328,329,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,299,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,278,299,311,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,278,299,318,319,320,325,327,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,296,299,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,296,314,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,239,296,299,322,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,288,296,299,308,321,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,299,323,324,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,307,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,296,299,301,303,304,305,306,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,300,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,302,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,299,300,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,296,300,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,239,296,299,300,321,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,296,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,296,299,324,326,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,296,299,315,324,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,334,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,278,279,287,296,330,389,390,495,498,724,747,748,750,754,1010,1014],[389,495,498,724,747,748,750,754,1010,1014],[72,279,289,292,293,294,389,390,495,498,724,747,748,750,754,1010,1014],[72,289,291,293,295,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,289,291,292,293,294,295,389,390,495,498,724,747,748,750,754,1010,1014],[72,279,289,292,294,295,389,390,495,498,724,747,748,750,754,1010,1014],[72,279,289,290,293,294,295,389,390,495,498,724,747,748,750,754,1010,1014],[72,289,291,294,295,389,390,495,498,724,747,748,750,754,1010,1014],[72,296,389,390,495,498,724,747,748,750,754,1010,1014],[72,296,297,389,390,495,498,724,747,748,750,754,1010,1014],[72,290,389,390,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,458,463,464,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,458,464,495,498,724,747,748,750,754,1010,1014],[72,213,278,389,390,457,465,466,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,459,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,458,459,460,461,462,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,392,495,498,724,747,748,750,754,1010,1014],[71,72,278,389,390,392,458,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,468,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,467,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,224,226,227,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,228,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,227,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,232,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,227,389,390,495,498,724,747,748,750,754,1010,1014],[72,73,213,235,389,390,495,498,724,747,748,750,754,1010,1014],[72,214,226,227,228,229,230,231,232,233,234,236,237,238,244,246,247,248,250,251,252,256,257,258,259,260,261,262,263,264,265,269,270,271,272,276,277,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,225,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,276,389,390,495,498,724,747,748,750,754,1010,1014],[72,275,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,254,255,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,253,278,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,252,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,247,248,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,247,252,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,247,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,73,213,263,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,263,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,266,268,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,251,278,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,263,267,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,239,240,245,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,240,243,244,249,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,240,244,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,240,243,389,390,495,498,724,747,748,750,754,1010,1014],[72,240,248,389,390,495,498,724,747,748,750,754,1010,1014],[72,240,242,389,390,495,498,724,747,748,750,754,1010,1014],[72,240,241,389,390,495,498,724,747,748,750,754,1010,1014],[72,247,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,270,271,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,278,389,390,457,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,493,495,498,724,747,748,750,754,1010,1014],[71,72,73,278,389,390,476,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,476,477,479,489,490,491,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,476,480,481,482,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,389,390,476,481,484,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,389,390,476,480,481,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,476,481,487,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,476,478,495,498,724,747,748,750,754,1010,1014],[72,213,278,389,390,476,483,485,486,488,495,498,724,747,748,750,754,1010,1014],[72,73,213,389,390,476,495,498,724,747,748,750,754,1010,1014],[71,72,239,240,278,389,390,476,495,498,724,747,748,750,754,1010,1014],[71,72,213,278,389,390,476,484,495,498,724,747,748,750,754,1010,1014],[71,72,239,278,389,390,476,495,498,724,747,748,750,754,1010,1014],[71,72,213,239,278,389,390,476,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,473,495,498,724,747,748,750,754,1010,1014],[71,72,278,389,390,473,478,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,475,492,495,498,724,747,748,750,754,1010,1014],[389,390,498,724,747,748,750,754,1010,1014],[72,278,389,390,495,498,724,747,748,750,754,1010,1014],[389,390,495,724,747,748,750,754,1010,1014],[72,213,278,389,390,495,498,503,504,719,720,724,747,748,750,754,1010,1014],[72,73,213,389,390,495,498,503,724,747,748,750,754,1010,1014],[71,72,213,389,390,495,498,556,566,569,614,712,713,724,747,748,750,754,1010,1014],[72,389,390,495,498,505,525,714,715,716,717,718,724,747,748,750,754,1010,1014],[72,389,390,495,498,503,724,747,748,750,754,1010,1014],[72,389,390,495,498,499,500,501,502,724,747,748,750,754,1010,1014],[72,278,389,390,495,498,722,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,521,522,524,724,747,748,750,754,1010,1014],[72,73,213,278,389,390,495,498,507,724,747,748,750,754,1010,1014],[72,73,213,278,389,390,495,498,506,508,516,518,523,724,747,748,750,754,1010,1014],[71,72,389,390,495,498,506,507,509,512,513,515,724,747,748,750,754,1010,1014],[71,72,213,389,390,495,498,507,517,724,747,748,750,754,1010,1014],[72,213,389,390,495,498,507,521,522,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,724,747,748,750,754,1010,1014],[71,72,389,390,495,498,506,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,519,520,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,511,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,510,512,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,511,514,724,747,748,750,754,1010,1014],[72,389,390,495,498,506,512,724,747,748,750,754,1010,1014],[71,72,278,389,390,495,498,503,525,721,724,747,748,750,754,1010,1014],[389,390,495,498,747,748,750,754,1010,1014],[71,72,213,389,390,495,498,556,566,614,712,713,724,739,747,748,750,754,1010,1014],[72,213,389,390,495,498,556,566,614,712,724,739,747,748,750,754,1010,1014],[71,72,213,278,389,390,495,498,724,738,742,747,748,750,754,1010,1014],[71,72,213,278,389,390,495,498,724,738,740,741,743,747,748,750,754,1010,1014],[72,278,389,390,495,498,724,735,745,747,748,750,754,1010,1014],[72,389,390,495,498,724,733,735,736,737,747,748,750,754,1010,1014],[389,390,495,498,724,747,750,754,1010,1014],[72,213,278,389,390,495,498,724,732,747,748,750,754,1010,1014],[71,72,389,390,495,498,724,728,734,736,738,747,748,750,754,1010,1014],[71,72,213,389,390,495,498,724,727,728,729,731,738,747,748,750,754,1010,1014],[71,72,389,390,495,498,724,728,735,747,748,750,754,1010,1014],[71,72,389,390,495,498,724,730,747,748,750,754,1010,1014],[72,278,389,390,495,498,724,738,744,747,748,750,754,1010,1014],[389,390,495,498,724,748,750,754,1010,1014],[72,278,389,390,395,408,456,495,498,724,747,748,750,754,1010,1014],[72,213,278,389,390,395,408,495,498,724,747,748,750,754,1010,1014],[72,213,278,389,390,396,411,412,413,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,395,396,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,408,409,410,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,409,410,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,395,495,498,724,747,748,750,754,1010,1014],[72,389,390,409,495,498,724,747,748,750,754,1010,1014],[72,73,213,224,278,389,390,397,401,404,406,407,414,448,449,451,452,453,454,495,498,724,747,748,750,754,1010,1014],[72,389,390,432,447,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,430,431,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,400,431,444,446,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,430,495,498,724,747,748,750,754,1010,1014],[72,73,213,389,390,396,400,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,399,400,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,403,495,498,724,747,748,750,754,1010,1014],[72,73,213,278,389,390,403,404,450,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,402,403,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,396,400,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,402,495,498,724,747,748,750,754,1010,1014],[71,72,213,339,389,390,495,498,724,747,748,750,754,1010,1014],[71,72,213,389,390,395,396,399,400,403,404,405,495,498,724,747,748,750,754,1010,1014],[72,73,213,389,390,395,402,403,404,495,498,724,747,748,750,754,1010,1014],[71,72,389,390,395,404,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,430,444,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,430,433,445,495,498,724,747,748,750,754,1010,1014],[72,389,390,443,495,498,724,747,748,750,754,1010,1014],[72,389,390,428,429,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,395,398,495,498,724,747,748,750,754,1010,1014],[71,72,278,389,390,398,399,495,498,724,747,748,750,754,1010,1014],[72,278,389,390,394,455,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,754,1010,1014],[72,213,389,390,397,401,406,407,495,498,724,747,748,750,754,1010,1014],[389,390,495,498,724,747,748,750,1010,1014],[71,72,213,224,278,389,390,495,498,724,747,748,750,754,883,890,897,998,1001,1002,1010,1014],[71,72,73,213,278,389,390,495,498,724,747,748,750,754,884,885,1010,1014],[72,213,389,390,495,498,724,747,748,750,754,994,1010,1014],[71,72,213,224,389,390,495,498,724,747,748,750,754,883,1010,1014],[72,213,278,389,390,495,498,724,747,748,750,754,999,1010,1014],[72,389,390,495,498,724,747,748,750,754,901,1010,1014],[71,72,224,389,390,495,498,724,747,748,750,754,1003,1005,1010,1014],[72,278,389,390,495,498,724,747,748,750,754,1003,1007,1008,1010,1014],[72,73,213,389,390,495,498,724,747,748,750,754,886,887,888,889,1010,1014],[72,213,278,389,390,495,498,724,747,748,750,754,886,887,889,891,899,900,997,1010,1014],[71,72,73,213,239,278,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,495,498,724,747,748,750,754,897,898,1010,1014],[72,213,278,389,390,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,495,498,724,747,748,750,754,902,903,996,1010,1014],[72,73,213,278,389,390,443,495,498,724,747,748,750,754,1010,1014],[72,213,389,390,495,498,724,747,748,750,754,901,995,1010,1014],[71,72,213,278,389,390,495,498,724,747,748,750,754,886,887,888,897,1000,1010,1014],[72,224,389,390,457,495,498,724,747,748,750,754,1010,1014],[72,278,334,388,389,390,457,469,494,495,497,498,723,724,746,747,748,750,754,896,1010,1014],[389,390,495,498,724,747,748,750,754,1014],[72,389,390,495,498,724,747,748,750,754,876,877,1010,1014],[747,754,808,837,1010,1016,1017,1018],[153,747,754,808,837,1010,1016,1017,1018],[144,153,747,754,808,837,1010,1016,1017,1018],[142,143,144,145,146,147,148,149,150,151,152,747,754,808,837,1010,1016,1017,1018],[158,747,754,808,837,1010,1016,1017,1018],[153,154,155,156,158,747,754,808,837,1010,1016,1017,1018],[153,154,155,156,157,747,754,808,837,1010,1016,1017,1018],[71,158,747,754,808,837,1010,1016,1017,1018],[71,158,159,160,747,754,808,837,1010,1016,1017,1018],[161,747,754,808,837,1010,1016,1017,1018],[71,747,754,808,837,1010,1016,1017,1018],[71,377,747,754,808,837,1010,1016,1017,1018],[377,747,754,808,837,1010,1016,1017,1018],[161,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,747,754,808,837,1010,1016,1017,1018],[366,377,747,754,808,837,1010,1016,1017,1018],[71,161,354,356,361,362,363,365,366,369,371,372,373,374,376,747,754,808,837,1010,1016,1017,1018],[142,747,754,808,837,1010,1016,1017,1018],[141,747,754,808,837,1010,1016,1017,1018],[389,390,498,724,747,748,750,754,892,1010,1019,1020],[71,389,390,498,724,747,748,750,754,892,893,894,1010,1019,1020],[71,389,390,498,724,747,748,750,754,892,1010,1019,1020],[71,389,390,498,724,747,748,750,754,1010,1019,1020],[71,389,390,498,696,724,747,748,750,754,892,893,895,1010,1019,1020],[215,216,217,747,754,808,837,1010,1016,1017,1018],[215,216,747,754,808,837,1010,1016,1017,1018],[215,747,754,808,837,1010,1016,1017,1018],[72,747,754,808,837,1010,1016,1017,1018],[530,747,754,808,837,1010,1016,1017,1018],[567,747,754,808,837,1010,1016,1017,1018],[747,754,808,837,845,906,1010,1016,1017,1018],[747,754,808,837,904,1010,1016,1017,1018],[415,417,418,419,420,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,418,419,420,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[416,417,418,419,420,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,419,420,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,420,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,421,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,422,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,421,423,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,421,422,424,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,421,422,423,425,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,421,422,423,424,426,427,747,754,808,837,1010,1016,1017,1018],[415,416,417,418,419,420,421,422,423,424,425,427,747,754,808,837,1010,1016,1017,1018],[427,747,754,808,837,1010,1016,1017,1018],[389,390,427,498,724,747,748,750,754,1010,1019,1020],[415,416,417,418,419,420,421,422,423,424,425,426,747,754,808,837,1010,1016,1017,1018],[442,747,754,808,837,1010,1016,1017,1018],[435,747,754,808,837,1010,1016,1017,1018],[434,436,438,439,443,747,754,808,837,1010,1016,1017,1018],[436,437,440,747,754,808,837,1010,1016,1017,1018],[434,437,440,747,754,808,837,1010,1016,1017,1018],[436,438,440,747,754,808,837,1010,1016,1017,1018],[434,435,437,438,439,440,441,747,754,808,837,1010,1016,1017,1018],[434,440,747,754,808,837,1010,1016,1017,1018],[436,747,754,808,837,1010,1016,1017,1018],[389,390,498,724,747,748,750,754,758,1010,1019,1020],[389,390,498,724,747,748,750,754,794,1010,1019,1020],[389,390,498,724,747,748,750,754,795,800,828,1010,1019,1020],[389,390,498,724,747,748,750,754,796,807,808,815,825,836,1010,1019,1020],[389,390,498,724,747,748,750,754,796,797,807,815,1010,1019,1020],[389,390,498,724,747,748,750,754,798,837,1010,1019,1020],[389,390,498,724,747,748,750,754,799,800,808,816,1010,1019,1020],[389,390,498,724,747,748,750,754,800,825,833,1010,1019,1020],[389,390,498,724,747,748,750,754,801,803,807,815,1010,1019,1020],[389,390,498,724,747,748,750,754,794,802,1010,1019,1020],[389,390,498,724,747,748,750,754,803,804,1010,1019,1020],[389,390,498,724,747,748,750,754,807,1010,1019,1020],[389,390,498,724,747,748,750,754,805,807,1010,1019,1020],[389,390,498,724,747,748,750,754,794,807,1010,1019,1020],[389,390,498,724,747,748,750,754,807,808,809,825,836,1010,1019,1020],[389,390,498,724,747,748,750,754,807,808,809,822,825,828,1010,1019,1020],[389,390,498,724,747,748,750,754,792,795,841,1010,1019,1020],[389,390,498,724,747,748,750,754,1010,1019,1020],[389,390,498,724,747,748,750,754,803,807,810,815,825,836,1010,1019,1020],[389,390,498,724,747,748,750,754,807,808,810,811,815,825,833,836,1010,1019,1020],[389,390,498,724,747,748,750,754,810,812,825,833,836,1010,1019,1020],[389,390,498,724,747,748,750,754,758,759,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,1010,1019,1020],[389,390,498,724,747,748,750,754,807,813,1010,1019,1020],[389,390,498,724,747,748,750,754,814,836,841,1010,1019,1020],[389,390,498,724,747,748,750,754,803,807,815,825,1010,1019,1020],[389,390,498,724,747,748,750,754,816,1010,1019,1020],[389,390,498,724,747,748,750,754,817,1010,1019,1020],[389,390,498,724,747,748,750,754,794,818,1010,1019,1020],[389,390,498,724,747,748,750,754,819,835,841,1010,1019,1020],[389,390,498,724,747,748,750,754,820,1010,1019,1020],[389,390,498,724,747,748,750,754,821,1010,1019,1020],[389,390,498,724,747,748,750,754,807,822,823,1010,1019,1020],[389,390,498,724,747,748,750,754,822,824,837,839,1010,1019,1020],[389,390,498,724,747,748,750,754,795,807,825,826,827,828,1010,1019,1020],[389,390,498,724,747,748,750,754,795,825,827,1010,1019,1020],[389,390,498,724,747,748,750,754,825,826,1010,1019,1020],[389,390,498,724,747,748,750,754,828,1010,1019,1020],[389,390,498,724,747,748,750,754,829,1010,1019,1020],[389,390,498,724,747,748,750,754,794,825,1010,1019,1020],[389,390,498,724,747,748,750,754,807,831,832,1010,1019,1020],[389,390,498,724,747,748,750,754,831,832,1010,1019,1020],[389,390,498,724,747,748,750,754,800,815,825,833,1010,1019,1020],[389,390,498,724,747,748,750,754,834,1010,1019,1020],[389,390,498,724,747,748,750,754,815,835,1010,1019,1020],[389,390,498,724,747,748,750,754,795,810,821,836,1010,1019,1020],[389,390,498,724,747,748,750,754,800,837,1010,1019,1020],[389,390,498,724,747,748,750,754,825,838,1010,1019,1020],[389,390,498,724,747,748,750,754,814,839,1010,1019,1020],[389,390,498,724,747,748,750,754,840,1010,1019,1020],[389,390,498,724,747,748,750,754,795,800,807,809,818,825,836,839,841,1010,1019,1020],[389,390,498,724,747,748,750,754,825,842,1010,1019,1020],[697,747,754,808,837,1010,1016,1017,1018],[69,696,747,754,808,837,1010,1015,1016,1017,1018],[697,747,754,808,837,1005,1010,1016,1017,1018],[67,68,69,70,747,754,808,837,1010,1016,1017,1018],[338,747,754,808,837,1010,1016,1017,1018],[71,615,747,754,808,837,1010,1016,1017,1018],[71,623,624,747,754,808,837,1010,1016,1017,1018],[71,559,560,747,754,808,837,1010,1016,1017,1018],[71,560,747,754,808,837,1010,1016,1017,1018],[556,747,754,808,837,1010,1016,1017,1018],[559,560,561,562,563,564,565,747,754,808,837,1010,1016,1017,1018],[71,556,558,559,747,754,808,837,1010,1016,1017,1018],[568,747,754,808,837,1010,1016,1017,1018],[703,705,747,754,808,837,1010,1016,1017,1018],[698,702,747,754,808,837,1010,1016,1017,1018],[704,747,754,808,837,1010,1016,1017,1018],[69,695,696,747,754,808,837,1010,1016,1017,1018],[71,556,583,638,747,754,808,837,1010,1016,1017,1018],[71,556,747,754,808,837,1010,1016,1017,1018],[699,700,701,747,754,808,837,1010,1016,1017,1018],[699,747,754,808,837,1010,1016,1017,1018],[71,560,561,633,747,754,808,837,1010,1016,1017,1018],[71,560,633,747,754,808,837,1010,1016,1017,1018],[71,633,638,641,747,754,808,837,1010,1016,1017,1018],[71,633,638,639,747,754,808,837,1010,1016,1017,1018],[633,636,637,640,642,747,754,808,837,1010,1016,1017,1018],[526,533,534,747,754,808,837,1010,1016,1017,1018],[526,527,529,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,747,754,808,837,1010,1016,1017,1018],[526,528,532,534,747,754,808,837,1010,1016,1017,1018],[526,528,532,533,534,747,754,808,837,1010,1016,1017,1018],[526,532,534,747,754,808,837,1010,1016,1017,1018],[526,527,747,754,808,837,1010,1016,1017,1018],[526,532,747,754,808,837,1010,1016,1017,1018],[526,528,529,533,747,754,808,837,1010,1016,1017,1018],[526,747,754,808,837,1010,1016,1017,1018],[533,747,754,808,837,1010,1016,1017,1018],[526,534,747,754,808,837,1010,1016,1017,1018],[572,573,574,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,747,754,808,837,1010,1016,1017,1018],[71,568,580,747,754,808,837,1010,1016,1017,1018],[71,580,747,754,808,837,1010,1016,1017,1018],[71,580,588,747,754,808,837,1010,1016,1017,1018],[71,556,580,747,754,808,837,1010,1016,1017,1018],[71,556,568,580,747,754,808,837,1010,1016,1017,1018],[71,568,580,584,747,754,808,837,1010,1016,1017,1018],[71,580,611,747,754,808,837,1010,1016,1017,1018],[71,568,574,747,754,808,837,1010,1016,1017,1018],[570,747,754,808,837,1010,1016,1017,1018],[71,570,576,577,747,754,808,837,1010,1016,1017,1018],[568,571,572,573,747,754,808,837,1010,1016,1017,1018],[570,571,574,575,576,577,578,579,747,754,808,837,1010,1016,1017,1018],[574,747,754,808,837,1010,1016,1017,1018],[568,580,747,754,808,837,1010,1016,1017,1018],[557,747,754,808,837,1010,1016,1017,1018],[557,558,621,622,747,754,808,837,1010,1016,1017,1018],[71,557,747,754,808,837,1010,1016,1017,1018],[71,624,648,649,747,754,808,837,1010,1016,1017,1018],[531,747,754,808,837,1010,1016,1017,1018],[566,655,747,754,808,837,1010,1016,1017,1018],[71,566,618,747,754,808,837,1010,1016,1017,1018],[71,629,747,754,808,837,1010,1016,1017,1018],[71,627,747,754,808,837,1010,1016,1017,1018],[71,625,747,754,808,837,1010,1016,1017,1018],[71,631,747,754,808,837,1010,1016,1017,1018],[71,556,566,616,617,747,754,808,837,1010,1016,1017,1018],[71,560,633,634,747,754,808,837,1010,1016,1017,1018],[71,566,634,747,754,808,837,1010,1016,1017,1018],[71,561,566,747,754,808,837,1010,1016,1017,1018],[71,643,644,747,754,808,837,1010,1016,1017,1018],[71,566,638,639,641,747,754,808,837,1010,1016,1017,1018],[71,644,747,754,808,837,1010,1016,1017,1018],[71,566,666,747,754,808,837,1010,1016,1017,1018],[71,560,668,747,754,808,837,1010,1016,1017,1018],[71,580,670,747,754,808,837,1010,1016,1017,1018],[71,566,672,747,754,808,837,1010,1016,1017,1018],[71,580,674,747,754,808,837,1010,1016,1017,1018],[71,566,661,677,747,754,808,837,1010,1016,1017,1018],[71,566,679,747,754,808,837,1010,1016,1017,1018],[71,556,566,568,584,586,614,661,747,754,808,837,1010,1016,1017,1018],[71,566,586,614,661,666,747,754,808,837,1010,1016,1017,1018],[71,580,661,747,754,808,837,1010,1016,1017,1018],[71,556,566,661,747,754,808,837,1010,1016,1017,1018],[71,580,661,672,747,754,808,837,1010,1016,1017,1018],[71,556,566,661,676,747,754,808,837,1010,1016,1017,1018],[71,556,566,568,584,661,747,754,808,837,1010,1016,1017,1018],[71,556,648,650,661,747,754,808,837,1010,1016,1017,1018],[71,556,566,652,661,664,747,754,808,837,1010,1016,1017,1018],[71,566,661,747,754,808,837,1010,1016,1017,1018],[71,747,754,808,837,1010,1016,1017,1018,1021],[71,661,747,754,808,837,1010,1016,1017,1018],[71,706,747,754,808,837,1010,1016,1017,1018],[619,620,626,628,630,632,635,645,646,647,661,662,664,665,667,669,671,673,675,678,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,707,708,709,710,711,747,754,808,837,1010,1016,1017,1018],[71,556,566,652,661,663,747,754,808,837,1010,1016,1017,1018],[71,654,747,754,808,837,1010,1016,1017,1018],[712,747,754,808,837,1010,1016,1017,1018],[566,747,754,808,837,1010,1016,1017,1018],[556,566,652,653,654,747,754,808,837,1010,1016,1017,1018],[556,566,747,754,808,837,1010,1016,1017,1018,1021],[651,654,655,657,658,660,747,754,808,837,1010,1016,1017,1018],[71,556,566,568,747,754,808,837,1010,1016,1017,1018],[71,558,747,754,808,837,1010,1016,1017,1018],[658,659,747,754,808,837,1010,1016,1017,1018],[747,754,808,837,876,1010,1016,1017,1018,1022],[389,390,498,724,747,748,750,754,755,756,1010,1019,1020],[389,390,498,724,747,748,750,754,755,1010,1019,1020],[747,754,808,837,946,947,1010,1016,1017,1018],[747,754,808,837,905,935,937,939,980,1010,1016,1017,1018],[747,754,808,837,845,904,905,906,935,937,939,945,946,980,1010,1016,1017,1018],[747,754,808,837,940,941,942,943,944,1010,1016,1017,1018],[747,754,808,837,940,941,1010,1016,1017,1018],[747,754,808,837,940,1010,1016,1017,1018],[747,754,808,837,908,909,1010,1016,1017,1018],[747,754,808,837,904,907,908,910,935,937,939,980,1010,1016,1017,1018],[747,754,808,837,905,906,907,934,935,937,939,980,1010,1016,1017,1018],[747,754,808,837,910,933,935,937,1010,1016,1017,1018],[747,754,808,837,904,905,906,907,910,933,935,936,937,939,980,1010,1016,1017,1018],[747,754,808,837,910,933,937,1010,1016,1017,1018],[747,754,808,837,905,906,907,935,937,938,939,980,1010,1016,1017,1018],[747,754,808,837,910,933,937,939,1010,1016,1017,1018],[747,754,808,837,905,907,935,937,939,953,954,978,979,980,1010,1016,1017,1018],[747,754,808,837,905,935,937,939,953,980,1010,1016,1017,1018],[747,754,808,837,905,907,935,937,939,953,980,1010,1016,1017,1018],[747,754,808,837,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,1010,1016,1017,1018],[747,754,808,837,905,907,935,937,939,952,954,980,1010,1016,1017,1018],[747,754,808,837,911,912,932,1010,1016,1017,1018],[747,754,808,837,907,911,935,937,939,980,1010,1016,1017,1018],[747,754,808,837,907,935,937,939,980,1010,1016,1017,1018],[747,754,808,837,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,1010,1016,1017,1018],[747,754,808,837,904,907,933,935,937,939,980,1010,1016,1017,1018],[71,83,747,754,808,837,1010,1016,1017,1018],[71,83,85,86,747,754,808,837,1010,1016,1017,1018],[71,89,747,754,808,837,1010,1016,1017,1018],[71,74,747,754,808,837,1010,1016,1017,1018],[71,74,89,747,754,808,837,1010,1016,1017,1018],[71,96,747,754,808,837,1010,1016,1017,1018],[71,74,83,747,754,808,837,1010,1016,1017,1018],[71,99,747,754,808,837,1010,1016,1017,1018],[71,72,106,107,747,754,808,837,1010,1016,1017,1018],[71,83,111,747,754,808,837,1010,1016,1017,1018],[71,72,110,747,754,808,837,1010,1016,1017,1018],[111,747,754,808,837,1010,1016,1017,1018],[71,111,747,754,808,837,1010,1016,1017,1018],[75,76,77,78,79,80,747,754,808,837,1010,1016,1017,1018],[71,74,89,119,747,754,808,837,1010,1016,1017,1018],[71,74,83,87,127,747,754,808,837,1010,1016,1017,1018],[71,72,747,754,808,837,1010,1016,1017,1018],[83,85,747,754,808,837,1010,1016,1017,1018],[71,100,137,747,754,808,837,1010,1016,1017,1018],[71,139,747,754,808,837,1010,1016,1017,1018],[71,187,747,754,808,837,1010,1016,1017,1018],[71,83,87,747,754,808,837,1010,1016,1017,1018],[186,747,754,808,837,1010,1016,1017,1018],[71,119,747,754,808,837,1010,1016,1017,1018],[71,85,106,747,754,808,837,1010,1016,1017,1018],[71,120,747,754,808,837,1010,1016,1017,1018],[71,121,747,754,808,837,1010,1016,1017,1018],[71,72,74,747,754,808,837,1010,1016,1017,1018],[71,74,210,747,754,808,837,1010,1016,1017,1018],[71,74,82,747,754,808,837,1010,1016,1017,1018],[71,187,188,189,747,754,808,837,1010,1016,1017,1018],[71,87,747,754,808,837,1010,1016,1017,1018],[185,747,754,808,837,1010,1016,1017,1018],[71,185,747,754,808,837,1010,1016,1017,1018],[71,72,185,747,754,808,837,1010,1016,1017,1018],[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,747,754,808,837,1010,1016,1017,1018],[174,185,747,754,808,837,1010,1016,1017,1018],[71,161,162,163,165,170,171,173,174,177,179,180,181,182,184,747,754,808,837,1010,1016,1017,1018],[71,747,754,808,837,881,1010,1016,1017,1018],[747,754,808,837,879,881,1010,1016,1017,1018],[71,747,754,808,837,880,881,882,1010,1016,1017,1018],[71,747,754,808,837,880,881,1010,1016,1017,1018],[71,747,754,808,837,880,1010,1016,1017,1018],[747,754,808,837,948,993,1010,1016,1017,1018],[747,754,808,837,905,935,937,939,948,980,984,986,992,1010,1016,1017,1018],[218,747,754,808,837,1010,1016,1017,1018],[71,218,222,223,747,754,808,837,1010,1016,1017,1018],[71,218,224,747,754,808,837,1010,1016,1017,1018],[218,219,220,221,747,754,808,837,1010,1016,1017,1018],[71,218,219,747,754,808,837,1010,1016,1017,1018],[71,218,747,754,808,837,1010,1016,1017,1018],[747,754,808,837,980,985,1010,1016,1017,1018],[747,754,808,837,905,907,935,937,939,952,980,984,1010,1016,1017,1018],[389,390,498,724,747,748,750,754,769,773,836,1010,1019,1020],[389,390,498,724,747,748,750,754,769,825,836,1010,1019,1020],[389,390,498,724,747,748,750,754,764,1010,1019,1020],[389,390,498,724,747,748,750,754,766,769,833,836,1010,1019,1020],[389,390,498,724,747,748,750,754,815,833,1010,1019,1020],[389,390,498,724,747,748,750,754,844,1010,1019,1020],[389,390,498,724,747,748,750,754,764,844,1010,1019,1020],[389,390,498,724,747,748,750,754,766,769,815,836,1010,1019,1020],[389,390,498,724,747,748,750,754,761,762,765,768,795,807,825,836,1010,1019,1020],[389,390,498,724,747,748,750,754,761,767,1010,1019,1020],[389,390,498,724,747,748,750,754,765,769,795,828,836,844,1010,1019,1020],[389,390,498,724,747,748,750,754,795,844,1010,1019,1020],[389,390,498,724,747,748,750,754,785,795,844,1010,1019,1020],[389,390,498,724,747,748,750,754,763,764,844,1010,1019,1020],[389,390,498,724,747,748,750,754,769,1010,1019,1020],[389,390,498,724,747,748,750,754,763,764,765,766,767,768,769,770,771,773,774,775,776,777,778,779,780,781,782,783,784,786,787,788,789,790,791,1010,1019,1020],[389,390,498,724,747,748,750,754,769,776,777,1010,1019,1020],[389,390,498,724,747,748,750,754,767,769,777,778,1010,1019,1020],[389,390,498,724,747,748,750,754,768,1010,1019,1020],[389,390,498,724,747,748,750,754,761,764,769,1010,1019,1020],[389,390,498,724,747,748,750,754,769,773,777,778,1010,1019,1020],[389,390,498,724,747,748,750,754,773,1010,1019,1020],[389,390,498,724,747,748,750,754,767,769,772,836,1010,1019,1020],[389,390,498,724,747,748,750,754,761,766,767,769,773,776,1010,1019,1020],[389,390,498,724,747,748,750,754,795,825,1010,1019,1020],[389,390,498,724,747,748,750,754,764,769,785,795,841,844,1010,1019,1020],[747,754,808,837,952,983,1010,1016,1017,1018],[747,754,808,837,904,952,981,982,984,1010,1016,1017,1018],[747,754,808,837,987,1010,1016,1017,1018],[747,754,808,837,988,989,1010,1016,1017,1018],[747,754,808,837,904,988,1010,1016,1017,1018],[747,754,808,837,988,990,991,1010,1016,1017,1018],[747,754,808,837,904,988,990,1010,1016,1017,1018],[747,754,808,837,949,1010,1016,1017,1018],[747,754,808,837,951,1010,1016,1017,1018],[747,754,808,837,904,950,952,1010,1016,1017,1018],[747,754,808,837,846,1010,1016,1017,1018],[72],[278,387],[343],[72,334],[72,351],[71,72,334],[377],[71,72,213,334,343],[72,343,384],[71,334,341,343,344],[72,278],[390,498,724,747,748,750,754,1010,1019,1020],[71,72],[72,331],[278,290,296,298,331,332,333],[334],[296],[72,296],[71,296],[72,213],[72,329],[71,72,296],[71,334],[389,498,724,747,748,750,754,1010,1019,1020],[279,289,293,294],[289,291,293,295],[289,291,292,293,294,295],[289,292,294,295],[279,289,293,294,295],[294,295],[213],[72,213,458],[278,468],[71,72,213],[71,72,213,226],[72,213,228],[71],[214,226,227,228,229,230,231,232,233,234,236,237,238,244,246,247,248,250,251,252,256,257,258,259,260,261,262,263,264,265,269,270,271,272,276,277],[72,213,276],[71,274,275],[72,213,254],[72,247],[71,72,247],[71,247],[72,73,213],[71,72,73],[72,213,266],[72,213,251],[240,243],[71,240,243],[240],[247],[278,493],[72,239,240],[72,239],[72,213,239],[278],[389,390,724,747,748,750,754,1010,1019,1020],[72,503],[503],[499,500,501,502],[278,722],[506,521,522,524],[72,506],[506],[71,506],[389,390,498,747,748,750,754,1010,1019,1020],[278,735,745],[733,735,736,737],[389,390,498,724,747,750,754,1010,1019,1020],[71,728,735],[389,390,498,724,748,750,754,1010,1019,1020],[278,395,408,456],[72,408],[72,409],[71,395],[71,430],[71,72,402],[71,402],[72,213,395,405],[71,72,404],[429],[395],[389,390,498,724,747,748,754,1010,1019,1020],[72,213,401,406],[389,390,498,724,747,748,750,1010,1019,1020],[72,1014],[71,72,213,1014],[72,213,999],[901],[72,213,901],[71,72,278],[278,896],[747,754,808,837,1016,1017,1018],[876]],"referencedMap":[[66,1],[273,2],[275,3],[274,4],[143,5],[144,5],[145,5],[146,6],[147,5],[148,6],[149,5],[150,5],[151,6],[152,6],[153,7],[154,8],[157,9],[155,8],[158,10],[159,11],[161,12],[160,13],[353,14],[354,15],[355,15],[356,15],[357,14],[358,14],[359,15],[360,15],[361,16],[362,16],[363,16],[364,16],[365,16],[366,16],[367,1],[368,15],[369,15],[370,14],[371,16],[372,15],[373,15],[376,17],[374,15],[375,18],[377,19],[156,1],[141,20],[142,21],[894,22],[895,23],[893,24],[892,14],[896,25],[215,1],[218,26],[217,27],[216,28],[755,29],[567,1],[531,30],[568,31],[530,1],[906,32],[845,1],[337,1],[905,33],[416,34],[417,35],[415,36],[418,37],[419,38],[420,39],[421,40],[422,41],[423,42],[424,43],[425,44],[426,45],[505,46],[428,46],[427,47],[734,46],[443,48],[436,49],[440,50],[438,51],[441,52],[439,53],[442,54],[437,1],[435,55],[434,56],[907,33],[758,57],[759,57],[794,58],[795,59],[796,60],[797,61],[798,62],[799,63],[800,64],[801,65],[802,66],[803,67],[804,67],[806,68],[805,69],[807,70],[808,71],[809,72],[793,73],[843,1],[810,74],[811,75],[812,76],[844,77],[813,78],[814,79],[815,80],[816,81],[817,82],[818,83],[819,84],[820,85],[821,86],[822,87],[823,87],[824,88],[825,89],[827,90],[826,91],[828,92],[829,93],[830,94],[831,95],[832,96],[833,97],[834,98],[835,99],[836,100],[837,101],[838,102],[839,103],[840,104],[841,105],[842,106],[69,1],[1005,107],[1004,108],[1007,109],[67,1],[71,110],[72,14],[68,1],[241,1],[70,1],[904,1],[339,111],[338,1],[616,112],[629,112],[627,112],[617,112],[625,113],[631,14],[615,1],[561,114],[565,115],[562,115],[563,115],[564,115],[559,116],[566,117],[560,118],[569,119],[706,120],[703,121],[704,121],[705,122],[698,107],[695,1],[697,123],[641,124],[639,124],[638,125],[702,126],[699,1],[701,127],[700,127],[637,128],[636,129],[642,130],[640,131],[643,132],[633,1],[652,1],[549,133],[556,134],[535,135],[537,135],[541,135],[543,135],[536,135],[542,135],[545,135],[544,135],[538,135],[548,135],[546,135],[547,136],[539,137],[540,137],[526,1],[528,138],[529,1],[533,139],[534,140],[527,1],[550,133],[552,141],[553,142],[551,133],[555,143],[554,141],[614,144],[581,145],[586,146],[587,146],[589,147],[590,146],[592,148],[593,148],[591,146],[594,149],[595,149],[610,146],[583,146],[584,145],[585,150],[600,146],[602,146],[601,146],[597,146],[599,146],[598,146],[603,146],[605,146],[604,146],[606,146],[608,146],[607,146],[582,145],[609,146],[612,151],[588,145],[571,1],[575,152],[576,153],[578,154],[570,125],[574,155],[580,156],[579,14],[577,157],[613,158],[611,1],[572,119],[573,119],[596,1],[622,159],[623,160],[558,161],[557,14],[621,46],[659,1],[650,162],[649,14],[648,14],[532,163],[653,164],[620,165],[619,165],[630,166],[628,167],[626,168],[632,169],[618,170],[635,171],[646,172],[634,173],[645,174],[644,175],[647,176],[681,177],[682,178],[685,179],[683,180],[684,181],[686,182],[687,183],[667,177],[669,178],[671,179],[673,180],[675,181],[678,182],[680,183],[666,184],[668,185],[670,186],[672,187],[674,188],[677,189],[679,190],[662,191],[665,192],[688,193],[689,194],[690,195],[691,195],[676,187],[663,1],[707,196],[712,197],[664,198],[692,14],[693,195],[694,14],[710,199],[711,1],[709,200],[708,200],[651,201],[655,202],[657,203],[661,204],[658,205],[654,206],[660,207],[656,1],[877,208],[757,209],[756,210],[279,1],[760,1],[288,1],[696,1],[852,1],[239,14],[727,1],[948,211],[946,212],[947,213],[945,214],[942,215],[943,1],[944,1],[940,1],[941,216],[73,14],[910,217],[909,218],[935,219],[934,220],[937,221],[936,222],[939,223],[938,224],[980,225],[954,226],[955,227],[956,227],[957,227],[958,227],[959,227],[960,227],[961,227],[962,227],[963,227],[964,227],[978,228],[965,227],[966,227],[967,227],[968,227],[969,227],[970,227],[971,227],[972,227],[974,227],[975,227],[973,227],[976,227],[977,227],[979,227],[953,229],[933,230],[913,231],[914,231],[915,231],[916,231],[917,231],[918,231],[919,232],[921,231],[920,231],[932,233],[922,231],[924,231],[923,231],[926,231],[925,231],[927,231],[928,231],[929,231],[930,231],[931,231],[912,231],[911,234],[908,1],[713,1],[84,235],[87,236],[88,235],[90,237],[91,237],[92,237],[93,237],[83,238],[94,235],[95,237],[96,239],[97,240],[98,241],[100,242],[101,14],[103,243],[104,243],[105,237],[102,29],[108,244],[109,235],[112,245],[113,235],[111,246],[110,247],[114,248],[115,14],[116,241],[117,235],[81,249],[75,14],[76,1],[77,1],[78,14],[80,1],[79,1],[118,235],[213,250],[120,251],[121,235],[119,241],[122,237],[123,235],[124,239],[125,241],[126,235],[128,252],[129,235],[130,235],[131,235],[132,235],[133,253],[134,235],[135,235],[136,237],[127,238],[86,254],[138,255],[140,256],[188,257],[189,258],[190,14],[191,14],[187,259],[192,257],[137,242],[193,14],[194,260],[99,235],[139,235],[195,235],[196,261],[197,235],[198,235],[199,235],[200,237],[201,235],[202,237],[203,235],[204,237],[205,235],[89,235],[206,262],[207,263],[208,264],[211,265],[209,266],[210,235],[212,267],[107,268],[74,14],[82,269],[186,270],[163,271],[164,271],[165,271],[166,14],[167,14],[168,272],[169,271],[170,270],[171,270],[162,270],[172,270],[173,270],[174,270],[175,1],[176,271],[177,271],[178,14],[179,270],[180,271],[181,271],[184,273],[182,271],[183,274],[185,275],[85,14],[106,14],[879,276],[880,277],[883,278],[882,279],[881,280],[994,281],[993,282],[223,283],[224,284],[1008,285],[222,286],[220,287],[219,288],[221,287],[624,1],[225,14],[728,1],[986,289],[985,290],[847,291],[846,32],[267,1],[982,1],[64,1],[65,1],[12,1],[13,1],[15,1],[14,1],[2,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[3,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[58,1],[56,1],[57,1],[59,1],[60,1],[10,1],[1,1],[11,1],[63,1],[62,1],[61,1],[776,292],[783,293],[775,292],[790,294],[767,295],[766,296],[789,297],[784,298],[787,299],[769,300],[768,301],[764,302],[763,303],[786,304],[765,305],[770,306],[771,1],[774,306],[761,1],[792,307],[791,306],[778,308],[779,309],[781,310],[777,311],[780,312],[785,297],[772,313],[773,314],[782,315],[762,316],[788,317],[984,318],[981,1],[983,319],[988,320],[987,33],[990,321],[989,322],[992,323],[991,324],[950,325],[949,33],[952,326],[951,327],[1014,328],[876,329],[873,330],[851,331],[869,332],[867,333],[868,334],[856,335],[857,333],[864,336],[855,337],[860,338],[870,1],[861,339],[866,340],[872,341],[871,342],[854,343],[862,344],[863,345],[858,346],[865,332],[859,347],[853,348],[849,349],[848,1],[850,350],[874,1],[1013,351],[875,352],[352,353],[388,354],[345,29],[351,355],[346,29],[347,29],[348,29],[349,29],[350,29],[340,356],[380,357],[335,358],[381,359],[382,360],[384,361],[383,362],[385,360],[336,358],[343,363],[379,364],[378,365],[344,366],[386,367],[342,368],[341,253],[387,369],[389,370],[281,253],[282,253],[283,253],[284,253],[285,253],[391,29],[287,371],[280,372],[286,29],[334,373],[311,374],[317,356],[309,375],[310,376],[312,377],[313,375],[314,378],[318,379],[316,380],[330,381],[319,382],[320,383],[328,384],[329,385],[300,386],[321,387],[323,388],[322,389],[325,390],[308,391],[307,392],[301,393],[303,394],[304,393],[305,395],[306,393],[302,396],[324,397],[315,398],[327,399],[326,400],[299,401],[331,402],[390,403],[289,29],[295,404],[294,405],[296,406],[293,407],[291,408],[292,409],[332,29],[297,410],[298,411],[333,412],[290,29],[392,1],[393,1],[465,413],[466,414],[467,415],[459,374],[460,416],[461,372],[462,416],[463,417],[458,418],[464,419],[469,420],[468,421],[214,422],[228,423],[229,424],[231,425],[230,386],[470,374],[233,426],[471,374],[232,427],[472,374],[234,29],[227,253],[236,428],[235,253],[237,374],[278,429],[226,430],[238,374],[277,431],[276,432],[256,433],[254,434],[253,435],[257,436],[258,437],[255,434],[252,438],[251,386],[259,372],[260,374],[261,374],[262,374],[264,439],[265,440],[269,441],[266,442],[268,443],[263,253],[270,386],[246,444],[250,445],[240,29],[245,446],[244,447],[249,448],[243,449],[242,450],[247,29],[248,451],[271,253],[272,452],[473,1],[474,1],[475,453],[494,454],[477,455],[492,456],[483,457],[485,458],[486,459],[488,460],[479,461],[489,462],[490,463],[480,464],[496,386],[487,465],[481,466],[484,464],[482,467],[476,253],[478,468],[491,469],[493,470],[495,471],[497,472],[498,473],[721,474],[715,29],[716,29],[717,29],[718,29],[504,475],[714,476],[719,477],[720,477],[499,478],[500,478],[503,479],[501,478],[502,478],[723,480],[525,481],[726,1],[508,482],[524,483],[516,484],[518,485],[523,486],[509,487],[725,29],[506,29],[507,488],[521,489],[519,490],[517,374],[520,29],[522,489],[513,491],[515,492],[514,493],[511,487],[510,487],[512,490],[722,494],[724,495],[739,29],[740,496],[741,496],[742,497],[743,498],[744,499],[746,500],[735,29],[730,29],[738,501],[748,502],[733,503],[737,504],[732,505],[729,253],[736,506],[731,507],[745,508],[747,509],[398,1],[749,1],[429,29],[752,1],[753,1],[394,472],[457,510],[409,511],[414,512],[397,513],[411,514],[412,515],[396,516],[410,29],[413,517],[433,374],[455,518],[448,519],[751,374],[432,520],[447,521],[431,522],[449,523],[401,524],[400,253],[450,525],[451,526],[452,527],[402,528],[403,529],[405,530],[406,531],[453,532],[454,533],[404,516],[445,534],[446,535],[444,536],[430,537],[399,538],[407,539],[456,540],[750,541],[408,542],[395,29],[754,543],[1003,544],[1012,29],[885,386],[886,545],[995,546],[887,547],[888,372],[999,372],[1000,548],[884,372],[902,549],[1006,550],[1009,551],[890,552],[891,374],[998,553],[889,386],[898,554],[899,555],[900,556],[997,557],[903,558],[996,559],[1001,560],[1002,561],[897,562],[1010,563],[901,29],[1011,1],[878,564]],"exportedModulesMap":[[66,565],[273,2],[275,3],[274,4],[143,566],[144,566],[145,566],[146,567],[147,566],[148,567],[149,566],[150,566],[151,567],[152,567],[153,568],[154,569],[157,570],[155,569],[158,571],[159,572],[161,573],[160,574],[353,575],[354,576],[355,576],[356,576],[357,575],[358,575],[359,576],[360,576],[361,577],[362,577],[363,577],[364,577],[365,577],[366,577],[367,565],[368,576],[369,576],[370,575],[371,577],[372,576],[373,576],[376,578],[374,576],[375,579],[377,580],[156,565],[141,581],[142,582],[894,583],[895,584],[893,585],[892,586],[896,587],[215,565],[218,588],[217,589],[216,590],[755,591],[567,565],[531,592],[568,593],[530,565],[906,594],[845,565],[337,565],[905,595],[416,596],[417,597],[415,598],[418,599],[419,600],[420,601],[421,602],[422,603],[423,604],[424,605],[425,606],[426,607],[505,608],[428,609],[427,610],[734,608],[443,611],[436,612],[440,613],[438,614],[441,615],[439,616],[442,617],[437,565],[435,618],[434,619],[907,595],[758,620],[759,620],[794,621],[795,622],[796,623],[797,624],[798,625],[799,626],[800,627],[801,628],[802,629],[803,630],[804,630],[806,631],[805,632],[807,633],[808,634],[809,635],[793,636],[843,637],[810,638],[811,639],[812,640],[844,641],[813,642],[814,643],[815,644],[816,645],[817,646],[818,647],[819,648],[820,649],[821,650],[822,651],[823,651],[824,652],[825,653],[827,654],[826,655],[828,656],[829,657],[830,658],[831,659],[832,660],[833,661],[834,662],[835,663],[836,664],[837,665],[838,666],[839,667],[840,668],[841,669],[842,670],[69,565],[1005,671],[1004,672],[1007,673],[67,565],[71,674],[72,575],[68,565],[241,565],[70,565],[904,565],[339,675],[338,565],[616,676],[629,676],[627,676],[617,676],[625,677],[631,575],[615,565],[561,678],[565,679],[562,679],[563,679],[564,679],[559,680],[566,681],[560,682],[569,683],[706,684],[703,685],[704,685],[705,686],[698,671],[695,565],[697,687],[641,688],[639,688],[638,689],[702,690],[699,565],[701,691],[700,691],[637,692],[636,693],[642,694],[640,695],[643,696],[633,565],[652,565],[549,697],[556,698],[535,699],[537,699],[541,699],[543,699],[536,699],[542,699],[545,699],[544,699],[538,699],[548,699],[546,699],[547,700],[539,701],[540,701],[526,565],[528,702],[529,565],[533,703],[534,704],[527,565],[550,697],[552,705],[553,706],[551,697],[555,707],[554,705],[614,708],[581,709],[586,710],[587,710],[589,711],[590,710],[592,712],[593,712],[591,710],[594,713],[595,713],[610,710],[583,710],[584,709],[585,714],[600,710],[602,710],[601,710],[597,710],[599,710],[598,710],[603,710],[605,710],[604,710],[606,710],[608,710],[607,710],[582,709],[609,710],[612,715],[588,709],[571,565],[575,716],[576,717],[578,718],[570,689],[574,719],[580,720],[579,575],[577,721],[613,722],[611,565],[572,683],[573,683],[596,565],[622,723],[623,724],[558,725],[557,575],[621,608],[659,565],[650,726],[649,575],[648,575],[532,727],[653,728],[620,729],[619,729],[630,730],[628,731],[626,732],[632,733],[618,734],[635,735],[646,736],[634,737],[645,738],[644,739],[647,740],[681,741],[682,742],[685,743],[683,744],[684,745],[686,746],[687,747],[667,741],[669,742],[671,743],[673,744],[675,745],[678,746],[680,747],[666,748],[668,749],[670,750],[672,751],[674,752],[677,753],[679,754],[662,755],[665,756],[688,757],[689,758],[690,759],[691,759],[676,751],[663,565],[707,760],[712,761],[664,762],[692,575],[693,759],[694,575],[710,763],[711,565],[709,764],[708,764],[651,765],[655,766],[657,767],[661,768],[658,769],[654,770],[660,771],[656,637],[877,772],[757,773],[756,774],[279,565],[760,637],[288,565],[696,565],[852,1],[239,575],[727,565],[948,775],[946,776],[947,777],[945,778],[942,779],[943,565],[944,565],[940,565],[941,780],[73,575],[910,781],[909,782],[935,783],[934,784],[937,785],[936,786],[939,787],[938,788],[980,789],[954,790],[955,791],[956,791],[957,791],[958,791],[959,791],[960,791],[961,791],[962,791],[963,791],[964,791],[978,792],[965,791],[966,791],[967,791],[968,791],[969,791],[970,791],[971,791],[972,791],[974,791],[975,791],[973,791],[976,791],[977,791],[979,791],[953,793],[933,794],[913,795],[914,795],[915,795],[916,795],[917,795],[918,795],[919,796],[921,795],[920,795],[932,797],[922,795],[924,795],[923,795],[926,795],[925,795],[927,795],[928,795],[929,795],[930,795],[931,795],[912,795],[911,798],[908,565],[713,565],[84,799],[87,800],[88,235],[90,237],[91,237],[92,237],[93,801],[83,802],[94,799],[95,801],[96,803],[97,804],[98,805],[100,806],[101,575],[103,243],[104,243],[105,237],[102,29],[108,807],[109,799],[112,808],[113,799],[111,809],[110,810],[114,811],[115,575],[116,805],[117,799],[81,812],[75,575],[76,565],[77,1],[78,575],[80,565],[79,565],[118,799],[213,250],[120,813],[121,799],[119,805],[122,801],[123,799],[124,803],[125,805],[126,799],[128,814],[129,799],[130,799],[131,799],[132,799],[133,815],[134,799],[135,799],[136,801],[127,802],[86,816],[138,817],[140,818],[188,819],[189,820],[190,575],[191,575],[187,821],[192,819],[137,806],[193,575],[194,822],[99,799],[139,799],[195,799],[196,823],[197,799],[198,799],[199,799],[200,801],[201,799],[202,801],[203,799],[204,801],[205,799],[89,235],[206,824],[207,825],[208,826],[211,827],[209,828],[210,799],[212,829],[107,830],[74,14],[82,269],[186,831],[163,832],[164,832],[165,832],[166,575],[167,575],[168,833],[169,832],[170,831],[171,831],[162,831],[172,831],[173,831],[174,831],[175,565],[176,832],[177,832],[178,575],[179,831],[180,832],[181,832],[184,834],[182,832],[183,835],[185,836],[85,575],[106,575],[879,837],[880,838],[883,839],[882,840],[881,841],[994,842],[993,843],[223,844],[224,845],[1008,846],[222,847],[220,848],[219,849],[221,848],[624,565],[225,575],[728,565],[986,850],[985,851],[847,291],[846,32],[267,1],[982,565],[64,565],[65,565],[12,565],[13,565],[15,565],[14,565],[2,565],[16,565],[17,565],[18,565],[19,565],[20,565],[21,565],[22,565],[23,565],[3,565],[4,565],[24,565],[28,565],[25,565],[26,565],[27,565],[29,565],[30,565],[31,565],[5,565],[32,565],[33,565],[34,565],[35,565],[6,565],[39,565],[36,565],[37,565],[38,565],[40,565],[7,565],[41,565],[46,565],[47,565],[42,565],[43,565],[44,565],[45,565],[8,565],[51,565],[48,565],[49,565],[50,565],[52,565],[9,565],[53,565],[54,565],[55,565],[58,565],[56,565],[57,565],[59,565],[60,565],[10,565],[1,565],[11,565],[63,565],[62,565],[61,565],[776,852],[783,853],[775,852],[790,854],[767,855],[766,856],[789,857],[784,858],[787,859],[769,860],[768,861],[764,862],[763,863],[786,864],[765,865],[770,866],[771,637],[774,866],[761,637],[792,867],[791,866],[778,868],[779,869],[781,870],[777,871],[780,872],[785,857],[772,873],[773,874],[782,875],[762,876],[788,877],[984,878],[981,565],[983,879],[988,880],[987,595],[990,881],[989,882],[992,883],[991,884],[950,885],[949,595],[952,886],[951,887],[1014,328],[876,329],[873,330],[851,331],[869,332],[867,333],[868,334],[856,335],[857,333],[864,336],[855,337],[860,338],[870,1],[861,339],[866,340],[872,341],[871,342],[854,343],[862,344],[863,345],[858,346],[865,332],[859,347],[853,348],[849,349],[848,1],[850,350],[874,1],[1013,351],[875,888],[352,889],[388,890],[351,891],[380,889],[335,892],[381,889],[382,889],[384,893],[383,893],[385,889],[336,892],[343,894],[379,889],[378,895],[344,896],[386,897],[342,898],[387,899],[389,900],[281,901],[282,901],[283,901],[284,901],[285,901],[287,902],[280,889],[334,903],[317,904],[310,905],[312,906],[313,901],[314,907],[318,908],[316,906],[330,909],[319,889],[320,889],[328,889],[329,910],[300,901],[321,907],[323,889],[322,906],[325,889],[308,894],[307,910],[301,911],[303,911],[304,911],[305,911],[306,911],[302,907],[324,906],[315,910],[327,889],[326,907],[299,911],[331,899],[390,912],[295,913],[294,914],[296,915],[293,916],[291,917],[292,918],[297,905],[298,905],[392,1],[393,1],[465,889],[466,889],[467,889],[459,919],[460,908],[461,908],[462,908],[463,920],[464,901],[469,921],[468,899],[214,922],[228,923],[229,924],[231,889],[230,922],[470,908],[233,901],[471,908],[232,901],[472,908],[227,925],[236,908],[237,908],[278,926],[226,908],[238,908],[277,927],[276,928],[256,929],[254,908],[253,908],[257,930],[258,931],[255,908],[252,932],[251,922],[259,933],[260,908],[261,908],[262,889],[264,934],[265,901],[269,935],[266,936],[268,901],[263,925],[270,901],[246,908],[250,901],[245,937],[244,938],[249,939],[243,939],[242,939],[248,940],[271,925],[272,901],[473,1],[474,1],[475,889],[494,941],[477,889],[492,889],[483,889],[485,889],[486,889],[488,889],[479,901],[489,889],[490,889],[480,942],[496,922],[487,889],[481,943],[484,942],[482,944],[476,925],[491,901],[493,899],[495,471],[497,945],[498,946],[721,947],[504,947],[714,889],[719,889],[720,889],[499,948],[500,948],[503,949],[501,948],[502,948],[723,950],[525,951],[726,637],[508,889],[524,952],[516,901],[518,908],[523,889],[509,953],[507,954],[521,953],[519,953],[517,919],[522,953],[513,953],[515,953],[514,953],[511,953],[510,953],[512,953],[722,899],[724,955],[740,889],[741,889],[742,889],[743,889],[744,889],[746,956],[738,957],[748,958],[733,889],[737,901],[732,889],[736,959],[731,925],[745,899],[747,960],[398,1],[749,1],[752,1],[753,1],[394,889],[457,961],[409,962],[414,889],[397,901],[411,962],[412,963],[396,964],[413,963],[433,908],[455,889],[448,889],[751,889],[432,901],[447,889],[431,965],[449,889],[401,901],[400,925],[450,889],[451,889],[452,966],[403,967],[405,922],[406,968],[453,889],[454,969],[404,964],[445,908],[446,908],[430,970],[399,971],[407,901],[456,899],[750,972],[408,973],[754,974],[1003,975],[885,908],[886,922],[995,889],[887,976],[888,889],[999,889],[1000,977],[884,908],[902,978],[890,889],[891,889],[998,889],[889,889],[898,899],[899,889],[900,908],[997,908],[903,908],[996,979],[1001,980],[1002,889],[897,981],[1010,982],[1011,637],[878,983]],"semanticDiagnosticsPerFile":[66,273,275,274,143,144,145,146,147,148,149,150,151,152,153,154,157,155,158,159,161,160,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,376,374,375,377,156,141,142,894,895,893,892,896,215,218,217,216,755,567,531,568,530,906,845,337,905,416,417,415,418,419,420,421,422,423,424,425,426,505,428,427,734,443,436,440,438,441,439,442,437,435,434,907,758,759,794,795,796,797,798,799,800,801,802,803,804,806,805,807,808,809,793,843,810,811,812,844,813,814,815,816,817,818,819,820,821,822,823,824,825,827,826,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,69,1005,1004,1007,67,71,72,68,241,70,904,339,338,616,629,627,617,625,631,615,561,565,562,563,564,559,566,560,569,706,703,704,705,698,695,697,641,639,638,702,699,701,700,637,636,642,640,643,633,652,549,556,535,537,541,543,536,542,545,544,538,548,546,547,539,540,526,528,529,533,534,527,550,552,553,551,555,554,614,581,586,587,589,590,592,593,591,594,595,610,583,584,585,600,602,601,597,599,598,603,605,604,606,608,607,582,609,612,588,571,575,576,578,570,574,580,579,577,613,611,572,573,596,622,623,558,557,621,659,650,649,648,532,653,620,619,630,628,626,632,618,635,646,634,645,644,647,681,682,685,683,684,686,687,667,669,671,673,675,678,680,666,668,670,672,674,677,679,662,665,688,689,690,691,676,663,707,712,664,692,693,694,710,711,709,708,651,655,657,661,658,654,660,656,877,757,756,279,760,288,696,852,239,727,948,946,947,945,942,943,944,940,941,73,910,909,935,934,937,936,939,938,980,954,955,956,957,958,959,960,961,962,963,964,978,965,966,967,968,969,970,971,972,974,975,973,976,977,979,953,933,913,914,915,916,917,918,919,921,920,932,922,924,923,926,925,927,928,929,930,931,912,911,908,713,84,87,88,90,91,92,93,83,94,95,96,97,98,100,101,103,104,105,102,108,109,112,113,111,110,114,115,116,117,81,75,76,77,78,80,79,118,213,120,121,119,122,123,124,125,126,128,129,130,131,132,133,134,135,136,127,86,138,140,188,189,190,191,187,192,137,193,194,99,139,195,196,197,198,199,200,201,202,203,204,205,89,206,207,208,211,209,210,212,107,74,82,186,163,164,165,166,167,168,169,170,171,162,172,173,174,175,176,177,178,179,180,181,184,182,183,185,85,106,879,880,883,882,881,994,993,223,224,1008,222,220,219,221,624,225,728,986,985,847,846,267,982,64,65,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,11,63,62,61,776,783,775,790,767,766,789,784,787,769,768,764,763,786,765,770,771,774,761,792,791,778,779,781,777,780,785,772,773,782,762,788,984,981,983,988,987,990,989,992,991,950,949,952,951,1014,876,873,851,869,867,868,856,857,864,855,860,870,861,866,872,871,854,862,863,858,865,859,853,849,848,850,874,1013,875,352,388,345,351,346,347,348,349,350,340,380,335,381,382,384,383,385,336,343,379,378,344,386,342,341,387,389,281,[282,[{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":2491,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":3026,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":4358,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":6363,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":6830,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","start":8229,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]}]],[283,[{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph3.tsx","start":2262,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph3.tsx","start":2804,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]}]],[284,[{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":2262,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":2804,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":5289,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":7295,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":7762,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","start":9161,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]}]],[285,[{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","start":4427,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","start":8443,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","start":12487,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","start":14219,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]},{"file":"./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","start":19070,"length":2,"code":2322,"category":1,"messageText":"Type 'number' is not assignable to type 'string'.","relatedInformation":[{"file":"./node_modules/@types/react/index.d.ts","start":109582,"length":2,"messageText":"The expected type comes from property 'id' which is declared here on type 'SVGProps'","category":3,"code":6500}]}]],391,287,280,286,334,311,317,309,310,312,[313,[{"file":"./workspaces/circle-intersections/src/presentation/graphrenderer/graphlabel.tsx","start":514,"length":8,"code":2741,"category":1,"messageText":"Property 'id' is missing in type '{ backgroundColor: \"text-shade-1\"; borderRadius: number; paddingHorizontal: number; paddingVertical: number; size: \"x2\"; weight: \"x2\"; isVisible: boolean; text: string; textColor: \"background-shade-1\"; targetX: number; targetY: number; offsetX: number; offsetY: number; }' but required in type '{ id: string; isVisible?: boolean | undefined; paddingHorizontal?: number | undefined; paddingVertical?: number | undefined; margin?: number | undefined; text: string; offsetX?: number | undefined; ... 4 more ...; lineColor?: TypeColor | undefined; }'.","relatedInformation":[{"file":"./workspaces/common/src/svglabels/svglabel.tsx","start":389,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]}]],314,318,316,330,319,320,328,329,300,321,323,322,325,308,307,301,303,304,305,306,302,324,315,[327,[{"file":"./workspaces/circle-intersections/src/presentation/traversallist/traversallist.tsx","start":860,"length":9,"code":2820,"category":1,"messageText":"Type '\"text-shade-4\"' is not assignable to type 'TypeColor | undefined'. Did you mean '\"text-shade-1\"'?","relatedInformation":[{"file":"./node_modules/preshape/dist/box/box.d.ts","start":5355,"length":9,"messageText":"The expected type comes from property 'textColor' which is declared here on type 'IntrinsicAttributes & BoxProps & RefAttributes'","category":3,"code":6500}]}]],326,299,331,390,289,295,294,296,293,291,292,332,297,298,333,290,392,393,465,466,467,459,460,461,462,463,458,464,469,468,214,228,229,231,230,470,233,471,232,472,234,227,236,235,237,278,226,238,277,276,256,254,253,257,258,255,252,251,259,260,261,262,264,265,269,266,268,263,270,246,250,240,245,244,249,243,242,247,248,271,272,473,474,475,494,477,492,483,485,486,488,479,489,[490,[{"file":"./workspaces/line-segment-extending/src/presentation/settings.tsx","start":621,"length":16,"messageText":"'showBoundsConfig' is declared but its value is never read.","category":1,"code":6133,"reportsUnnecessary":true},{"file":"./workspaces/line-segment-extending/src/presentation/settings.tsx","start":969,"length":21,"messageText":"'showLineSegmentConfig' is declared but its value is never read.","category":1,"code":6133,"reportsUnnecessary":true}]],480,496,487,481,484,482,476,478,491,493,495,497,498,721,715,716,717,718,504,714,719,720,499,500,503,501,502,723,525,726,508,524,516,518,523,509,725,506,507,521,519,517,520,522,513,515,514,511,510,512,722,724,739,740,741,742,743,744,746,735,730,738,748,733,737,732,729,736,731,745,747,398,749,429,752,753,394,457,409,[414,[{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":640,"length":8,"code":2339,"category":1,"messageText":"Property 'polygons' does not exist on type 'Tiling'."},{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":712,"length":8,"code":2339,"category":1,"messageText":"Property 'polygons' does not exist on type 'Tiling'."},{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":781,"length":8,"code":2339,"category":1,"messageText":"Property 'polygons' does not exist on type 'Tiling'."},{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":1334,"length":10,"messageText":"Parameter 'vertexType' implicitly has an 'any' type.","category":1,"code":7006},{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":1678,"length":8,"messageText":"Parameter 'edgeType' implicitly has an 'any' type.","category":1,"code":7006},{"file":"./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","start":1962,"length":9,"messageText":"Parameter 'shapeType' implicitly has an 'any' type.","category":1,"code":7006}]],397,411,412,396,410,413,433,455,448,751,432,447,431,449,401,400,450,451,452,[402,[{"file":"./workspaces/tilings/src/presentation/player/useplayer.ts","start":1328,"length":8,"code":2339,"category":1,"messageText":"Property 'polygons' does not exist on type 'Tiling'."},{"file":"./workspaces/tilings/src/presentation/player/useplayer.ts","start":2567,"length":10,"messageText":"'activePart' is possibly 'undefined'.","category":1,"code":18048}]],[403,[{"file":"./workspaces/tilings/src/presentation/player/useplayercontext.ts","start":412,"length":15,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'fullScreenEnter' does not exist in type 'UsePlayerResult'."}]],405,406,453,454,404,445,446,444,430,399,407,456,750,408,395,754,1003,1012,885,886,995,887,888,999,1000,884,902,1006,1009,890,891,998,889,898,899,900,997,903,996,1001,1002,897,1010,901,1011,878],"affectedFilesPendingEmit":[352,388,351,340,380,335,381,382,384,383,385,336,343,379,378,344,386,342,341,387,281,282,283,284,285,391,287,280,334,311,317,309,310,312,313,314,318,316,330,319,320,328,329,300,321,323,322,325,308,307,301,303,304,305,306,302,324,315,327,326,299,331,289,295,294,296,293,291,292,332,297,298,333,290,465,466,467,459,460,461,462,463,458,464,469,468,214,228,229,231,230,470,233,471,232,472,234,227,236,235,237,278,226,238,277,276,256,254,253,257,258,255,252,251,259,260,261,262,264,265,269,266,268,263,270,246,250,240,245,244,249,243,242,247,248,271,272,475,494,477,492,483,485,486,488,479,489,490,480,496,487,481,484,482,476,478,491,493,497,721,504,714,719,720,499,500,503,501,502,723,525,508,524,516,518,523,509,725,506,507,521,519,517,520,522,513,515,514,511,510,512,722,739,740,741,742,743,744,746,735,730,738,733,737,732,729,736,731,745,394,457,409,414,397,411,412,396,410,413,433,455,448,751,432,447,431,449,401,400,450,451,452,402,403,405,406,453,454,404,445,446,444,430,399,407,456,408,395,1003,1012,885,886,995,887,888,999,1000,884,902,1006,1009,890,891,998,889,898,899,900,997,903,996,1001,1002,897,901,878],"emitSignatures":[214,226,227,228,229,230,231,232,233,234,235,236,237,238,240,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,268,269,270,271,272,276,277,278,280,281,282,283,284,285,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,340,341,342,343,344,351,352,378,379,380,381,382,383,384,385,386,387,388,391,394,395,396,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,430,431,432,433,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,496,497,499,500,501,502,503,504,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,714,719,720,721,722,723,725,729,730,731,732,733,735,736,737,738,739,740,741,742,743,744,745,746,751,878,884,885,886,887,888,889,890,891,897,898,899,900,901,902,903,995,996,997,998,999,1000,1001,1002,1003,1006,1009,1012]},"version":"5.3.2"} \ No newline at end of file +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./@types/index.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/@types/react/node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/lucide-react/dist/lucide-react.d.ts","./node_modules/preshape/dist/types.d.ts","./node_modules/preshape/dist/hooks/useintersectionobserver.d.ts","./node_modules/preshape/dist/hooks/uselocalstorage.d.ts","./node_modules/preshape/dist/hooks/usematchmedia.d.ts","./node_modules/preshape/dist/hooks/useresizeobserver.d.ts","./node_modules/preshape/dist/hooks/usewindowscrollto.d.ts","./node_modules/preshape/dist/hooks/useurlstate.d.ts","./node_modules/preshape/dist/hooks/index.d.ts","./node_modules/preshape/dist/variables.d.ts","./node_modules/preshape/dist/box/box.d.ts","./node_modules/preshape/dist/alert/alert.d.ts","./node_modules/preshape/node_modules/framer-motion/dist/index.d.ts","./node_modules/preshape/dist/motion/motion.d.ts","./node_modules/preshape/dist/appear/appear.d.ts","./node_modules/preshape/dist/article/article.d.ts","./node_modules/preshape/dist/text/text.d.ts","./node_modules/preshape/dist/article/articleheading.d.ts","./node_modules/preshape/dist/article/articleparagraph.d.ts","./node_modules/preshape/dist/article/articlesection.d.ts","./node_modules/preshape/dist/blockquote/blockquote.d.ts","./node_modules/preshape/dist/bulletpoints/bulletpoint.d.ts","./node_modules/preshape/dist/bulletpoints/bulletpoints.d.ts","./node_modules/preshape/dist/button/button.d.ts","./node_modules/preshape/dist/button/buttonasync.d.ts","./node_modules/preshape/dist/button/buttons.d.ts","./node_modules/preshape/dist/selectinputlabel/selectinputlabel.d.ts","./node_modules/preshape/dist/checkbox/checkbox.d.ts","./node_modules/preshape/dist/checkbox/checkboxindicator.d.ts","./node_modules/preshape/dist/code/syntaxhighlight.d.ts","./node_modules/preshape/dist/code/code.d.ts","./node_modules/preshape/dist/code/codeblock.d.ts","./node_modules/preshape/dist/code/codewindow.d.ts","./node_modules/preshape/node_modules/lucide-react/dist/lucide-react.d.ts","./node_modules/preshape/dist/transitionbox/transitionbox.d.ts","./node_modules/preshape/dist/configmenu/configmenu.d.ts","./node_modules/preshape/dist/datepicker/datepicker.d.ts","./node_modules/preshape/dist/form/useform.d.ts","./node_modules/preshape/dist/form/formprovider.d.ts","./node_modules/preshape/dist/form/form.d.ts","./node_modules/preshape/dist/form/formerror.d.ts","./node_modules/preshape/dist/form/useformcontext.d.ts","./node_modules/preshape/dist/form/useformregisterfield.d.ts","./node_modules/preshape/dist/grid/grid.d.ts","./node_modules/preshape/dist/grid/griditem.d.ts","./node_modules/preshape/dist/image/image.d.ts","./node_modules/preshape/dist/input/inputwrapper.d.ts","./node_modules/preshape/dist/input/input.d.ts","./node_modules/preshape/dist/input/inputlabel.d.ts","./node_modules/preshape/dist/label/label.d.ts","./node_modules/preshape/dist/label/labels.d.ts","./node_modules/preshape/dist/link/link.d.ts","./node_modules/preshape/dist/list/list.d.ts","./node_modules/preshape/dist/list/listitem.d.ts","./node_modules/preshape/dist/modal/modal.d.ts","./node_modules/preshape/dist/modal/usemodalcontext.d.ts","./node_modules/preshape/dist/modal/modalbody.d.ts","./node_modules/preshape/dist/modal/modalfooter.d.ts","./node_modules/preshape/dist/modal/modalfooterinsert.d.ts","./node_modules/preshape/dist/modal/modalheader.d.ts","./node_modules/preshape/dist/modal/modalmanager.d.ts","./node_modules/preshape/dist/modal/modalpadding.d.ts","./node_modules/preshape/dist/modal/modalpaddingoffset.d.ts","./node_modules/preshape/dist/modal/modaltitle.d.ts","./node_modules/preshape/dist/radiobutton/radiobutton.d.ts","./node_modules/preshape/dist/options/option.d.ts","./node_modules/preshape/dist/selectinputlabel/selectinputlabels.d.ts","./node_modules/preshape/dist/options/options.d.ts","./node_modules/@floating-ui/utils/src/index.d.ts","./node_modules/@floating-ui/utils/src/types.d.ts","./node_modules/@floating-ui/core/src/computeposition.d.ts","./node_modules/@floating-ui/core/src/detectoverflow.d.ts","./node_modules/@floating-ui/core/src/middleware/arrow.d.ts","./node_modules/@floating-ui/core/src/middleware/autoplacement.d.ts","./node_modules/@floating-ui/core/src/middleware/flip.d.ts","./node_modules/@floating-ui/core/src/middleware/hide.d.ts","./node_modules/@floating-ui/core/src/middleware/inline.d.ts","./node_modules/@floating-ui/core/src/middleware/offset.d.ts","./node_modules/@floating-ui/core/src/middleware/shift.d.ts","./node_modules/@floating-ui/core/src/middleware/size.d.ts","./node_modules/@floating-ui/core/src/types.d.ts","./node_modules/@floating-ui/dom/src/autoupdate.d.ts","./node_modules/@floating-ui/dom/src/platform.d.ts","./node_modules/@floating-ui/utils/dom/src/index.d.ts","./node_modules/@floating-ui/dom/src/index.d.ts","./node_modules/@floating-ui/dom/src/types.d.ts","./node_modules/@floating-ui/react-dom/src/arrow.d.ts","./node_modules/@floating-ui/react-dom/src/usefloating.d.ts","./node_modules/@floating-ui/react-dom/src/types.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usedismiss.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingarrow.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingdelaygroup.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingfocusmanager.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatinglist.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingoverlay.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingportal.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/components/floatingtree.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useclick.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useclientpoint.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usefloating.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usefocus.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usehover.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useid.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/useinteractions.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/uselistnavigation.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usemergerefs.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/userole.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usetransition.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/hooks/usetypeahead.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/inner.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/safepolygon.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/index.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/src/types.d.ts","./node_modules/preshape/node_modules/@floating-ui/react/index.d.ts","./node_modules/preshape/dist/placement/useplacement.d.ts","./node_modules/preshape/dist/placement/placement.d.ts","./node_modules/preshape/dist/placement/placementcontent.d.ts","./node_modules/preshape/dist/placement/placementopencondition.d.ts","./node_modules/preshape/dist/placement/placementreference.d.ts","./node_modules/preshape/dist/placement/useplacementcontext.d.ts","./node_modules/preshape/dist/radiobutton/radiobuttonindicator.d.ts","./node_modules/preshape/dist/range/range.d.ts","./node_modules/preshape/dist/separator/separator.d.ts","./node_modules/preshape/dist/spinner/spinner.d.ts","./node_modules/preshape/dist/tab/tab.d.ts","./node_modules/preshape/dist/tab/tabcontent.d.ts","./node_modules/preshape/dist/tab/tabs.d.ts","./node_modules/preshape/dist/table/table.d.ts","./node_modules/preshape/dist/table/tablebody.d.ts","./node_modules/preshape/dist/table/tablecell.d.ts","./node_modules/preshape/dist/table/tableheader.d.ts","./node_modules/preshape/dist/table/tableheadercell.d.ts","./node_modules/preshape/dist/table/tablerow.d.ts","./node_modules/preshape/dist/textarea/textarea.d.ts","./node_modules/preshape/dist/textarea/textarealabel.d.ts","./node_modules/preshape/dist/themeswitcher/themeprovider.d.ts","./node_modules/preshape/dist/themeswitcher/usethemecontext.d.ts","./node_modules/preshape/dist/toggle/toggle.d.ts","./node_modules/preshape/dist/themeswitcher/themeswitcher.d.ts","./node_modules/preshape/dist/tooltip/tooltip.d.ts","./node_modules/preshape/dist/index.d.ts","./workspaces/common/src/article/articlecallout.tsx","./node_modules/@remix-run/router/dist/history.d.ts","./node_modules/@remix-run/router/dist/utils.d.ts","./node_modules/@remix-run/router/dist/router.d.ts","./node_modules/@remix-run/router/dist/index.d.ts","./node_modules/react-router/dist/lib/context.d.ts","./node_modules/react-router/dist/lib/components.d.ts","./node_modules/react-router/dist/lib/hooks.d.ts","./node_modules/react-router/dist/index.d.ts","./node_modules/react-router-dom/dist/dom.d.ts","./node_modules/react-router-dom/dist/index.d.ts","./node_modules/react-use/lib/useintersection.d.ts","./workspaces/common/src/inview/inview.tsx","./workspaces/common/src/article/usearticlecontext.ts","./workspaces/common/src/article/articlefig.tsx","./workspaces/common/src/article/articlefigcodeblock.tsx","./workspaces/common/src/article/articlefigs.tsx","./workspaces/common/src/article/articlefiglink.tsx","./workspaces/common/src/article/articleprovider.tsx","./workspaces/common/src/article/articlepage.tsx","./workspaces/common/src/article/getcodesnippetfromfile.tsx","./workspaces/common/src/copytoclipboardcard/usecopytoclipboard.ts","./workspaces/common/src/copytoclipboardcard/copytoclipboardcard.tsx","./workspaces/common/src/imagecover/imagecover.tsx","./workspaces/common/src/lines/lines.tsx","./node_modules/framer-motion/dist/index.d.ts","./workspaces/common/src/svglabels/types.ts","./node_modules/@types/sat/index.d.ts","./workspaces/common/src/svglabels/utils/hascollided.ts","./workspaces/common/src/svglabels/utils/getlabelshifts.ts","./workspaces/common/src/svglabels/usesvglabelscontext.ts","./workspaces/common/src/svglabels/uselabelshift.ts","./workspaces/common/src/svglabels/svglabel.tsx","./workspaces/common/src/types.ts","./workspaces/common/src/utils.ts","./workspaces/common/src/svglabels/utils/algorithms.ts","./workspaces/common/src/svglabels/svglabelsprovider.tsx","./workspaces/common/src/projectwindow/patternbackground.tsx","./workspaces/common/src/projectpage/useprojectpagecontext.ts","./workspaces/common/src/projectpage/projectpageheader.tsx","./workspaces/common/src/projectpage/projectpagedualview.tsx","./workspaces/common/src/projectpage/projectpagesingleview.tsx","./workspaces/common/src/projectpage/projectpage.tsx","./workspaces/common/src/projectpage/projectpagelink.tsx","./workspaces/common/src/projectpage/projectpageprovider.tsx","./workspaces/common/src/projectwindow/projectcontrol.tsx","./workspaces/common/src/projectwindow/projectcontrolgroup.tsx","./workspaces/common/src/projectwindow/projectcontrols.tsx","./workspaces/common/src/projectwindow/projectprogressbar.tsx","./workspaces/common/src/projectwindow/useprojectwindowcontext.ts","./workspaces/common/src/projectwindow/projecttab.tsx","./workspaces/common/src/projectwindow/projecttabs.tsx","./workspaces/common/src/projectwindow/projectwindowcontents.tsx","./node_modules/screenfull/index.d.ts","./workspaces/common/src/projectwindow/projectwindowprovider.tsx","./workspaces/common/src/projectwindow/projectwindow.tsx","./workspaces/common/src/spinner/spinner.tsx","./node_modules/@artsy/fresnel/dist/breakpoints.d.ts","./node_modules/@artsy/fresnel/dist/media.d.ts","./node_modules/@artsy/fresnel/dist/index.d.ts","./workspaces/common/src/media/mediaprovider.tsx","./workspaces/common/src/media/media.tsx","./workspaces/common/src/index.ts","./node_modules/bitset/bitset.d.ts","./workspaces/circle-intersections/src/article/rulebox.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph1.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph2.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph3.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph4.tsx","./workspaces/circle-intersections/src/article/images/circlesgraph5.tsx","./workspaces/circle-intersections/src/article/traversals.json","./workspaces/circle-intersections/src/article/index.tsx","./node_modules/classnames/index.d.ts","./workspaces/circle-intersections/src/usegraph/circle.ts","./workspaces/circle-intersections/src/utils/ispointwithincircle.ts","./workspaces/circle-intersections/src/usegraph/traversal.ts","./workspaces/circle-intersections/src/usegraph/validate.ts","./workspaces/circle-intersections/src/usegraph/node.ts","./workspaces/circle-intersections/src/usegraph/graph.ts","./workspaces/circle-intersections/src/usegraph/edge.ts","./workspaces/circle-intersections/src/usegraph/index.ts","./workspaces/circle-intersections/src/utils/getarcpath.ts","./workspaces/circle-intersections/src/utils/gettraversalpath.ts","./workspaces/circle-intersections/src/presentation/useintersectionexplorercontext.ts","./workspaces/circle-intersections/src/presentation/node/nodebadge.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentcurrent.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodevalidationmessage.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentnext.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentnostart.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentprevious.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontentstart.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltipcontent.tsx","./workspaces/circle-intersections/src/presentation/nodetooltip/nodetooltip.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphbounds.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/graphcircle.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/getgraphedgetransitiondurationms.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphedge.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphlabel.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphnode.tsx","./workspaces/circle-intersections/src/presentation/traversallist/bitsettooltip.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/graphtraversal.tsx","./workspaces/circle-intersections/src/presentation/graphrenderer/getscaledprops.ts","./workspaces/circle-intersections/src/presentation/graphrenderer/graphrenderer.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerconfigmenu.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorercontrols.tsx","./workspaces/circle-intersections/src/presentation/node/nodeicon.tsx","./workspaces/circle-intersections/src/presentation/nodegrid/nodegriditem.tsx","./workspaces/circle-intersections/src/presentation/nodegrid/nodegrid.tsx","./workspaces/circle-intersections/src/presentation/traversalhistory/traversalhistory.tsx","./workspaces/circle-intersections/src/presentation/nodepanel/nodepanel.tsx","./workspaces/circle-intersections/src/presentation/traversallist/traversallistitem.tsx","./workspaces/circle-intersections/src/presentation/traversallist/traversallist.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerprojectwindow.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorerprovider.tsx","./workspaces/circle-intersections/src/presentation/intersectionexplorer.tsx","./workspaces/circle-intersections/src/project.tsx","./workspaces/circle-intersections/src/utils/atan2.ts","./workspaces/circle-intersections/src/utils/ispointovercircleedge.ts","./workspaces/circle-intersections/src/index.ts","./workspaces/circle-art/src/presentation/editorcircle.tsx","./workspaces/circle-art/src/presentation/editorintersection.tsx","./node_modules/@types/file-saver/index.d.ts","./node_modules/@types/uuid/index.d.ts","./node_modules/@types/uuid/index.d.mts","./workspaces/circle-art/src/presentation/cursor.ts","./workspaces/circle-art/src/presentation/useeditorhistory.ts","./workspaces/circle-art/src/presentation/useeditorcontext.ts","./workspaces/circle-art/src/presentation/editorprovider.tsx","./workspaces/circle-art/src/presentation/editorviewer.tsx","./workspaces/circle-art/src/presentation/configurations/fox.json","./workspaces/circle-art/src/presentation/configurations/monkey.json","./workspaces/circle-art/src/presentation/configurations/mushroom.json","./workspaces/circle-art/src/presentation/configurations/profile.json","./workspaces/circle-art/src/presentation/configurations/twitter.json","./workspaces/circle-art/src/presentation/configurations/whale.json","./workspaces/circle-art/src/presentation/configurations/index.ts","./workspaces/circle-art/src/article.tsx","./node_modules/@floating-ui/react/src/components/composite.d.ts","./node_modules/@floating-ui/react/src/components/floatingarrow.d.ts","./node_modules/@floating-ui/react/src/components/floatingdelaygroup.d.ts","./node_modules/@floating-ui/react/src/components/floatingfocusmanager.d.ts","./node_modules/@floating-ui/react/src/components/floatinglist.d.ts","./node_modules/@floating-ui/react/src/components/floatingoverlay.d.ts","./node_modules/@floating-ui/react/src/components/floatingportal.d.ts","./node_modules/@floating-ui/react/src/components/floatingtree.d.ts","./node_modules/@floating-ui/react/src/hooks/useclick.d.ts","./node_modules/@floating-ui/react/src/hooks/useclientpoint.d.ts","./node_modules/@floating-ui/react/src/hooks/usedismiss.d.ts","./node_modules/@floating-ui/react/src/hooks/usefloating.d.ts","./node_modules/@floating-ui/react/src/hooks/usefocus.d.ts","./node_modules/@floating-ui/react/src/hooks/usehover.d.ts","./node_modules/@floating-ui/react/src/hooks/useid.d.ts","./node_modules/@floating-ui/react/src/hooks/useinteractions.d.ts","./node_modules/@floating-ui/react/src/hooks/uselistnavigation.d.ts","./node_modules/@floating-ui/react/src/hooks/usemergerefs.d.ts","./node_modules/@floating-ui/react/src/hooks/userole.d.ts","./node_modules/@floating-ui/react/src/hooks/usetransition.d.ts","./node_modules/@floating-ui/react/src/hooks/usetypeahead.d.ts","./node_modules/@floating-ui/react/src/inner.d.ts","./node_modules/@floating-ui/react/src/safepolygon.d.ts","./node_modules/@floating-ui/react/src/index.d.ts","./node_modules/@floating-ui/react/src/types.d.ts","./workspaces/circle-art/src/presentation/editortoolbarreference.tsx","./workspaces/circle-art/src/presentation/editortoolbar.tsx","./workspaces/circle-art/src/presentation/editorcanvas.tsx","./workspaces/circle-art/src/presentation/editorcontrols.tsx","./workspaces/circle-art/src/presentation/editordownloadmenu.tsx","./workspaces/circle-art/src/presentation/editorgalleryitem.tsx","./workspaces/circle-art/src/presentation/editorgallery.tsx","./workspaces/circle-art/src/presentation/editorhistorycontrols.tsx","./workspaces/circle-art/src/presentation/index.tsx","./workspaces/circle-art/src/project.tsx","./workspaces/circle-art/src/index.ts","./workspaces/circle-art/src/react-app-env.d.ts","./workspaces/circle-intersections/src/react-app-env.d.ts","./workspaces/circle-intersections/src/article/images/index.tsx","./workspaces/tilings/node_modules/lucide-react/dist/lucide-react.d.ts","./workspaces/tilings/src/types.ts","./workspaces/tilings/src/presentation/arrangement/usearrangementcontext.ts","./workspaces/tilings/src/presentation/arrangement/arrangementprovider.tsx","./workspaces/wasm/pkg/wasm.d.ts","./workspaces/circular-sequence/src/types.ts","./workspaces/wasm/src/wasmworker/modules/circular-sequence.ts","./workspaces/line-segment-extending/src/types.ts","./workspaces/wasm/src/wasmworker/modules/line-segment-extending.ts","./workspaces/wasm/src/wasmworker/modules/tilings.ts","./workspaces/wasm/src/wasmworker/wasmworker.ts","./workspaces/wasm/src/wasmworker/wasmworkerrunner.ts","./workspaces/wasm/src/wasmworker/usewasmworker.ts","./workspaces/wasm/src/wasmapi/usewasmapi.ts","./workspaces/wasm/src/wasmapi/wasmapiloadingscreen.tsx","./workspaces/wasm/src/wasmapi/wasmapiprovider.tsx","./workspaces/wasm/src/index.ts","./workspaces/tilings/src/presentation/notation/usenotationcontext.ts","./workspaces/tilings/src/presentation/notation/notationprovider.tsx","./workspaces/tilings/src/presentation/player/useplayer.ts","./workspaces/tilings/src/presentation/player/useplayercontext.ts","./workspaces/tilings/src/presentation/settings/usesettingscontext.ts","./workspaces/tilings/src/presentation/renderer/renderer.tsx","./workspaces/tilings/src/tilingrenderer.tsx","./workspaces/tilings/src/presentation/arrangement/arrangementcard.tsx","./workspaces/tilings/src/presentation/arrangement/utils.ts","./workspaces/tilings/src/presentation/arrangement/edgetype.tsx","./workspaces/tilings/src/presentation/arrangement/shapetype.tsx","./workspaces/tilings/src/presentation/arrangement/vertextype.tsx","./workspaces/tilings/src/presentation/arrangement/arrangementinformation.tsx","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/lodash/groupby.d.ts","./workspaces/tilings/results/output.json","./workspaces/tilings/src/presentation/utils/results.ts","./workspaces/tilings/src/presentation/library/uselibrarycontext.ts","./workspaces/tilings/src/presentation/library/libraryprovider.tsx","./workspaces/tilings/src/presentation/image/croppedimage.tsx","./node_modules/@types/luxon/src/zone.d.ts","./node_modules/@types/luxon/src/settings.d.ts","./node_modules/@types/luxon/src/_util.d.ts","./node_modules/@types/luxon/src/misc.d.ts","./node_modules/@types/luxon/src/duration.d.ts","./node_modules/@types/luxon/src/interval.d.ts","./node_modules/@types/luxon/src/datetime.d.ts","./node_modules/@types/luxon/src/info.d.ts","./node_modules/@types/luxon/src/luxon.d.ts","./node_modules/@types/luxon/index.d.ts","./workspaces/tilings/src/presentation/utils/formatting.ts","./workspaces/tilings/src/presentation/tiling/tilinginformation.tsx","./workspaces/tilings/src/presentation/tiling/tilingresult.tsx","./workspaces/tilings/src/presentation/library/libraryresultsgrid.tsx","./workspaces/tilings/src/presentation/library/library.tsx","./workspaces/tilings/src/presentation/notation/notationinput.tsx","./workspaces/tilings/src/presentation/player/playercontrolbar.tsx","./workspaces/tilings/src/presentation/player/playercontrols.tsx","./workspaces/tilings/src/presentation/player/playerprovider.tsx","./workspaces/tilings/src/presentation/settings/settings.tsx","./workspaces/tilings/src/presentation/settings/settingsprovider.tsx","./workspaces/tilings/src/presentation/index.tsx","./workspaces/tilings/src/project.tsx","./workspaces/tilings/src/index.ts","./workspaces/circular-sequence/src/article/sequenceview/getsequencecolor.ts","./workspaces/circular-sequence/src/article/sequenceview/sequencelabel.tsx","./workspaces/circular-sequence/node_modules/lucide-react/dist/lucide-react.d.ts","./workspaces/circular-sequence/src/article/sequenceview/sequencelength.tsx","./workspaces/circular-sequence/src/article/sequenceview/sequencesingle.tsx","./workspaces/circular-sequence/src/article/sequenceview/sequenceview.tsx","./workspaces/circular-sequence/src/article/figs/concatenatedsequencesfig.tsx","./workspaces/circular-sequence/src/article/figs/minpermutationfig.tsx","./workspaces/circular-sequence/src/article/index.tsx","./workspaces/circular-sequence/src/project.tsx","./workspaces/circular-sequence/src/index.ts","./workspaces/common/src/article/articleheading.tsx","./workspaces/common/src/article/articleparagraph.tsx","./workspaces/common/src/article/articlesection.tsx","./workspaces/evolution/src/article/index.tsx","./workspaces/evolution/src/presentation/index.tsx","./workspaces/evolution/src/project.tsx","./workspaces/evolution/src/index.ts","./workspaces/evolution/src/react-app-env.d.ts","./workspaces/evolution/src/article/matrixcell.tsx","./workspaces/evolution/src/article/matrixdots.tsx","./workspaces/evolution/src/article/matrixrow.tsx","./workspaces/evolution/src/article/matrix.tsx","./workspaces/line-segment-extending/src/article.tsx","./workspaces/line-segment-extending/src/presentation/uselinesegmentcontext.ts","./workspaces/line-segment-extending/src/presentation/controls.tsx","./workspaces/line-segment-extending/src/presentation/linesegmentprovider.tsx","./workspaces/line-segment-extending/src/presentation/shapes/circle.tsx","./workspaces/line-segment-extending/src/presentation/shapes/line.tsx","./workspaces/line-segment-extending/src/presentation/shapes/text.tsx","./workspaces/line-segment-extending/src/presentation/layers/atan2annotations.tsx","./workspaces/line-segment-extending/src/presentation/shapes/rect.tsx","./workspaces/line-segment-extending/src/presentation/layers/bounds.tsx","./workspaces/line-segment-extending/src/presentation/layers/extendedlinesegment.tsx","./workspaces/line-segment-extending/src/presentation/shapes/draghandle.tsx","./workspaces/line-segment-extending/src/presentation/layers/originallinesegment.tsx","./workspaces/line-segment-extending/src/presentation/renderer.tsx","./workspaces/line-segment-extending/src/presentation/settings.tsx","./workspaces/line-segment-extending/src/presentation/index.tsx","./workspaces/line-segment-extending/src/project.tsx","./workspaces/line-segment-extending/src/index.ts","./workspaces/line-segment-extending/src/react-app-env.d.ts","./workspaces/line-segment-extending/src/presentation/shapes/circlesegment.tsx","./workspaces/preshape/src/index.ts","./workspaces/preshape/src/react-app-env.d.ts","./workspaces/snake/src/article/solutions/euclideandistance.ts","./workspaces/snake/src/article/solutions/hamiltoniancycle.ts","./workspaces/snake/src/article/solutions/manhattandistance.ts","./workspaces/snake/src/article/solutions/tailescape.ts","./workspaces/snake/src/article/solutions/index.ts","./workspaces/snake/src/article/snakesolution.tsx","./node_modules/@types/lodash/flatten.d.ts","./workspaces/snake/src/presentation/types.ts","./workspaces/snake/src/presentation/usesnakecontext.ts","./workspaces/snake/src/presentation/snakecontrols.tsx","./workspaces/snake/src/presentation/solutionrunner.ts","./workspaces/snake/src/presentation/utils/iscellinbounds.ts","./workspaces/snake/src/presentation/utils/iscellequal.ts","./workspaces/snake/src/presentation/utils/iscellincluded.ts","./workspaces/snake/src/presentation/utils/getsurroundingcells.ts","./workspaces/snake/src/presentation/utils/historyblock.ts","./workspaces/snake/src/presentation/utils/history.ts","./workspaces/snake/src/presentation/snakeprovider.tsx","./workspaces/snake/src/presentation/utils/getgradientcolor.ts","./workspaces/snake/src/presentation/snakerenderer.tsx","./workspaces/snake/src/presentation/utils/getcompletedhistory.ts","./workspaces/snake/src/presentation/utils/getmean.ts","./workspaces/snake/src/presentation/utils/getaverage.ts","./workspaces/snake/src/presentation/utils/getscore.ts","./workspaces/snake/src/presentation/snakescores.tsx","./workspaces/snake/src/presentation/snakeprojectwindow.tsx","./workspaces/snake/src/presentation/index.ts","./node_modules/@visx/scale/lib/types/base.d.ts","./node_modules/@visx/scale/lib/types/scaleinterpolate.d.ts","./node_modules/@visx/scale/lib/types/basescaleconfig.d.ts","./node_modules/@visx/scale/lib/types/nice.d.ts","./node_modules/@types/d3-time/index.d.ts","./node_modules/@types/d3-scale/index.d.ts","./node_modules/@visx/vendor/d3-scale.d.ts","./node_modules/@visx/scale/lib/types/scale.d.ts","./node_modules/@visx/scale/lib/types/scaleconfig.d.ts","./node_modules/@visx/scale/lib/scales/band.d.ts","./node_modules/@visx/scale/lib/scales/point.d.ts","./node_modules/@visx/scale/lib/scales/linear.d.ts","./node_modules/@visx/scale/lib/scales/radial.d.ts","./node_modules/@visx/scale/lib/scales/time.d.ts","./node_modules/@visx/scale/lib/scales/utc.d.ts","./node_modules/@visx/scale/lib/scales/log.d.ts","./node_modules/@visx/scale/lib/scales/power.d.ts","./node_modules/@visx/scale/lib/scales/ordinal.d.ts","./node_modules/@visx/scale/lib/scales/quantize.d.ts","./node_modules/@visx/scale/lib/scales/quantile.d.ts","./node_modules/@visx/scale/lib/scales/symlog.d.ts","./node_modules/@visx/scale/lib/scales/threshold.d.ts","./node_modules/@visx/scale/lib/scales/squareroot.d.ts","./node_modules/@visx/scale/lib/createscale.d.ts","./node_modules/@visx/scale/lib/updatescale.d.ts","./node_modules/@visx/scale/lib/utils/inferscaletype.d.ts","./node_modules/@visx/scale/lib/utils/coercenumber.d.ts","./node_modules/@visx/scale/lib/utils/getticks.d.ts","./node_modules/@visx/scale/lib/utils/tostring.d.ts","./node_modules/@visx/scale/lib/utils/scalecanbezeroed.d.ts","./node_modules/@visx/scale/lib/index.d.ts","./node_modules/@visx/text/lib/types.d.ts","./node_modules/@visx/text/lib/text.d.ts","./node_modules/@visx/axis/lib/constants/orientation.d.ts","./node_modules/@visx/axis/lib/types.d.ts","./node_modules/@visx/axis/lib/axis/axis.d.ts","./node_modules/@visx/axis/lib/axis/axisleft.d.ts","./node_modules/@visx/axis/lib/axis/axisright.d.ts","./node_modules/@visx/axis/lib/axis/axistop.d.ts","./node_modules/@visx/axis/lib/axis/axisbottom.d.ts","./node_modules/@visx/axis/lib/index.d.ts","./node_modules/@types/d3-path/index.d.ts","./node_modules/@types/d3-shape/index.d.ts","./node_modules/@visx/curve/lib/index.d.ts","./node_modules/@visx/shape/lib/types/base.d.ts","./node_modules/@visx/shape/lib/types/accessor.d.ts","./node_modules/@visx/shape/lib/util/stackoffset.d.ts","./node_modules/@visx/shape/lib/util/stackorder.d.ts","./node_modules/@visx/shape/lib/types/d3shapeconfig.d.ts","./node_modules/@visx/shape/lib/types/area.d.ts","./node_modules/@visx/shape/lib/types/bargroup.d.ts","./node_modules/@visx/shape/lib/types/stack.d.ts","./node_modules/@visx/shape/lib/types/barstack.d.ts","./node_modules/@visx/shape/lib/types/link.d.ts","./node_modules/@visx/shape/lib/types/index.d.ts","./node_modules/@visx/shape/lib/shapes/arc.d.ts","./node_modules/@visx/shape/lib/shapes/pie.d.ts","./node_modules/@visx/shape/lib/shapes/line.d.ts","./node_modules/@visx/shape/lib/shapes/linepath.d.ts","./node_modules/@visx/shape/lib/shapes/lineradial.d.ts","./node_modules/@visx/shape/lib/shapes/area.d.ts","./node_modules/@visx/shape/lib/shapes/areaclosed.d.ts","./node_modules/@visx/shape/lib/shapes/stack.d.ts","./node_modules/@visx/shape/lib/shapes/areastack.d.ts","./node_modules/@visx/shape/lib/shapes/bar.d.ts","./node_modules/@visx/shape/lib/shapes/barrounded.d.ts","./node_modules/@visx/shape/lib/shapes/bargroup.d.ts","./node_modules/@visx/shape/lib/shapes/bargrouphorizontal.d.ts","./node_modules/@visx/shape/lib/shapes/barstack.d.ts","./node_modules/@visx/shape/lib/shapes/barstackhorizontal.d.ts","./node_modules/@visx/shape/lib/util/trigonometry.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkhorizontal.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkvertical.d.ts","./node_modules/@visx/shape/lib/shapes/link/diagonal/linkradial.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkhorizontalcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkverticalcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/curve/linkradialcurve.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkhorizontalline.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkverticalline.d.ts","./node_modules/@visx/shape/lib/shapes/link/line/linkradialline.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkhorizontalstep.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkverticalstep.d.ts","./node_modules/@visx/shape/lib/shapes/link/step/linkradialstep.d.ts","./node_modules/@visx/shape/lib/shapes/polygon.d.ts","./node_modules/@visx/shape/lib/shapes/circle.d.ts","./node_modules/@visx/shape/lib/util/getsplitlinesegments.d.ts","./node_modules/@visx/shape/lib/shapes/splitlinepath.d.ts","./node_modules/@visx/shape/lib/util/d3shapefactories.d.ts","./node_modules/@visx/shape/lib/index.d.ts","./node_modules/@visx/annotation/lib/types/index.d.ts","./node_modules/@visx/annotation/lib/components/annotation.d.ts","./node_modules/@visx/annotation/lib/components/editableannotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/private/baseannotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotation.d.ts","./node_modules/@visx/xychart/lib/components/annotation/animatedannotation.d.ts","./node_modules/@visx/text/lib/util/getstringwidth.d.ts","./node_modules/@visx/text/lib/hooks/usetext.d.ts","./node_modules/@visx/text/lib/index.d.ts","./node_modules/react-use-measure/types/index.d.ts","./node_modules/@visx/annotation/lib/components/label.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationlabel.d.ts","./node_modules/@visx/annotation/lib/components/connector.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationconnector.d.ts","./node_modules/@visx/annotation/lib/components/circlesubject.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationcirclesubject.d.ts","./node_modules/@visx/annotation/lib/components/linesubject.d.ts","./node_modules/@visx/xychart/lib/components/annotation/annotationlinesubject.d.ts","./node_modules/@visx/react-spring/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/components/axis/baseaxis.d.ts","./node_modules/@visx/xychart/lib/components/axis/animatedaxis.d.ts","./node_modules/@visx/react-spring/lib/axis/animatedticks.d.ts","./node_modules/@visx/react-spring/lib/axis/animatedaxis.d.ts","./node_modules/@visx/grid/lib/types.d.ts","./node_modules/@visx/grid/lib/grids/gridrows.d.ts","./node_modules/@visx/react-spring/lib/grid/animatedgridrows.d.ts","./node_modules/@visx/grid/lib/grids/gridcolumns.d.ts","./node_modules/@visx/react-spring/lib/grid/animatedgridcolumns.d.ts","./node_modules/@visx/react-spring/lib/index.d.ts","./node_modules/@visx/xychart/lib/components/grid/basegrid.d.ts","./node_modules/@visx/xychart/lib/components/grid/animatedgrid.d.ts","./node_modules/@visx/xychart/lib/components/axis/axis.d.ts","./node_modules/@visx/xychart/lib/components/grid/grid.d.ts","./node_modules/@visx/tooltip/lib/tooltips/tooltip.d.ts","./node_modules/@visx/tooltip/lib/portal.d.ts","./node_modules/@visx/tooltip/lib/hooks/usetooltipinportal.d.ts","./node_modules/@visx/xychart/lib/types/axis.d.ts","./node_modules/@visx/responsive/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/classes/dataregistry.d.ts","./node_modules/@visx/xychart/lib/types/theme.d.ts","./node_modules/@visx/xychart/lib/types/data.d.ts","./node_modules/@visx/xychart/node_modules/mitt/index.d.ts","./node_modules/@visx/xychart/lib/types/event.d.ts","./node_modules/@visx/xychart/lib/types/series.d.ts","./node_modules/@visx/tooltip/lib/hooks/usetooltip.d.ts","./node_modules/@visx/xychart/lib/types/tooltip.d.ts","./node_modules/@visx/xychart/lib/types/index.d.ts","./node_modules/@visx/xychart/lib/components/tooltip.d.ts","./node_modules/@visx/xychart/lib/hooks/usedimensions.d.ts","./node_modules/@visx/xychart/lib/providers/dataprovider.d.ts","./node_modules/@visx/xychart/lib/components/xychart.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseareaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/areaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseareastack.d.ts","./node_modules/@visx/xychart/lib/components/series/areastack.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/bargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebarseries.d.ts","./node_modules/@visx/xychart/lib/components/series/barseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/basebarstack.d.ts","./node_modules/@visx/xychart/lib/components/series/barstack.d.ts","./node_modules/@visx/xychart/lib/enhancers/withregistereddata.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baseglyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/glyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/private/baselineseries.d.ts","./node_modules/@visx/xychart/lib/components/series/lineseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedareaseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedareastack.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbarseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbarstack.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedbargroup.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedglyphseries.d.ts","./node_modules/@visx/xychart/lib/components/series/animatedlineseries.d.ts","./node_modules/@visx/xychart/lib/context/datacontext.d.ts","./node_modules/@visx/xychart/lib/context/eventemittercontext.d.ts","./node_modules/@visx/xychart/lib/context/themecontext.d.ts","./node_modules/@visx/xychart/lib/context/tooltipcontext.d.ts","./node_modules/@visx/xychart/lib/providers/eventemitterprovider.d.ts","./node_modules/@visx/xychart/lib/providers/themeprovider.d.ts","./node_modules/@visx/xychart/lib/providers/tooltipprovider.d.ts","./node_modules/@visx/event/node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@visx/event/node_modules/@types/react/index.d.ts","./node_modules/@visx/event/lib/types.d.ts","./node_modules/@visx/point/lib/point.d.ts","./node_modules/@visx/point/lib/sumpoints.d.ts","./node_modules/@visx/point/lib/subtractpoints.d.ts","./node_modules/@visx/point/lib/index.d.ts","./node_modules/@visx/event/lib/localpoint.d.ts","./node_modules/@visx/event/lib/localpointgeneric.d.ts","./node_modules/@visx/event/lib/touchpoint.d.ts","./node_modules/@visx/event/lib/index.d.ts","./node_modules/@visx/xychart/lib/hooks/useeventemitter.d.ts","./node_modules/@visx/xychart/lib/theme/themes/light.d.ts","./node_modules/@visx/xychart/lib/theme/themes/dark.d.ts","./node_modules/@visx/xychart/lib/theme/buildcharttheme.d.ts","./node_modules/@visx/xychart/lib/theme/colors.d.ts","./node_modules/@visx/xychart/lib/index.d.ts","./node_modules/numbro/numbro.d.ts","./workspaces/snake/src/article/snakesolutioncomparison.tsx","./workspaces/snake/src/article/results/euclideandistance.json","./workspaces/snake/src/article/results/hamiltoniancycle.json","./workspaces/snake/src/article/results/manhattandistance.json","./workspaces/snake/src/article/results/tailescape.json","./workspaces/snake/src/article/snakesolutioncomparisonaverage.tsx","./workspaces/snake/src/article/snakesolutioncomparisonscore.tsx","./workspaces/snake/src/article/index.tsx","./workspaces/snake/src/project.tsx","./workspaces/snake/src/index.ts","./workspaces/snake/src/react-app-env.d.ts","./workspaces/snake/src/presentation/solutionrunnerworker.ts","./workspaces/snake/src/presentation/react-app-env.d.ts","./node_modules/gl-matrix/index.d.ts","./node_modules/regl/dist/regl.d.ts","./workspaces/spirals/src/presentation/userotationaltheta.ts","./workspaces/spirals/src/presentation/ease.ts","./workspaces/spirals/src/presentation/usetransitiont.ts","./workspaces/spirals/src/presentation/spiralsvisual.tsx","./workspaces/spirals/src/presentation/spiralsprojectwindow.tsx","./node_modules/@types/lodash/random.d.ts","./workspaces/spirals/src/presentation/algorithms.ts","./workspaces/spirals/src/presentation/usespiralscontext.ts","./workspaces/spirals/src/presentation/spiralsprovider.tsx","./workspaces/spirals/src/presentation/index.ts","./workspaces/spirals/src/article/figs/constants.ts","./workspaces/spirals/src/article/figs/sinewavescircleplot.tsx","./workspaces/spirals/src/article/figs/sinewavesplot.tsx","./workspaces/spirals/src/article/figs/yplot.tsx","./workspaces/spirals/src/article/figs/yplotfig.tsx","./workspaces/spirals/src/article/index.tsx","./workspaces/spirals/src/project.tsx","./workspaces/spirals/src/index.ts","./workspaces/spirals/src/react-app-env.d.ts","./workspaces/spirals/src/presentation/react-app-env.d.ts","./workspaces/tilings/src/react-app-env.d.ts","./workspaces/tilings/src/article/index.tsx","./workspaces/tilings/src/presentation/library/libraryfilters.tsx","./workspaces/wasm/pkg/wasm_bg.wasm.d.ts","./workspaces/wasm/src/article.tsx","./workspaces/wasm/src/project.tsx","./workspaces/wasm/src/react-app-env.d.ts","./workspaces/website/react-app-env.d.ts","./node_modules/@swc/types/index.ts","./node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core/spack.d.ts","./node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core/index.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseast.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/types.d-agj9qkwt.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/vite/node_modules/source-map-js/source-map.d.ts","./node_modules/vite/node_modules/postcss/lib/previous-map.d.ts","./node_modules/vite/node_modules/postcss/lib/input.d.ts","./node_modules/vite/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/vite/node_modules/postcss/lib/declaration.d.ts","./node_modules/vite/node_modules/postcss/lib/root.d.ts","./node_modules/vite/node_modules/postcss/lib/warning.d.ts","./node_modules/vite/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/vite/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/vite/node_modules/postcss/lib/processor.d.ts","./node_modules/vite/node_modules/postcss/lib/result.d.ts","./node_modules/vite/node_modules/postcss/lib/document.d.ts","./node_modules/vite/node_modules/postcss/lib/rule.d.ts","./node_modules/vite/node_modules/postcss/lib/node.d.ts","./node_modules/vite/node_modules/postcss/lib/comment.d.ts","./node_modules/vite/node_modules/postcss/lib/container.d.ts","./node_modules/vite/node_modules/postcss/lib/at-rule.d.ts","./node_modules/vite/node_modules/postcss/lib/list.d.ts","./node_modules/vite/node_modules/postcss/lib/postcss.d.ts","./node_modules/vite/node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/dist/node/runtime.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@vitejs/plugin-react-swc/index.d.ts","./workspaces/website/vite.config.ts","./node_modules/react-helmet-async/lib/dispatcher.d.ts","./node_modules/react-helmet-async/lib/helmetdata.d.ts","./node_modules/react-helmet-async/lib/types.d.ts","./node_modules/react-helmet-async/lib/provider.d.ts","./node_modules/react-helmet-async/lib/index.d.ts","./workspaces/website/src/components/themeswitcher/themeswitcher.tsx","./workspaces/website/src/components/header/ascii.tsx","./workspaces/website/src/components/header/header.tsx","./workspaces/website/src/components/page/page.tsx","./workspaces/website/src/components/page/pagebackbutton.tsx","./workspaces/website/src/pages/landing/me/me.tsx","./workspaces/website/src/pages/404.tsx","./workspaces/website/src/pages/landing/aboutme.tsx","./node_modules/@react-spring/types/dist/react-spring_types.modern.d.ts","./node_modules/@react-spring/shared/dist/react-spring_shared.modern.d.ts","./node_modules/@react-spring/animated/dist/react-spring_animated.modern.d.ts","./node_modules/@react-spring/core/dist/react-spring_core.modern.d.ts","./node_modules/@react-spring/web/dist/react-spring_web.modern.d.ts","./workspaces/website/src/projects.ts","./workspaces/website/src/pages/landing/projects/projectcard.tsx","./workspaces/website/src/pages/landing/projects/projectcards.tsx","./workspaces/website/src/pages/landing/sectiontitle.tsx","./workspaces/website/src/types.ts","./workspaces/website/src/data.ts","./workspaces/website/src/pages/landing/timeline/timelinedate.tsx","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-mdx-expression/lib/index.d.ts","./node_modules/mdast-util-mdx-expression/index.d.ts","./node_modules/mdast-util-mdx-jsx/lib/index.d.ts","./node_modules/mdast-util-mdx-jsx/index.d.ts","./node_modules/mdast-util-mdxjs-esm/lib/index.d.ts","./node_modules/mdast-util-mdxjs-esm/index.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/util/info.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/util/schema.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/find.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/hast-to-react.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/lib/normalize.d.ts","./node_modules/hast-util-to-jsx-runtime/node_modules/property-information/index.d.ts","./node_modules/hast-util-to-jsx-runtime/lib/components.d.ts","./node_modules/hast-util-to-jsx-runtime/lib/index.d.ts","./node_modules/hast-util-to-jsx-runtime/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/unist-util-is/lib/index.d.ts","./node_modules/unist-util-is/index.d.ts","./node_modules/unist-util-visit-parents/lib/index.d.ts","./node_modules/unist-util-visit-parents/index.d.ts","./node_modules/unist-util-visit/lib/index.d.ts","./node_modules/unist-util-visit/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./workspaces/website/src/components/markdown/markdown.tsx","./workspaces/website/src/pages/landing/timeline/timelineentry.tsx","./workspaces/website/src/pages/landing/timeline/timeline.tsx","./workspaces/website/src/pages/landing/landing.tsx","./workspaces/website/src/components/page/pagechangebutton.tsx","./workspaces/website/src/components/page/pagechangebuttons.tsx","./workspaces/website/src/pages/project/project.tsx","./workspaces/website/src/pages/tilinggenerationpage.tsx","./workspaces/website/src/app.tsx","./node_modules/@types/react-dom/node_modules/@types/react/index.d.ts","./node_modules/@types/react-dom/client.d.ts","./workspaces/website/src/entry-client.tsx","./node_modules/@types/react-dom/server.d.ts","./node_modules/react-router-dom/server.d.ts","./workspaces/website/src/entry-server.tsx","./workspaces/website/src/react-app-env.d.ts","./workspaces/website/src/vite-env.d.ts","./workspaces/website/src/components/asciitaggrid/asciitaggrid.tsx","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./node_modules/@types/react-dom/node_modules/@types/react/global.d.ts","./workspaces/circles/src/react-app-env.d.ts","./node_modules/@types/node/ts3.5/fs.d.ts","./node_modules/@types/node/ts3.5/util.d.ts","./workspaces/line-segement-extending/src/react-app-env.d.ts","./workspaces/wasm-api/src/react-app-env.d.ts","./node_modules/mitt/index.d.ts","./node_modules/@swc/core/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"0fbe4bf85fa82317d0d624916755d9883148bf8b401de80699f1098b34583588",{"version":"0bd5e7096c7bc02bf70b2cc017fc45ef489cb19bd2f32a71af39ff5787f1b56a","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","b1bf87add0ccfb88472cd4c6013853d823a7efb791c10bb7a11679526be91eda",{"version":"008a6bcc04c14904b9d0aad4cbbb6e5f9c7c38de1f2e80dac5f5b3803e15f19e","affectsGlobalScope":true},"2879a055439b6c0c0132a1467120a0f85b56b5d735c973ad235acd958b1b5345","8935ce0742b6321282e0e47bcd4c0a9d2881ca99f4285fbc6a838983d8618db3","4f7f44b5056318578becf612b3c5db4c830f6a5f34bf778377faae17c42974d3","99d0e3aa414a5b1a7c93ebe1c56c9771d779cf799178beed1a638f60df85cc9b","ad6897f78ea6c556d684d0517452ac7897c7ec38e51b73a36b51d53818aa7c45","c8403bb9ab5bf07b5a803fc8def4ec4c9074ca934c6327603e28238b00ff08de","5759a370c72141c4c282abe76b7f01769f91d763b067cde5df18c3810aa58368","ac633955e18ace62eee12752b874917f1e6f27d26884503a3e739df6387b53fc","725b0ab08036feab3c553cfdf13a8e1b9ba7c2b1bf5a3480d08ae57e7de430b3","a682d9308732da3c50d9181dc4b4f93742009caf4afd73265c8fc7d20adc5acd","f5442a8db01e9a0c48dba064c580e523ff93e8ca4e87766be0e9639824f554fc","7f9476cec0161929ebde0e005ac51d3daa233a1a1c63e23621c9c59c5982624b","72831e2802616446dbc20553b1e8fe71611a36827198cd78b9065f9e1fe7c310",{"version":"e0f7f3b1b12f6774b3cfcdb34b3139944fc8cd97721f77404d52ffc9b69068c2","affectsGlobalScope":true},"35566b58141006560dd6c8a5ba715e82f6216e2a4139f1a40a203d75e82e1c68","1b1dceea0c2546301e1292bbc41d1aaf2ae83828ae0f2492bb893fd2270db5df","4b270c3d6b61cd9d219d2237e4af8c7bbdbd7d473a4c29d2272b57ed134ab2dc","4e8fe998e3cef3b1e35a4b9c6596f45402d2275fd09ee72a8d58620f44a34fd6","056d93e5e7a7996c55f505f4827e1127ef4f1b658d3ee016c9fbed8dc7e33d69","2697a109af718c676eb1e434a52c81357452b97a9e4b65f1c7a605126726e801","1c7ec57aa4866ca663acac64b75219ac37b53f1160649d45df451e41b7b0e468","7e2d8fc68f42d96041553659c1a6320838ca541fe2700d002d0e7cbeadb11409","94be3dc22c754bb3a9898e2cac04c14b7e34d622c9ed255e1a9a3b4826ebee01","526964e11ca761c090e6c401e7dddcabed28fd03298333fc15ac5c5f2495c544","a6d37d6888321a637b29f97dfaae745b77946340bc716459fae8b2cc5536de62","74e94feb1d9488b9532334f330d89707f65d2e9e13af1634cd2b80cdefe196e1","32894796e78a6bd3a62a86ea5298bfa5537fe274a79d439fc6394e8e9e96c148","96150cb580a8f5e181c99a2c528181aef0bcb894e9a18556858ede39eccd5e9c","1568e59cdcc16e34d40b684681c23fe851fccb49f46f8f8f52a9bfc0f53a0d54","c21058c9ccfa51d95b992e2ea97fa5427e30be44af9b46aeb744dbfc81784ebe","9b49c9b4e8668c52cb222dfd764929f1f22d33dcb3519426fc11cb207636dbc0","703c25baf53c1d16b9d1fd267cc470b70da38ce041f15ee8cd82268fadc28149","cb493a7c8e8bceda0607937b78ddeb6570f3000aca454de6f60864d5609c90fb","7908a84b6bb9ce7c4388df85f2d149ceb03177b4111b52232be3b74a947b28d0","85b8eb9bac40cac2962d5d2a6d3a477a9a3d51c4ee665e83c597b0b8c83c0d5b","f28bd1871c5778ef7d65baf0e422aa6b5358e08254f628653b1592c2727f6484","b83dda8cfa4a079205bbd816ff2e75a3816366aa9e1f03fbd60d7a75b603a857","886df844a3014e832411c0a3b5e300782aa80afc979e0b0409acc1204727f201","4f1445333af325b76b0b8f0953fa75aac5940202329968e33a308f103f3e9b38","d0a97a7587537d413e56e22755dd4fede67cdada4adb2c4c47d2380c7b849d7c","b8f9b3ee1f55276c656607d737e96c33306236edb9e35c91066ecad4e70380d3","2ce5bdc3fe1a7b13b43c8472a321ba5cb28fbaf7498257d64ef92a5be8333698","3d6a4790738b5f72fef10fa879297ffc573ffc4b183d878a41664b378b33b174","054f2d6ae62cede3fbe299602237951e067a6e1a3b2dae159c6246da7f425a1c","ef0c32c98e410dfb73c4dca5fa9057a59a575d081f1a095e52a7dff0817d77c8","158ae26b2efd66807a339ad5a24c670a1e170c6e9061c412cabf3e500ed39f76","1c739e1c95df379b826668238421a8ca52500ae2e442f72aad003a9e443d525c","bae6e0d67a10c8b0710aae40e1cb14043f9ce83f02337bc86c3e8688278a17c5","30a0948f8a9e5975e13e0d4e8ea4aa73d1c3c4dce574efbdeb45970ee36ee009","641e8b4882b185063f37b9058344397bed6d9d79a8a189f6617e010f98db8ca6","bc7a9d1af8b8f4033d5d5257e15e6958eed6f8820c03348b44e3ce38e38a1439","e86834c1eabef82c3a5b2c3bfec735645efb29909a4a9476f0b8047d72fcb23a","80aa25a07d6fefde912b2c1e3b8901a3c8ab83211ca4cee1fc168c80101a7942","1c345425fcd7d1c220cba17e2dbf35d8f0f3cd705978ed51175e00eb462640f3","c6c696bc0d6f1de232102f2bc998befb79aec104f8aca057fbc47d5d7f6e267a","3697c3f194c63991bfc6b4f5b5472643501acd0de49a9971b37dbac6f93b4cc4","bb2da72b7d367445399de86931f578e537a97aec1017b2e7f9a0751b86c1ae9c","64269b24dafa3abfc1b4ca206bac0deace8c23cd7f8aaeb5712db7b7e27dae21","a414ea0f0134e0c003a913e5be552d81ebe58c8fee3dff23cdb410613e254aee","6e694d967527c0c10727dcd09bdcad8d72697eb09171ba5e5bcc5de7fcadc076","b22365768acd4a11cc9e80687beee8a9f3736c1a7d2d84fb5a144db4833e7a7e","4501d113c6f90e04f41efee9b986910357f2328596b01e03fdf60c44077f9304","ba72f1a198c0ada0edae817cfdcc16c16a8c12620d65a1194ce2da54a4deadf5","1165740a8ccc9d17c70522fc64d19315c8c36456e3f6ea475091afec19cf75cc","2839b8ca951f06960fb40376c8486052d793526d227940e1703c3a49a846c0da","f44ed3eec7cb4e66d6de21d899c58ac83c730d0b9d5889f0216c6656049a4bbe","10553384df7327463bddab2a2a73491e62d5b5e4ad8fbefcd26fccefda45e31d","6c1b8ec3c2cbe6129bf157b8f5dfed4c3144c3ea3e18120bc0b7fa2af7fb63bc","ed882dba8835458475302f14e9ac10d0d614abc8ef20a9bced82e787c99e4201","db8fc5c1917265860fd2a6963989985322e37882515284e5a33e3e61362798e3","4336423981fc67f99d5c364a64ec671641d4a5a796dee33bc4ddbc852da7de72","8dc56f817d20cf0717842ac1dcf3ac1a450ac3c667f1285754901e4af97bbe47","72156b7624d678a2686a22a45014218be4da7147f1058a5a5072fe981c492dd5","a20d054b8be41316bcc29752c5b9b42fab727b887a076a3af3bee18813d6e8c2","2eba4ddfbd6837ef33e58644f7dffbfe465d7222f9a9101789f02427f9541488","bb82c16e8371bfc6ee2ffd0095fd321d6acfa57c6c6445019567fec1b6b5e92a","6c65126b657a275259c4759b2b2f7b04879e61bc6c51df025b3748f87652a9eb","a5ad75d3dd3d3df0f62cb7a8ea12e76e0b4a3143ecde9e29c9cc0586b88365c0","03cd482c80ad0b724ca7d55cef7e3823d593b7cced98d7ef9d1bf757c5055b77","e93f395b0d6e68525181a6ecb3e7b81b1c5bf551f32f6cebbdffdef354fbe4a3","b881b069efb9d55b4b4b98de76d8c3920a29254e24f8f0c38557186e38cf6955","deb697b1102b461b0ea63a7fb59738a6c218d61b095e6040f3e0f00f18d870c1","1f542c79756fda13fdeda2c6c90a560ebddb14758eb5c3278ef8b750a03c9bec","b0ed00813c153e350a56faa8c15668bf21375928e9b88bcc482d20f1f8415179","2c421f4e1d8793d38c14a8c9985acb26d3a3ed517dd02fd7ebafb4f069536d48","93557733190db162b067dd324a0516b8cd4313fda14c228468d865145245ed04","8ace7c551f55726a0bd825aa163fa5789a1f816a236739ca122ca80aac13661f","2597f47a65f63ee775d4c8a9ac9923f6e3422e19130401253c407acba2a17712","825151a14f9661a82fc1a0603c0c288e3225e7a153b0399d4f81f5693bf5fc5a","e73d0a1df69652595185fd648818bf9debc5ce526d030854acfa944ac1db9b50","3fa8c502adfd1e125e658501fe9001b934cbeb71bb912fb940d69ce570f3345f","5584821a824aee88a06f29bde309aa1f52933bf3450681c820d0c713bc5d1dd1","6216c65f72d2f0db713e7b5e483c95c937bc779a18f9e52afa72702f01f83b89","8ef5a55e956a7a0a8ef406f96168a55a9940e9cbe05fb0565cf40097580b4377","d4b5b7028959c3e1e8847c71b7e845604ff49ffe6e3edf57af07d838d69668c7","db3f4c30a1c61447687dab0185608906e9e69212c2120f19a947b2078573ca41","d040618a5813241aa410992be3427fc18f50005dd47de86cb0aa25856f8e82cb","d17718ff094281efa9a20798eec185815ecd4f5affa1f479d954880cc89758b4","52740032b2d8c0ef763fe40bbf9a6c6b7e215f59cd218b9a4912b377580d3856","205eeb1efdf796604cc543cb81894f598345555c4b1f89450dcceda768e61076","e9c213e0c278ba15ef2446c365c12e78e87a6240df1d2a6e80abcc04f3860512","a8bd7d44ffda53ff0d543c5133b073c6735b935f1ef535d59a81d28e81f4569f","73191fd675953c2aa8b757b38d347fe803bf0faefe3b3f6c2f662d9216806f7b","56c90a2b4699433a11ee09e068e59e0135340213a41046a4c11cfc9ed5ccef77","da3c82549a428acb82afe8032f31d0ab992e382fc12dd65d526a422ac5a2d865","d46eaae8ff0d8524aa4ded96bdc4abebcc77376085317b3419b2741b387ab59a","3a97c0c4e8f19915f4feb50f2cf0c06edb6cd85e9ffbf8382deedcaebc1f74b4","a75962251edcd1f1e949fe2828558d235cc81f6523cdf05c179c552e16df556d","583c4f3f1c233ecfd273f1bb315699aed9eeae4bc40b1a1398f56de889309e7f","b82185269794856a51705d86ad34a31c1b0d51a19d158e42f0208cc906478c85","f2a2be315c3df9ef66b167785a4fdac194268411af71e71489f3767dbc2ef8fa","e58682765ca9ad05163a6545719ba16e9a70011fb6d60f3b808c6d22df4a22e1","7b5f2ea430a0848f93b8b132e4f51349401c4aee6fcb27659bae1d2c66e53258","29b791811b81a67c10c96a2c86a0a7244a62a6fc15d3540c3207c8a6e5753a8d","b42d535c794251030828022716b5c1d526014d71a1b868679ecbe6599bb3fea1","c2232452e3a5b87b845318d06b23fc209a9f289004a6e4857c18584f15343074","dac51c4438e67af6f1e74c5a4313d94340bb63d5e89620dfd22a290154948cb6","d0dc69a2ba0ab3c757bd98ae619fbd6321548dfe7e4afdbb24d8a505c1ac6404","8705ee621568fb5b7d4ed86301fb2fa1d569a3c798a5c615c6726a99cecac064","c70e9d960a19725b106e4e7c3d2ee3b3ddca52f166ed7b504b8cb3247242d79d","3c84ec821efb82e8782836b9303fe0afd2c2f58ac162999cce9946f8fc97d62f","fb70d50bed7ee067f4d695781a03479e65c274aee4331efaff641a1d86659841","d3ff1592555410547ffe4c25df611b598f92edbddf61abc30fc16cf377f24a17","2e3a62af3d1745e2a47c679f7945d59bf2d47f95f2a41c74646c7ffd37ec55c4","bb777eca342899dfb05f50b1dd94e4dfa541da0e74428aff511e501f135c24a8","31413f558f87877bbf5b74fcc06adee06e3f6e5de72087fe5a8dc50a007beb7d","4128af422f70e178231c4aa8f79e3c169c947c22e999041b687529bccc6916a3","617167d54a089bc17311c9ff0e791a4f0c3af54ea58a3c52d7210ec3f7b59124","78d29b2162ba1a2ada4934e28c277a982ed7f33e11d7c9e8867fe7a324000e2e","333ab23171825e7204f29e9be8d4b6798e6d15d90edd5303f66e3b6741c18b83","24fec0a4aea6302ddc320d5fe9671ba647fc8aab101cc8704b1c02d610b13122","235af1b6a18b1c320d15391904b05d6b73b0209697f84b5068dc751d4747523b","c1d42c7cb2848b75d9cff946e0e11b8ff1f41639ea115258b87a2fc762025282","eea88faa3dd8d3c7ed914122d10d2a7095870e42b7a21b95c66241900b33866b","15fc73b9debcb483d8eac6024a432940d4e785cfca26c732c8f4e9c2e8176767","ecd7adcb25d7500603d8b5bf4bd6a9ee6a15a587711a9925e2502d8cd160a7da","beacc9e963b63c175a9a911979be5432a3dfd1fa4d3cf41f575dafb7ce1f13ae","9fd01922c47a84ea5a482c61cdbee41efa10b26da6b0274c2dd2869589d1ec1a","334677bda56d782700f213584dc5f95e769b441d5bcdfe9bff3f6747afcd6775","8fd75856049c3ff938659772e3941fe3153d05ab5d211df2f469a4caf6ca9694","a69922ba11340fbc21aa86f6e0a52db40128dc35439eea1a7fa8d982d73dc8ec","801472ee27a5c6460cb2b87642dabbc18295cde88dbcda72d4bbfebd0275b6b3",{"version":"36e7da321d2b4201c29336c0adf9fc1e2eef2aa2f014e7311878f17f22fd3ff7","signature":"07faff99b67361a303ce67361d89f7bd642e359d4345fa6d245afd13061cd933"},"5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","c13fafcf224b6bd65d643e65da8e2459f66dcf611c5d554bdf482bf59796a390","b40892f2e803e0588550b90c7104da7fb4711602051436da49b97e0a56a4667d","184745b3e3e9787d991244fb6a7bc07b7f4d6411f462f9d8210f98fe282f3937","77fece556a4a2b473584f4ae514a48bd169640c50b17d766638e7681e1c0e24a","cfda9f4232aaac69fc68244d0809266e18863df71140722fbe78425fffee214e","339131c408d2a1039b10f5752b283dbcead3e637fec6034fbca0e5647794bd95","6774158432f23ba9505df4f2ffd360cc66affc4c445d247d67a243b0a903cd83","7b2fda6cfa66c24d25aeda2f463b377c3b9d898d03450e283cfa2e134be9fdd7",{"version":"568dc013ef4f6c3181bba376b50553d586497548e2586ec81d5b13067db9beba","affectsGlobalScope":true},"a326bdfeb83f5dde8206b938bf217d9f490ed186c9b7349c24bb9f7d7c462236",{"version":"e83fabe43c83ae3da37073519437f5356be1109be49206f4b38d31b3aaf403d4","signature":"67b4ca977dcdc5a1dc1eeea794dd5827cae87a3e9e891c59846c5f0a6bb4e4aa"},{"version":"a95d076335c194f7bf999853a291ce7ccb9c53424031acccf53ee6f76244fce9","signature":"7611fd4c5af499f7076b2ed7f5d16c5f679b21494348f043d58c01affab40d14"},{"version":"cee2c5a506aa20a34d76e688968f2f1cbbddb6eaddd6f8238cea3cb314217534","signature":"e280e3a6c10dc994a89887d32af114c21c35958f21ff77e8b4c0ac12719e752a"},{"version":"3d9a5926db3664d2a696873a27b0bdec8246ca07577d09422ad0a49e5305e290","signature":"0ea3640d62b1f5fc97c04e478064a34f1b640f20dee80b5a93ccbef3a22202a6"},{"version":"fb8cbb8594800412525c2d7f8ceab1fac79f726d72cb880ae85e3dab802a8a28","signature":"cf0bf23eae14178b759456bea034365ffc32828136a6b8fea58353aabc43ebfe"},{"version":"c6ff8e5fd9be1f548e9626f3b445bced949c234fe82760b2c31c1d4d5520ff14","signature":"7a03d1e49ed8badd15fba6784c2f7a2a94cd42faed6a2b2cd9267ff5e61d0cae"},{"version":"4d19015a3b76bddc83a48ca9a50cfa12e52cd6d0c7c8bf281c47c426e8807022","signature":"0896a34349a1047257d5b7fd6e91866472cc5896eb85c8e8f2e59de56dcb7191"},{"version":"862d942ddc4b816546c34795aa896dce55170a8618628f4bb247792b0918bf1e","signature":"14a9ccde20bcb678a7fe46a8e7d6566f4b73c4becd720b2a89e9597e75de67ac"},{"version":"ae387df5d6dcf9b5e144216d394feddb08951a01280e7ae5c16ac59d21622022","signature":"c671bff13d5d24b0c3f2ba2db693c7c926d6c9a5e2a991dda07bc5677c3b450f"},{"version":"8a8d87b187c8ff685f3e5fb48da9667be063eff7ae8d3b8be19dca76b2947fc2","signature":"ce4bcfa17dfd525bcfb8b4ec19fa6e670e24d3d82106522d28962cdc82fe3580"},{"version":"7214f9ab9904bd25741130ef4f9f0dcc1e393b8bbf850aef88a1a17d19d927b7","signature":"472b8b6104520cf7ceed84a9aa25007e46ed2fc5acd7ffe7b207b7fd83c52884"},{"version":"0a6faed32f9244f7748da3a8ba844e76abcede938f9287a175cb625774ac1ab5","signature":"0c527d431ddde8333ab9ad6e0e13964fca708013e41f4f293398bd780240313b"},{"version":"116291d4b27aac7c71b59b8b216a551ba2895bc167338f503e80a652449531ee","signature":"0d609340a010a75bdc5513511943a46b97283b71eb204e983bab1b48d664afa2"},{"version":"131cd42f3903572a55a9d510d8f71b1f44adcfc9ce0e3cba6b4c48ba15603cf6","affectsGlobalScope":true},{"version":"e6e9a61a298715a335b6139748c848c3433fbeaf49fe20455876e3c3101fefcd","signature":"123b340d30d7e3cd2b6d8ab36a7ab210b3d9e33104e307769ce0e7e74496687a"},{"version":"9dd8bc1512400a25fe6cc0da8034d4a91220e428adcbc20286a01539a194ffd6","affectsGlobalScope":true},{"version":"2709bc869dce620bf7e4f69f2f412ddb076c6d2a82a002aee18c6c40a0d3ac99","signature":"59bf8e874a5c39d8c9e87f37b882f3e06c82063a4ddb986e0ef3ab0d1f122d54"},{"version":"1cd42aa62bc6dcb9362bbb9f55c31378e1c2af21f6b9931549e114eea1eaf689","signature":"cceb246c9a4da9a5d7b03677f5f05d6cdea611ab7689364c2216df83cb9b4cd4"},{"version":"010f21204ca0d8d1701f71e2809313db18b45381beccdd2f7beb5fe97475c71f","signature":"95aed43bfbbac258baa7906ddb8e3adecb1c3cabd47f7bd49f5eb6588789b554"},{"version":"295fea13c4e013587a69cbe91dc5b11eb887e2ccf50ab9bb46a5690c5863a965","signature":"1474c0d5c332131f6d7b6fcb6824757c607c3427d20128296a7fe04d6fae0879"},{"version":"8acf9ed422a24dbc7a22b2b96c2966ae3b851b4d3e82e7d1b5263d240c92bdc0","signature":"e1b18851789e1b3f484c840c46c5b842a6face77541cd6c696bd444e305ec0f1"},{"version":"1ee9691d04c7d7a0ff9eac22d2d236f82e72fe5832e91bde6eb27a568f4b60f6","signature":"22aaf91b77d91397273aef29236da67f183dab83328a1b0dc6a2a33beb9d573e"},{"version":"5fca3e8527cb1b6f9fdf9885b2b1bb66fdc8fec77473db6e05137532a79f58ee","signature":"80a9d4004c51b91c095d1904a720eff67506d6885c2c19d8c07e7a54e1d571ed"},{"version":"50a24189d7766bee3fe438add2ef759d0829cca99ef309ab42d26802ec3429d4","signature":"c11d94a10ca5bb0348ddf183dc3d7f0a3b304ee08ed74be3f0af60028168d954"},{"version":"72de8120738e19c52f64906a55ca2dc825e8a2018e0008cdb3060aeeb9063347","signature":"fce44b28a3015c2d0bb0d80d9fcb17afce3b4e9cab40296051aecdbbbc1f2a8b"},{"version":"0f9dea1159bc580d80921bf0cec3a255b03a4515899b33ee78f8577e6d0b1432","signature":"ebbe8a2b0f9a78b54c94192a909a0cbdaa2826218dbae9a7627ab2b14569d481"},{"version":"5e8f6be6163a2b37f8a10ec09438c9d0638a4c37d6ea83668f9e54d343b767d4","signature":"5b625e6401397acc5f15a5496154f24633a62bdf424943c896d9179e50bcf0f7"},{"version":"e435f2656b2262a7b49c5c8bf1bf0f3fc9b9fb16b7ecd489bcb920b722fec806","signature":"febf25e73b3bcd191538186babbaf46d060bf21ddf84b9ccc0482ff546607bfc"},{"version":"6959d93e873a4d1b7d9e3eb1091d147abe89f2eb3dd72560948bf50d61cadb8c","signature":"0825a6f70a040adefc4a6c1c87629910984df44d1d32957c3e9b19c8cdf80090"},{"version":"11914c493ce3c1bbd9db89f946779ff76059ff90d85b375033e690db72d91c78","signature":"8e426c510fbe54852557f19b266b856ea2b648f2146defe43a5108ebf2576d52"},{"version":"f8a297deb673bed7b0141be33cf0837a9e1d7b522cae8bda1c4763a3fe123280","signature":"c32f148e12d3a7607b7d9646394efdf7f0b1808596f6f492dd0f76ab58c0cdf5"},{"version":"657b551ee96085fd80d47c116babc0c030040d2486d883d216e62b80980daf4d","signature":"381ef50c768a4a1c352bcf79a9afd6750ba34783a60cab3dea2a3ace38eebd35"},{"version":"e4a61fd68d6d8cbe0936cf80cc4587fba03d794be73aede7105dfcd53914770c","signature":"893b28679bb267bd54dba6178a08f8fd23920f0beed6b091051625a25e91574f"},{"version":"3ec266cfbdec6252891101f9bcf821605d20f7c1f6ef5a889456d3792c3fa65f","signature":"4fe4ab060dec7646b243c50ff64c404d2384f0446723bf44d079c79ab528bb7f"},{"version":"37312d7322e0bc5b0f452fe6a41f20045d00ff3028863472aa6b8dc55f695e56","signature":"55b927a9129eb4a60a940cd9b72c747b310056bfe255da9b047e5fa61c0e1cd4"},{"version":"465e9902458355e44f06733e2b55cdf900577e6c2f085d36d44958ceea07f844","signature":"8a1364279726186c5edba2cfc86dccfd140565d1eee8c3f925e217bf8a1b9dff"},{"version":"7ffdcdf088a5821e339292b168bdacf8e75dfaeb375b24d8de00d5d058133588","signature":"0dd0823f177d8bfe201c556efad5a7419dc4e2b4691f8b1439efa2e62bca59cd"},{"version":"b4ab7e741e3376f657c1c09310715a47c4a2dd1eb8515190c1a24a555674c922","signature":"adf6308eaeed200389f4790c5f3ffbc0efa98cd3aac80b4262d9d1db4f258745"},{"version":"02820b3f61fe7644e46621edca9bf8b4059fdba6e29358f5eb8e966bd54901ab","signature":"4190d9b9b033bd11d1cc9b4aa21f2492dab55e7897871c5bdb83d1aa712b460f"},{"version":"bbfc42a3bdc2e25387dbb9679913cc155a9a8b8837606db25a9e2e2951e3ceb3","signature":"f5280ed56841e928ceaa60fd40cdd872a2cb05e01f398c52a43ce0c8bbb7b419"},{"version":"ecc90e690fbd666b79944480aac4a266a8d8c01d6db0baaf382b1274849efeee","signature":"138da8befe344f74982450b0e80ab9719a422af7f624ddac4c1fad5ccce1a5ce"},"1f7d6bcbf942978a862f3d1c5650b0decc05f0ce0914db5c6bf91fd702f3d1fa",{"version":"fd35919398ebfdf338ebe44ee41cbacfd380cca2b8047b720dffd8deb6fc6df3","signature":"8174a86d2bf61bddc0aee3c8acbd1660136c7d7d391abb2fe808c1f41e01f093"},{"version":"5f33c7921af227addaccf7397e472c2465027a127d53aa46f8fd531d859abf33","signature":"7e3caf96853d523adc93623ada08ba041e09f936da18b870097034cdbdfc82a7"},{"version":"a1038cd921e29eef5e8ccb8054a203a338683ffea821655bc83a7cad705d06c2","signature":"213d810064cb45a9bdf35d7685c74ef5fc4ec052dc925a341a7accefd8bcc5d0"},"a6c4469ceb72cbb435b605e618c02bcdd9143165bedbfc6958b5da2409408b9e","4333bb1b8804e9e2907aad68924753dfdc0c5b8a16febb8ff20ed8a6d656aeea","761ebaa46bc206fe6c3746912bf897b46a580ecb36c59817eb92fead3911b42a",{"version":"97acbde067e9bcdd27de2357298a2a3f4bcd560513ab97c10f7071818844b424","signature":"6a2b350f8668ede2c2011613cffbc5a4aa72e9b88abc46efeff0fe27eab70ab7"},{"version":"71ce28e1c9e5e0702bb7c956e58d3dbe0f9eddc63772591738cfdd36f7deee15","signature":"9d057a1bd5d62619d172fe5b14209ede7986caa4c1afb6c3ad9460141296b470"},{"version":"5ea491e7a591ec13a41aeded3a114d4fac2340973a09d503175d45594f33411e","signature":"fffe72760bcf43107a87f15a8575bf587aec8ea6cec888c7df7116c6986d3b68"},"f7c43a992df2d32517f7dd2901e0fe734e305473a135068e57efdb7c6735ed05",{"version":"e2ce0767274c900880ef0059c141d8e7e72e09b8568b713bee71d773b887f636","signature":"a931047e9d5d2f324a9202bffcc5ca9e20419bb34483558bbd41d1d9f12a5dfc"},{"version":"31900c7cb17c92d7e916ce8a600b4f73c4df3943fbff0fac70bac2d5a6252499","signature":"f21ccacffe1de5c66628a1e8ee0a764b78720da3de81663f070f1206c57925d5"},{"version":"6f60ce8e9256d5f178aa38626862c9ca806159e2a9a6d8850ce5c5617bf41bb4","signature":"ee4c79635d2aa5f2f11b4b5408bd84ed6b925fc7a6248c8fe99c1f6cd74dac41"},{"version":"d6deda91452361cfcfe5dfbfe1d79078537838246a1502328d7434826f3d14ff","signature":"8c5f2a4a664a9fba16cad506c730fca9cb45919cb6d97ae9714b5e48d91a13a4"},{"version":"1340f191b6114df2f3cf37398ed0f2474307193055e828f30d11268bd58f18c7","signature":"73fa75cb37c40e23bec9b1a9ec6d3c682e9cf451b64ea4eb38f9562ff7ae0ce2"},{"version":"7c1e914bedb21f5c1b990ff8c65c3e14faeb59a6a9413d1fdc761bb28dc52f29","signature":"18e8303f4c9e455b83594b3a10032a74512d590a9846c7bf0eeca39e0e81187d"},{"version":"4ed0fef28a22bca007311d40a58da1d2c44bcda196b25b8eff833bbe21b16f91","signature":"1e6e734ad086a326583de1cc802f6695320f509b34ba6209fdcf65b295ee55a7"},{"version":"2742ad39d18c7e06713f047bb4181343701d6f08fd2a0f9eb1a7d314e65eca88","signature":"bf52e13a535d7e47f8f2c8951814f82d5bdbe5e4d4e0f3b8ea15476c503b9cde"},"2bcb1acd536e696b5e4405ab92e847eb7b7eaa121c8e80c96394c130f141919f",{"version":"edb9492ef04a3a0690d5f59ce32f1ef95de97b76ed069a0e3596c37d2430c515","signature":"015e30109fbbdfd98fde26d0386ded7389f17204180465da8b33520b69b5f0b6"},{"version":"f7402c8601bedeac3437e603294bdaab5efad951d995358990ec98e224263021","signature":"e1b28a0a73ed874f6a81db51faed8f6e2fddd0774732cd2f264f3e950e5d4970"},{"version":"e373262f7e7fb85ba1a0a8d339e300372f222b6c5d202655e37b576d42d37261","signature":"d0df0b432617ae09f5387b7da2fced65a69fbd25f260b3aa84237b8f33767cca"},{"version":"8e3edbc6b7d7e73924ec3ddcabc4b0135ddbad59c9204075ca8200bf2c83c1c8","signature":"09f9a24b06c249f18645bb1cd2a6da3ed44d514a02c4962ccc01bfae4614360e"},{"version":"f9bd4e296e6eafca35f75e2a1f523602d1ba54dc91762a9b4ee1e157b6b0dc38","signature":"124cacf5b4d66841aa970bdc0b45a7bf4dfd1d74dc7f114183c7cb4dad4509ae"},{"version":"9c9e5a62e58c79b24b264e621f39f9e57cd3536244bb150beef4931576332628","signature":"0216e31b9b2ac75481a84011ced1174c711a541df01f22e44de596152d170633"},{"version":"c70c833b0c7fa3314295092d0febe044ff16f192512e700612c1b5864e3905f8","signature":"28b7234e0e8d529b5f7c7c46c17aeab6747f29a09f19638f681d4bd64f48661d"},{"version":"ac2913404ea04c20f62d180af086a121abf1f225f99014b7a078bcd31ba3bab9","signature":"4e70f788502410f74a6f059972630ba892008ae2540c162f850968dc40b97eee"},{"version":"ac0f7905283832a493f549f9681d7d6c5c94f9d88887fb6e5c6e0186b22646b3","signature":"d3ce11b8fded455dd6b98ddbd816dceca5616ea5651d91df2c1955364328bd12"},{"version":"3c79559dde4297aa5cf73826c419792608821d96147ddcc3e050c2a4976395a1","signature":"da8c3b7508dd1c674746dc42e27069c5303c8a8aaa54f3b054a295d1d60df9e9"},{"version":"11712f5921648c6137a095e43bfb552793c69db85bc3f9cf3191e8cecf244505","signature":"c1943801f7e8d273e8ea9d336f820a5077b81c18b9f3a012bd4d6a2ac785656b"},{"version":"63484889d01cafc28c0c481af8ec20d3c523a5cb220a9cb55783ac310df9aa5e","signature":"92dbf05acd1e466a90f9b3f9a1991c749550fbfa8eced6aa352af9946659fa38"},{"version":"5f5fcdf90eda2035da17e9dcf738b18edfa75dcb9372936e2143bf4899380996","signature":"c21800ab4d79bea9aab123c32afc957046af24261a6f872f399c66e908fa37f5"},{"version":"bfdf2a818ac405eed9dc4c0dccfcf1f19a65cb01a7f4793714f76a860ff262a0","signature":"a808423bb35ced579b4d75517a2daf0cdd87ac62ed899a37ecc7e17f765b6a70"},{"version":"4a87186dbfdecf0bd3e3e258c9e947e204c3b101138aaa430192e4b7882383e8","signature":"4a59b03cf2daa5df3f280fde829dc1da0f0afa50c049f82fbc04480090b0750d"},{"version":"2213b217cbef587ee7dd5b19acf9a08aea06ad74022811fbddc1f0af724cd7d4","signature":"f172c0fe8eba5f21122981e4f9f18167dee43a9ea49bcb8c03981797b03c6ff7"},{"version":"f7913cae630fcfb3aacdd71088e1102f498781abdc5a595c21b1df9c9de508af","signature":"c21800ab4d79bea9aab123c32afc957046af24261a6f872f399c66e908fa37f5"},{"version":"4f997ede1303ed11ce07be172daa0100af3be3efdd165b991b48a1b74dc13462","signature":"48dc311671089b4571f7eccbf1e0a90d555f373e72a1e6317dcc47d54d55391b"},{"version":"e54625d19e83eca9d2a56b73e9c2fd416734a2bfa0b431203fc12b3cded2c159","signature":"c44d15a726b057fb10025794f2a557d99eee81fd0fceb95442079d2a48a30f96"},{"version":"74c10d15fe8a16d1410ab5fb049b97ca6bdcdf5488881e772eb78cfe5923f92a","signature":"6275dd1d3bb9f3c3163fa0359d0ce2eabeda626c61bab485c21a3f5ab4c30b8b"},{"version":"9a9a0df120889dc332a238655acc6b1d0e67b6f776aa251b5bf77c5011d49e2b","signature":"8a62b88e249fe623a971013e85905d24e95603fbeec17f5653a89cdc7f82738d"},{"version":"21a2fed14900156b183ce5f475092942107f2ca71d1631ead4f86547ed3d7027","signature":"75d72ded111c4ca9ca5633b7ae8b52f5c1fb52e2e5f4efe6af5ad2487af89d2c"},{"version":"bcfe7d77c45531e8e4bcef3a7741cd5ee4f7a766c1fe1ce1834a6fbf9dfba261","signature":"095d07b6f144ca257cffc439fe9e4d7e405b3dff9869d23b2387b73decefc4fd"},{"version":"88171f82114b7a270046d867f9c0f6beca3aeca06ec40309f93b6b77ee7d6bac","signature":"0294a4a84cce22f0e851bbe1bebf4eae436d4977528261b8a6f9988b41419ac8"},{"version":"03941ca7bdc64fa70a1b677622d39189a1407739207a66ef5297a7dac8811c2a","signature":"f1805b3752de45d9c587e712df07fffe2f08cd6b6a96710ef3e0b0e169f6b052"},{"version":"9685ecf90b947e20fe3ade5f9e68000a76e4c74550537b604178c68a75b28793","signature":"2607e83888409d669e9066b20e7a3ee1e06af7e80323bd7ac7695f6a04e4ced3"},{"version":"b02e04b910998f6930c17f14a647c6e496318b241e121c8eca360e87a8f15fa9","signature":"a8984994d383eee4bc14d4566e005ca10f1f0b2eb33156f20e27f08a902ce88f"},{"version":"076bfad968908bf414a083e4cf175f9682b2b1b8963f034487b96ad220e4ca54","signature":"68074efb613c10d9009384b22beafbf092779bad459ca1a36305462c6a3d2f67"},{"version":"dfaa08567e03d2c5f4558fa844f6c8a70b2545977292ae235f3cf543d85c3ae6","signature":"da5ccf253b84de8deb3064a6dc95802856e3972101a1e06891655139a6ffdee4"},{"version":"1abaae2ddf7f385c3ffac3773e5379f4610f86758080297b43fef2db9cf73acd","signature":"977dd7c416f66e07e7679ea03aa563e9534b4d8837cadad442b5883eb0580005"},{"version":"a631b4950f985f4691657abd6574877d3e0303e165242cf0f1093110b924173b","signature":"ea3ccd0f2e943082ce1952763a6a3c6bd724d6b6eb75869291ead814988d391c"},{"version":"60f6295dffd62984863fb9451172b20d7525557687d6bd408caf34a1551e2c93","signature":"ca292bddf4eaa4c3d9cbe6d95d5ec518c9fb76c50c6241957fd370b2571615e2"},{"version":"f19529e2eae67a2f02377e69d1cbc9c2182f2302f11fba5b3a5679ddcfd42d34","signature":"58930341f9ab67517c01729d958fde28583f99d4567472585bdcb5995926278e"},{"version":"6b465cb8b06f24591eb5c60fab9a11e077bbc84a12a59ce7cc45128277a19bca","signature":"970e355d00725e15b6c22145977aaf186e91d1dd304e6f8d49be6cac0e6420c2"},{"version":"504b72fc2def6fdbf3dac9309abdaf2e79e7e1da357880fe44aa319d4951ff36","signature":"4cc20ee9c8641d735723a0a1b0d9e04f5b72bff835c10a36d46803d18592a21d"},{"version":"d2bd8586927b39c72df0c0ce552b7304272a26050d8299719fbdaacc7b0be9eb","signature":"cf0fdb225ad857c875a377deefb2f3286a2dd6438422c800255e9daa997e6fb4"},{"version":"ca2483f2d841aa137d9f250f910301929a5c92adb70c719dc63185c79f3f81c4","signature":"5df85396fd83ce49b16e48f04780c8952fc6d192c5568f700344297523f4370c"},{"version":"6c4eac27cfea4022dfb59d8874921503d444792ef5552db8a289d1fa20982429","signature":"22cc8e9888b759e04d2b834addfd89a949569424c04190da4d195212e813df14"},{"version":"743beae80030c4ef815d94219be3d7f2ae0ca4bedf12d2849c982cee9e63c3a5","signature":"e64d87e8d9efa1e7b9698f2c3faa6c5b5cb341907c5983152d76368eda65bef0"},{"version":"c6f7fddac7570e9842d625061def26c39d89c021b362525a5ead856c55e844f6","signature":"2ad9eba3c89736c71ae5b7363f7a91472b7088953e4ded0bea245865cf2d726d"},{"version":"2bcee57c196521a342521f2b456bdaf4c8f1ee94d5c4b619caaa58dd55363ddc","signature":"3f7f23f0a16b6669dbf3b8ef4e1981f3d17ed2262de9da09cc9a02e600e2f0be"},{"version":"32768be38c269c8e39f833ac87d13c4f38681c0773fc3e0387775baf9b650651","signature":"2088cb6c62a17da7651bcf50b2829ee77a23da2f73879431babfda2d1d4f2593"},{"version":"63d68ca56aca3614088229c1eaa267f646c06e5201100f95d28af8584fecdf36","signature":"41e7917c06ab6a32d0822c7a15b51ecbd78231554f2465afc6d8ef1ad7f076c4"},{"version":"f8625db3926bd5b958fe76803d30ec75294d55aed4df782068216e29deac13d7","signature":"8db2db267e97eeb5f27544726ee7d2e85d1a5abcf90310bbcffb0436942c5557"},{"version":"1e7785f7b59e1608afbda7b7be09bfdef0b92573caeab372d1264d8e7bbb2858","signature":"4cfead3a0ce6ef891f706baf7d9c66852c7c70b563cd0448f744634138b96342"},{"version":"6dbd2bf28c04642a455b86f98936880d18884c49d85cbfb9a94924fcda8b7cfe","signature":"e5e8152d8967d4cdf7e288597ac28db6173e8b816f6b385dea6abf81491bb9f9"},{"version":"674734ad8200b54ed55b0379c8537e93b467e40616ece6cbe66871912985d24f","signature":"ae74e5caa344258ca082ed9480f240bf943664356c0babe3b1c02eedbf9a6c12"},{"version":"bc2e461d7b01183fc6ac1ac6400573f605b34aaa0044a6479aa4e7ed172901f0","signature":"82c8616f6c03718610a75bbe08f20ef6a41efe748b04a553b4a5141413f38477"},"ba854883a418fca4343b51cb93718d481770f3b81e978bbf6378a2385264e55c","7d2b7fe4adb76d8253f20e4dbdce044f1cdfab4902ec33c3604585f553883f7d","4c6f71accd23f1de8ace6810f72418d4a644087deeb059ed72b30710885ec70a",{"version":"e9f8d4cb76a789c4e5a70b63427de59505e98fcc2aa885b6e1a17cb7ce41e5f6","signature":"f8c6b359e6b17086908bac0190f1df28edbdd8434cc9b3a3764be98fe70ae342"},{"version":"8aa46d2e3cc490e4f3a83e7fd95baad712af34ed15dc1fb7949889219c5bddcc","signature":"13ffc018663517911c187c659acbb6aaf78f7c2576413109d4a52cdd4b7a398e"},{"version":"0a797d5fbc31690e87eb91fd54b7477de65643520b7d8e7db1ddd50effc5b078","signature":"1cec4765e54c2a3f3c788301c50b87afd1660229e9d4e61bf52e773280085b84"},{"version":"5960eddb7ee37957448c9a29023d20161a0ad81dfd3547231fc14b443544ccf4","signature":"e8a2dd795430aec4527df852bfc06b03003fe0d24b850dd811861de842c4d7d6"},{"version":"1849d3e118158461a3a4a13ac4dc7780076bca1280ec3100f5ef7845dbc73ea1","signature":"6c4d96869929c7448f3f635c73aac43d3f0d2f9433f4cf2ecf8284b0498a9f50"},{"version":"3ee959f371dc68bc32fd68029c60628a2b93948a322d3dddd1cb59e0c2661616","signature":"c03a7175631a5e6a2a38bfc6e101453dbdcbc625956717c97df0647d8c5b3c68"},{"version":"dc4abc65708de4f0aa44bfe18aea84a31d25bcdd7d7a2211718a9cf6de687995","signature":"de964b545c328d909e7f41cdc02d785db981607bca0fc941de6ee4a3f0ed4395"},{"version":"6558770b288c6d2ab61c6dbdb5e1888c495532f577001e4215145a1383524dc8","signature":"cda5b4df284cd2595cade488d48da25a4ef94b643b430906332cfd795ca56f10"},{"version":"0a015c14a925e6ef024e03d7df422ebbe2dfcd1749a86fcb829b329763943aad","signature":"072a7c737c22ebc9afd294fc730c6a2104c8d49addf5f822fa7dc74d2afac0ee"},{"version":"dff9735439271a9f419a15fcb8cb6e15db59933fe4273d6e44aa7cf4b3b31904","signature":"521036f1f4298cbc5493232ad42d85898be588c574aff7973ae25d9202f40dfd"},{"version":"76df777fdea68ef914431892c2542e66915ccfa1f21b497fb73b365ddaf659c5","signature":"4a5790cbce4050ac1176ec1fbb1996ac933b098505dae57f31d19f572daa83d4"},{"version":"11a035da56079fba733e55a7e3307c29dd7d7f76a9fceff6f7c29854525d6d82","signature":"3efdf9d4065571301c0399698d41e6a3300d9a87f1e9d99191fd6ec00f7e2af8"},{"version":"3a91a6ffed6599c4648c80d5608c8703287f291d39662f970ee072685cc2f160","signature":"16cde3c7b07a80f5faf9a80dec4f4d81215e0729cd2adc4fcb860d1edcbd0840"},"dc8434313627a9bb9e7108ac2d3ecd60848bd624782539aa2f8980e71bf3bab4","4d0ccec357785fbd68e09276300d909b84f933fecc1ea5d92761a9c7d36b1bb4","6216c65f72d2f0db713e7b5e483c95c937bc779a18f9e52afa72702f01f83b89","8ef5a55e956a7a0a8ef406f96168a55a9940e9cbe05fb0565cf40097580b4377","d4b5b7028959c3e1e8847c71b7e845604ff49ffe6e3edf57af07d838d69668c7","db3f4c30a1c61447687dab0185608906e9e69212c2120f19a947b2078573ca41","c7d8badd213c396f54f9ffa4204e7b23a32cdd1956226c4a3cec71a0e207c14e","d17718ff094281efa9a20798eec185815ecd4f5affa1f479d954880cc89758b4","52740032b2d8c0ef763fe40bbf9a6c6b7e215f59cd218b9a4912b377580d3856","205eeb1efdf796604cc543cb81894f598345555c4b1f89450dcceda768e61076","edd37dfe4936b4c1bb13ba3f4fc3c6736d55735e9039cdacc1a57f6e8e4ffdb4","73574bfc85a01ddfb93acc76d73b23fd65d289f4efd6a6a43625b736ca270212","4a0e6d702351d06abfa7b309c671d3231c98fe305a08d0422e99c049fbed3b88","73191fd675953c2aa8b757b38d347fe803bf0faefe3b3f6c2f662d9216806f7b","56c90a2b4699433a11ee09e068e59e0135340213a41046a4c11cfc9ed5ccef77","8aa4776ac23bf44dfb42da46b1c4588807f7c66ffcde77246064b78cb61aa170","e75629407d0cbe5f8c160d2d35b5afae3d9ed1042cde9ab9e1edc444d1d6c9ee","3a97c0c4e8f19915f4feb50f2cf0c06edb6cd85e9ffbf8382deedcaebc1f74b4","7a8d8dc0b29118e1040c8009f61050cb03a35e7bd9be612a3eec5e9c8e7485b4","583c4f3f1c233ecfd273f1bb315699aed9eeae4bc40b1a1398f56de889309e7f","b82185269794856a51705d86ad34a31c1b0d51a19d158e42f0208cc906478c85","f2a2be315c3df9ef66b167785a4fdac194268411af71e71489f3767dbc2ef8fa","e58682765ca9ad05163a6545719ba16e9a70011fb6d60f3b808c6d22df4a22e1","1fe3569c0268b82287a07b82866f5cbb95bc80fafad176b2627a11a0ab80d688","2397dbf9799b6ed26f452d38c8f59e46f08578b23502b8761f77c250ddb7fa8b",{"version":"b94258e48323969437655f7b6f50fbb065ea78d785be7339a1557845d4bb8ae8","signature":"2dedfffe2734062885dd18127a03991e4066979e300e1c611feb9450c2f9264d"},{"version":"75fd661c906f3ffb908b2258e41bbe01d86a976724c08e4378c94e972f1d3735","signature":"e3e33a7e65cb63c2a4709ac52a981ec84bc5d966f16308634475b41daeb7a06c"},{"version":"29f05ed3bc7283d608aac4dfc4830627ef6ecc86dc623a753c7fc0e8c5c8fc50","signature":"32badb6e8a8ae6c21f63c75002e2a8289a54647eee6ef19ce4ad9695c30f7edb"},{"version":"1def7796fb8c85aa59f46d1a072e9ef966990e8af866dc492514c1dfa97b618a","signature":"7549b6d1d159111dc0d05fb90205eedb5c4eaaae9f43f1e46cca036d735b1e97"},{"version":"fe49ac69780265bfd5419574bb8db7f86450651fad88d41414972070667707e9","signature":"5e1e8ea8c98f11a86b70a757ddae66f5cbeb2efbec10d7cb21805b64f23a83c5"},{"version":"d6b533bb77475413c842f084c18603cee8803938819e1f4b80ac6751b26b605a","signature":"2effbe3735bf5df04c67f68be3d2f804eee710230ffc7ff7dfd2e52221279824"},{"version":"ade27963af3150e7761e60b8151222b3736446f5923d24e64822eaf7f49db444","signature":"b99a34a3a13a0d2909bf93d1ebbe3b8345a3ee9c908dfe6af6cf90e2a849a73b"},{"version":"72488e163f797a70ed4416b9c53d5aef6347904dfbdc1bb9224213a23362e044","signature":"8a40a79cc684e0f803ce7ccefd681ef96f845fb1d03ee83f1550bcc376df4817"},{"version":"f95f5a12c820c49f9416b6fa1b3f518084b604680d40f3f7ec067396074fc54d","signature":"5e8682cba921d41168e7b93fb4938679283e830ff194cd48c194060d097b644d"},{"version":"6b59d1ba88d918416f348840fceed0dedb12a7b5f9ef152e83bff7a64500fc59","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"160094f78215cf543ccbef49a2b1bc0ef31e6e7a07c0581058d657bc0921ab7d","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6","8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","3e40749c76c111866e7bf105d87ae0b89031055ac0622fdbc657c78288492228",{"version":"0b5294c7d409e66b5a3adb6f25ee0bc93d1030e01cc1c747e3bd31669409d408","signature":"dcc3d75939604b4476a5025f6449437864d7753435d17290e8e302e4ffcc343e"},{"version":"7332b0ca21fdece284844194b38a1cd53030a54abb5585ff4d08eded2bfc7e62","signature":"23191e0d6ad2164a45713ed5dde3aa64bde16d7fa0ecaf9cfd1853e5f01a93fb"},{"version":"a4e82889ff25d9d5970a5e649c9f55a568784bfb2ce0f3ce100f0b2b193c8a79","signature":"e1eff15265e9e5ec8d398d91b894937859a7e3450c3a8349b82028207c76cf30"},"b5f028f596aa07713b09b2a5c7fe4d9719f4a9454bedea35a32727e197ba849f",{"version":"9e932d1097f35c820c1133b8071ac340915df5debe310cc48dd474e5f23b2296","signature":"7fefad82d89719bd03d8eb9a8a64b7a4d3c103ae0e6eb9464f4db2d7b1bb057d"},{"version":"2c4c10783eb5370aa674eeb9f2c6f405f949f2d32b50b852d58a27f6ab47ffb5","signature":"6bc500bd5c64b1b2dd651678c1025a5a04d22ed8fa118dcb7e5ac592175b08b4"},"38a7452ed0205c8f39ad1440a8b3b8a76bc418a502e261320feeb53f74ec88f0",{"version":"82e049430af3c1ed122d7066ef93acc168b184fc9bdb3d72379a8abd164b7879","signature":"353c546738d309fdbd16973a4c9ec92635f38d4b9366c4fa2ce39dcf399f8bb2"},{"version":"e169967d407d8b927dffcebda71f10810316c88d327f93f1e6ba448851016c3c","signature":"4e62f50f6796487943ee8f0953ee24f2e41ef5489082096fe2702598e185824c"},"d04bd56054d5e42aa2f75d1b0a34a9da12bebe1d125558b2ebf22af9e721c1dc","5db2633517ea60d97c9f4c3fff36cd6c4066e153a90638e79b77f43096e26d44","64a42dc8050250002ef5128f8eb5b5fb8250ad19102f8adb5b65b16108c35cc5","b97a52e891104241f8ce69a4e9093d04f31a0a538bf1c7c388a3e43769ccfd82","4ea91b7d78e1dc45a99749df9dc4e0a59f33b9fd63eff3d342cce207a921db4f","7cb4bf4b569aa647b4e16e2f1f3abc9fa8e4160059a7e3f19b4b9a020a4ad867","a47cb73b9f29501d6f9102286b8bf90a50c60d3697fad0e83c7c9383c31abbd0",{"version":"673eea42b1b8643e75700d69e8c8db1b4502d233f78511ce7ada18cbf98ef158","signature":"ea6a1eac736bf1a8a3677a1c2e3ae06dbcc07b60d33a99e49041f3e4e0959cda"},"ab00b51a763935317a4956597ec97334bb1deeabc1898519f2c6ca48bbdd9d56",{"version":"229fee55f38035f6e03a7dc6bb2114509aaf090a758b43e16d2762d481cd27a9","signature":"c68e6d392d4d704e33512a51b9b8cb7e2f88267a38278034be79f937380f0ea0"},{"version":"66dc5c816a99f1b731b3f6fa2644d59a3818bbf578bf3143e44fa41c4f5e508f","signature":"30f613974931fd4d25d2a44b06dd1fcc50bc598e3c5ba25fb6eee7a0274a90c0"},{"version":"aedf6697dd5b3c29c2046df06be9ec52918a5071ff041872cccbc7804b140bca","signature":"5c95375f7b8135531c3765af29165b685a0f5e9da1efbbf3bd57152a9fc4d0ec"},"54d502364cce5393d5724453010403633cc138c4b8cf7ca4b68c1777d6d93f5b",{"version":"3ebb59bc660ca01b531f8a5d250a0c066ea8ac79887f49592847f37e5c1a83f6","signature":"2478e2017c71f69b97f26877a6f310b15fb72ad43ac161abcafd090be1b5aa0c"},{"version":"03cc2fc248b2405ae7d41496165be126838d09190b6af7dc3a20bf5727390094","signature":"f031ef73cc8452b47396b88dcc2514c1e7d2b222d236f876cc4d809f70e308bb"},{"version":"51921b2d71f670633243c6ad96cf1ba75d1c9652fb2a2a12fe9b50d3eef4d0d2","signature":"dd9a6de9fe35aea0d2b96c17a374778d9b299a24fe592fd79e3bdf64e907354e"},{"version":"e2ba9ae5aa87517e29236a2e1eccad16a5d745a073f1d4b8596cfcf0c1c1b0e0","signature":"48aca09b5bdcd406482b79009f857cf254ef1a66f37be7b7f531e40c144b24a1"},{"version":"05cdbca45d7fc3ee53716961101d7711079ecb0620754ca12443021c5944145a","signature":"668bb16da01945baeabf781ec795ed4e5acc6a00590180f25c4d5d8805d0dac9"},{"version":"e2af63744ca6f3747a056715061fb47ae1bb04696f42f6144743b4bb3a92c59c","signature":"9ba55eb19f1d0ef461a47b9f076caac4f20844443434f1d7395d89e562d54dd2"},{"version":"1765c87da18755181554689264ca64038a62bbfe3a6590b4d3bedd3e17781b7b","signature":"235a8b31cc258089d785facda6ba1d2545114b1d9ab03bcc0b37436825e6686e"},"b8442e9db28157344d1bc5d8a5a256f1692de213f0c0ddeb84359834015a008c","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","68a0d0c508e1b6d8d23a519a8a0a3303dc5baa4849ca049f21e5bad41945e3fc","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","c66ecd83ad8b9f67a983516d544cfee5b4b1266141b69b293080ef19683c36dd",{"version":"37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570","signature":"bbdfff2e92ebaae86b2903af1771bc1c4c4a9c9f60737a729d969c420d8db52e"},{"version":"0e31c1a9c34f3090bd4c26f5bc6fd4d99e294b7a89f8716bccd0c99cbeb62724","signature":"d2d417312f0c949a739d0d29d0358066e443376074abe0dc0f3036f432da14a0"},{"version":"3bbaf29244606b6ccdba9501739ed1a12946b7e0de22059a7574a05e4ced8aff","signature":"42a9fc64ee011e13dc2b69011d8b97240c850490cc679d4fff707d2f7440d9f2"},"04ae68757a70d46853e9b964088e60c1c2df4e98aa4465b1bb92f6c6431f5b79",{"version":"dc717cb056f1c83484c4d20125d05404d5cfc5fc542d3c982f7baf3a08eb1561","signature":"8d0c8f5d1da63ba8482cf56d5f671397453137e9dc75fe52601b1124b229fc40"},"5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","6eb0f0a3e3774e1bde7e234eb8f4df875d1588de267ed91dce7aff84c4e5cf1e","fa8f7c91687cdfdbdd2e12e7bc83662f95bf5652f8c3dda59c1b0f4d4b6454b3","25d0e0fe3731bc85c7bd2ef7f7e1faf4f5201be1c10ff3a19e1afa6ec4568669","26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","02f634f868780eaaff5e2d3fb4570dac8e7f018a8650bb9a0ac1deb4915df8d1",{"version":"811363a9bbdad32d3a1f79754a748c734c7b274da7d09b216848ec5c86b2d8d5","signature":"737719b99cb39d70cdacaf1f7d6e21fa32328c08118a5b37da7df92118922311"},"bc64e0bb890b3b86aa2d60194275394c28771e027f9be3f1f18548f2ea34a6a7","caf65866d67dc49c5bba89aa95e878227686f24f97f5f064048161e5b751f2f0","32baf0d7a19f8a191fe762677a618ca9723e77349f4fb58d195059b2a9146014","16194399bc16250fb58894bb3a7ba178be6c770b399820130bf318350c87e473","58388d9506c8a839643dc24ccfe0dbaf0a25086c3163f95a94f746b38bd2c5eb",{"version":"e7bb18d2b9c9b3d67be2efc11642d0a72472444158384fb623c7b64d46b3ecbd","signature":"918242d8b33b72b809f523e32b3c5fa382c1d5b6be2de33d7d1f55f34f4d0f4a"},{"version":"0238c794db6165678cd645a94ec5098b21857b00cd17421ba3568f4be868e97b","signature":"3558432c04e8108e539cba3381ecb6e0e1aac11d7a509f93828a0163b49631b4"},{"version":"aa4f5878185b6b7ec57a4d4fefc2d07eb150d732135806e2720b2293baac2aa4","signature":"a1a253b50754c516ee15c728cbba7b9abd6f63f4c534673733761c286dbfc822"},{"version":"9814645f0f76ebf3203906e9ea703d90c62c050998b92f56f8f45fecf453bbe8","signature":"94704cc41e3e30aa43cd22e93695364b4e69a457317f4d577efb89e83865f2ea"},{"version":"a6ccc8cae8dd6a9328f2d9ab6edf8c9e52eef1abe9a99aac405c33158dbb6d9f","signature":"2cdc339390f20ed61190d043718b8fb8e640fbe7b55a7a5455d018ff6196385b"},{"version":"9dccadbefd8b238acb5a00f3425b581b26cac808d357bc01d4a6fa32636ef0a4","signature":"b7e2e690d250d028f29065fae02e66b266eafd054368b25a4c50e79ed821e167"},"ebfa041160db4738e484902610cf40db88697f96faa113f78a69b03cfc409334","6c1d3db82112daaad52e04e105f26788ee70369f855abf57ba2fa434b937844b",{"version":"24f289cf1f55044ad940f4777d49eeaa7fcddc5c5139a51e32c3490b355eb732","signature":"e7df62b51f37c5210fcbad6f966a45e0dadd36c7595aebe874d655a5a5baccfe"},{"version":"bd7ba99b269e7cf1972b7ebdf816bbe1cec76b6ce2b90e2e253fc09d29a69127","signature":"071b55325b7a91276e50803df964d2b5725ad5e268030b7e2c5f4dd80c341ab1"},"3e40749c76c111866e7bf105d87ae0b89031055ac0622fdbc657c78288492228",{"version":"a6eb0878c4917ffda0c9117cd46589cc3ed817736f43c5f3553726574baecb93","signature":"07dcb4920802dabd6c79fad484ef4d39606b17e3205a67626c975e109b817e94"},{"version":"a25dd2203f70ac3a59b04cc6aba1f47bd824ceac235d7f7d7c8a93a29f8125f1","signature":"e9c3be3767d0e5f7d3f0a28b94b37fd26f25209244064f0c970d0bb3f5d41c5d"},{"version":"b82f86de019ca7a905a9d34dc8988b941f004ea5427950f9e9de4c265eeb6c8c","signature":"8e2e002d32be58a6f75a037a38eb7e88da24fd30ddf7c088a87420f0092079c2"},"cda2890d470790155162df5c185312328dafc2cb374cc6660cee3a489f14a349",{"version":"e064f47fc06a4ac95943c41ee322982b014ebf5a941e3ddcaabc1137f911558e","signature":"818f07cc87bf9e0a973a171eff8a607b901514fdff355dafbbbebed254bedb1f"},{"version":"8b33bed19f3195c0e2ff8e2d1a7e4f0fa6fcd5f43273a0a9042f7e5f8ddd16a2","signature":"dc4c611413e4e9921d257ad64a5cb0b66a0010d2998ca7503896ea5fda5481af"},"2c2fa6adf2c92ebac85f7f4c6fedc3efa700daddf658ccbb6d861c167ce9cccb","0d53e79022f618d2577bd3bb4970d3027187beee20eefdb280450b702cdf71bc",{"version":"c79a10273efa527025de068d5fb83e35360d82e404cdd63f088e51d2ffd47015","signature":"f3ff7306fa2e4cb93aa5bd8b1561bac5a4d372a4bd5b07f94c8698d3369dfc00"},{"version":"9b823d0849ec13ed255211eaec61efea3f37f401d39353bf132eae87ffa5b4c0","signature":"d28c7e1a3118a6618bdf61daef47d179b42bca68721c37de943088e553bd6edf"},{"version":"941dfc818e6fc370dd5afc6457de95952c30c1a3f3f090887279fd0a2581475c","signature":"cc17352c57ada124b82c87e1dc507a351d34357296b2c3f6f521ba0e5a7e6c1a"},{"version":"e0819020b4e3a52a9971d57e50de9892071c0d2022ea013fe6e794358a7c009e","signature":"dc4c611413e4e9921d257ad64a5cb0b66a0010d2998ca7503896ea5fda5481af"},{"version":"9fc804430d6a69a7a10e1011e45e21079f3721194b7448daafe42d65949e4b22","signature":"970e91adf4a894f889485adf53bd0a1fc4058655439b0018c099e8f2a58e9fb2"},{"version":"fe2ec52e5f674bead0a3911084ea137a1b4d7a398876ab283b6abc33bb796bc7","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"f2c0bfba1d384b5dcda7f5aaa8b382f6bc0141b00ff849da0f98a85ceacc5d88","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",{"version":"fc196285a837c6a29a804619c36cdf61f734627fd15a3e490cdcae28deb29ea9","signature":"665039a97707e9967682f3bfd67cab3fd64a65a647e9b1034c2bf3fff2027c04"},{"version":"9aa1d2b6b23329354252098957b0c6a13aeca6b906a35ff6a05c8552fa995828","signature":"b56223dd2acd5f7127fe2c59dab19f1bd49d259668a04681dc0fffb9d6a559a7"},{"version":"ce22c3bc3a2061577c1b0e27b8490af580ed56ec5f8ac16f24ec14f6e2f09076","signature":"9f94c1676b4211109df4c522239255c75f741260abc7cf5c0309bfd4453bf8c7"},{"version":"2291c0559f08b3af2fbb52789440d687519e94756439c3632f7175cbbe39b2c7","signature":"bd5570f525d07ba0c5f8ca9c7b773247c2ff445b2c2e6897dff4c9708c40628a"},"e2c4122801756a4d09207292df282ddf698514c265dd762bc4477e51160c69ed",{"version":"bd52297ab1d62594b1e31cac325fa74094ff96ef3af561161712ffab131e89a2","signature":"f06fca4bfe55bd7198ba66a0fc829825490dfac58f7f7fb0a87b0422235e04ab"},{"version":"9a7740d7c2d0217ba3cd30ca4f9a99b136b068779f026cf8cb0c5e70abcb8ee2","signature":"a56471e2639e1760cda5e1902b425904b9851ef551ee2e5623f4aba63de37e86"},"a457966ce1f1b76194e8b70d380513f4348ae43ea7301b9e3a2b98f4b7baa39b",{"version":"f06a8d0fd3b0fab7ff7935ec6c5b78c58a48cccdfbf92cc328e57ded2c5bb163","signature":"a26449b5226a251efb1e3095cc5560b05c37b1c8a66394da8c3b2a2e44c0af13"},{"version":"dc62004181bf35193f36d45d7111724dcb10c7c2b346e1661dd89c16f8804ae7","signature":"16f80cbc1e0baee3ae166fa977d04675e18912ec55c5ce00f91c0ba53200766d"},{"version":"b40ed40e89ecb9345f253d1f3d58c1adac8076d9f0dec2dc32a364aa880e2eca","signature":"3e82184e048156cd37dc16848409e67408db8fc55430bcfdadf0c7e467ca78ff"},{"version":"8f0248996f450fcf96e5d65eb6d75fbbff978809af5e7f427298a2a3c11f2dfe","signature":"4c23827cded1af5f3952702a5589e4cfa9c74b7a903dbad078393ea34abc7061"},{"version":"171b0016e016c301653d1d60ba645128993dd0a51bc401098af831c5a5b794e1","signature":"7a3d2826039368a52883890fdf071d69fe54f7bd44da1aad25f8dc2bc139626d"},{"version":"6159a78b3bab9bf150d13213252fb24f54cb679d77b70cb9abdb220132ba85fd","signature":"10e022c1d1916ff1922f38a64e2e57be0c324d9aae628dd894d55d598fe18e21"},{"version":"cb8cd6b2609c8e289fc9b1cdc9c45d5c23157fba8b81fb89404a45d015da4c6f","signature":"4e6075f4749acdc47fd3d3946f41f54841f907fa54098c775db7770fd9faf7e0"},{"version":"6e77a95129b729c1836767db19d1833f4ab79c9d55c454b204f46a206892f611","signature":"63c078ddc91f01784a12b4d4a39cfaf83586d4d659782a6db0cb775bb090bd43"},{"version":"33ae76c6e38ee3a28f8094efe7a2165c9f1addd6c9e947dc8074ab41deeca1cd","signature":"cedd729939ecb29580189de3b72bdebb97516242e41a96adae2119b5b2eed27b"},{"version":"71c7ca26dd7441693ca4e78e41ecd01ee6054c6053eb4ee42e82d1faeea5e0af","signature":"ee4cb4012b261ad2d8fcaf52fa1729394abacb6abbd48361bfae920e96c5f5c5"},{"version":"df304c2c5827fe3ae78dfdd5316ad882aed05457cf03136848d1a8393a5ea765","signature":"94704cc41e3e30aa43cd22e93695364b4e69a457317f4d577efb89e83865f2ea"},"9fec1490a6842df80897e5ad7803e74c1f30cd14881b8c129d8e2046bf6dfca8","fe2ec52e5f674bead0a3911084ea137a1b4d7a398876ab283b6abc33bb796bc7","1838e8b723e104846926250039cee2b889a6506872f665c0ad44bc886881b371","6a9e3bb8ca9146ff52d5b9458521802017982cfd530bb719397b1d1dc263fb3f",{"version":"8be43f20757d28a069ca0751b9d00ce7b7092ee2dbc7e66600af8a2d13bfd1b4","signature":"b612fc819814b4faf63b7955e4488609a40635d1f3951fed3fe5867c64aea961"},{"version":"d590613861d123d074c8257e415a671f72d7959f467256787543029ea9d1773d","signature":"7fd49be311d6756d73d61b0cd76e9acc1420cf72ef321f961367985a4ab665db"},"106d10633b752c5ef983ebdfa5460aec9728431c49dbfecbb7e49a9b8e5ac111",{"version":"06be96f2020cb6e3c23be85db3155568c8308256d0b92a977e1ad05ab1d705c1","signature":"5a56d5daf9fc80e3b67dfc0d57244be6627413d0086baefef4e795802b4c8ed6"},{"version":"70abbd7ce8ace47e80f6e9e14b68f260d77334ec590087c0fed7a5a5c548c441","signature":"b814783a9804bff9df9a904aca99ff445daa716a0c27582012fadd5622824a9b"},{"version":"f5c251840bb57987ba31ffb28ed0ecfd13ca68abd6f84035713d00f922b70ee6","signature":"e2591fa5e77a87a188bd2f8d069b09c45e905ce6de30bbb64d6cf6969c592bc8"},{"version":"2362ac4512ad74bcdca5d6d5d7b9c0fd51da2e7f3678c655bd6423e06f7677bc","signature":"310b10bf8582da6be362d15542709487dfc52893a2e7c9d10cfd70c04ad7970e"},{"version":"c16e4abd1ded8449720e10f6b4e6f9c65ebb058ce010cd0b2cf350c29869d974","signature":"64ff8883ec7e319d9754f08b9861614ddcd60ab7e77e3c9714ae63d02e585bdf"},{"version":"a06e1aca27f3aaa539e6e70fd7c522263e6b7ce0c2b31fb8f336dcfc14b4af13","signature":"ec4e35ba50854212e3835ae49e0753ae78cd74903c8040371def4a4528d9c90f"},"3888fff85f42ffed7b4ef7ffa460e9627087dfd382d41ad14a016207e6638bea",{"version":"63ea237d09694e52a2f45e7937b6f2538550f26ae23240cc54eeccaeb2c4eee0","signature":"d13068b95d79cfa6e02b34b9bcfc07086a566da92acbacbce2f3e57d6f87d8dd"},{"version":"c5f02fffdd7d4196a971593333e807ffb905013e392961be30228fef1b15a7da","signature":"bd08506013eaac40f15f7d6049fd8174cdbf551a1452bbc74d629fdfc9b6f4f6"},{"version":"261059728b8a4fec4a7b41b2f651d01dfb87a2607fbfefa34bff2c5d376cc58c","signature":"e64b6923dab61400d06ec162412cbcdc5ae121649a9336404620f14b8953fc39"},{"version":"f3af878b59176f57e98ea3e17d266d92aed5400574aa196406592bba4e119df3","signature":"ce0c41deaa2f5cea085954b45fea893a33742678dceada5c1013a0108429fe4a"},{"version":"3ae69f5ba3e06afd7c6ee9321a5e32b03cea480537f927c146d1bb6fca82ebcf","signature":"bb0a1409619a6c7c41aeb0d7499806c32bedca991bbadfb832927da54f338c26"},{"version":"764ab13707be1ab0ec1bb4a2fea1b76fd2c901b365ba843622e61b3b3fb5be22","signature":"0edcc46e2d86ff31bcc3337d02f427ffc8f372afa9c617f0fb3495049052176e"},{"version":"af235212e0338e0a3cb74fb2561a0c22377b5f8b037112fec649c1c707d6581b","signature":"221ac380969808617938e67ae60d8bc79ba073974b447e37b0dfedc6220b82c7"},{"version":"07607a704c3f04e2f0093efdb9854e742bdcfa5ff6fd7d97a243a7c0201f8cd1","signature":"19ca662b26e476d37fe274e7593b37319b3e598424cb267a2e93504493bec785"},{"version":"4e033ba436c8db7701433382de2f1b7519bf55f12399c526643ac619c610a2d4","signature":"5aadc0f1866f7331d46c4523669ffd5e5b07efb43284aa0b5bb196b045f7301d"},{"version":"c59e1d6b75e23acd064f8436700bec3fd57ef29fe3f88eb8b5cf9c4165ec07f1","signature":"141f0c6a85f58e1ebabd615d6113f1534cef4c53c25b3a2e532cb679c9fe85db"},{"version":"7325cf59e649ca9d1fd65ac6561be2d46dd52554a3ea34c7796c6681a182d079","signature":"fc245d77a460c0b36858bd6005eb0b730172abad7dafecc27d2cec4400a5f299"},{"version":"55a34d26d03d687d26cad595802c335f4d922728ccd0c4c9ff1a96a14db11c7c","signature":"3e8d4b712796b788770f551298131b05d5a34b52d8ae431165f9ffdb5be3beb8"},{"version":"2bfb84d1b0de9ec25360e0e364af379565e289a0739deaa84dc4c173c8e0cff6","signature":"c08ab67ae7b620f46c03a5e33754842ee9d15bc068d220369b362d760e065915"},{"version":"075b83636476be440cb7b67842bf158148e649131a111a4c753a60ed302542dc","signature":"60e95b9651b46ec879cad06b12b07e2ba9c5ad4922f2a9966f572db8642d73c1"},{"version":"f018faacf9e93a03828da54a7afd5560a2a967f36916e0818fba176f7202fc2e","signature":"43c714c1b00f427322676bc98f82ff72861ea8e1acd74f4c3d594afef1729d84"},{"version":"dad4957a70c554c5bd188047d573ee3744e99e43e119a29d844c05e8b480286d","signature":"667ae3c9c86fb761659e03dce6d322d195b1cdf363bc3b50bc9cc1f2a0737078"},{"version":"922ea5f383f450a4685b27e6db233e6d0c349133ba6af5847496ab1951916bee","signature":"b9e4c8ba82a019e95cfa5b5be74c01fd51e69ad7b9826304a6e5f98aa0db5b63"},{"version":"c45c49513a44bc1ef323f4182e93b32af90350667ba0636f82347b10a4f641c7","signature":"d5153a5a72ea47b5bd0c84db40c7be380a947b5b75104ee45fb2ecddcc9b9a0f"},{"version":"ad8e74fd381cde370b78dda28b2aae080a912db67a2b52812d87866689ba9473","signature":"9f9e2a86bf10f5699ed7821016267594f721e83441cd183ec544d6b170bbc6c6"},{"version":"f559677a993212708ef471dac85d9b668a18945ab12497dd7f8c3beaffadb651","signature":"4cbab0e7533e9a3fe54a6760d9e98f2b93ab20c3baad67dd014a52005a7b9c6d"},"d9d6497739d816c313c1ac84cbc91ffc6d3fd74cf9c19eb41ae463966446cd81","a4391503c6aea2077cc8abe2d018eb6dbe1a771a838099e0754b3be5252710ff","d53b20bf1caaa57cc505d9b6cd9c72ef8eb88c56faaf67c7908fd3ba7dd48375","d61a995cc1b0e9379cc697936083bab7ec591697c21528e7d9f5050393de697a","432a61971738da04b67e04e08390ac124cc543479083709896b2071d0a790066","96eb86ef716d05be717fd99718e158dcb5adb609447d45a1f577600c008b53e1","93f40416c65de66411ece03b2f7193c3ccc73595a3c487df942b800ba837aff7","387b66ce5e1bde2f44308269e762e5094a278e1b5e6b5f33085586d0881d441e","34c10d99861d192a900b9a532f3236f34483e544d81163fc9e36f9651573e3e3","aab2377ca90e5749e191ffe28b6d92193f8dd0b32cdb18605425b60b814417da","5b26d5b7c6dfd66c104420e7abf9dcdd2f97898fd3851a224f8c9600cd4be35c","f316722ac40120db03c07230e06a232ce5cf130b7134b047acfdd870dca37d52","0f61c1e90da5f731524c7b034187c03f376090a7d50d427154822495636573c8","151de7acf6be0aeb55a9f10ea3495feea4a8069688afa1c93ebbf9aa76c10ac7","7343cedd945574d4ba63d8f1080cb673a727958bac5f71df17140b647262c645","793460bac09d2b423bd0a83f28249d3e5b8842a4040fc22f8c42c5b5d32a99dc","ac0e6639cd51b02e547979d5885ae0b70efdd176165933cadcae1194e2e57e64","f552a0f7a64ae9d7d9dc49bdbd4980fbe84df56d5689141219df6cb2645abb7e","b178db4ba9126aae15fe4f1b23115f26d3f829372fce1fadc34772f841d6b61d","2e9da8ac430f0553691b3a0baecd78e76974466d1197b1273f7f021a03b942af","da05a5ec14813eabb29e5a7b97d09fbf41155f977b9748d1cb1ffe6589b8ad8c","c0f390cd62a9335a11d517368617f268ed4b253d17db6a247f598191f10b86f6","a90d60564a4076b72cf461e642edb9a6eceda2e9437d74ed96e5237f315d078f","a1f3fafccd657142de9ed3b10255fc5ed757f344fa28ec75b2f914f692b15b31","252b4d9bb646738413b74af60625d312b4652bf50aa50f9a415e8dbb90181044","aa227ad08d3140f43f22985aa18cf9cd0c28fe3a57ea3e585ff31a72e47ad92a","a0874ac23417626dcdfcfa253a1197d5998ee11b633573b862e34d9925a410b0","7558ef461677d53f58199a2f2e849a5cf12453cc19d4861cd159318669dd50e8","cb95d41deccc65eba78fd9b961a44cef9288caff4430062589d71dac667b6494","f736db3631dac6b3a26b2ed092d6372ec9a53f25d235405cbcc6991a27a6b8fc","ca0b1aeec6906bef682a7c5ebe76a823aa4f72d3591e3a50250092edf76f4f85","633a5e5398d92be5e7389cea7cabd60183307f1fc328aa968e963ada5659319d","ff15e9558618940b53c63a9104a5bc6261da47e7a9ff9caa0b7bfe8decfafe13","4da715a33b964422d55c8e574eb032e9a9c993636d4a0455bab46f1dd448d9d7","529072b94527f62d328347a5c47335aaa6430d16e33a85ea214969c9027ff985","9175b5f598009735a9777526327a772107231e653dec6e9d7abcc72102aef12a","d126fb9d0938845bb5c27b58c6c375b0a82c179505755e3de1ef932c230345c8","eaf886fc3a19709125c2b4b9c603902668a2ef209d1d153692d6d6e3476d6185","a101c17b854ea84b3960120f05c74096618a42ff505171abc85df8514479ba4a","1e7a324976215b35d22df3d93be1da088465ec7d324c50af5d199eda13395375","0dc039199a23022bc6dec76501d100adfd160a16f3c277f26bdd69cbb176c23a","a5a362a67cbaf83d5a2bc330f65481f3cfec7b1078dec7efad76166b3157b4dc",{"version":"ecf78c072af4ca30eda369734fff1c1196d927fddf22a3cd831766416f329524","affectsGlobalScope":true},"64972bdfa5b5a377a5e03a0ab97a3c2c614941897a602d75528f8f0e57ed9b50","58afc41a2666cd50623bc25f623ffb050845c65530da6ea63adcf6883a0787cd","423023f2a629bea41874bc22704f629e1a7d451623c444679f384eed9d9a9359","f3594a03f87d6294ff6d38b406aa5fd68ad2c658241d6baf9433bb429e04dcfa","da4f622f89cbe4a36e0eeaaa200805e45d632d2f0dc7bffe719324fea15c9245","404aaa3dae15ac2fc53ad838674275052c785eedad432a4b664dfd8a1675b07f","80053f3935605c81f45290d2bf8f315391a27201a9ed52d82c3930f7bbb39f5d","d4a033e5c412a2e8115a03c4f808ff2516381f0d9367160ade644c9bac7c6bbd","acdc2a3af93c87fff7d24f5e05dc762167b4867f4356fec54ffea533bef6a6db","6d659463fdc3dd72f3c758f379ce664cf99b88a418f6eb558c1bc8271df4068a","5c49cb36872b88af7947983b105c40eb405ddba094ce20aad80b38aefdedffde","7f3e77ed62c75376c79634df5000bb39ede3ac5ce44157334e32465ea5265877","3649a19bcb6cf7c5bfbde5144376345e784e5556531852885cccb37d3ed77223","5164a738d7dbe8d7573df59a70d3f90c15c51d079bb9ba906aedc4a40f16810c","cb57217d94d6913318c870e9d723f2250bfb0f223496e556fe55c58100485ced","9b2080619a70c9cb477c39fdfb6776beedb3cfbf2fd8bcb8e8a2bfb476fe8aef","c3756e14ed40dceabbfc95d28987ddac4de2b1edd73a623bcc633c5be725ab94","cc98f86e291cec9af14674f1ed8d51a1f253f630bc3cef959b1cdf188293e9e3","ddd79aad14526bd45eff0b3c6daa584693975d604e0eec8742a73e6f7fdde3fd","12e4bd8f262e455dc8b5c0c14db62d86737f8aa39718897949193368cde9ef35","9d6b8955fd1024096bcca6dc2061c6c4905a82a7e59e0b5cd0280e68c7ef1358","16e1dbbff953da654ddc99a1a1f69d36ff39ae7134389f9a02bc104b46ddaf55","cbd48fd6c459fe998319fdd09e8df77af198f4d0526d95fbdc705eca2e929aa6","9f7528bc0cb1bae33e1966e0eb44e41fc4dd6ec2189afa3961e02f3047075622","7c5532365d306cf01e351c1dd97fd7eb3bd1e3ed98c3e1b8cae4821be600d01d","d07577ebd137dd173a413a549abf8b6119405da8023cb92c60c1bf2b082d7c66","ca3527fdc0f30230bff90e80b9bb27ee6f6417f348de204e812d78b0c2764b38","58306029d64e91ccd8528d5280995b596c2076e4f1ff59dcf9e22fb2cfbd06c5","185ff609c3f9ae4f1a353bdac3f53a24ba4a5bd187f49bcdf8c6a8821e63e042","1f74af411e524e4ebc2b85c888c9b02a732f588953b00fba2d51f86fb4072d7f","1a8c788a152539ad0019e2cb36a358e42b6d660012cbc13c935bac4b20262b9e","de44db1f58245de49d2c168cf218a24bd1afca549c09c485ad91c97fd924faf5","7eea08b08a6ccb920da118da58c4812fb14e1791b2e7a47419f1b219ae0878bc","19f3ca2c80f5d33e7c8f88a166c709b9fc8da19f9b4da2c48f86854ec8956288","bce71ca09f50411c85c871017930a962f5205630e8f94537d49d3e459accc3ad","756d40de34a77951a74186f28b35c651b782cb9d86f786ffe8155273a2f8607f","ccfcb8b6f26c7f6f9a41682e996c06a867d7d0b26a3159237c71a3c8b3436bbc","66dfe0aef5d991e12c81206cf0ad6e0d7e9e02308af650370868d3f19bd88e15","d4ea1acd3c31a116d770e47a3a4499c8739dcc56ecc592c7dbdd24a043ad4246","1096bf0ce13d52fc7a7359b5988a908de7fe911d42fca93b3531174f44bd233d","fc78f82e92423599748abcc76d776608d4e34a27e36f35f19230e9e9828a0e20","711b2307b82efc238e219b28727ac5700d40c650d842620746f4495b2a0918d9","669407de5f3a5fa9d726ba4ec6660a028549673ca7cb3218fe0b0a249f857fcb","dde21e44d98bf43a857db42f65379f2f659e07aa5f91571d565a1510359cef13","19855c590793eac9bc723c272b701ef761f3cba6300ff3023ec57c2a4de63351","8963b5ab3e88aa20f10c63f5ab951aa99c4adf3e7ce584e16a319fdafadf4502","78e372b6f90f05d3d167bb2e0f2618eff28fb28ac05425d2c917c147370cea59","e1074eceecf81f3bdc322620403eb4d73958752ce668b033a1469e51845b2321","bf178f64ff585542d2f2499383cd3ca885ba1439b24a67a4976a2f1b6f1d61b4","b7b1161c27a3f9df53569a20bf01f787bed3973d5b066f353f2ea33a428c6125","5809786c582ecf2188dd788ca4472c0a0baab7c0496ddac2c27f306f69dffc80","0652a8afac9923c9059fd91866f88ca5662d1f1b62a02928aaf8b25bfeff2ef6","31fc705294fa8302f657c17ff1e52c6a16e3433314afd84dd5c61577c70ea3a4","298b4632597917c00b55ec21d1c128c79d1a7c4eba9c2e46740ab6d3f4de832a","d90e89c235c763d79f242384309d4f037740e83eca5da200abd5b36e71529e65","4454ad1362637a1e0a36b6bc4ba460ca89dbabc0769c2bc5204a6ec0c08523d9","d43c5213763a0f7e0222bf61a47a8fd45a5cd6aeeb903fc54d9b9c8c34a94c4c","9c5c8a9c0de5d396f9e8a84f062a567c619770077ad08f44653543b9aa9943f8","f9f8e73a71c35eb7c110dfa4e57e2d09ab51c0959a273ba1f6c0bbeeb3898ece","3ec0b24ef45ecf15c0d65619271a7ee5e61bbd4365fc9f2c1fea7f16e6ec44eb","a2e9e78e23531b7ffcfc2be2d8449417d56cf73ccb506c401863b5cbf66d0470","5d4956de5917121f1723147c38c1530d422a959ec65be0fe8688d6549255ad09","0efc4e36b76e9520f774254cf34b6d5f1a070c63c31d18c3c851ad2d5589b422","7691aea1847511c4dc180b41b42a8b6857f6e4e391dcf91085f180994b6ff86c","b851bcdbba2272f59f476d1121265762428c3599ff1581baef17371f14200d06","c0b870fcebc3a14428f28e2d1af1e36e5fb46f7b3169199126651e5a416893f3","516abab191af000c8d5f28d956f810bdbfd211c17e667e5e99d99733b2f9e48e","8e84cf9968d91be77a6a1c42b21dcf9faf99e4b295fb3eed938348d24ee0befd","e095f6e676d25eebff0413b09ae84694e34bcc0932672ee8ccee243f2bc2c4ed","3e9a53c2fc59c26b3c680e31a511da0ac17b89e5a79299b5cd686ec7394f8788","2d54ec3e4d7480d167be265c1d67514de5cc92af12c76b765f2d310d33204b19","7fed1c3755e94dca180bc1d5868be4c8f8021989c7b6ab87c6ea46c376b096c5","42931092b97287cbe98f63ab135d1fdc1e866a69f1843154d8d3799a6551f6f1","b3ca23fd064d446f81db449883df5f7e6b2bd893fad4a56189f4060227b462d9","5781ea87ae1dcb0403baeac1958e733457a1482df4f7a5bc9e191a6667a5dfc9","d5de69cef677c1ff6c10bc4623aaefb8806cc3dbc0fc4189a290590f3d606ecc","4d86c64738154a36f58666968852509de532d11098ab61111f806ec1d09cbc5f","0d5d282f8f4af120209c98c7f0eb9fef86b40d10a9b44d668c9fbb68d051ecb9","3659a9dd44ce010fd1b6fc3bdd0a015cfe15eb1f2856eb0255bbd98c329cda1e","e591ccb717a1baa8d215c2f08dd475c1494b9276dd8cd92682b38b3e5856315a","d82950cdb32fe5c2ba2e76d60f4c562cd3a28264b1ee40247c15ca12859cbba9","b8e9d7f6213c3dd807315d0d61725c8ce188dfd7905e6431739b647834145647","6ab30de57f8f77a36357303322313d91a1208f99cb7e1af50359bf2ac3aa9453","ec9d6bfe0437d112ba86d395267fa6a1fd09fc84ad386396ff9b2014a6bd6548","a39d660aa935920f320b24c258941c050f7354fba465c1d50b5d92b6082db6b0","e9138aefbe509d1610c5e51faf44589eb57e9657f57a5c9d51f61e2f63352c1e","105e7784d14a50694d0c6268f07cffac604c6601a03e4fe60c15e2fcbc5c7b65","a2cff12f329024fe861df7e5b99dafb756716b4bfb050552bd15385fbc5ff323","7e38e6ea02a584e6f0ce8b16d504b0350b249ca1cf1d01f58dd63c6ab461c27a","93e4eca3747fccea95856796710ed931b7f94febb118317cf9747d131cc1a98e","7aea96b15ef6a0656bcd0326ac59ed31938cda8956a503ee21283568dbbbfb25","2a9a901f072e4aee97f3fe7fe0557a4702ddd42a11e6d381a8e5fcbe6e8eb242","0e2bfb01db1d5e5751c068da2c333cdaf5e31fd7fe24438978c11dc8c00ebff4","ddcbb27557d265e69aae8caea5ce655880061df156576fa5cfc37ae6b43a9643","1cf3caa55359438a459c8de7f6f6de4fb0759d08b735b1a9a72fde58b786ecf5","6db6087be65a7ed63b898f9eedae1a0c2688133eb410006546822bc34f3bfa3a","6823b0b952fe41d6c104984da40ade01d4a8e4ce68363dcd46087ec3b48b2b23","9e82b9bcd0246cd8f7ef2af0247c73c584f5c5b7f760c1d07b76a1776fa525a4","daa1ac49655deed1e2f0830c2793fe6fb3fa0e6df98ff9d02952ffb548192f8b","7ce9a04f13fa0d2c2fe79aad2d7d46ce84e1c19fa3ff836eb2672eb5bd6e1920","f9bd840e3a4b82dbe01124578a80abd4d7c0e1c0fef99bba0230e8129e92512d","67d543f0e1af4547f19a61fe256ba7911c0d8e3117715fd1872c7924a2bf482c","860d7a4cd709d58b4a03126a6643c81c79d87bfcc0e3f1b94e5aee4edc65d8d8","52cf26056a641b2cdf69920089cff79d98020ebdffd74cb3b056fe375647a1a5","3c923b90a5bf5e6196f106c5545685ab0560bab0021e427d62765adef7a308e9","21b736192b1562ac2637d8a54b18be10a151f5f2e1b489cfe9b52c782f2b2b64","09eef3b84d5d7f3f489379199246e5c3e2acb6d51f882a4449e87b93c75525b1","cac06c09eab9366d407bee9f48afba3f5fb6cc374bcc12f6ae8242d1a678e1d8","302e04f641dc9d0dd52e3652f9aaf8bce77b80153df21d5a41e8869e1e93f641","69f0d00f706b24eec843f6b50b6a42efff02dfb0de1b828a74fc42696f00d46c","df72905e3f089122e249fc462697e13945ac4bbe0c12c5f20b37518bcbf2af5d","6838bde789145e3813771d734e8ccf5a025d87c9578ef1402b5f8fb50554b7f9","366bda9a32871f1327ea4e9c285726a4328d9d81e206966d8ba31abd66dcd347","9c846f46291c73a8849c57adbdbfeb76465bf6517b7ffad19a01acda0c5d68da","1bc3219dd1c81cdfca679395e239d79fc9c93cec821ae514d880f9ecf894dec5","7114f6922dc85d71c9e2198d292405fcd7db77194bf75658b1246e76128c51e4","cceaad5da041e389691e63293452e6f250729b08bf60f167e447b972d64026f4","5d39f58798099b8c405f0e59b0ba00af7fa218451f19998067f5b4f629123273","cccef834fce9f394c954f30586468598a1b01ab9df18e4a654b6d88801b42dff","92c9a85d87c985361ca2604cf479c944912d1e344dfc733cfc9f812ac6ade09e","a26f3842bd23ef9da6c21e47514fcdced126ec856888f29fd45407c6ee4e3b00","93e27a89a60f3e1578a8e0baaa92dab9e72a35ba280ee60bedc042749d208e6e","315be18a66de43d63b703d4b58aa8bac32f07eab0496cf0d2efc477bc087b151","b9047ef3e4ea3e1754b493216d4c28d46c3f7453d8454ad96b2c3b30ffedb99c","d1ed3e66a70be5efa6f4c3d43bc4bb76799cd5233f9df79ec8a9dfc15054d10a","221502f6ee6426ad108ca2a465e2b0bd838ebad2df1943446a33f42630297bd6",{"version":"b4cd656db9b65fff477f65dbda00a5de4e2e765375316abd0c3ffd1282664ccc","affectsGlobalScope":true},"a849a53cf1d5a35db4ae42e8bef37b82e43c58a805356f45d1f08de2ab905ccc",{"version":"bca898ed5e156c4e4a272e3f4f39a576fe78ffd474f23857b1146279949e1460","affectsGlobalScope":true},"894b224dff82b86c6475f29f95ffc918406b7f47c582b65246e1b21bec528a36","f507080866ab2ca83f3ec6fb112e62071f6753c5efcf77148bb7c3770a6c6ff4","9711fe25c99c988710fac29f1c9096a5d8e2c6119b721b4c603293eb8d0e914c","ff2205b3703c3f309da4b451dc609d63ed04bed75161aed6a87e5d6a64efd78b","6661ecd57a976fb80e99043330951945ae7612d86adb4f60447f53a96c680954","7f1d9fdd4faec785ec153d6a39c266b631c4358d02ad9568fa711210297f56f7","d3fe5c13ec7a1e74772231c13b8fd93130066116f12a048fa8111d6195b55ea7","844dc45243c694998b1e3ec2039e513c260a3f62fa91074cf170d96eb6ff3da0","726e78cd337e0b608d2a07fb10dac1318c16d05041297c1c6c7a755d54ec97ee","67902c5b0de78155a4b26372c11fc3064333401fdb70e1913e11d2271fc2d17e","cbf88540ebc08e5ed1b2ae6fccf8d705ec16d8852afcaa63a59578d1f91ea8ed","cbf88540ebc08e5ed1b2ae6fccf8d705ec16d8852afcaa63a59578d1f91ea8ed","5ed2c7c37d9717de11a92b0cfeb00a4894a7418529370183825756738da80aef","778e0507c0d649f6ad2fa9e1f4ca61c8a429bcc104672a6449d1c782918b3b92","b33ff6be332b48bb491e36e7bd00df6b2e8de635da18d2e82cbcb6124bcf66b7","ee6570614688062fa0bb635c8abbb7a4dc3d6968d7b66f8b59254b2a1afb360b",{"version":"74cd3abdd5e3b3167bd3d4fc3bff7321f3bb73b8182adcde5c02858bbf171f47","signature":"4005d469150f4cd3aa91cb9ceed4594265ab7f184ceea08c099ae1936e97d6a8"},{"version":"bcb04b07bee1ba338a029d6eb49a867fe33dde03873fca63fa3f686d308cfc62","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"abe303b8470070dbb6bee4f634fcf74e461d2d17bd03500b3c43d899a7b80994","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"eb7b343af6a2388692abaa37a63df71b1b7ae6178abc72545bc467b43b3a655b","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"23e8380caaa9d2c116d384f1d317beaa9ac135e2657174685061f707e2f88651","signature":"c7e7cd987f53b970b41138fcb72f573eb535c3ce421759c03ff03fa7f8959eca"},{"version":"dee08f139a611c5a340b86869f46869bd00977f28e0dc905a7cbad5c972f0a9a","signature":"149f5e6cb96c078ef427d1a78daf410759e16041c3f446113371d82ae4dcff9f"},{"version":"ef95ee96d062eceef0095f798994b8c102ca05ac034b5157d66fdc06bbf7cb15","signature":"af47c81be02d7e0b0a52b96e1fd048d30892442d8edfb8060fe107387f7dfc5d"},{"version":"47c538fbdc5ccb44c6fd915d55705fc2658e1e5e2cf4ed8ecc5566bb3c629fba","signature":"0bfb8452643f092f8df57bc9f6027ff77472519d53f397632909ced05322c9bb"},{"version":"721faf7d076e40de8ca22a8be1af76dcba4d05f5de8ca919df1f7b480a80d85a","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"15cc0be6a600032e7ac440b428bd5388003976ff65b3da9948e18188153d0af7","signature":"4190a5b3e3a6e757122fa9641ea6e46e546e569f8c7b846b647ffdce980a7e96"},"07ab851eeafb3b4fc94093774bbce48f6ef11ca7cb7f4d1fce90996a94cc9d20",{"version":"3eccc8eb531edcfe4550a025b5a8e68c4e558f4ac9779af6a258c7e400584a56","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","6b729c3274f6d4738fe470109bcb08b09ef98a6b356c01da3ca8dc0996b4458b","1344f614adcf534756712e9a672523bb8c814e5fbb8f8464007190a553561c03",{"version":"0a72ad57af8dae018dbef944b54c047fcf302ab8a593c5cc58c601ef756abe0e","signature":"0fdb785666f5fc11a226eca9793cc9251501c700ab57adab00275ed2336ca836"},{"version":"5b4e6762925be7a91fc9e3d25c9fb5039dae2ab3e2a96b1f566f620c4817a3f7","signature":"7776770fdf3d1025cd314b78c7cd9ad34c94460aac0523d8e02acdabc1b92d2b"},{"version":"5094824a5d65332a364308a54d6410617d20ecb699a3bae480bdf31da23db2d7","signature":"6c7951dc44103b668c4023d0e15e5d67d8d7bde0157c85e23e2dd42a0286bd23"},{"version":"1f3d116e8e56d9436de26023afe59ea5fa454ec3739f7d8a657ab85f937e3193","signature":"b6ac4cfd55355af05387bce2e894e2f3b00ea9d8674670a6b30eef564d160da0"},{"version":"b0ba910e8ed5685e0d9ea4c7f4a687671c1989d9985530da500a78d7ebe9a910","signature":"d20fe4376cf65817d5f7e8475aeeacd9611503aec33a6a1b5c207000d52a06bd"},"9b0e0e8756131143065a76f2e5bbf2a15b1f53e6e40f5aa464c7b1b60dda5ea7",{"version":"67a05eef301142343897ac51e0edfdb6809966440f54b76d0424f1e23dea96e9","signature":"56375539bcf9744d116081f3389da86ef1cad0a5a2d5c6902bb3b1795907c516"},{"version":"a86842ec75a9465a9f8d95f92714bef43727318c9c2a703aea15d212d16e0b92","signature":"29022247bf8dce1d033039525abc64466445b2482518beab2be9dc509d605de5"},{"version":"49b8d12940c55585e3593f134cdfdd93b65ad773e02880672e05e78dc807b438","signature":"f0a2a5e084cda1fcdd21e31d25ca8b69615dbc985b8e3db9659539f587bed148"},"55446c61892bdc1681c725b5989041492da8fad5f251748d571d26060be0770a",{"version":"d63130c545e7e43763c7863dba67b77e13fc484241817c917b60fb78452d2179","signature":"355893155b6e80bb1d801e19ecf8b00c1c837681b0876f0571afb9a12325e43f"},{"version":"c3fe2c171cd463d2655a7402da543ef5988aa816714ba5f6b71ffb506f4658d0","signature":"f4d0c8ca6ef2fb3e132b369af7032592109020c910ebe53a3513d4b35357f1ef"},{"version":"6e9d92d371c1637e60cfe995680bb7938fb4d7614ecbe3cef8eb1969435c7c98","signature":"52e8767d17103237782a41096f5b45869ce53b6792ab8c4f999f397728383e9c"},{"version":"5ac2ab4fd6d35bda760cd9f538954cacf07bedcb27b8a8c9ee93659fd7da75a0","signature":"7c1bbaef8acc374bb974dc2808ea4cd903cb2cd94a3c5da593de4a94645bec5b"},{"version":"7a2005e41e876b1cf875c76a8f4b17df35194d9a915f32d3ade2c18de0eeec6e","signature":"aef270720c7caad49df8bc8f261987420bd8b43495b4e1c0d8957ff9d1ddf912"},{"version":"6a3b4689f4e4a8255cad0235e88239bc1ebd7e7e392e3a872640d3af4aba088e","signature":"dc4c611413e4e9921d257ad64a5cb0b66a0010d2998ca7503896ea5fda5481af"},{"version":"3cba20ccce8ecf867f078b0e1fcddced67a4b309e27f42759ae5d0516d1dbe04","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},{"version":"35eefd49534ba56fc0ffe216e44f956007020f03e590d48d733791ed88b0a58d","signature":"44628fb3346124d4d0bc67756af38b85e513430663d07a8dfdef3aa460fcfbed"},"106d10633b752c5ef983ebdfa5460aec9728431c49dbfecbb7e49a9b8e5ac111","93721bf674bd68e23139150aa18b9afb9621add9028f49aad688a160341713dc","8ffa81d32c2f952c38ef879d2a2db0072990a3af864eec40e5ea411fbac55af6",{"version":"441ccdb4f6372054f4efe7cbcb09b4a183f014cecbd1bdd02b27ff62a1288684","signature":"3dabddced4379d0e4cf58b6780b42c3234b5d4d84e77803cd9d7e61895b52f19"},{"version":"e369cd1b12ef5c7d509022979e520a7a1738222cd1c7cf91cf0fcd26afa6888b","signature":"d6e6b70824f82183d421664cb91d78991f68eae8848c50d989286f597f29feb9"},"b9355a46f9e77ce5a6fd8a70f860f23a015990a75226cb64cec96ff39bc79535",{"version":"c698f99442a73ecfabfc04383e427997afe1490dd96d66a823d28008b2fd47dd","signature":"3dabddced4379d0e4cf58b6780b42c3234b5d4d84e77803cd9d7e61895b52f19"},{"version":"2c2fa6adf2c92ebac85f7f4c6fedc3efa700daddf658ccbb6d861c167ce9cccb","signature":"de1db07d1bebf99e6d3709d9c2c67612f7d73d7fc2a6ea39d33c53d42c73c8cd"},"6a9e3bb8ca9146ff52d5b9458521802017982cfd530bb719397b1d1dc263fb3f","5563108fbd431dd0a90cfc87d9f1ee550680df94df33e4690fa6acfc0b6b8757","8bffa969fa7e6e1d7f194c14f2f324265532a8fa6c046b3560cf9ee2c638fec1","8f44a78d1ad769dbc5f2668f2b7a02b43404724849e7afe0cda188957d47ccd0","485c95ea74479320db266f03fa702ad9b0823b8154a0a2b81e5a4c633bf9ac4a","efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"16d74fe4d8e183344d3beb15d48b123c5980ff32ff0cc8c3b96614ddcdf9b239","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"7ae9dc7dbb58cd843065639707815df85c044babaa0947116f97bdb824d07204","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","f1ace2d2f98429e007d017c7a445efad2aaebf8233135abdb2c88b8c0fef91ab","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea",{"version":"ae900471ea16b852ce62c0cd17477ca332af7004045242d41b01a505c678950a","affectsGlobalScope":true},"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","80d02a787d4aa00e2e22dcf3ea9d40390f38dfb0c3497bc6855978974a63e20c","cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87",{"version":"55bbfa2fcb7692e366773b23a0338463fc9254301414f861a3ae46ff000b5783","affectsGlobalScope":true},"858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","5e92a2e8ba5cbcdfd9e51428f94f7bd0ab6e45c9805b1c9552b64abaffad3ce3","44fe135be91bc8edc495350f79cd7a2e5a8b7a7108b10b2599a321b9248657dc","1d51250438f2071d2803053d9aec7973ef22dfffd80685a9ec5fb3fa082f4347","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","edf7cf322a3f3e6ebca77217a96ed4480f5a7d8d0084f8b82f1c281c92780f3a","e97321edbef59b6f68839bcdfd5ae1949fe80d554d2546e35484a8d044a04444","96aed8ec4d342ec6ac69f0dcdfb064fd17b10cb13825580451c2cebbd556e965","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","28ffc4e76ad54f4b34933d78ff3f95b763accf074e8630a6d926f3fd5bbd8908","304af95fcace2300674c969700b39bc0ee05be536880daa844c64dc8f90ef482","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","670ddaf1f1b881abaa1cc28236430d86b691affbeaefd66b3ee1db31fdfb8dba","77926a706478940016e826b162f95f8e4077b1ad3184b2592dc03bd8b33e0384","82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","b47803e8337ad5fb0b7f7edc2f22887b0e5e847c61ed2ea8bac4454d2c35fe56","d294c49571f1b75f75479227e33d6f2fd2326302bce5f9f4dff0c719819dbfdc",{"version":"c513a7b0cb88ad501839b81cde882e744d284272a825c65a481a6435a2db5667","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},"91a13ac688071c6d324d59569d8b6173441df1c04df2fed58a225d5a37554dde","6a8373d630ef99295e3d79e3d41759745d91c0f682424be3d60159274b494c86","ab25fe47299beb26f3a68b97c9b508da1bf761ce5722ef9424044a08c86733d1","13dfd22af7049998c31ba7320087ec2068a4f50712a9ecde67b85868a5c63c72","16c361605a88a341f19d086959923ffb3ade54999b0e5c1db6f4dd1604144b79",{"version":"512e1e49bb8e0947cee9d5e089c04a28a7932217057c628a84cb3b3cacac3cc6","signature":"b410d76cb499efc6d7ac7348af586bb0af99f6c6e650f855b1d58c063402fdaf"},{"version":"d1bbce2be0b099e64c11b60bfb57a88608932e5050940481cb12b80600ac7db2","signature":"51e89d5f3ce0920cf6eaf1b62168e575881aa36ccfadf9893f29e97699409960"},{"version":"9fafecd653c58ccedbc4f7b34fc5f9abb98e1fd5ae995fc3ac3639cfefb9be40","signature":"4179d7c505f28a0022dfade3359f61036b478df1ef0631e0775a4bb75740512a"},{"version":"e762642ccbda12df1b3dda919df072b50cb8743836a1fbf39b00b0036b665427","signature":"0bfde0c7a2944547bfe25ab0eca35a1316c30d8b55bc59f4b1960ec972aa7cdc"},{"version":"28cbb0f68a8edaad960272a004cc895e58b68158c4a1b7f1929694a2d5bc8aca","signature":"c62b20a9452879d791dd019667469994c6843ff5a56936696801933c89947a21"},{"version":"b0df688731cf4bfa701e56053392227a09a7b18b207527c454031e2198e295ea","signature":"cba3f131979017671ed9d34181bb6dc288617af12aa2971d1897a5b4900ec8d2"},{"version":"524d5a59d71edb303e121bf163d61a7f076e25be959c474344e0b5b8388044cb","signature":"24fe331e9df1202bfaf0320fa1c1b866949dc6557c13783ae701ade0b745be1f"},{"version":"c81cd62dfb830697f26f70ed16a2734ceff92288e7f0e60dfd124568671282f1","signature":"d49a8eb3cb5a522b3cb7e684589138a12b46075479cd688dc770ad8d09b62ac0"},"338ffc09a052c2296c8d8ac2dc2237be5bb85dffb28f110be640b4dd4d3ecf2d","1ed985d3f6b3b2608bbdc4bf4d0c09a6e351cbf9ae429eb3b7bdebe4944b2fa4","7e875aebefb8528398930da830e00ebeeae443aa01bb4c7c7059e77dc35168e2","9b8d54263cb56a66421cb3723f6997a10d0eb4733d3368ce54e10e57f72aaedb","a25c881c2c683a04a856cd3f8f9ec1afccf07f6e4615bb246cad446237b95bee","33a1d9a719f23bebc3f35dfe515e3ac2612795330e37b26d84e1cd1f2679400b",{"version":"5b6bb49625a66a15611b433c0d470395c0f7f8924a0b01aef364525b365b1bf2","signature":"20791db0424a87512ad9fbb1f7e90ad3dde0cbc95ed0ab703770e6dfd950d9e5"},"a8cd7ae2a469aae44de9b3dba3271c4e4f35da6f0d88c84994f5677e42752655",{"version":"6d3293380654981295c421815f527e56deb6a04a0465eeda84f3c958743d8919","signature":"241da0d2ab3e33c2c826581e1b96e0cb0bbcba93df4a2b13cfdf917a332435f7"},{"version":"8e65635a64be2c57f32734284a018c6167cc594cae89f2a709fa4d5089fca23d","signature":"d5d722a336189be9f101559ace973522805864c92de50a7b21015622f94b455e"},{"version":"bd6998dcff920a2f1c1911812fd975014c00d9858fc958bc6744ff38f1e34357","signature":"44b404fc0b11828310b77aa3e1913ccb5f65bbf6341ead562de641c10627d0d9"},{"version":"fc826e84b2ea407985485e7b63388f060d725c7c861701104d6a737d198a93cf","signature":"54e16b22f293c81e3522bcc79502d6eb508ce002de3f7fa13e961109abfd4942"},"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","446b5dbbcbd8b9b1676f0ed77cb6bcd0d3adec82feddfd2f9d99ce9174126bd3","1af1f2c02132bafa25c4c4b7c415e0a59ba959d6db6bd1800a43fb5d943e3f77","6ed78c0dd85bba4f0f286f8dea1bf8a65632cf671133f621125e34f5d63c57b5","8c50d5e8aaae8af1362963b1bdebdab08e4749bfb833c02e0ae9c20dd8419411","8840ac63b448062ed3c171c343493b988cbba758d3a4625f99052eb3a22a7fb9","d1fa26fa13ee8d9fffffce8e839feddc77d863597f2ac18d208c6966b3314f57","01e12c80ec3b6e60769389683fb87c47535a34a038977cd4ff9486c061a3a53d","a1b8d849266b3da0edb3705570fc7b34bd53c788afbd9d981fdcc44e73e89757","32b41b7a40546ed6eb38c7e51c721d006129cdf3bd9433149e4f9c5a0239638a","5143ac65b70252c4dce46785efdd41edf551abac29552bff7d2e3c559bd44c8b","c4115f1e5c67644a394ae1aa1439d6dc8fb08e9bb6a58cfd42d64b467f418f05","614eebb8e3a89f0b7445e23327bdc37dc426fd870a3b6b96e0de774869f19395","ab4267d371387f8be164f1743a5d2c844b8ec5b5fbefa1d9674eee34904eb221","e2dbbc9fac1688b3ca7a7a2fb98649b58ecc017576c7d745e10b27d7fbdb1fc3","69b96da62577eab48668dd4cbe9567f6f94f157c05507c6da7a8ea0bd9da63a2","3692f683fb4f3ec5b0eba15431cd90e37e891702e21ab1387461dbe89252c07c","bae0af9b71bebd58beeb607e048fa06ff5a976e0dd757f346f242cb50b5f4f13","e8951674626aedee6be73ff6bd659945032655453e8877fb484931f2254007cc","6b1a03729280176509798e8b295ae9abcf4fa71a58e7187ed9f10379d405840e","830e13e8e62f8bfcb291edaecb85641fe4dfe9608b3a0c0f8759c3ac966e95f4","53d7651005902b904b28ff9d97dac4061d5a6eadce2a2b96731e64168e9313be","f89599bbfa52914cc6ea40b837871a3cea4b86fb841fa05df1ea8aba868dc074","9533ab81da567cbf24762de21a1d41ce9fa41eb1f3cf5b906967c907974f0ee9","84fe919f192f518f05f0ddcc91b1b93b01eca8b9a9c791f502c93a82a2bcfce0","edb778e757329c6966494edab61f8ecfd2b747ef143da47bf23af148a465aeff","dd896a01076bff523df123124d67f4e6bfb29da9cb87c17ed2fddaed547bd888","e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","a598dc895431672aa781c14e7a2f898e26730ce06e9cc5009d39fe103b950061","13d6ded2bd2b0910e09aca1f2378fcf8b6861eb672c559655368a98ab81dc860","985d310b29f50ce5d4b4666cf2e5a06e841f3e37d1d507bd14186c78649aa3dd","ddc04c65d7282d24e7341eb1e198729998710b40bd2ef087ec42c8eb4aadb663","61937e4027635e7f12746b58d1e3bb7145114697a555bfe912aca9bc34415367","1ab840e4672a64e3c705a9163142e2b79b898db88b3c18400e37dbe88a58fa60","48516730c1cf1b72cac2da04481983cfe61359101d8563314457ecb059b102a9","f1226c85c75dba57bf83b0df3fcf20af9c8d8a6f1043f33a637425bc41abda85","f2d80ce361931836b85db164e993b2770538c0ca2c13119dcbcdbc8962e2fdaf","a38fbe9176d15bbdfc75bec1e64c8adee2fdc1a3c9c65c1fb15d66ce764cc881","7a819c7133551418f5dcdbf7038879edcf2392baefde8296389f5c3c20cec2e7","a458446a6e4ef3db8be5f214f42490acd6d2bebc9c15c397077b0aae75da6a74","0413281c480cbe10fc6de715e912bf05688c53024884c57d0433981c06e5eb7d","6f27bc22042d5504aa2bf1ca4a0e4d415c96e69df45cf8f3e34d6794d8bd4618","0220ba3013de8eb3022af6c8881e48e5b9ea57fa5f045d4d40caa81cbab5c8b1","36c0840683680e9f4c2fc4157bbc8ff283cd147d729a27043a35238c39182530","5c5d901a999dfe64746ef4244618ae0628ac8afdb07975e3d5ed66e33c767ed0","85d08536e6cd9787f82261674e7d566421a84d286679db1503432a6ccf9e9625","113976386a1fd6065bb91eb0ec5958245c42548019f6da49f85bcbd50324cb8a","a1e9b1740facf44f7331b0f80223320656fce7a0781fee36fbd82e8fe73dcfec","1a46cc5a0c51fa06ed1acc1f9ee45e2ce889d4b3db45fae9068973461d3cf99c","33b8dcfdbd807bec327291afc1ef01ba79fa8d9ed1d9196701b549b257102c5b","447d006ae3eb00f96af15c77999273d2521d1b5b8744df62cd7c5e5e03973049","4c859bc41e4be5d0a51714c06a7f59cc9e4115c628d383aed57a592089d3fc54","c6658e3d10486947e1678aab34dab37183fd950bd17e1d0390dbc07faa5630c0","2261d69ccc41c056cbf5cc5674f1f931b6dfc57bae6eab762037b1821b7f92a3","46efaa5e9c4b1da7ce2f586b913db6144595cf927ffc6c8288ad1c76c6dec5ce","e05e23ad9282ace300cc99478ac578fb19f8b0d38f094378ef9208dc8ab66d28","573a3eda38e40e776cdae17c671cea3b58dfb19a1094831369cdf3feed84e746","9bbabb3c3efcb1e9ddf68fe90f695063ea43d0f0bc5baf28f9baca3633eeeb7a","eab4499baf0ff71ba110254dd694308e078544222dbf6ff60b9a68bac0592027","1d15d2f8888f3c02798ae4fe2fb8ad395bf4c5a4b84a16095c4c432cc78bc407","e54520d1663e6ac2fb38e157e23aa9b9616bd6a1ceb54a6b7a69f8ca892ac2e4","a7b1b8bb7b2b5a98057433bd52cb19ebbc411d7df10e8736946da5dad2d9600e","de9b48332e7d27cd5b2e39d0b6d52856da89923b3f8f3999d5bc72b2ec41c931","bbb4d08cd8441d17d28dbaa02fa9b15071ebb92649f7e7db196d1044cb1903e3","9ed08d9ed11d4f0cea817d3e6bd3065028e64e5be7e1974ffba0c87008f7d5ac","21fed563e62d6aab7c461407dbcee685b9e1b976c2aa41bd4dbebc0a1aab90a0","5d64102c5282174a0c61746fd6e593edaf45ca6f09cfc6908e4e96ed1a28772d","50939a03a6cb09ee9d3803053c034a564f15a2aa97f0210cdf34fd93fbab6efa","626c63121530f17f3c7d10e608e034a1f12c91012d8e6a4e0bdfa334c6efee13","0b38217d5c3a30483640ada208f6b5e469d6d66ac8380e80517e870ebbc7f8dc","8f016fe26950ee2d9f7167d35eb3bf882eaf94df817239b0c7e004fa1e63dd4b","7a00ad6a0f72353e2c94bef6e6b94345450980f44ef66893bfed6a84e43e00b4","bbad2d7fd3649826108302c952065b1914a886bedb94469e66d945f07b06ada5","f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","b7e708f140db732cc3fb369905dd2f472f8952635a3711a04a792d885d19c6a5","8b059dcecc0229f1390bbe27e321b843f02927538b1e0fb09ec149902fa53ce5","17d3f26684a88e7651e52ecce18b292bab01a9241670fadd6bb76910022fb492","b487d434cbc327e78a667d31b34ac001433ecd482e487557bc9c737d6f5a24fa","46e8d2193f476a7a7de3cdd24743a2eafd009175159fe8494f0e3001a0e681be","e924774b42ff4558194d6531a3c368aef7b257e52cf001f01f7eda4655d1a125","c93dceadb06e3cb565421474fa7feb4ce94592637df7c9d7034cb27644b2ca59","10f97da752d7aea1734a2098f7537fca63165dd48882ce3d08ef2aed4ac47667","60b93ce0381b11434394616a5db9762950a0501d748998c6932150bb249e0394","a4ead38d64e1720c52f26457738484a61cd50be51abfd2bfc234c951fb79d20c","1a82e5569808c2987a9d6882e5b910beacb0165b6d18656540170038d6b8661e","6b243d0f6cf1786f6e3b10a99db080a977cc27e6f49bcff2b6264cf0339063d5","ef12df927e5deeaa09efeaf9f79336fa33745a4b3d745a8a35f43ea587bbcf40","083609ca47c047c6802bd40e974346a9509ef28367bb07769dbcead77cc7359f","364918fa15f9021675fe091510ed8f1ef91d63be82ca07712c9f93b45c3e4a1f","3a2d62eeb42c8163cb300e447b124824ed0aaf1a504ae23ded431b7adb4a7fd8",{"version":"c9299d543e4f0d22d6326018526f44fab5b3dd7519ccc68204f53d7d3c03a42e","signature":"042cd1ece7b448c4c481dbe0cb9a6ff9ce9c36182970a79e4d3b0a224fdd3dfb"},{"version":"18828ee7877b1eb99d7712a843a6fc656850d8d672b4264993c356f8ef000190","signature":"970ff8e1c8512773a918e0cd4d13c646efc61b6c4674decb4ad2094de90a4e2e"},{"version":"1e644cd956cfb411a0c1729e7da1123138fcc384c73b25e52adad60a132a7487","signature":"07fa95e93a72d3e3aa736e757e02b77ff80621f3aa39065e74fb80b0efa2f919"},"90b76344e54df64f78af2a6af1c49e217b15d8db680d75cd5c7bf27cca32b5a7",{"version":"daf42d49ad73cbbf5a17c611aa1655f58de2f7163d6394bd8663d73247f40c3a","signature":"7edb79a7bba8b4498aab0cefd3b4610ead160f84542ac6cfe2a0e0449f7fc2d5"},{"version":"2299a4cafb9587922bdd6bad7e03226c696874054991f1bdae06043b933c860d","signature":"c6430c01d1257e13ce1ba2c0744986a7c2b426b4ff4b5aaf47cad442455392b6"},"22ad4b69094145363a7e06522ff46b02ce9fa19bb8543c510038dcf59cf734c8","392b2c8e8a0ad458ab1e589639571f681d3855f2ed877edb48c35bc2bb6d8c74","5bebdf73bc934679aa6fe7c93417f59405b6c509e32c68175030a440a8fd4bbe",{"version":"bca898ed5e156c4e4a272e3f4f39a576fe78ffd474f23857b1146279949e1460","affectsGlobalScope":true},"c83e65334a9dc08a338f994a34bd70328c626976881d71d6aaa8dc7d66b08d96","af653525be6dd6e067a631b379bc287004c5f2f132ad2d1e28c282824621737f",{"version":"0f699060a560e260b588e3d45931d26c6dc795335792eb80e528b9de28e5ddbe","affectsGlobalScope":true},"6551aedc5ccd64a70644837b0921d2588102662133b0e25d191f3d5cfeb628d3","3bc07e52057f5e74fc6f6b30e98c1ba65a7db9f874590d65e86d3f23b9c6d6bb","e2d29e47501add2c940d63cf7e1597445d9ec21e483755e99d96c72e29f06605",{"version":"3c64bde1067a0f2dd2619dbd7121e3c3d71a2c7aa31d17c52e5a960d65759095","affectsGlobalScope":true},{"version":"bb02440049be5a30a034f22e7b4906194d1ff5d68245b00ba9a39845e840746f","signature":"4f67e1875a09c8a7489a275520671371023acce1fa2830d9c7751a55e6ae8ea2"},{"version":"4025a454b1ca489b179ee8c684bdd70ff8c1967e382076ade53e7e4653e1daec","affectsGlobalScope":true},{"version":"c4baf2c38b00f29adfb4e60554de4152ebf4c17f3365c0f2ff34af7f3b35ef1d","affectsGlobalScope":true}],"root":[66,214,[226,238],240,[242,266],[268,270],[274,276],[278,283],285,[287,334],[338,342],349,350,[376,389],[391,419],[435,438],[449,464],[466,513],[515,534],723,[728,735],[738,742],[744,765],889,[895,902],[908,914],[1006,1014],1017,[1020,1023]],"options":{"allowImportingTsExtensions":true,"composite":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noUnusedLocals":true,"noUnusedParameters":true,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[387,388,504,507,733,756,757,758,764,765,1021,1025],[272,387,388,504,507,733,756,757,758,764,765,1021,1025],[271,272,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,271,387,388,504,507,733,756,757,758,764,765,1021,1025],[153,387,388,504,507,733,756,757,758,764,765,1021,1025],[144,153,387,388,504,507,733,756,757,758,764,765,1021,1025],[142,143,144,145,146,147,148,149,150,151,152,387,388,504,507,733,756,757,758,764,765,1021,1025],[158,387,388,504,507,733,756,757,758,764,765,1021,1025],[153,154,155,156,158,387,388,504,507,733,756,757,758,764,765,1021,1025],[153,154,155,156,157,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,158,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,158,159,160,387,388,504,507,733,756,757,758,764,765,1021,1025],[161,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,375,387,388,504,507,733,756,757,758,764,765,1021,1025],[375,387,388,504,507,733,756,757,758,764,765,1021,1025],[161,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,387,388,504,507,733,756,757,758,764,765,1021,1025],[364,375,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,161,352,354,359,360,361,363,364,367,369,370,371,372,374,387,388,504,507,733,756,757,758,764,765,1021,1025],[142,387,388,504,507,733,756,757,758,764,765,1021,1025],[141,387,388,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,765,903,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,903,904,905,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,903,1021,1025],[71,387,388,504,507,705,733,756,757,758,764,765,903,904,906,1021,1025],[215,216,217,387,388,504,507,733,756,757,758,764,765,1021,1025],[215,216,387,388,504,507,733,756,757,758,764,765,1021,1025],[215,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,539,733,756,757,758,764,765,1021,1025],[387,388,504,507,576,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,765,856,917,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,1021,1025],[387,388,420,422,423,424,425,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,423,424,425,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,421,422,423,424,425,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,424,425,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,425,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,426,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,427,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,428,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,427,429,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,427,428,430,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,427,428,429,431,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,427,428,429,430,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,432,504,507,733,756,757,758,764,765,1021,1025],[387,388,420,421,422,423,424,425,426,427,428,429,430,431,504,507,733,756,757,758,764,765,1021,1025],[387,388,447,504,507,733,756,757,758,764,765,1021,1025],[387,388,440,504,507,733,756,757,758,764,765,1021,1025],[387,388,439,441,443,444,448,504,507,733,756,757,758,764,765,1021,1025],[387,388,441,442,445,504,507,733,756,757,758,764,765,1021,1025],[387,388,439,442,445,504,507,733,756,757,758,764,765,1021,1025],[387,388,441,443,445,504,507,733,756,757,758,764,765,1021,1025],[387,388,439,440,442,443,444,445,446,504,507,733,756,757,758,764,765,1021,1025],[387,388,439,445,504,507,733,756,757,758,764,765,1021,1025],[387,388,441,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,765,769,1021,1025],[387,388,504,507,733,756,757,758,764,765,805,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,811,839,1021,1025],[387,388,504,507,733,756,757,758,764,765,807,818,819,826,836,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,807,808,818,826,1021,1025],[387,388,504,507,733,756,757,758,764,765,809,848,1021,1025],[387,388,504,507,733,756,757,758,764,765,810,811,819,827,1021,1025],[387,388,504,507,733,756,757,758,764,765,811,836,844,1021,1025],[387,388,504,507,733,756,757,758,764,765,812,814,818,826,1021,1025],[387,388,504,507,733,756,757,758,764,765,805,813,1021,1025],[387,388,504,507,733,756,757,758,764,765,814,815,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,1021,1025],[387,388,504,507,733,756,757,758,764,765,816,818,1021,1025],[387,388,504,507,733,756,757,758,764,765,805,818,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,819,820,836,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,819,820,833,836,839,1021,1025],[387,388,504,507,733,756,757,758,764,765,803,806,852,1021,1025],[387,388,504,507,733,756,757,758,764,765,814,818,821,826,836,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,819,821,822,826,836,844,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,821,823,836,844,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,769,770,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,824,1021,1025],[387,388,504,507,733,756,757,758,764,765,825,847,852,1021,1025],[387,388,504,507,733,756,757,758,764,765,814,818,826,836,1021,1025],[387,388,504,507,733,756,757,758,764,765,827,1021,1025],[387,388,504,507,733,756,757,758,764,765,828,1021,1025],[387,388,504,507,733,756,757,758,764,765,805,829,1021,1025],[387,388,504,507,733,756,757,758,764,765,830,846,852,1021,1025],[387,388,504,507,733,756,757,758,764,765,831,1021,1025],[387,388,504,507,733,756,757,758,764,765,832,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,833,834,1021,1025],[387,388,504,507,733,756,757,758,764,765,833,835,848,850,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,818,836,837,838,839,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,836,838,1021,1025],[387,388,504,507,733,756,757,758,764,765,836,837,1021,1025],[387,388,504,507,733,756,757,758,764,765,839,1021,1025],[387,388,504,507,733,756,757,758,764,765,840,1021,1025],[387,388,504,507,733,756,757,758,764,765,805,836,1021,1025],[387,388,504,507,733,756,757,758,764,765,818,842,843,1021,1025],[387,388,504,507,733,756,757,758,764,765,842,843,1021,1025],[387,388,504,507,733,756,757,758,764,765,811,826,836,844,1021,1025],[387,388,504,507,733,756,757,758,764,765,845,1021,1025],[387,388,504,507,733,756,757,758,764,765,826,846,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,821,832,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,811,848,1021,1025],[387,388,504,507,733,756,757,758,764,765,836,849,1021,1025],[387,388,504,507,733,756,757,758,764,765,825,850,1021,1025],[387,388,504,507,733,756,757,758,764,765,851,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,811,818,820,829,836,847,850,852,1021,1025],[387,388,504,507,733,756,757,758,764,765,836,853,1021,1025],[387,388,504,507,706,733,756,757,758,764,765,1021,1025],[69,387,388,504,507,705,733,756,757,758,764,765,1021,1025,1026],[387,388,504,507,706,733,756,757,758,764,765,1016,1021,1025],[67,68,69,70,387,388,504,507,733,756,757,758,764,765,1021,1025],[336,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,624,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,632,633,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,568,569,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,569,733,756,757,758,764,765,1021,1025],[387,388,504,507,565,733,756,757,758,764,765,1021,1025],[387,388,504,507,568,569,570,571,572,573,574,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,567,568,733,756,757,758,764,765,1021,1025],[387,388,504,507,577,733,756,757,758,764,765,1021,1025],[387,388,504,507,712,714,733,756,757,758,764,765,1021,1025],[387,388,504,507,707,711,733,756,757,758,764,765,1021,1025],[387,388,504,507,713,733,756,757,758,764,765,1021,1025],[69,387,388,504,507,704,705,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,592,647,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,733,756,757,758,764,765,1021,1025],[387,388,504,507,708,709,710,733,756,757,758,764,765,1021,1025],[387,388,504,507,708,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,569,570,642,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,569,642,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,642,647,650,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,642,647,648,733,756,757,758,764,765,1021,1025],[387,388,504,507,642,645,646,649,651,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,542,543,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,536,538,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,537,541,543,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,537,541,542,543,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,541,543,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,536,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,541,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,537,538,542,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,733,756,757,758,764,765,1021,1025],[387,388,504,507,542,733,756,757,758,764,765,1021,1025],[387,388,504,507,535,543,733,756,757,758,764,765,1021,1025],[387,388,504,507,581,582,583,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,621,622,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,577,589,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,597,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,589,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,577,589,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,577,589,593,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,620,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,577,583,733,756,757,758,764,765,1021,1025],[387,388,504,507,579,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,579,585,586,733,756,757,758,764,765,1021,1025],[387,388,504,507,577,580,581,582,733,756,757,758,764,765,1021,1025],[387,388,504,507,579,580,583,584,585,586,587,588,733,756,757,758,764,765,1021,1025],[387,388,504,507,583,733,756,757,758,764,765,1021,1025],[387,388,504,507,577,589,733,756,757,758,764,765,1021,1025],[387,388,504,507,566,733,756,757,758,764,765,1021,1025],[387,388,504,507,566,567,630,631,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,566,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,633,657,658,733,756,757,758,764,765,1021,1025],[387,388,504,507,540,733,756,757,758,764,765,1021,1025],[387,388,504,507,575,664,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,627,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,638,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,636,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,634,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,640,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,625,626,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,569,642,643,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,643,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,570,575,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,652,653,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,647,648,650,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,653,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,675,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,569,677,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,679,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,681,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,683,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,670,686,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,688,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,577,593,595,623,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,595,623,670,675,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,589,670,681,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,670,685,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,577,593,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,657,659,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,661,670,673,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,575,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,665,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,670,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,715,733,756,757,758,764,765,1021,1025],[387,388,504,507,628,629,635,637,639,641,644,654,655,656,670,671,673,674,676,678,680,682,684,687,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,716,717,718,719,720,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,661,670,672,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,663,733,756,757,758,764,765,1021,1025],[387,388,504,507,721,733,756,757,758,764,765,1021,1025],[387,388,504,507,575,733,756,757,758,764,765,1021,1025],[387,388,504,507,565,575,661,662,663,733,756,757,758,764,765,1021,1025],[387,388,504,507,565,575,665,733,756,757,758,764,765,1021,1025],[387,388,504,507,660,663,664,666,667,669,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,565,575,577,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,567,733,756,757,758,764,765,1021,1025],[387,388,504,507,667,668,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,765,768,887,1021,1025],[387,388,504,507,733,756,757,758,764,765,766,767,1021,1025],[387,388,504,507,733,756,757,758,764,765,766,1021,1025],[387,388,504,507,733,756,757,758,764,765,957,958,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,946,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,856,915,916,917,946,948,950,956,957,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,951,952,953,954,955,1021,1025],[387,388,504,507,733,756,757,758,764,765,951,952,1021,1025],[387,388,504,507,733,756,757,758,764,765,951,1021,1025],[387,388,504,507,733,756,757,758,764,765,919,920,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,918,919,921,946,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,917,918,945,946,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,921,944,946,948,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,916,917,918,921,944,946,947,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,921,944,948,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,917,918,946,948,949,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,921,944,948,950,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,918,946,948,950,964,965,989,990,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,946,948,950,964,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,918,946,948,950,964,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,918,946,948,950,963,965,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,922,923,943,1021,1025],[387,388,504,507,733,756,757,758,764,765,918,922,946,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,918,946,948,950,991,1021,1025],[387,388,504,507,733,756,757,758,764,765,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,918,944,946,948,950,991,1021,1025],[71,83,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,83,85,86,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,89,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,89,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,96,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,83,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,99,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,89,102,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,106,107,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,83,111,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,110,387,388,504,507,733,756,757,758,764,765,1021,1025],[111,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,111,387,388,504,507,733,756,757,758,764,765,1021,1025],[75,76,77,78,79,80,387,388,504,507,733,756,757,758,764,765,1021,1025],[74,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,89,119,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,83,89,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,83,87,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,733,756,757,758,764,765,1021,1025],[83,85,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,100,137,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,139,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,187,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,83,87,387,388,504,507,733,756,757,758,764,765,1021,1025],[186,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,119,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,85,106,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,120,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,121,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,74,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,210,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,74,82,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,187,188,189,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,87,387,388,504,507,733,756,757,758,764,765,1021,1025],[74,387,388,504,507,733,756,757,758,764,765,1021,1025],[185,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,185,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,185,387,388,504,507,733,756,757,758,764,765,1021,1025],[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,387,388,504,507,733,756,757,758,764,765,1021,1025],[174,185,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,161,162,163,165,170,171,173,174,177,179,180,181,182,184,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,892,1021,1025],[387,388,504,507,733,756,757,758,764,765,890,892,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,891,892,893,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,891,892,1021,1025],[71,387,388,504,507,733,756,757,758,764,765,891,1021,1025],[387,388,504,507,733,756,757,758,764,765,959,1004,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,946,948,950,959,991,995,997,1003,1021,1025],[218,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,218,222,223,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,218,224,387,388,504,507,733,756,757,758,764,765,1021,1025],[218,219,220,221,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,218,219,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,218,387,388,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,765,991,996,1021,1025],[387,388,504,507,733,756,757,758,764,765,916,918,946,948,950,963,991,995,1021,1025],[387,388,504,507,733,756,757,758,764,765,857,886,1021,1025],[387,388,504,507,733,756,757,758,764,765,780,784,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,780,836,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,775,1021,1025],[387,388,504,507,733,756,757,758,764,765,777,780,844,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,826,844,1021,1025],[387,388,504,507,733,756,757,758,764,765,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,775,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,777,780,826,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,772,773,776,779,806,818,836,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,772,778,1021,1025],[387,388,504,507,733,756,757,758,764,765,776,780,806,839,847,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,796,806,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,774,775,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,780,1021,1025],[387,388,504,507,733,756,757,758,764,765,774,775,776,777,778,779,780,781,782,784,785,786,787,788,789,790,791,792,793,794,795,797,798,799,800,801,802,1021,1025],[387,388,504,507,733,756,757,758,764,765,780,787,788,1021,1025],[387,388,504,507,733,756,757,758,764,765,778,780,788,789,1021,1025],[387,388,504,507,733,756,757,758,764,765,779,1021,1025],[387,388,504,507,733,756,757,758,764,765,772,775,780,1021,1025],[387,388,504,507,733,756,757,758,764,765,780,784,788,789,1021,1025],[387,388,504,507,733,756,757,758,764,765,784,1021,1025],[387,388,504,507,733,756,757,758,764,765,778,780,783,847,1021,1025],[387,388,504,507,733,756,757,758,764,765,772,777,778,780,784,787,1021,1025],[387,388,504,507,733,756,757,758,764,765,806,836,1021,1025],[387,388,504,507,733,756,757,758,764,765,775,780,796,806,852,855,1021,1025],[387,388,504,507,733,756,757,758,764,765,963,994,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,963,992,993,995,1021,1025],[387,388,504,507,733,756,757,758,764,765,998,1021,1025],[387,388,504,507,733,756,757,758,764,765,999,1000,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,999,1021,1025],[387,388,504,507,733,756,757,758,764,765,999,1001,1002,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,999,1001,1021,1025],[387,388,504,507,733,756,757,758,764,765,960,1021,1025],[387,388,504,507,733,756,757,758,764,765,962,1021,1025],[387,388,504,507,733,756,757,758,764,765,915,961,963,1021,1025],[387,388,504,507,733,756,757,758,764,765,1021,1024],[387,388,504,507,733,756,757,758,764,765,818,819,821,822,823,826,836,844,847,853,855,857,858,859,860,861,862,863,883,884,885,886,1021,1025],[387,388,504,507,733,756,757,758,764,765,859,860,861,862,1021,1025],[387,388,504,507,733,756,757,758,764,765,859,860,861,1021,1025],[387,388,504,507,733,756,757,758,764,765,879,1021,1025],[387,388,504,507,733,756,757,758,764,765,877,879,1021,1025],[387,388,504,507,733,756,757,758,764,765,868,876,877,878,880,1021,1025],[387,388,504,507,733,756,757,758,764,765,866,1021,1025],[387,388,504,507,733,756,757,758,764,765,869,874,879,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,865,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,869,870,873,874,875,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,869,870,871,873,874,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,866,867,868,869,870,874,875,876,878,879,880,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,864,866,867,868,869,870,871,873,874,875,876,877,878,879,880,881,1021,1025],[387,388,504,507,733,756,757,758,764,765,864,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,869,871,872,874,875,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,873,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,874,875,879,882,1021,1025],[387,388,504,507,733,756,757,758,764,765,867,877,1021,1025],[387,388,504,507,733,756,757,758,764,765,864,1021,1025],[387,388,504,507,733,756,757,758,764,765,859,1021,1025],[387,388,504,507,733,756,757,758,764,765,860,1021,1025],[387,388,504,507,733,756,757,758,764,765,861,885,1021,1025],[387,388,504,507,733,756,757,758,764,765,857,1021,1025],[72,213,276,332,342,349,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,276,385,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,341,343,344,345,346,347,348,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,286,340,341,342,377,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,286,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,276,340,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,340,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,349,381,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,332,340,342,349,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,332,335,337,338,339,340,342,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,340,376,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,375,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,286,332,333,334,341,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,276,341,378,379,380,382,383,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,332,339,341,342,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,276,349,350,384,387,388,504,507,733,756,757,758,764,765,1021,1025],[388,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,278,279,280,281,282,283,284,329,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,276,288,294,296,329,330,331,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,294,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,239,286,294,297,309,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,286,294,297,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,286,295,296,297,306,307,308,310,311,312,314,315,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,239,286,294,297,313,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,326,327,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,297,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,276,297,309,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,276,297,316,317,318,323,325,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,294,297,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,294,312,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,239,294,297,320,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,286,294,297,306,319,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,297,321,322,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,305,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,294,297,299,301,302,303,304,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,298,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,300,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,297,298,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,294,298,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,239,294,297,298,319,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,294,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,294,297,322,324,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,294,297,313,322,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,332,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,276,277,285,294,328,387,388,504,507,733,756,757,758,764,765,1021,1025],[387,504,507,733,756,757,758,764,765,1021,1025],[72,277,287,290,291,292,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,287,289,291,293,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,287,289,290,291,292,293,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,277,287,290,292,293,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,277,287,288,291,292,293,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,287,289,292,293,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,294,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,294,295,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,288,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,395,406,468,504,507,733,756,757,758,764,765,1021,1025],[71,72,276,387,388,395,406,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,462,469,470,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,463,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,390,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,395,406,463,464,466,467,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,395,472,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,471,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,224,226,227,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,228,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,227,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,232,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,227,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,235,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,214,226,227,228,229,230,231,232,233,234,236,237,238,244,246,247,248,250,251,252,256,257,258,259,260,261,262,263,264,265,269,270,274,275,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,225,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,274,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,273,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,254,255,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,253,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,252,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,247,248,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,247,252,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,247,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,213,263,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,263,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,266,268,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,251,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,263,267,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,239,240,245,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,240,243,244,249,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,240,244,387,388,504,507,733,756,757,758,764,765,1021,1025],[71,72,240,243,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,240,248,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,240,242,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,240,241,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,247,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,482,483,484,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,479,504,507,733,756,757,758,764,765,1021,1025],[72,73,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,477,478,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,462,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,397,502,504,507,733,756,757,758,764,765,1021,1025],[71,72,73,276,387,388,487,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,406,487,488,489,499,500,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,487,490,491,492,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,487,491,494,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,487,490,491,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,487,491,497,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,397,406,487,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,487,493,495,496,498,504,507,733,756,757,758,764,765,1021,1025],[72,73,213,387,388,487,504,507,733,756,757,758,764,765,1021,1025],[71,72,239,240,276,387,388,487,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,487,494,504,507,733,756,757,758,764,765,1021,1025],[71,72,239,276,387,388,487,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,239,276,387,388,487,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,397,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,486,501,504,507,733,756,757,758,764,765,1021,1025],[387,388,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,504,507,512,513,728,729,733,756,757,758,764,765,1021,1025],[72,73,213,387,388,504,507,512,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,504,507,565,575,578,623,721,722,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,514,534,723,724,725,726,727,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,512,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,508,509,510,511,733,756,757,758,764,765,1021,1025],[72,276,387,388,504,507,731,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,530,531,533,733,756,757,758,764,765,1021,1025],[72,73,213,276,387,388,504,507,516,733,756,757,758,764,765,1021,1025],[72,73,213,276,387,388,504,507,515,517,525,527,532,733,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,515,516,518,521,522,524,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,504,507,516,526,733,756,757,758,764,765,1021,1025],[72,213,387,388,504,507,516,530,531,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,733,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,515,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,528,529,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,520,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,519,521,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,520,523,733,756,757,758,764,765,1021,1025],[72,387,388,504,507,515,521,733,756,757,758,764,765,1021,1025],[71,72,276,387,388,504,507,512,534,730,733,756,757,758,764,765,1021,1025],[387,388,504,507,756,757,758,764,765,1021,1025],[71,72,213,387,388,504,507,565,575,623,721,722,733,748,756,757,758,764,765,1021,1025],[72,213,387,388,504,507,565,575,623,721,733,748,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,504,507,733,747,751,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,504,507,733,747,749,750,752,756,757,758,764,765,1021,1025],[72,276,387,388,504,507,733,744,754,756,757,758,764,765,1021,1025],[72,387,388,504,507,733,742,744,745,746,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,758,764,765,1021,1025],[72,213,276,387,388,504,507,733,741,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,733,737,743,745,747,756,757,758,764,765,1021,1025],[71,72,213,387,388,504,507,733,736,737,738,740,747,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,733,737,744,756,757,758,764,765,1021,1025],[71,72,387,388,504,507,733,739,756,757,758,764,765,1021,1025],[72,276,387,388,504,507,733,747,753,756,757,758,764,765,1021,1025],[387,388,504,507,733,757,758,764,765,1021,1025],[72,276,387,388,391,413,461,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,391,413,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,392,416,417,418,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,391,392,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,413,414,415,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,414,415,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,391,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,414,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,390,393,408,411,412,419,453,454,456,457,458,459,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,437,452,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,435,436,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,407,436,449,451,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,391,435,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,390,392,406,407,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,406,407,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,387,388,410,504,507,733,756,757,758,764,765,1021,1025],[72,213,276,387,388,390,410,411,455,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,409,410,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,392,407,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,409,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,337,387,388,391,392,406,407,410,411,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,390,391,409,410,411,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,391,411,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,435,449,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,435,438,450,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,448,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,391,433,434,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,460,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,764,765,1021,1025],[72,213,387,388,393,408,412,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,403,404,405,504,507,733,756,757,758,764,765,1021,1025],[72,276,387,388,504,507,733,756,757,758,762,764,765,1021,1025],[387,388,504,507,733,756,757,758,765,1021,1025],[71,72,387,388,402,504,507,733,756,757,758,764,765,1021,1025],[71,72,213,276,387,388,403,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,402,403,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,394,395,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,394,397,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,391,394,504,507,733,756,757,758,764,765,1021,1025],[71,72,387,388,401,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,394,396,398,399,401,504,507,733,756,757,758,764,765,1021,1025],[72,387,388,400,504,507,733,756,757,758,764,765,1021,1025],[387,388,504,507,733,756,757,758,764,1021,1025],[71,72,213,224,276,387,388,406,504,507,733,756,757,758,764,765,894,901,908,1009,1012,1013,1021,1025],[71,72,73,213,276,387,388,504,507,733,756,757,758,764,765,895,896,1021,1025],[72,213,387,388,504,507,733,756,757,758,764,765,1005,1021,1025],[71,72,213,224,387,388,504,507,733,756,757,758,764,765,894,1021,1025],[72,213,276,387,388,504,507,733,756,757,758,764,765,1010,1021,1025],[72,387,388,504,507,733,756,757,758,764,765,912,1021,1025],[71,72,224,387,388,504,507,733,756,757,758,764,765,1014,1016,1021,1025],[72,276,387,388,504,507,733,756,757,758,764,765,1014,1018,1019,1021,1025],[72,73,213,387,388,504,507,733,756,757,758,764,765,897,898,899,900,1021,1025],[72,213,276,387,388,504,507,733,756,757,758,764,765,897,898,900,902,910,911,1008,1021,1025],[71,72,73,213,239,276,387,388,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,504,507,733,756,757,758,764,765,908,909,1021,1025],[72,213,387,388,504,507,733,756,757,758,764,765,913,914,1007,1021,1025],[72,73,213,276,387,388,448,504,507,733,756,757,758,764,765,1021,1025],[72,213,387,388,504,507,733,756,757,758,764,765,912,1006,1021,1025],[71,72,213,276,387,388,504,507,733,756,757,758,764,765,897,898,899,908,1011,1021,1025],[72,224,387,388,462,504,507,733,756,757,758,764,765,1021,1025],[72,276,332,386,387,388,462,473,480,503,504,506,507,732,733,755,756,757,758,764,765,907,1021,1025],[387,388,504,507,733,756,757,758,764,765,1025],[72,387,388,504,507,733,756,757,758,764,765,887,888,1021,1025],[756,765,819,848,1021,1027,1028,1029],[272,387,388,504,507,733,756,757,758,765,1021,1025],[271,272,387,388,504,507,733,756,757,758,765,1021,1025],[71,271,387,388,504,507,733,756,757,758,765,1021,1025],[153,756,765,819,848,1021,1027,1028,1029],[144,153,756,765,819,848,1021,1027,1028,1029],[142,143,144,145,146,147,148,149,150,151,152,756,765,819,848,1021,1027,1028,1029],[158,756,765,819,848,1021,1027,1028,1029],[153,154,155,156,158,756,765,819,848,1021,1027,1028,1029],[153,154,155,156,157,756,765,819,848,1021,1027,1028,1029],[71,158,756,765,819,848,1021,1027,1028,1029],[71,158,159,160,756,765,819,848,1021,1027,1028,1029],[161,756,765,819,848,1021,1027,1028,1029],[71,756,765,819,848,1021,1027,1028,1029],[71,375,756,765,819,848,1021,1027,1028,1029],[375,756,765,819,848,1021,1027,1028,1029],[161,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,756,765,819,848,1021,1027,1028,1029],[364,375,756,765,819,848,1021,1027,1028,1029],[71,161,352,354,359,360,361,363,364,367,369,370,371,372,374,756,765,819,848,1021,1027,1028,1029],[142,756,765,819,848,1021,1027,1028,1029],[141,756,765,819,848,1021,1027,1028,1029],[387,388,507,733,756,757,758,765,903,1021,1030,1031],[71,387,388,507,733,756,757,758,765,903,904,905,1021,1030,1031],[71,387,388,507,733,756,757,758,765,903,1021,1030,1031],[71,387,388,507,733,756,757,758,765,1021,1030,1031],[71,387,388,507,705,733,756,757,758,765,903,904,906,1021,1030,1031],[215,216,217,756,765,819,848,1021,1027,1028,1029],[215,216,756,765,819,848,1021,1027,1028,1029],[215,756,765,819,848,1021,1027,1028,1029],[72,756,765,819,848,1021,1027,1028,1029],[539,756,765,819,848,1021,1027,1028,1029],[576,756,765,819,848,1021,1027,1028,1029],[756,765,819,848,856,917,1021,1027,1028,1029],[756,765,819,848,915,1021,1027,1028,1029],[420,422,423,424,425,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,423,424,425,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[421,422,423,424,425,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,424,425,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,425,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,426,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,427,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,426,428,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,426,427,429,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,426,427,428,430,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,426,427,428,429,431,432,756,765,819,848,1021,1027,1028,1029],[420,421,422,423,424,425,426,427,428,429,430,432,756,765,819,848,1021,1027,1028,1029],[432,756,765,819,848,1021,1027,1028,1029],[387,388,432,507,733,756,757,758,765,1021,1030,1031],[420,421,422,423,424,425,426,427,428,429,430,431,756,765,819,848,1021,1027,1028,1029],[447,756,765,819,848,1021,1027,1028,1029],[440,756,765,819,848,1021,1027,1028,1029],[439,441,443,444,448,756,765,819,848,1021,1027,1028,1029],[441,442,445,756,765,819,848,1021,1027,1028,1029],[439,442,445,756,765,819,848,1021,1027,1028,1029],[441,443,445,756,765,819,848,1021,1027,1028,1029],[439,440,442,443,444,445,446,756,765,819,848,1021,1027,1028,1029],[439,445,756,765,819,848,1021,1027,1028,1029],[441,756,765,819,848,1021,1027,1028,1029],[387,388,507,733,756,757,758,765,769,1021,1030,1031],[387,388,507,733,756,757,758,765,805,1021,1030,1031],[387,388,507,733,756,757,758,765,806,811,839,1021,1030,1031],[387,388,507,733,756,757,758,765,807,818,819,826,836,847,1021,1030,1031],[387,388,507,733,756,757,758,765,807,808,818,826,1021,1030,1031],[387,388,507,733,756,757,758,765,809,848,1021,1030,1031],[387,388,507,733,756,757,758,765,810,811,819,827,1021,1030,1031],[387,388,507,733,756,757,758,765,811,836,844,1021,1030,1031],[387,388,507,733,756,757,758,765,812,814,818,826,1021,1030,1031],[387,388,507,733,756,757,758,765,805,813,1021,1030,1031],[387,388,507,733,756,757,758,765,814,815,1021,1030,1031],[387,388,507,733,756,757,758,765,818,1021,1030,1031],[387,388,507,733,756,757,758,765,816,818,1021,1030,1031],[387,388,507,733,756,757,758,765,805,818,1021,1030,1031],[387,388,507,733,756,757,758,765,818,819,820,836,847,1021,1030,1031],[387,388,507,733,756,757,758,765,818,819,820,833,836,839,1021,1030,1031],[387,388,507,733,756,757,758,765,803,806,852,1021,1030,1031],[387,388,507,733,756,757,758,765,1021,1030,1031],[387,388,507,733,756,757,758,765,814,818,821,826,836,847,1021,1030,1031],[387,388,507,733,756,757,758,765,818,819,821,822,826,836,844,847,1021,1030,1031],[387,388,507,733,756,757,758,765,821,823,836,844,847,1021,1030,1031],[387,388,507,733,756,757,758,765,769,770,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,1021,1030,1031],[387,388,507,733,756,757,758,765,818,824,1021,1030,1031],[387,388,507,733,756,757,758,765,825,847,852,1021,1030,1031],[387,388,507,733,756,757,758,765,814,818,826,836,1021,1030,1031],[387,388,507,733,756,757,758,765,827,1021,1030,1031],[387,388,507,733,756,757,758,765,828,1021,1030,1031],[387,388,507,733,756,757,758,765,805,829,1021,1030,1031],[387,388,507,733,756,757,758,765,830,846,852,1021,1030,1031],[387,388,507,733,756,757,758,765,831,1021,1030,1031],[387,388,507,733,756,757,758,765,832,1021,1030,1031],[387,388,507,733,756,757,758,765,818,833,834,1021,1030,1031],[387,388,507,733,756,757,758,765,833,835,848,850,1021,1030,1031],[387,388,507,733,756,757,758,765,806,818,836,837,838,839,1021,1030,1031],[387,388,507,733,756,757,758,765,806,836,838,1021,1030,1031],[387,388,507,733,756,757,758,765,836,837,1021,1030,1031],[387,388,507,733,756,757,758,765,839,1021,1030,1031],[387,388,507,733,756,757,758,765,840,1021,1030,1031],[387,388,507,733,756,757,758,765,805,836,1021,1030,1031],[387,388,507,733,756,757,758,765,818,842,843,1021,1030,1031],[387,388,507,733,756,757,758,765,842,843,1021,1030,1031],[387,388,507,733,756,757,758,765,811,826,836,844,1021,1030,1031],[387,388,507,733,756,757,758,765,845,1021,1030,1031],[387,388,507,733,756,757,758,765,826,846,1021,1030,1031],[387,388,507,733,756,757,758,765,806,821,832,847,1021,1030,1031],[387,388,507,733,756,757,758,765,811,848,1021,1030,1031],[387,388,507,733,756,757,758,765,836,849,1021,1030,1031],[387,388,507,733,756,757,758,765,825,850,1021,1030,1031],[387,388,507,733,756,757,758,765,851,1021,1030,1031],[387,388,507,733,756,757,758,765,806,811,818,820,829,836,847,850,852,1021,1030,1031],[387,388,507,733,756,757,758,765,836,853,1021,1030,1031],[706,756,765,819,848,1021,1027,1028,1029],[69,705,756,765,819,848,1021,1026,1027,1028,1029],[706,756,765,819,848,1016,1021,1027,1028,1029],[67,68,69,70,756,765,819,848,1021,1027,1028,1029],[336,756,765,819,848,1021,1027,1028,1029],[71,624,756,765,819,848,1021,1027,1028,1029],[71,632,633,756,765,819,848,1021,1027,1028,1029],[71,568,569,756,765,819,848,1021,1027,1028,1029],[71,569,756,765,819,848,1021,1027,1028,1029],[565,756,765,819,848,1021,1027,1028,1029],[568,569,570,571,572,573,574,756,765,819,848,1021,1027,1028,1029],[71,565,567,568,756,765,819,848,1021,1027,1028,1029],[577,756,765,819,848,1021,1027,1028,1029],[712,714,756,765,819,848,1021,1027,1028,1029],[707,711,756,765,819,848,1021,1027,1028,1029],[713,756,765,819,848,1021,1027,1028,1029],[69,704,705,756,765,819,848,1021,1027,1028,1029],[71,565,592,647,756,765,819,848,1021,1027,1028,1029],[71,565,756,765,819,848,1021,1027,1028,1029],[708,709,710,756,765,819,848,1021,1027,1028,1029],[708,756,765,819,848,1021,1027,1028,1029],[71,569,570,642,756,765,819,848,1021,1027,1028,1029],[71,569,642,756,765,819,848,1021,1027,1028,1029],[71,642,647,650,756,765,819,848,1021,1027,1028,1029],[71,642,647,648,756,765,819,848,1021,1027,1028,1029],[642,645,646,649,651,756,765,819,848,1021,1027,1028,1029],[535,542,543,756,765,819,848,1021,1027,1028,1029],[535,536,538,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,756,765,819,848,1021,1027,1028,1029],[535,537,541,543,756,765,819,848,1021,1027,1028,1029],[535,537,541,542,543,756,765,819,848,1021,1027,1028,1029],[535,541,543,756,765,819,848,1021,1027,1028,1029],[535,536,756,765,819,848,1021,1027,1028,1029],[535,541,756,765,819,848,1021,1027,1028,1029],[535,537,538,542,756,765,819,848,1021,1027,1028,1029],[535,756,765,819,848,1021,1027,1028,1029],[542,756,765,819,848,1021,1027,1028,1029],[535,543,756,765,819,848,1021,1027,1028,1029],[581,582,583,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,621,622,756,765,819,848,1021,1027,1028,1029],[71,577,589,756,765,819,848,1021,1027,1028,1029],[71,589,756,765,819,848,1021,1027,1028,1029],[71,589,597,756,765,819,848,1021,1027,1028,1029],[71,565,589,756,765,819,848,1021,1027,1028,1029],[71,565,577,589,756,765,819,848,1021,1027,1028,1029],[71,577,589,593,756,765,819,848,1021,1027,1028,1029],[71,589,620,756,765,819,848,1021,1027,1028,1029],[71,577,583,756,765,819,848,1021,1027,1028,1029],[579,756,765,819,848,1021,1027,1028,1029],[71,579,585,586,756,765,819,848,1021,1027,1028,1029],[577,580,581,582,756,765,819,848,1021,1027,1028,1029],[579,580,583,584,585,586,587,588,756,765,819,848,1021,1027,1028,1029],[583,756,765,819,848,1021,1027,1028,1029],[577,589,756,765,819,848,1021,1027,1028,1029],[566,756,765,819,848,1021,1027,1028,1029],[566,567,630,631,756,765,819,848,1021,1027,1028,1029],[71,566,756,765,819,848,1021,1027,1028,1029],[71,633,657,658,756,765,819,848,1021,1027,1028,1029],[540,756,765,819,848,1021,1027,1028,1029],[575,664,756,765,819,848,1021,1027,1028,1029],[71,575,627,756,765,819,848,1021,1027,1028,1029],[71,638,756,765,819,848,1021,1027,1028,1029],[71,636,756,765,819,848,1021,1027,1028,1029],[71,634,756,765,819,848,1021,1027,1028,1029],[71,640,756,765,819,848,1021,1027,1028,1029],[71,565,575,625,626,756,765,819,848,1021,1027,1028,1029],[71,569,642,643,756,765,819,848,1021,1027,1028,1029],[71,575,643,756,765,819,848,1021,1027,1028,1029],[71,570,575,756,765,819,848,1021,1027,1028,1029],[71,652,653,756,765,819,848,1021,1027,1028,1029],[71,575,647,648,650,756,765,819,848,1021,1027,1028,1029],[71,653,756,765,819,848,1021,1027,1028,1029],[71,575,675,756,765,819,848,1021,1027,1028,1029],[71,569,677,756,765,819,848,1021,1027,1028,1029],[71,589,679,756,765,819,848,1021,1027,1028,1029],[71,575,681,756,765,819,848,1021,1027,1028,1029],[71,589,683,756,765,819,848,1021,1027,1028,1029],[71,575,670,686,756,765,819,848,1021,1027,1028,1029],[71,575,688,756,765,819,848,1021,1027,1028,1029],[71,565,575,577,593,595,623,670,756,765,819,848,1021,1027,1028,1029],[71,575,595,623,670,675,756,765,819,848,1021,1027,1028,1029],[71,589,670,756,765,819,848,1021,1027,1028,1029],[71,565,575,670,756,765,819,848,1021,1027,1028,1029],[71,589,670,681,756,765,819,848,1021,1027,1028,1029],[71,565,575,670,685,756,765,819,848,1021,1027,1028,1029],[71,565,575,577,593,670,756,765,819,848,1021,1027,1028,1029],[71,565,657,659,670,756,765,819,848,1021,1027,1028,1029],[71,565,575,661,670,673,756,765,819,848,1021,1027,1028,1029],[71,575,670,756,765,819,848,1021,1027,1028,1029],[71,756,765,819,848,1021,1027,1028,1029,1032],[71,670,756,765,819,848,1021,1027,1028,1029],[71,715,756,765,819,848,1021,1027,1028,1029],[628,629,635,637,639,641,644,654,655,656,670,671,673,674,676,678,680,682,684,687,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,716,717,718,719,720,756,765,819,848,1021,1027,1028,1029],[71,565,575,661,670,672,756,765,819,848,1021,1027,1028,1029],[71,663,756,765,819,848,1021,1027,1028,1029],[721,756,765,819,848,1021,1027,1028,1029],[575,756,765,819,848,1021,1027,1028,1029],[565,575,661,662,663,756,765,819,848,1021,1027,1028,1029],[565,575,756,765,819,848,1021,1027,1028,1029,1032],[660,663,664,666,667,669,756,765,819,848,1021,1027,1028,1029],[71,565,575,577,756,765,819,848,1021,1027,1028,1029],[71,567,756,765,819,848,1021,1027,1028,1029],[667,668,756,765,819,848,1021,1027,1028,1029],[756,765,819,848,887,1021,1027,1028,1029,1033],[387,388,507,733,756,757,758,765,766,767,1021,1030,1031],[387,388,507,733,756,757,758,765,766,1021,1030,1031],[756,765,819,848,957,958,1021,1027,1028,1029],[756,765,819,848,916,946,948,950,991,1021,1027,1028,1029],[756,765,819,848,856,915,916,917,946,948,950,956,957,991,1021,1027,1028,1029],[756,765,819,848,951,952,953,954,955,1021,1027,1028,1029],[756,765,819,848,951,952,1021,1027,1028,1029],[756,765,819,848,951,1021,1027,1028,1029],[756,765,819,848,919,920,1021,1027,1028,1029],[756,765,819,848,915,918,919,921,946,948,950,991,1021,1027,1028,1029],[756,765,819,848,916,917,918,945,946,948,950,991,1021,1027,1028,1029],[756,765,819,848,921,944,946,948,1021,1027,1028,1029],[756,765,819,848,915,916,917,918,921,944,946,947,948,950,991,1021,1027,1028,1029],[756,765,819,848,921,944,948,1021,1027,1028,1029],[756,765,819,848,916,917,918,946,948,949,950,991,1021,1027,1028,1029],[756,765,819,848,921,944,948,950,1021,1027,1028,1029],[756,765,819,848,916,918,946,948,950,964,965,989,990,991,1021,1027,1028,1029],[756,765,819,848,916,946,948,950,964,991,1021,1027,1028,1029],[756,765,819,848,916,918,946,948,950,964,991,1021,1027,1028,1029],[756,765,819,848,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,1021,1027,1028,1029],[756,765,819,848,916,918,946,948,950,963,965,991,1021,1027,1028,1029],[756,765,819,848,922,923,943,1021,1027,1028,1029],[756,765,819,848,918,922,946,948,950,991,1021,1027,1028,1029],[756,765,819,848,918,946,948,950,991,1021,1027,1028,1029],[756,765,819,848,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,1021,1027,1028,1029],[756,765,819,848,915,918,944,946,948,950,991,1021,1027,1028,1029],[71,83,756,765,819,848,1021,1027,1028,1029],[71,83,85,86,756,765,819,848,1021,1027,1028,1029],[71,83,387,388,504,507,733,756,757,758,765,1021,1025],[71,89,387,388,504,507,733,756,757,758,765,1021,1025],[71,89,756,765,819,848,1021,1027,1028,1029],[71,74,756,765,819,848,1021,1027,1028,1029],[71,74,89,756,765,819,848,1021,1027,1028,1029],[71,96,387,388,504,507,733,756,757,758,765,1021,1025],[71,74,83,756,765,819,848,1021,1027,1028,1029],[71,99,756,765,819,848,1021,1027,1028,1029],[71,89,102,387,388,504,507,733,756,757,758,765,1021,1025],[72,387,388,504,507,733,756,757,758,765,1021,1025],[71,72,106,107,756,765,819,848,1021,1027,1028,1029],[71,83,111,756,765,819,848,1021,1027,1028,1029],[71,72,110,756,765,819,848,1021,1027,1028,1029],[111,756,765,819,848,1021,1027,1028,1029],[71,111,756,765,819,848,1021,1027,1028,1029],[75,76,77,78,79,80,756,765,819,848,1021,1027,1028,1029],[74,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,387,388,504,507,733,756,757,758,765,1021,1025],[71,74,89,119,756,765,819,848,1021,1027,1028,1029],[71,83,89,387,388,504,507,733,756,757,758,765,1021,1025],[71,74,83,387,388,504,507,733,756,757,758,765,1021,1025],[71,74,83,87,387,388,504,507,733,756,757,758,765,1021,1025],[71,72,756,765,819,848,1021,1027,1028,1029],[71,74,387,388,504,507,733,756,757,758,765,1021,1025],[83,85,756,765,819,848,1021,1027,1028,1029],[71,100,137,756,765,819,848,1021,1027,1028,1029],[71,139,756,765,819,848,1021,1027,1028,1029],[71,187,756,765,819,848,1021,1027,1028,1029],[71,83,87,756,765,819,848,1021,1027,1028,1029],[186,756,765,819,848,1021,1027,1028,1029],[71,119,756,765,819,848,1021,1027,1028,1029],[71,85,106,756,765,819,848,1021,1027,1028,1029],[71,120,756,765,819,848,1021,1027,1028,1029],[71,121,756,765,819,848,1021,1027,1028,1029],[71,72,74,756,765,819,848,1021,1027,1028,1029],[71,74,210,756,765,819,848,1021,1027,1028,1029],[71,74,82,756,765,819,848,1021,1027,1028,1029],[71,187,188,189,756,765,819,848,1021,1027,1028,1029],[71,87,756,765,819,848,1021,1027,1028,1029],[71,387,388,504,507,733,756,757,758,765,1021,1025],[74,387,388,504,507,733,756,757,758,765,1021,1025],[185,756,765,819,848,1021,1027,1028,1029],[71,185,756,765,819,848,1021,1027,1028,1029],[71,72,185,756,765,819,848,1021,1027,1028,1029],[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,756,765,819,848,1021,1027,1028,1029],[174,185,756,765,819,848,1021,1027,1028,1029],[71,161,162,163,165,170,171,173,174,177,179,180,181,182,184,756,765,819,848,1021,1027,1028,1029],[71,72,387,388,504,507,733,756,757,758,765,1021,1025],[71,756,765,819,848,892,1021,1027,1028,1029],[756,765,819,848,890,892,1021,1027,1028,1029],[71,756,765,819,848,891,892,893,1021,1027,1028,1029],[71,756,765,819,848,891,892,1021,1027,1028,1029],[71,756,765,819,848,891,1021,1027,1028,1029],[756,765,819,848,959,1004,1021,1027,1028,1029],[756,765,819,848,916,946,948,950,959,991,995,997,1003,1021,1027,1028,1029],[218,756,765,819,848,1021,1027,1028,1029],[71,218,222,223,756,765,819,848,1021,1027,1028,1029],[71,218,224,756,765,819,848,1021,1027,1028,1029],[218,219,220,221,756,765,819,848,1021,1027,1028,1029],[71,218,219,756,765,819,848,1021,1027,1028,1029],[71,218,756,765,819,848,1021,1027,1028,1029],[756,765,819,848,991,996,1021,1027,1028,1029],[756,765,819,848,916,918,946,948,950,963,991,995,1021,1027,1028,1029],[387,388,504,507,733,756,757,758,765,857,886,1021,1025],[387,388,504,507,733,756,757,758,765,856,917,1021,1025],[387,388,507,733,756,757,758,765,780,784,847,1021,1030,1031],[387,388,507,733,756,757,758,765,780,836,847,1021,1030,1031],[387,388,507,733,756,757,758,765,775,1021,1030,1031],[387,388,507,733,756,757,758,765,777,780,844,847,1021,1030,1031],[387,388,507,733,756,757,758,765,826,844,1021,1030,1031],[387,388,507,733,756,757,758,765,855,1021,1030,1031],[387,388,507,733,756,757,758,765,775,855,1021,1030,1031],[387,388,507,733,756,757,758,765,777,780,826,847,1021,1030,1031],[387,388,507,733,756,757,758,765,772,773,776,779,806,818,836,847,1021,1030,1031],[387,388,507,733,756,757,758,765,772,778,1021,1030,1031],[387,388,507,733,756,757,758,765,776,780,806,839,847,855,1021,1030,1031],[387,388,507,733,756,757,758,765,806,855,1021,1030,1031],[387,388,507,733,756,757,758,765,796,806,855,1021,1030,1031],[387,388,507,733,756,757,758,765,774,775,855,1021,1030,1031],[387,388,507,733,756,757,758,765,780,1021,1030,1031],[387,388,507,733,756,757,758,765,774,775,776,777,778,779,780,781,782,784,785,786,787,788,789,790,791,792,793,794,795,797,798,799,800,801,802,1021,1030,1031],[387,388,507,733,756,757,758,765,780,787,788,1021,1030,1031],[387,388,507,733,756,757,758,765,778,780,788,789,1021,1030,1031],[387,388,507,733,756,757,758,765,779,1021,1030,1031],[387,388,507,733,756,757,758,765,772,775,780,1021,1030,1031],[387,388,507,733,756,757,758,765,780,784,788,789,1021,1030,1031],[387,388,507,733,756,757,758,765,784,1021,1030,1031],[387,388,507,733,756,757,758,765,778,780,783,847,1021,1030,1031],[387,388,507,733,756,757,758,765,772,777,778,780,784,787,1021,1030,1031],[387,388,507,733,756,757,758,765,806,836,1021,1030,1031],[387,388,507,733,756,757,758,765,775,780,796,806,852,855,1021,1030,1031],[756,765,819,848,963,994,1021,1027,1028,1029],[756,765,819,848,915,963,992,993,995,1021,1027,1028,1029],[756,765,819,848,998,1021,1027,1028,1029],[756,765,819,848,999,1000,1021,1027,1028,1029],[756,765,819,848,915,999,1021,1027,1028,1029],[756,765,819,848,999,1001,1002,1021,1027,1028,1029],[756,765,819,848,915,999,1001,1021,1027,1028,1029],[756,765,819,848,960,1021,1027,1028,1029],[756,765,819,848,962,1021,1027,1028,1029],[756,765,819,848,915,961,963,1021,1027,1028,1029],[387,388,504,507,733,756,757,758,765,1021,1024],[387,388,504,507,733,756,757,758,765,818,819,821,822,823,826,836,844,847,853,855,857,858,859,860,861,862,863,883,884,885,886,1021,1025],[387,388,504,507,733,756,757,758,765,859,860,861,862,1021,1025],[387,388,504,507,733,756,757,758,765,859,860,861,1021,1025],[387,388,504,507,733,756,757,758,765,879,1021,1025],[387,388,504,507,733,756,757,758,765,877,879,1021,1025],[387,388,504,507,733,756,757,758,765,868,876,877,878,880,1021,1025],[387,388,504,507,733,756,757,758,765,866,1021,1025],[387,388,504,507,733,756,757,758,765,869,874,879,882,1021,1025],[387,388,504,507,733,756,757,758,765,865,882,1021,1025],[387,388,504,507,733,756,757,758,765,869,870,873,874,875,882,1021,1025],[387,388,504,507,733,756,757,758,765,869,870,871,873,874,882,1021,1025],[387,388,504,507,733,756,757,758,765,866,867,868,869,870,874,875,876,878,879,880,882,1021,1025],[387,388,504,507,733,756,757,758,765,882,1021,1025],[387,388,504,507,733,756,757,758,765,864,866,867,868,869,870,871,873,874,875,876,877,878,879,880,881,1021,1025],[387,388,504,507,733,756,757,758,765,864,882,1021,1025],[387,388,504,507,733,756,757,758,765,869,871,872,874,875,882,1021,1025],[387,388,504,507,733,756,757,758,765,873,882,1021,1025],[387,388,504,507,733,756,757,758,765,874,875,879,882,1021,1025],[387,388,504,507,733,756,757,758,765,867,877,1021,1025],[387,388,504,507,733,756,757,758,765,864,1021,1025],[387,388,504,507,733,756,757,758,765,859,1021,1025],[387,388,504,507,733,756,757,758,765,860,1021,1025],[387,388,504,507,733,756,757,758,765,861,885,1021,1025],[756,765,819,848,857,1021,1027,1028,1029],[72],[276,385],[341],[72,1025],[72,332],[72,349],[71,72,332],[375],[71,72,213,332,341,1025],[72,341,382],[71,332,339,341,342],[72,276],[388,507,733,756,757,758,765,1021,1030,1031],[71,72],[72,329],[276,288,294,296,329,330,331],[332],[294],[72,294],[71,294],[72,213,1025],[72,327],[71,72,294],[71,332],[387,507,733,756,757,758,765,1021,1030,1031],[277,287,291,292],[287,289,291,293],[287,289,290,291,292,293],[287,290,292,293],[277,287,291,292,293],[292,293],[213],[72,213],[72,213,395],[71,72,213],[71,72,213,226],[72,213,228],[71],[214,226,227,228,229,230,231,232,233,234,236,237,238,244,246,247,248,250,251,252,256,257,258,259,260,261,262,263,264,265,269,270,274,275],[72,213,274],[71,272,273],[72,213,254],[72,247],[71,72,247],[71,247],[72,73,213],[71,72,73],[72,213,266],[72,213,251],[240,243],[71,240,243],[240],[247],[276,479],[72,239,240],[72,239],[72,213,239],[71,397],[387,388,507,733,756,757,758,765,1021,1025],[276],[387,388,733,756,757,758,765,1021,1030,1031],[72,512],[512],[508,509,510,511],[276,731],[515,530,531,533],[72,515],[515],[71,515],[387,388,507,756,757,758,765,1021,1030,1031],[276,744,754],[742,744,745,746],[387,388,507,733,756,758,765,1021,1030,1031],[71,737,744],[387,388,507,733,757,758,765,1021,1030,1031],[72,413],[72,414],[71,391],[71,72,409],[71,409],[71,72,411],[391],[387,388,507,733,756,757,765,1021,1030,1031],[72,213,408,412],[395],[397],[387,388,507,733,756,757,758,1021,1030,1031],[71,72,213,1025],[72,213,1010],[912],[72,213,912],[756,765,819,848,1027,1028,1029],[887]],"referencedMap":[[66,1],[271,2],[273,3],[272,4],[143,5],[144,5],[145,5],[146,6],[147,5],[148,6],[149,5],[150,5],[151,6],[152,6],[153,7],[154,8],[157,9],[155,8],[158,10],[159,11],[161,12],[160,13],[351,14],[352,15],[353,15],[354,15],[355,14],[356,14],[357,15],[358,15],[359,16],[360,16],[361,16],[362,16],[363,16],[364,16],[365,1],[366,15],[367,15],[368,14],[369,16],[370,15],[371,15],[374,17],[372,15],[373,18],[375,19],[156,1],[141,20],[142,21],[905,22],[906,23],[904,24],[903,14],[907,25],[215,1],[218,26],[217,27],[216,28],[766,29],[576,1],[540,30],[577,31],[539,1],[917,32],[856,1],[335,1],[916,33],[421,34],[422,35],[420,36],[423,37],[424,38],[425,39],[426,40],[427,41],[428,42],[429,43],[430,44],[431,45],[514,46],[433,46],[432,47],[743,46],[448,48],[441,49],[445,50],[443,51],[446,52],[444,53],[447,54],[442,1],[440,55],[439,56],[918,33],[769,57],[770,57],[805,58],[806,59],[807,60],[808,61],[809,62],[810,63],[811,64],[812,65],[813,66],[814,67],[815,67],[817,68],[816,69],[818,70],[819,71],[820,72],[804,73],[854,1],[821,74],[822,75],[823,76],[855,77],[824,78],[825,79],[826,80],[827,81],[828,82],[829,83],[830,84],[831,85],[832,86],[833,87],[834,87],[835,88],[836,89],[838,90],[837,91],[839,92],[840,93],[841,94],[842,95],[843,96],[844,97],[845,98],[846,99],[847,100],[848,101],[849,102],[850,103],[851,104],[852,105],[853,106],[69,1],[1016,107],[1015,108],[1018,109],[67,1],[71,110],[72,14],[68,1],[241,1],[70,1],[915,1],[337,111],[336,1],[625,112],[638,112],[636,112],[626,112],[634,113],[640,14],[624,1],[570,114],[574,115],[571,115],[572,115],[573,115],[568,116],[575,117],[569,118],[578,119],[715,120],[712,121],[713,121],[714,122],[707,107],[704,1],[706,123],[650,124],[648,124],[647,125],[711,126],[708,1],[710,127],[709,127],[646,128],[645,129],[651,130],[649,131],[652,132],[642,1],[661,1],[558,133],[565,134],[544,135],[546,135],[550,135],[552,135],[545,135],[551,135],[554,135],[553,135],[547,135],[557,135],[555,135],[556,136],[548,137],[549,137],[535,1],[537,138],[538,1],[542,139],[543,140],[536,1],[559,133],[561,141],[562,142],[560,133],[564,143],[563,141],[623,144],[590,145],[595,146],[596,146],[598,147],[599,146],[601,148],[602,148],[600,146],[603,149],[604,149],[619,146],[592,146],[593,145],[594,150],[609,146],[611,146],[610,146],[606,146],[608,146],[607,146],[612,146],[614,146],[613,146],[615,146],[617,146],[616,146],[591,145],[618,146],[621,151],[597,145],[580,1],[584,152],[585,153],[587,154],[579,125],[583,155],[589,156],[588,14],[586,157],[622,158],[620,1],[581,119],[582,119],[605,1],[631,159],[632,160],[567,161],[566,14],[630,46],[668,1],[659,162],[658,14],[657,14],[541,163],[662,164],[629,165],[628,165],[639,166],[637,167],[635,168],[641,169],[627,170],[644,171],[655,172],[643,173],[654,174],[653,175],[656,176],[690,177],[691,178],[694,179],[692,180],[693,181],[695,182],[696,183],[676,177],[678,178],[680,179],[682,180],[684,181],[687,182],[689,183],[675,184],[677,185],[679,186],[681,187],[683,188],[686,189],[688,190],[671,191],[674,192],[697,193],[698,194],[699,195],[700,195],[685,187],[672,1],[716,196],[721,197],[673,198],[701,14],[702,195],[703,14],[719,199],[720,1],[718,200],[717,200],[660,201],[664,202],[666,203],[670,204],[667,205],[663,206],[669,207],[665,1],[888,208],[768,209],[767,210],[277,1],[771,1],[286,1],[705,1],[863,1],[239,14],[736,1],[959,211],[957,212],[958,213],[956,214],[953,215],[954,1],[955,1],[951,1],[952,216],[73,14],[921,217],[920,218],[946,219],[945,220],[948,221],[947,222],[950,223],[949,224],[991,225],[965,226],[966,227],[967,227],[968,227],[969,227],[970,227],[971,227],[972,227],[973,227],[974,227],[975,227],[989,228],[976,227],[977,227],[978,227],[979,227],[980,227],[981,227],[982,227],[983,227],[985,227],[986,227],[984,227],[987,227],[988,227],[990,227],[964,229],[944,230],[924,231],[925,231],[926,231],[927,231],[928,231],[929,231],[930,232],[932,231],[931,231],[943,233],[933,231],[935,231],[934,231],[937,231],[936,231],[938,231],[939,231],[940,231],[941,231],[942,231],[923,231],[922,234],[919,1],[722,1],[84,235],[87,236],[88,235],[90,237],[91,237],[92,237],[93,237],[83,238],[94,235],[95,237],[96,239],[97,240],[98,241],[100,242],[101,14],[103,243],[104,243],[105,237],[102,29],[108,244],[109,235],[112,245],[113,235],[111,246],[110,247],[114,248],[115,14],[116,241],[117,235],[81,249],[75,14],[76,1],[77,1],[78,14],[80,1],[79,1],[118,235],[213,250],[120,251],[121,252],[119,241],[122,237],[123,235],[124,239],[125,241],[126,235],[127,253],[129,235],[130,235],[131,235],[132,235],[133,254],[134,235],[135,235],[136,237],[128,238],[86,255],[138,256],[140,257],[188,258],[189,259],[190,14],[191,14],[187,260],[192,258],[137,242],[193,14],[194,261],[99,235],[139,235],[195,235],[196,262],[197,235],[198,235],[199,235],[200,237],[201,235],[202,237],[203,235],[204,237],[205,235],[89,235],[206,263],[207,264],[208,265],[211,266],[209,267],[210,235],[212,268],[107,269],[74,14],[82,270],[186,271],[163,272],[164,272],[165,272],[166,14],[167,14],[168,273],[169,272],[170,271],[171,271],[162,271],[172,271],[173,271],[174,271],[175,1],[176,272],[177,272],[178,14],[179,271],[180,272],[181,272],[184,274],[182,272],[183,275],[185,276],[85,254],[106,14],[890,277],[891,278],[894,279],[893,280],[892,281],[1005,282],[1004,283],[223,284],[224,285],[1019,286],[222,287],[220,288],[219,289],[221,288],[633,1],[225,14],[737,1],[997,290],[996,291],[858,292],[857,32],[267,1],[993,1],[64,1],[65,1],[12,1],[13,1],[15,1],[14,1],[2,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[3,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[58,1],[56,1],[57,1],[59,1],[60,1],[10,1],[1,1],[11,1],[63,1],[62,1],[61,1],[787,293],[794,294],[786,293],[801,295],[778,296],[777,297],[800,298],[795,299],[798,300],[780,301],[779,302],[775,303],[774,304],[797,305],[776,306],[781,307],[782,1],[785,307],[772,1],[803,308],[802,307],[789,309],[790,310],[792,311],[788,312],[791,313],[796,298],[783,314],[784,315],[793,316],[773,317],[799,318],[995,319],[992,1],[994,320],[999,321],[998,33],[1001,322],[1000,323],[1003,324],[1002,325],[961,326],[960,33],[963,327],[962,328],[1025,329],[887,330],[884,331],[862,332],[880,333],[878,334],[879,335],[867,336],[868,334],[875,337],[866,338],[871,339],[881,1],[872,340],[877,341],[883,342],[882,343],[865,344],[873,345],[874,346],[869,347],[876,333],[870,348],[864,349],[860,350],[859,1],[861,351],[885,1],[1024,352],[886,353],[350,354],[386,355],[343,29],[349,356],[344,29],[345,29],[346,29],[347,29],[348,29],[338,357],[378,358],[333,359],[379,360],[380,361],[382,362],[381,363],[383,361],[334,359],[341,364],[377,365],[376,366],[342,367],[384,368],[340,369],[339,254],[385,370],[387,371],[279,254],[280,254],[281,254],[282,254],[283,254],[389,29],[285,372],[278,373],[284,29],[332,374],[309,375],[315,357],[307,376],[308,377],[310,378],[311,376],[312,379],[316,380],[314,381],[328,382],[317,383],[318,384],[326,385],[327,386],[298,387],[319,388],[321,389],[320,390],[323,391],[306,392],[305,393],[299,394],[301,395],[302,394],[303,396],[304,394],[300,397],[322,398],[313,399],[325,400],[324,401],[297,402],[329,403],[388,404],[287,29],[293,405],[292,406],[294,407],[291,408],[289,409],[290,410],[330,29],[295,411],[296,412],[331,413],[288,29],[465,14],[469,414],[470,415],[471,416],[463,375],[464,417],[466,418],[467,417],[468,419],[473,420],[472,421],[395,29],[214,422],[228,423],[229,424],[231,425],[230,387],[474,375],[233,426],[475,375],[232,427],[476,375],[234,29],[227,254],[236,428],[235,254],[237,375],[276,429],[226,430],[238,375],[275,431],[274,432],[256,433],[254,434],[253,435],[257,436],[258,437],[255,434],[252,438],[251,387],[259,373],[260,375],[261,375],[262,375],[264,439],[265,440],[269,441],[266,442],[268,443],[263,254],[270,387],[246,444],[250,445],[240,29],[245,446],[244,447],[249,448],[243,449],[242,450],[247,29],[248,451],[477,452],[485,453],[482,375],[483,375],[484,387],[480,454],[478,455],[479,456],[481,1],[486,457],[503,458],[488,459],[501,460],[493,461],[495,462],[496,463],[498,464],[489,465],[499,466],[500,467],[490,468],[505,387],[497,469],[491,470],[494,468],[492,471],[487,472],[502,473],[504,474],[397,29],[506,475],[507,476],[730,477],[724,29],[725,29],[726,29],[727,29],[513,478],[723,479],[728,480],[729,480],[508,481],[509,481],[512,482],[510,481],[511,481],[732,483],[534,484],[735,1],[517,485],[533,486],[525,487],[527,488],[532,489],[518,490],[734,29],[515,29],[516,491],[530,492],[528,493],[526,375],[529,29],[531,492],[522,494],[524,495],[523,496],[520,490],[519,490],[521,493],[731,497],[733,498],[748,29],[749,499],[750,499],[751,500],[752,501],[753,502],[755,503],[744,29],[739,29],[747,504],[757,505],[742,506],[746,507],[741,508],[738,254],[745,509],[740,510],[754,511],[756,512],[390,14],[434,29],[759,475],[462,513],[414,514],[419,515],[393,516],[416,517],[417,518],[392,519],[415,29],[418,520],[438,375],[460,521],[453,522],[760,375],[437,523],[452,524],[436,525],[454,526],[408,527],[407,254],[455,528],[456,529],[457,530],[409,531],[410,532],[412,533],[458,534],[459,535],[411,519],[450,536],[451,537],[449,538],[435,539],[461,540],[758,541],[413,542],[391,29],[394,1],[761,1],[762,452],[406,543],[763,544],[764,545],[403,546],[404,547],[405,548],[396,549],[398,550],[399,551],[402,552],[400,553],[401,554],[765,555],[1014,556],[1023,29],[896,387],[897,557],[1006,558],[898,559],[899,373],[1010,373],[1011,560],[895,373],[913,561],[1017,562],[1020,563],[901,564],[902,375],[1009,565],[900,387],[909,566],[910,567],[911,452],[1008,568],[914,569],[1007,570],[1012,571],[1013,572],[908,573],[1021,574],[912,29],[1022,1],[889,575]],"exportedModulesMap":[[66,576],[271,577],[273,578],[272,579],[143,580],[144,580],[145,580],[146,581],[147,580],[148,581],[149,580],[150,580],[151,581],[152,581],[153,582],[154,583],[157,584],[155,583],[158,585],[159,586],[161,587],[160,588],[351,589],[352,590],[353,590],[354,590],[355,589],[356,589],[357,590],[358,590],[359,591],[360,591],[361,591],[362,591],[363,591],[364,591],[365,576],[366,590],[367,590],[368,589],[369,591],[370,590],[371,590],[374,592],[372,590],[373,593],[375,594],[156,576],[141,595],[142,596],[905,597],[906,598],[904,599],[903,600],[907,601],[215,576],[218,602],[217,603],[216,604],[766,605],[576,576],[540,606],[577,607],[539,576],[917,608],[856,576],[335,576],[916,609],[421,610],[422,611],[420,612],[423,613],[424,614],[425,615],[426,616],[427,617],[428,618],[429,619],[430,620],[431,621],[514,622],[433,623],[432,624],[743,622],[448,625],[441,626],[445,627],[443,628],[446,629],[444,630],[447,631],[442,576],[440,632],[439,633],[918,609],[769,634],[770,634],[805,635],[806,636],[807,637],[808,638],[809,639],[810,640],[811,641],[812,642],[813,643],[814,644],[815,644],[817,645],[816,646],[818,647],[819,648],[820,649],[804,650],[854,651],[821,652],[822,653],[823,654],[855,655],[824,656],[825,657],[826,658],[827,659],[828,660],[829,661],[830,662],[831,663],[832,664],[833,665],[834,665],[835,666],[836,667],[838,668],[837,669],[839,670],[840,671],[841,672],[842,673],[843,674],[844,675],[845,676],[846,677],[847,678],[848,679],[849,680],[850,681],[851,682],[852,683],[853,684],[69,576],[1016,685],[1015,686],[1018,687],[67,576],[71,688],[72,589],[68,576],[241,576],[70,576],[915,576],[337,689],[336,576],[625,690],[638,690],[636,690],[626,690],[634,691],[640,589],[624,576],[570,692],[574,693],[571,693],[572,693],[573,693],[568,694],[575,695],[569,696],[578,697],[715,698],[712,699],[713,699],[714,700],[707,685],[704,576],[706,701],[650,702],[648,702],[647,703],[711,704],[708,576],[710,705],[709,705],[646,706],[645,707],[651,708],[649,709],[652,710],[642,576],[661,576],[558,711],[565,712],[544,713],[546,713],[550,713],[552,713],[545,713],[551,713],[554,713],[553,713],[547,713],[557,713],[555,713],[556,714],[548,715],[549,715],[535,576],[537,716],[538,576],[542,717],[543,718],[536,576],[559,711],[561,719],[562,720],[560,711],[564,721],[563,719],[623,722],[590,723],[595,724],[596,724],[598,725],[599,724],[601,726],[602,726],[600,724],[603,727],[604,727],[619,724],[592,724],[593,723],[594,728],[609,724],[611,724],[610,724],[606,724],[608,724],[607,724],[612,724],[614,724],[613,724],[615,724],[617,724],[616,724],[591,723],[618,724],[621,729],[597,723],[580,576],[584,730],[585,731],[587,732],[579,703],[583,733],[589,734],[588,589],[586,735],[622,736],[620,576],[581,697],[582,697],[605,576],[631,737],[632,738],[567,739],[566,589],[630,622],[668,576],[659,740],[658,589],[657,589],[541,741],[662,742],[629,743],[628,743],[639,744],[637,745],[635,746],[641,747],[627,748],[644,749],[655,750],[643,751],[654,752],[653,753],[656,754],[690,755],[691,756],[694,757],[692,758],[693,759],[695,760],[696,761],[676,755],[678,756],[680,757],[682,758],[684,759],[687,760],[689,761],[675,762],[677,763],[679,764],[681,765],[683,766],[686,767],[688,768],[671,769],[674,770],[697,771],[698,772],[699,773],[700,773],[685,765],[672,576],[716,774],[721,775],[673,776],[701,589],[702,773],[703,589],[719,777],[720,576],[718,778],[717,778],[660,779],[664,780],[666,781],[670,782],[667,783],[663,784],[669,785],[665,651],[888,786],[768,787],[767,788],[277,576],[771,651],[286,576],[705,576],[863,545],[239,589],[736,576],[959,789],[957,790],[958,791],[956,792],[953,793],[954,576],[955,576],[951,576],[952,794],[73,589],[921,795],[920,796],[946,797],[945,798],[948,799],[947,800],[950,801],[949,802],[991,803],[965,804],[966,805],[967,805],[968,805],[969,805],[970,805],[971,805],[972,805],[973,805],[974,805],[975,805],[989,806],[976,805],[977,805],[978,805],[979,805],[980,805],[981,805],[982,805],[983,805],[985,805],[986,805],[984,805],[987,805],[988,805],[990,805],[964,807],[944,808],[924,809],[925,809],[926,809],[927,809],[928,809],[929,809],[930,810],[932,809],[931,809],[943,811],[933,809],[935,809],[934,809],[937,809],[936,809],[938,809],[939,809],[940,809],[941,809],[942,809],[923,809],[922,812],[919,576],[722,576],[84,813],[87,814],[88,815],[90,816],[91,816],[92,816],[93,817],[83,818],[94,813],[95,817],[96,819],[97,820],[98,821],[100,822],[101,589],[103,823],[104,823],[105,816],[102,824],[108,825],[109,813],[112,826],[113,813],[111,827],[110,828],[114,829],[115,589],[116,821],[117,813],[81,830],[75,589],[76,545],[77,545],[78,589],[80,576],[79,576],[118,813],[213,831],[120,832],[121,833],[119,834],[122,817],[123,813],[124,819],[125,821],[126,813],[127,835],[129,813],[130,813],[131,813],[132,813],[133,836],[134,813],[135,813],[136,817],[128,837],[86,838],[138,839],[140,840],[188,841],[189,842],[190,589],[191,589],[187,843],[192,841],[137,822],[193,589],[194,844],[99,813],[139,813],[195,813],[196,845],[197,813],[198,813],[199,813],[200,817],[201,813],[202,817],[203,813],[204,817],[205,813],[89,815],[206,846],[207,847],[208,848],[211,849],[209,850],[210,813],[212,851],[107,852],[74,853],[82,854],[186,855],[163,856],[164,856],[165,856],[166,589],[167,589],[168,857],[169,856],[170,855],[171,855],[162,855],[172,855],[173,855],[174,855],[175,576],[176,856],[177,856],[178,589],[179,855],[180,856],[181,856],[184,858],[182,856],[183,859],[185,860],[85,861],[106,589],[890,862],[891,863],[894,864],[893,865],[892,866],[1005,867],[1004,868],[223,869],[224,870],[1019,871],[222,872],[220,873],[219,874],[221,873],[633,576],[225,589],[737,576],[997,875],[996,876],[858,877],[857,878],[267,545],[993,576],[64,576],[65,576],[12,576],[13,576],[15,576],[14,576],[2,576],[16,576],[17,576],[18,576],[19,576],[20,576],[21,576],[22,576],[23,576],[3,576],[4,576],[24,576],[28,576],[25,576],[26,576],[27,576],[29,576],[30,576],[31,576],[5,576],[32,576],[33,576],[34,576],[35,576],[6,576],[39,576],[36,576],[37,576],[38,576],[40,576],[7,576],[41,576],[46,576],[47,576],[42,576],[43,576],[44,576],[45,576],[8,576],[51,576],[48,576],[49,576],[50,576],[52,576],[9,576],[53,576],[54,576],[55,576],[58,576],[56,576],[57,576],[59,576],[60,576],[10,576],[1,576],[11,576],[63,576],[62,576],[61,576],[787,879],[794,880],[786,879],[801,881],[778,882],[777,883],[800,884],[795,885],[798,886],[780,887],[779,888],[775,889],[774,890],[797,891],[776,892],[781,893],[782,651],[785,893],[772,651],[803,894],[802,893],[789,895],[790,896],[792,897],[788,898],[791,899],[796,884],[783,900],[784,901],[793,902],[773,903],[799,904],[995,905],[992,576],[994,906],[999,907],[998,609],[1001,908],[1000,909],[1003,910],[1002,911],[961,912],[960,609],[963,913],[962,914],[1025,915],[887,916],[884,917],[862,918],[880,919],[878,920],[879,921],[867,922],[868,920],[875,923],[866,924],[871,925],[881,545],[872,926],[877,927],[883,928],[882,929],[865,930],[873,931],[874,932],[869,933],[876,919],[870,934],[864,935],[860,936],[859,545],[861,937],[885,545],[1024,938],[886,939],[350,940],[386,941],[349,942],[378,943],[333,944],[379,940],[380,940],[382,945],[381,945],[383,940],[334,944],[341,946],[377,940],[376,947],[342,948],[384,949],[340,950],[385,951],[387,952],[279,953],[280,953],[281,953],[282,953],[283,953],[285,954],[278,940],[332,955],[315,956],[308,957],[310,958],[311,953],[312,959],[316,960],[314,958],[328,961],[317,940],[318,940],[326,940],[327,962],[298,953],[319,959],[321,940],[320,958],[323,940],[306,946],[305,962],[299,963],[301,963],[302,963],[303,963],[304,963],[300,959],[322,958],[313,962],[325,940],[324,959],[297,963],[329,951],[388,964],[293,965],[292,966],[294,967],[291,968],[289,969],[290,970],[295,957],[296,957],[465,14],[469,414],[470,940],[471,940],[463,971],[464,972],[466,972],[467,972],[468,973],[473,420],[472,421],[214,974],[228,975],[229,976],[231,940],[230,974],[474,972],[233,953],[475,972],[232,953],[476,972],[227,977],[236,972],[237,972],[276,978],[226,972],[238,972],[275,979],[274,980],[256,981],[254,972],[253,972],[257,982],[258,983],[255,972],[252,984],[251,974],[259,985],[260,972],[261,972],[262,940],[264,986],[265,953],[269,987],[266,988],[268,953],[263,977],[270,953],[246,972],[250,953],[245,989],[244,990],[249,991],[243,991],[242,991],[248,992],[477,940],[485,940],[482,940],[483,940],[484,953],[480,993],[478,940],[479,951],[481,545],[486,457],[503,458],[488,940],[501,460],[493,940],[495,940],[496,940],[498,940],[489,465],[499,940],[500,940],[490,994],[505,974],[497,940],[491,995],[494,994],[492,996],[487,997],[502,473],[504,998],[506,999],[507,1000],[730,1001],[513,1001],[723,940],[728,940],[729,940],[508,1002],[509,1002],[512,1003],[510,1002],[511,1002],[732,1004],[534,1005],[735,651],[517,940],[533,1006],[525,953],[527,972],[532,940],[518,1007],[516,1008],[530,1007],[528,1007],[526,971],[531,1007],[522,1007],[524,1007],[523,1007],[520,1007],[519,1007],[521,1007],[731,951],[733,1009],[749,940],[750,940],[751,940],[752,940],[753,940],[755,1010],[747,1011],[757,1012],[742,940],[746,953],[741,940],[745,1013],[740,977],[754,951],[756,1014],[390,14],[759,940],[462,513],[414,1015],[419,940],[393,953],[416,1015],[417,1016],[392,1017],[418,1016],[438,960],[460,940],[453,522],[760,940],[437,523],[452,524],[436,1017],[454,526],[408,527],[407,977],[455,940],[456,940],[457,1018],[410,1019],[412,533],[458,940],[459,1020],[411,1017],[450,536],[451,537],[435,1021],[461,540],[758,1022],[413,1023],[394,1],[761,1],[762,940],[406,543],[763,951],[764,545],[403,546],[404,547],[405,548],[396,1024],[398,1025],[399,1021],[402,552],[400,553],[401,554],[765,1026],[1014,556],[896,972],[897,974],[1006,940],[898,1027],[899,940],[1010,940],[1011,1028],[895,972],[913,1029],[1017,562],[1020,563],[901,940],[902,940],[1009,565],[900,940],[909,951],[910,567],[911,972],[1008,972],[914,972],[1007,1030],[1012,571],[1013,572],[908,573],[1021,1031],[1022,651],[889,1032]],"semanticDiagnosticsPerFile":[66,271,273,272,143,144,145,146,147,148,149,150,151,152,153,154,157,155,158,159,161,160,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,374,372,373,375,156,141,142,905,906,904,903,907,215,218,217,216,766,576,540,577,539,917,856,335,916,421,422,420,423,424,425,426,427,428,429,430,431,514,433,432,743,448,441,445,443,446,444,447,442,440,439,918,769,770,805,806,807,808,809,810,811,812,813,814,815,817,816,818,819,820,804,854,821,822,823,855,824,825,826,827,828,829,830,831,832,833,834,835,836,838,837,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,69,1016,1015,1018,67,71,72,68,241,70,915,337,336,625,638,636,626,634,640,624,570,574,571,572,573,568,575,569,578,715,712,713,714,707,704,706,650,648,647,711,708,710,709,646,645,651,649,652,642,661,558,565,544,546,550,552,545,551,554,553,547,557,555,556,548,549,535,537,538,542,543,536,559,561,562,560,564,563,623,590,595,596,598,599,601,602,600,603,604,619,592,593,594,609,611,610,606,608,607,612,614,613,615,617,616,591,618,621,597,580,584,585,587,579,583,589,588,586,622,620,581,582,605,631,632,567,566,630,668,659,658,657,541,662,629,628,639,637,635,641,627,644,655,643,654,653,656,690,691,694,692,693,695,696,676,678,680,682,684,687,689,675,677,679,681,683,686,688,671,674,697,698,699,700,685,672,716,721,673,701,702,703,719,720,718,717,660,664,666,670,667,663,669,665,888,768,767,277,771,286,705,863,239,736,959,957,958,956,953,954,955,951,952,73,921,920,946,945,948,947,950,949,991,965,966,967,968,969,970,971,972,973,974,975,989,976,977,978,979,980,981,982,983,985,986,984,987,988,990,964,944,924,925,926,927,928,929,930,932,931,943,933,935,934,937,936,938,939,940,941,942,923,922,919,722,84,87,88,90,91,92,93,83,94,95,96,97,98,100,101,103,104,105,102,108,109,112,113,111,110,114,115,116,117,81,75,76,77,78,80,79,118,213,120,121,119,122,123,124,125,126,127,129,130,131,132,133,134,135,136,128,86,138,140,188,189,190,191,187,192,137,193,194,99,139,195,196,197,198,199,200,201,202,203,204,205,89,206,207,208,211,209,210,212,107,74,82,186,163,164,165,166,167,168,169,170,171,162,172,173,174,175,176,177,178,179,180,181,184,182,183,185,85,106,890,891,894,893,892,1005,1004,223,224,1019,222,220,219,221,633,225,737,997,996,858,857,267,993,64,65,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,11,63,62,61,787,794,786,801,778,777,800,795,798,780,779,775,774,797,776,781,782,785,772,803,802,789,790,792,788,791,796,783,784,793,773,799,995,992,994,999,998,1001,1000,1003,1002,961,960,963,962,1025,887,884,862,880,878,879,867,868,875,866,871,881,872,877,883,882,865,873,874,869,876,870,864,860,859,861,885,1024,886,350,386,343,349,344,345,346,347,348,338,378,333,379,380,382,381,383,334,341,377,376,342,384,340,339,385,387,279,280,281,282,283,389,285,278,284,332,309,315,307,308,310,311,312,316,314,328,317,318,326,327,298,319,321,320,323,306,305,299,301,302,303,304,300,322,313,325,324,297,329,388,287,293,292,294,291,289,290,330,295,296,331,288,465,469,470,471,463,464,466,467,468,473,472,395,214,228,229,231,230,474,233,475,232,476,234,227,236,235,237,276,226,238,275,274,256,254,253,257,258,255,252,251,259,260,261,262,264,265,269,266,268,263,270,246,250,240,245,244,249,243,242,247,248,477,485,482,483,484,[480,[{"file":"./workspaces/evolution/src/index.ts","start":120,"length":4,"code":2741,"category":1,"messageText":"Property 'image' is missing in type '{ id: ProjectKey.evolution; name: string; description: string; tags: string[]; deploy: true; created: string; updated: string; }' but required in type 'Project'.","relatedInformation":[{"file":"./workspaces/common/src/types.ts","start":503,"length":5,"messageText":"'image' is declared here.","category":3,"code":2728}]}]],478,479,481,486,503,488,501,493,495,496,498,489,499,[500,[{"file":"./workspaces/line-segment-extending/src/presentation/settings.tsx","start":621,"length":16,"messageText":"'showBoundsConfig' is declared but its value is never read.","category":1,"code":6133,"reportsUnnecessary":true},{"file":"./workspaces/line-segment-extending/src/presentation/settings.tsx","start":969,"length":21,"messageText":"'showLineSegmentConfig' is declared but its value is never read.","category":1,"code":6133,"reportsUnnecessary":true}]],490,505,497,491,494,492,487,502,504,397,506,507,730,724,725,726,727,513,723,728,729,508,509,512,510,511,732,534,735,517,533,525,527,532,518,734,515,516,530,528,526,529,531,522,524,523,520,519,521,731,733,748,749,750,751,752,753,755,744,739,747,757,742,746,741,738,745,740,754,756,390,434,759,462,414,419,393,416,417,392,415,418,438,460,453,760,437,452,[436,[{"file":"./workspaces/tilings/src/presentation/library/uselibrarycontext.ts","start":1268,"length":37,"messageText":"This comparison appears to be unintentional because the types 'string | number' and 'boolean' have no overlap.","category":1,"code":2367}]],454,408,407,455,456,457,409,410,412,458,459,411,450,451,449,435,461,758,413,391,394,761,762,406,763,764,403,404,405,396,398,399,402,400,[401,[{"file":"./workspaces/wasm/src/wasmworker/wasmworkerrunner.ts","start":163,"length":17,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'getMinPermutation' does not exist in type 'Record<\"transferCanvas\" | \"parseNotation\" | \"parseTransform\" | \"findPreviousTiling\" | \"findNextTiling\" | \"renderNotation\" | \"getExtendedLineSegment\" | \"isSequenceSymmetrical\" | ... 4 more ... | \"sortSequence\", boolean>'."}]],765,1014,1023,896,897,1006,898,899,1010,1011,895,913,1017,1020,901,902,1009,900,909,910,911,1008,914,1007,1012,1013,908,1021,912,1022,889],"affectedFilesPendingEmit":[350,386,349,338,378,333,379,380,382,381,383,334,341,377,376,342,384,340,339,385,279,280,281,282,283,389,285,278,332,309,315,307,308,310,311,312,316,314,328,317,318,326,327,298,319,321,320,323,306,305,299,301,302,303,304,300,322,313,325,324,297,329,287,293,292,294,291,289,290,330,295,296,331,288,469,470,471,463,464,466,467,468,473,472,395,214,228,229,231,230,474,233,475,232,476,234,227,236,235,237,276,226,238,275,274,256,254,253,257,258,255,252,251,259,260,261,262,264,265,269,266,268,263,270,246,250,240,245,244,249,243,242,247,248,477,485,482,483,484,480,478,479,486,503,488,501,493,495,496,498,489,499,500,490,505,497,491,494,492,487,502,397,506,730,513,723,728,729,508,509,512,510,511,732,534,517,533,525,527,532,518,734,515,516,530,528,526,529,531,522,524,523,520,519,521,731,748,749,750,751,752,753,755,744,739,747,742,746,741,738,745,740,754,759,462,414,419,393,416,417,392,415,418,438,460,453,760,437,452,436,454,408,407,455,456,457,409,410,412,458,459,411,450,451,449,435,461,413,391,762,406,763,403,404,405,396,398,399,402,400,401,1014,1023,896,897,1006,898,899,1010,1011,895,913,1017,1020,901,902,1009,900,909,910,911,1008,914,1007,1012,1013,908,912,889],"emitSignatures":[214,226,227,228,229,230,231,232,233,234,235,236,237,238,240,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,268,269,270,274,275,276,278,279,280,281,282,283,285,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,338,339,340,341,342,349,350,376,377,378,379,380,381,382,383,384,385,386,389,391,392,393,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,435,436,437,438,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,505,506,508,509,510,511,512,513,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,723,728,729,730,731,732,734,738,739,740,741,742,744,745,746,747,748,749,750,751,752,753,754,755,759,760,762,763,889,895,896,897,898,899,900,901,902,908,909,910,911,912,913,914,1006,1007,1008,1009,1010,1011,1012,1013,1014,1017,1020,1023]},"version":"5.3.2"} \ No newline at end of file diff --git a/workspaces/circle-art/package.json b/workspaces/circle-art/package.json index d39cdb0f..ac937b0f 100644 --- a/workspaces/circle-art/package.json +++ b/workspaces/circle-art/package.json @@ -8,7 +8,7 @@ "dependencies": { "@hogg/circle-intersections": "workspace:^", "@hogg/common": "workspace:^", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/workspaces/circle-intersections/package.json b/workspaces/circle-intersections/package.json index 988e90c1..d117666b 100644 --- a/workspaces/circle-intersections/package.json +++ b/workspaces/circle-intersections/package.json @@ -17,7 +17,7 @@ "file-saver": "^2.0.5", "framer-motion": "^10.16.16", "lucide-react": "^0.294.0", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sat": "^0.9.0", diff --git a/workspaces/circle-intersections/src/Presentation/GraphRenderer/GraphLabel.tsx b/workspaces/circle-intersections/src/Presentation/GraphRenderer/GraphLabel.tsx index 097bb158..e3a64bab 100644 --- a/workspaces/circle-intersections/src/Presentation/GraphRenderer/GraphLabel.tsx +++ b/workspaces/circle-intersections/src/Presentation/GraphRenderer/GraphLabel.tsx @@ -3,6 +3,7 @@ import { sizeX6Px } from 'preshape'; import { PropsWithChildren } from 'react'; type Props = { + index: number; isVisible: boolean; text: string; x: number; @@ -12,6 +13,7 @@ type Props = { }; const GraphLabel = ({ + index, isVisible, text, x, @@ -31,6 +33,7 @@ const GraphLabel = ({ { {[...nodes, ...edges].map((node) => ( bool { get_symmetry_index(sequence).is_some() } +/// Inserts a value into a sequence. /// +/// Space: O(1) +/// Time: O(n) pub fn insert(sequence: &mut Sequence, value: u8) { let length = get_length(sequence); diff --git a/workspaces/circular-sequence/src-rust/to_string.rs b/workspaces/circular-sequence/src-rust/to_string.rs index 9400274d..3b8ef7c9 100644 --- a/workspaces/circular-sequence/src-rust/to_string.rs +++ b/workspaces/circular-sequence/src-rust/to_string.rs @@ -4,7 +4,7 @@ use crate::{sort, super_script, Sequence}; #[cfg(test)] mod tests; -/// Converts a sequence to a string. +/// Converts sequences to a string. pub fn to_string(sequences: Vec) -> String { flatten_duplicates( sort(sequences).iter().copied().map(to_string_one).collect(), @@ -13,7 +13,7 @@ pub fn to_string(sequences: Vec) -> String { .join("; ") } -/// +/// Converts a sequence to a string. pub fn to_string_one(sequence: Sequence) -> String { flatten_duplicates( sequence @@ -25,7 +25,7 @@ pub fn to_string_one(sequence: Sequence) -> String { .join(".") } -/// +/// Flattens duplicates in a sequence. fn flatten_duplicates(content: Vec, wrapper: Option<(&str, &str)>) -> Vec { let (prefix, suffix) = wrapper.unwrap_or(("", "")); let mut flattened_content: Vec = Vec::new(); diff --git a/workspaces/circular-sequence/src-rust/wasm_api.rs b/workspaces/circular-sequence/src-rust/wasm_api.rs deleted file mode 100644 index 1e8d1e0d..00000000 --- a/workspaces/circular-sequence/src-rust/wasm_api.rs +++ /dev/null @@ -1,56 +0,0 @@ -use serde_wasm_bindgen::from_value; -use wasm_bindgen::prelude::*; - -use crate::{ - get_length as get_length_internal, - get_min_permutation as get_min_permutation_internal, - get_symmetry_index as get_symmetry_index_internal, - is_symmetrical as is_symmetrical_internal, - sort as sort_internal, - to_string as to_string_internal, - Sequence, -}; - -#[wasm_bindgen] -pub fn get_symmetry_index(sequence: &JsValue) -> Result, JsError> { - Ok(get_symmetry_index_internal(&from_value::( - sequence.to_owned(), - )?)) -} - -#[wasm_bindgen] -pub fn is_symmetrical(sequence: &JsValue) -> Result { - Ok(is_symmetrical_internal(&from_value::( - sequence.to_owned(), - )?)) -} - -#[wasm_bindgen] -pub fn get_length(sequence: &JsValue) -> Result { - Ok(get_length_internal(&from_value::( - sequence.to_owned(), - )?)) -} - -#[wasm_bindgen] -pub fn get_min_permutation(sequence: &JsValue) -> Result { - Ok(serde_wasm_bindgen::to_value( - &get_min_permutation_internal(&from_value::(sequence.to_owned())?), - )?) -} - -#[wasm_bindgen] -pub fn to_string(sequences: &JsValue) -> Result { - Ok(to_string_internal(from_value::>( - sequences.to_owned(), - )?)) -} - -#[wasm_bindgen] -pub fn sort(sequences: &JsValue) -> Result { - Ok(serde_wasm_bindgen::to_value(&sort_internal(from_value::< - Vec, - >( - sequences.to_owned(), - )?))?) -} diff --git a/workspaces/circular-sequence/src/Article/Figs/ConcatenatedSequencesFig.tsx b/workspaces/circular-sequence/src/Article/Figs/ConcatenatedSequencesFig.tsx index 643f372a..63c5eabb 100644 --- a/workspaces/circular-sequence/src/Article/Figs/ConcatenatedSequencesFig.tsx +++ b/workspaces/circular-sequence/src/Article/Figs/ConcatenatedSequencesFig.tsx @@ -1,14 +1,14 @@ import { ArticleFig } from '@hogg/common'; +import { WasmApiLoadingScreen } from '@hogg/wasm'; +import { Sequence } from '../../types'; import SequenceView from '../SequenceView/SequenceView'; -import WasmApi from '../WasmApi/WasmApi'; -import { Sequence } from '../WasmApi/useWasmApi'; type Props = {}; const symmetricSequence: Sequence = [3, 4, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0]; const asymmetricSequence: Sequence = [3, 3, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0]; -const ConcatenatedSequencesFig = ({}: Props) => { +export default function ConcatenatedSequencesFig({}: Props) { return ( { flex="vertical" gap="x12" > - - + + + + ); -}; - -const ConcatenatedSequencesFigWithWasmApi = () => ( - - - -); - -export default ConcatenatedSequencesFigWithWasmApi; +} diff --git a/workspaces/circular-sequence/src/Article/Figs/MinPermutationFig.tsx b/workspaces/circular-sequence/src/Article/Figs/MinPermutationFig.tsx index 41d2d663..6d33f8ec 100644 --- a/workspaces/circular-sequence/src/Article/Figs/MinPermutationFig.tsx +++ b/workspaces/circular-sequence/src/Article/Figs/MinPermutationFig.tsx @@ -1,9 +1,35 @@ import { ArticleFigCodeBlock } from '@hogg/common'; -import WasmApi from '../WasmApi/WasmApi'; -import useWasmApi from '../WasmApi/useWasmApi'; +import { useWasmApi, WasmApiLoadingScreen } from '@hogg/wasm'; +import { useEffect, useState } from 'react'; +import { Sequence } from '../../types'; -const MinPermutationFig = () => { - const wasmApi = useWasmApi(); +const SymmetricalSequence: Sequence = [4, 6, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0]; +const AsymmetricalSequenceForwards: Sequence = [ + 6, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; +const AsymmetricalSequenceBackwards: Sequence = [ + 4, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const useMinPermutation = (sequence: Sequence) => { + const { api } = useWasmApi(); + const [minPermutation, setMinPermutation] = useState([]); + + useEffect(() => { + api.getSequenceMinPermutation([sequence]).then(setMinPermutation); + }, [api, sequence]); + + return minPermutation; +}; + +function MinPermutationFig() { + const symmetricalMinPermutation = useMinPermutation(SymmetricalSequence); + const asymmetricalMinPermutationForwards = useMinPermutation( + AsymmetricalSequenceForwards + ); + const asymmetricalMinPermutationBackwards = useMinPermutation( + AsymmetricalSequenceBackwards + ); return ( { > {` // Symmetrical sequence -get_min_permutation([4, 6, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0]), -// outputs >> [${wasmApi.getMinPermutation([ - 4, 6, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, - ])}] +get_min_permutation([${SymmetricalSequence}]), +// outputs >> [${symmetricalMinPermutation}] // Asymmetrical sequence - forwards get_min_permutation([6, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -// outputs >> [${wasmApi.getMinPermutation([ - 6, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ])}] +// outputs >> [${asymmetricalMinPermutationForwards}] // Asymmetrical sequence - backwards get_min_permutation([4, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -// outputs >> [${wasmApi.getMinPermutation([ - 4, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - ])}] +// outputs >> [${asymmetricalMinPermutationBackwards}] `} ); -}; - -const MinPermutationFigWithWasmApi = () => ( - - - -); +} -export default MinPermutationFigWithWasmApi; +export default function MinPermutationFigWithLoadingScreen() { + return ( + + + + ); +} diff --git a/workspaces/circular-sequence/src/Article/SequenceView/SequenceView.tsx b/workspaces/circular-sequence/src/Article/SequenceView/SequenceView.tsx index f6176d72..31175382 100644 --- a/workspaces/circular-sequence/src/Article/SequenceView/SequenceView.tsx +++ b/workspaces/circular-sequence/src/Article/SequenceView/SequenceView.tsx @@ -1,6 +1,7 @@ +import { useWasmApi } from '@hogg/wasm'; import { Box, BoxProps, Text, borderRadiusSizeX1Px } from 'preshape'; -import { useMemo } from 'react'; -import useWasmApi, { Sequence } from '../WasmApi/useWasmApi'; +import { useEffect, useMemo, useState } from 'react'; +import { Sequence } from '../../types'; import SequenceLabel from './SequenceLabel'; import SequenceLength from './SequenceLength'; import SequenceSingle from './SequenceSingle'; @@ -10,22 +11,43 @@ type Props = { sequence: Sequence; }; +type SequenceInfo = { + isSymmetrical: boolean; + length: number; + minPermutation: Sequence | null; + symmetryIndex: number; +}; + export default function SequenceView({ sequence, ...rest }: Props & BoxProps) { - const wasmApi = useWasmApi(); + const { api } = useWasmApi(); const sequenceWithoutZeroes = useMemo( () => sequence.filter((v) => v !== 0), [sequence] ); - const { isSymmetrical, length, symmetryIndex } = useMemo( - () => ({ - isSymmetrical: wasmApi.isSymmetrical(sequence), - length: wasmApi.getLength(sequence), - minPermutation: wasmApi.getMinPermutation(sequence), - symmetryIndex: wasmApi.getSymmetryIndex(sequence), - }), - [sequence, wasmApi] - ); + const [{ isSymmetrical, length, symmetryIndex }, setSequenceInfo] = + useState(() => ({ + isSymmetrical: false, + length: 0, + minPermutation: null, + symmetryIndex: 0, + })); + + useEffect(() => { + Promise.all([ + api.isSequenceSymmetrical([sequence]), + api.getSequenceLength([sequence]), + api.getSequenceMinPermutation([sequence]), + api.getSequenceSymmetryIndex([sequence]), + ]).then(([isSymmetrical, length, minPermutation, symmetryIndex = 0]) => { + setSequenceInfo({ + isSymmetrical, + length, + minPermutation, + symmetryIndex, + }); + }); + }, [sequence, api]); return ( diff --git a/workspaces/circular-sequence/src/Article/WasmApi/WasmApi.tsx b/workspaces/circular-sequence/src/Article/WasmApi/WasmApi.tsx deleted file mode 100644 index 1168ea28..00000000 --- a/workspaces/circular-sequence/src/Article/WasmApi/WasmApi.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { WasmProvider } from '@hogg/common'; -import { PropsWithChildren } from 'react'; -import loader from '../../../pkg/circular_sequence'; -import { wasmApi } from './useWasmApi'; - -export default function WasmApi(props: PropsWithChildren) { - return ; -} diff --git a/workspaces/circular-sequence/src/Article/WasmApi/useWasmApi.ts b/workspaces/circular-sequence/src/Article/WasmApi/useWasmApi.ts deleted file mode 100644 index 3f48794d..00000000 --- a/workspaces/circular-sequence/src/Article/WasmApi/useWasmApi.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { useWasmContext } from '@hogg/common'; -import * as wasm from '../../../pkg/circular_sequence'; - -export type Sequence = [ - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number, - number -]; - -function isSymmetrical(sequence: Sequence): boolean { - return wasm.is_symmetrical(sequence); -} - -function getLength(sequence: Sequence): number { - return wasm.get_length(sequence); -} - -function getMinPermutation(sequence: Sequence): Sequence { - return wasm.get_min_permutation(sequence); -} - -function getSymmetryIndex(sequence: Sequence): number | undefined { - return wasm.get_symmetry_index(sequence); -} - -function toString(sequences: Sequence[]): string { - return wasm.to_string(sequences); -} - -function sort(sequences: Sequence[]): Sequence[] { - return wasm.sort(sequences); -} - -export const wasmApi = { - isSymmetrical, - getLength, - getMinPermutation, - getSymmetryIndex, - toString, - sort, -}; - -export type WasmApi = typeof wasmApi; - -export default function useWasmApi() { - return useWasmContext(); -} diff --git a/workspaces/circular-sequence/src/Article/index.tsx b/workspaces/circular-sequence/src/Article/index.tsx index 3a6e7e74..ec46cdd3 100644 --- a/workspaces/circular-sequence/src/Article/index.tsx +++ b/workspaces/circular-sequence/src/Article/index.tsx @@ -16,9 +16,9 @@ import { Text, sizeX12Px, } from 'preshape'; -import fileContentsGetMatch from '@hogg/circular-sequence/src-rust/get_match.rs?raw'; -import fileContentsMinPermutation from '@hogg/circular-sequence/src-rust/min_permutation.rs?raw'; -import fileContentsSequence from '@hogg/circular-sequence/src-rust/sequence.rs?raw'; +import fileContentsGetMatch from '../../src-rust/get_match.rs?raw'; +import fileContentsMinPermutation from '../../src-rust/min_permutation.rs?raw'; +import fileContentsSequence from '../../src-rust/sequence.rs?raw'; import ConcatenatedSequencesFig from './Figs/ConcatenatedSequencesFig'; import MinPermutationFigWithWasApi from './Figs/MinPermutationFig'; @@ -194,9 +194,10 @@ let seq_2: Sequence = [6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]; However if we take a very similar sequence of{' '} - [3, 3, 4, 12] () - and do the same thing, then we get different traversal results when we - traverse in both directions. + [3, 3, 4, 12] ( + ) and do the same thing, then + we get different traversal results when we traverse in both + directions. @@ -249,7 +250,8 @@ let seq_2: Sequence = [6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]; It's fairly simple to check if a sequence is symmetrical. We can simply concatenate the sequence and check for the inverted sequence - within itself ( + within itself ( + ). diff --git a/workspaces/circular-sequence/src/index.ts b/workspaces/circular-sequence/src/index.ts index 79e3be88..29259438 100644 --- a/workspaces/circular-sequence/src/index.ts +++ b/workspaces/circular-sequence/src/index.ts @@ -2,6 +2,7 @@ import { type Project, ProjectKey } from '@hogg/common'; import image from './image.webp'; export { default as Project } from './Project'; +export * from './types'; export const meta: Project = { id: ProjectKey.circular_sequence, diff --git a/workspaces/circular-sequence/src/types.ts b/workspaces/circular-sequence/src/types.ts new file mode 100644 index 00000000..7361077b --- /dev/null +++ b/workspaces/circular-sequence/src/types.ts @@ -0,0 +1,14 @@ +export type Sequence = [ + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number +]; diff --git a/workspaces/common/package.json b/workspaces/common/package.json index 18356c8c..1bca12f6 100644 --- a/workspaces/common/package.json +++ b/workspaces/common/package.json @@ -8,7 +8,7 @@ "dependencies": { "framer-motion": "^10.16.16", "lucide-react": "^0.294.0", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.20.1", diff --git a/workspaces/common/src/Spinner/Spinner.tsx b/workspaces/common/src/Spinner/Spinner.tsx index 5a4ded4b..97741e89 100644 --- a/workspaces/common/src/Spinner/Spinner.tsx +++ b/workspaces/common/src/Spinner/Spinner.tsx @@ -7,7 +7,7 @@ const startingRotations = Array.from({ length: 6 }).map( export default function Spinner({ children }: PropsWithChildren) { return ( - + {startingRotations.map((r, i) => ( Promise, Api> = { - api: Api; - loader: Loader; -}; - -export default function WasmProvider Promise, Api>({ - api, - loader, - children, - ...props -}: PropsWithChildren>) { - const [isReady, setIsReady] = useState(false); - - useEffect(() => { - loader().then(() => { - setIsReady(true); - }); - }, [loader]); - - if (!isReady) { - return Wasm loading...; - } - - return ( - - - {children} - - - ); -} diff --git a/workspaces/common/src/WasmProvider/useWasmContext.ts b/workspaces/common/src/WasmProvider/useWasmContext.ts deleted file mode 100644 index 366de623..00000000 --- a/workspaces/common/src/WasmProvider/useWasmContext.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createContext, useContext } from 'react'; - -export const WasmContext = createContext({}); - -export function useWasmContext() { - return useContext(WasmContext) as TApi; -} diff --git a/workspaces/common/src/index.ts b/workspaces/common/src/index.ts index 5cb83a1b..7fe482c1 100644 --- a/workspaces/common/src/index.ts +++ b/workspaces/common/src/index.ts @@ -44,9 +44,6 @@ export { default as useProjectWindowContext } from './ProjectWindow/useProjectWi export { default as Spinner } from './Spinner/Spinner'; -export { default as WasmProvider } from './WasmProvider/WasmProvider'; -export { useWasmContext } from './WasmProvider/useWasmContext'; - export { default as Media } from './Media/Media'; export { MediaContextProvider, createMediaStyle } from './Media/MediaProvider'; diff --git a/workspaces/common/src/types.ts b/workspaces/common/src/types.ts index eae6c720..6fed7095 100644 --- a/workspaces/common/src/types.ts +++ b/workspaces/common/src/types.ts @@ -5,11 +5,12 @@ export enum ProjectKey { circle_art = 'circle-art', circle_intersections = 'circle-intersections', circular_sequence = 'circular-sequence', + evolution = 'evolution', line_segment_extending = 'line-segment-extending', snake = 'snake', spirals = 'spirals', tilings = 'tilings', - wasm_api = 'wasm-api', + wasm = 'wasm', } export type Project = { diff --git a/workspaces/evolution/package.json b/workspaces/evolution/package.json new file mode 100644 index 00000000..4216df33 --- /dev/null +++ b/workspaces/evolution/package.json @@ -0,0 +1,25 @@ +{ + "name": "@hogg/evolution", + "version": "0.0.0", + "author": "Harry Hogg ", + "private": true, + "type": "module", + "main": "./src/index.ts", + "scripts": { + "build": "yarn clean && yarn build:wasm", + "build:wasm": "wasm-pack build --target web", + "clean": "rm -rf ./pkg", + "dev": "cargo watch -w ./src-rust -q -s 'yarn workspace @hogg/evolution run build:wasm'" + }, + "dependencies": { + "@hogg/common": "workspace:^", + "lucide-react": "^0.294.0", + "preshape": "^19.1.0", + "react": "^18.2.0", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "typescript": "^5.0.4" + } +} diff --git a/workspaces/evolution/src/Article/Matrix.tsx b/workspaces/evolution/src/Article/Matrix.tsx new file mode 100644 index 00000000..6b86a80f --- /dev/null +++ b/workspaces/evolution/src/Article/Matrix.tsx @@ -0,0 +1,64 @@ +import { Box, Text } from 'preshape'; +import MatrixCell from './MatrixCell'; +import MatrixDots from './MatrixDots'; +import MatrixRow from './MatrixRow'; + +type Props = { + name: string; + letters: [string, string, string]; +}; + +export default function Matrix({ name, letters: [a, b, c] }: Props) { + const aLower = a.toLowerCase(); + const bLower = b.toLowerCase(); + const cLower = c.toLowerCase(); + + return ( + + + + {name} + {' '} + = + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/workspaces/evolution/src/Article/MatrixCell.tsx b/workspaces/evolution/src/Article/MatrixCell.tsx new file mode 100644 index 00000000..30273100 --- /dev/null +++ b/workspaces/evolution/src/Article/MatrixCell.tsx @@ -0,0 +1,21 @@ +import { Text } from 'preshape'; + +type Props = { + a: string; + b: string; + c: string; +}; + +export default function MatrixCell({ a, b, c }: Props) { + return ( + + + {a} + + {b} + {c} + + + + ); +} diff --git a/workspaces/evolution/src/Article/MatrixDots.tsx b/workspaces/evolution/src/Article/MatrixDots.tsx new file mode 100644 index 00000000..4f248fd3 --- /dev/null +++ b/workspaces/evolution/src/Article/MatrixDots.tsx @@ -0,0 +1,54 @@ +import { Box, Text, TextProps } from 'preshape'; + +type Props = { + h?: boolean; + d?: boolean; + v?: boolean; +}; + +export default function MatrixDots({ h, d, v }: Props) { + let props: TextProps = {}; + + if (h) { + props = { flex: 'horizontal', alignChildrenVertical: 'middle' }; + } + + if (d) { + props = { flex: 'vertical' }; + } + + if (v) { + props = { flex: 'vertical', alignChildrenHorizontal: 'middle' }; + } + + return ( + + + + + + + + + + + + + + ); +} diff --git a/workspaces/evolution/src/Article/MatrixRow.tsx b/workspaces/evolution/src/Article/MatrixRow.tsx new file mode 100644 index 00000000..fedc22be --- /dev/null +++ b/workspaces/evolution/src/Article/MatrixRow.tsx @@ -0,0 +1,10 @@ +import { Box } from 'preshape'; +import { PropsWithChildren } from 'react'; + +export default function MatrixCell({ children }: PropsWithChildren<{}>) { + return ( + + {children} + + ); +} diff --git a/workspaces/evolution/src/Article/index.tsx b/workspaces/evolution/src/Article/index.tsx new file mode 100644 index 00000000..02d80a57 --- /dev/null +++ b/workspaces/evolution/src/Article/index.tsx @@ -0,0 +1,314 @@ +import { + ArticleCallout, + ArticleFig, + ArticleFigLink, + ArticleFigs, + ArticlePage, +} from '@hogg/common'; +import { + ArticleHeading, + ArticleParagraph, + ArticleSection, + Code, + Link, + Text, +} from 'preshape'; + +const Article = () => { + return ( + + + Introduction + + + There are some fantastic evolution simulations I've seen over the + years. + + "Intro I programmed some creatures. They Evolved." + {' '} + by{' '} + + davidrandallmiller + {' '} + is a great example. In that video the author shows a simulator which + uses a small neural network to control the movement of pixels with + their survival determined by their ending position or if they were + killed by another pixel. + + + + There are many more than 2 factors which contribute to the survival of + a species, so many factors that it's impossible to understand what + they all are. This got me thinking if it's possible to create a + simulation where we don't know the laws of the environment and the + attributes of the species but we can still see the results of + populations forming and moving. + + + + This is an article that looks at what a single entity in this + simulation would look like, considering the genes, epigenetics and + environment out to it's descriptive phenotype. + + + + + Genes and Phenotype + + + The phenotype is the name given to the observable characteristics of + an organism. These traits include physical features like height, eye + color, blood type, as well as behaviors like aggression and drives. + These traits are determined by an organism's genetic code (genotype) + in combination with environmental influences. + + + + Genes directly influence different phenotype traits, this is called + pleiotropy. Each gene can have different degrees of pleiotropy, with + some having a primary effect on a single trait and others having a + more widespread effect on many traits. + + + + A gene can interact with other genes that results in affecting the + phenotype through activating, suppressing, amplifying or dampening the + expression of other genes. Known as epistasis. + + + + Surprisingly, the number of genes in an organism is not directly + related to its perceived complexity. For example, the human genome + contains around 20,000 genes compared to a grape + that has ~30,000 and the wheat plant with{' '} + ~100,000. This gives us a good reference point + when thinking about numbers of genes in this simulation. + + + + + Environment and epigenetics + + + Through a number of different chemical reactions on the DNA and + components related to the protein production process (like histones), + epigenetic modifications can be made. These modifications, called + epigenetic markers, do not change the DNA sequence itself but sit on + top of it and can be used to modify gene expression. + + + + The effect and existence of all epigenetic markers can change over + time. Their effects can be continuous and dynamic, suppressive or + activating. They can also be discrete acting like a switch, turning on + or off gene expression. + + + + During reproduction these epigenetic markers are mostly erased and are + not passed down to offspring. However, in some cases they may be + completely missed in the erasure process. + + + + Epigenetic markers can be reapplied during embryonic development + called developmental reprogramming, which is influenced by the + environment the embryo is developing in. This is essentially the + starting point at which we can start to think about how the + environment can influence the phenotype of an organism. + + + + + + Representing this complexity in a simulation + + + + The phenotype system is complex and dynamic. No two organisms have the + same genotype or experience the same environment, so the phenotype of + each individual is unique. The number of parameters that can influence + the phenotype of an organism is vast. An individuals phenotype is also + not static, it can change over time as the organism develops and as it + interacts with the dynamic environment. + + + + Environment, epistasis, pleiotropy and epigenetic effects + + + + Vectors and matrices are a great way to represent the relationships + between elements in a system. We can use these to represent the + effects that genes have on other genes, the effects that epigenetic + markers have on gene expression and finally the effects that genes + have on the phenotype. The elements of these vectors and matrices will + contain values either in the range of 0 to 1{' '} + or -1 to 1 which will represent some kind of + multiplier or weight. + + + + + + + Variable rate of change + + + + Bezier curves + {' '} + are a parametric curve that's defined by a set of control points. We + can use these to represent a rate of change for + these effects. Randomly generating the endpoints and control points of + our Bezier curve will provide us with a way to vary a population of + individuals. provides + an interactive playground for helping to visualise how these curves + can be configured and used to generate a point of effect . + + + + + + + + {/* + Reproduction Frequency + + + Evolution is the natural process we all know, that explains how living + organisms change over time through gradual genetic mutations. It + operates through mechanisms like natural selection, genetic drift, + mutations, and gene flow. It has some fundamental rules that effected + how life has developed on our planet, and most importantly is the + reproduction. + + + + When we start to think about reproduction there are a lot of inherent + systems like time and lifespan. This gives us a good starting point to + think about how we can simulate evolution at a quicker rate than real + life, after all we don't have millions of years to wait for our + results. + + + + + Timing system and lifespan + + + Generations are often used in evolutionary simulators to reflect an + individual's lifespan and within that time frame the individual will + have experienced a life's worth of events and interactions, which will + result in the individual's survival and reproduction. + + + + We will use the number 1 to represent a denominating + factor of time, which will be used as a reference point for an + individuals lifespan and all the events that occur within that time. + + + + + + {` +Individual { + /// The maximum lifespan of the individual. + maximum_lifespan: 0.7, + /// The ages at which the individual can reproduce. + reproduction_age_range: (0.3, 0.6), + /// The duration before the individual can reproduce again. + reproduction_duration: 0.1, +} + + `} + + + + + Species representation + + + A single entity with be stored as a matrix, which will represent the + attributes of that entity and will determine it's selection, grouping + and reproduction. The dimensions of this matrix we'll parametrize with{' '} + m and n. + + + + + + + + + + + Reproduction + + + Individuals that survive and adapt to their environment are more + likely to reproduce and pass on their advantageous traits to their + offspring. Over time, these traits become more common in the + population. + + + + + Variation + + + Individuals within a species exhibit variations in physical traits and + behaviors. These variations are often due to genetic mutations, which + are random changes in the DNA sequence. + + + + We'll apply this same principle to our simulation. We'll use 2 + matrices in our mutation process, P and V, + which will represent the probability of a mutation and a weight for + that mutation respectively. + + + + + Speciation + + + As changes accumulate over many generations, populations of a single + species can diverge enough to become distinct species. + + + + + Selection + + + In a given environment, some variations prove advantageous, giving + those individuals a better chance at survival and reproduction. + + */} + + ); +}; + +export default Article; diff --git a/workspaces/evolution/src/Presentation/index.tsx b/workspaces/evolution/src/Presentation/index.tsx new file mode 100644 index 00000000..40d72d33 --- /dev/null +++ b/workspaces/evolution/src/Presentation/index.tsx @@ -0,0 +1,19 @@ +import { ProjectTab, ProjectTabs, ProjectWindow } from '@hogg/common'; +import { GalleryVerticalIcon } from 'lucide-react'; + +const Presentation = ({}: {}) => { + return ( + } + controlsPosition="top" + padding="x0" + tabs={ + + + + } + > + ); +}; + +export default Presentation; diff --git a/workspaces/evolution/src/Project.tsx b/workspaces/evolution/src/Project.tsx new file mode 100644 index 00000000..780077f6 --- /dev/null +++ b/workspaces/evolution/src/Project.tsx @@ -0,0 +1,13 @@ +import { ProjectPage, ProjectPageProps } from '@hogg/common'; +import Article from './Article'; +import Presentation from './Presentation'; + +export default function Project(props: ProjectPageProps) { + return ( + } + presentation={} + /> + ); +} diff --git a/workspaces/evolution/src/index.ts b/workspaces/evolution/src/index.ts new file mode 100644 index 00000000..5a8081f5 --- /dev/null +++ b/workspaces/evolution/src/index.ts @@ -0,0 +1,15 @@ +import { type Project, ProjectKey } from '@hogg/common'; + +export { default as Project } from './Project'; + +export const meta: Project = { + id: ProjectKey.evolution, + name: 'Genes to Phenotype visualisation', + description: + 'Representing the complexity of how genes are expressed in an organism as its phenotype.', + // image, + tags: ['simulation', 'rust'], + deploy: true, + created: '2024-05-04', + updated: '2024-05-04', +}; diff --git a/workspaces/evolution/src/react-app-env.d.ts b/workspaces/evolution/src/react-app-env.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/workspaces/line-segment-extending/Cargo.toml b/workspaces/line-segment-extending/Cargo.toml index 2d55e9bf..c861d29f 100644 --- a/workspaces/line-segment-extending/Cargo.toml +++ b/workspaces/line-segment-extending/Cargo.toml @@ -8,7 +8,6 @@ license = "MIT/Apache-2.0" repository = "https://github.com/hhogg/hogg.io" [lib] -crate-type = ["cdylib", "rlib"] name = "line_segment_extending" path = "src-rust/lib.rs" @@ -19,7 +18,6 @@ log.workspace = true serde.workspace = true serde_json.workspace = true serde-wasm-bindgen.workspace = true -wasm-bindgen.workspace = true [dev-dependencies] pretty_assertions.workspace = true diff --git a/workspaces/line-segment-extending/package.json b/workspaces/line-segment-extending/package.json index d689bcab..76beb71d 100644 --- a/workspaces/line-segment-extending/package.json +++ b/workspaces/line-segment-extending/package.json @@ -5,18 +5,17 @@ "private": true, "type": "module", "main": "./src/index.ts", - "scripts": { - "build": "yarn clean && yarn build:wasm", - "build:wasm": "wasm-pack build --target web", - "clean": "rm -rf ./pkg", - "dev": "cargo watch -w ./src-rust -q -s 'yarn workspace @hogg/line-segment-extending run build:wasm'" + "exports": { + ".": "./src/index.ts", + "./types": "./src/types.ts" }, "dependencies": { "@hogg/common": "workspace:^", "@hogg/tilings": "workspace:^", - "framer-motion": "^10.16.16", - "lucide-react": "^0.294.0", - "preshape": "^18.1.3", + "@hogg/wasm": "workspace:^", + "framer-motion": "11.5.4", + "lucide-react": "0.439.0", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/workspaces/line-segment-extending/src-rust/extend_line_segment.rs b/workspaces/line-segment-extending/src-rust/extend_line_segment.rs index beadfbac..86087b35 100644 --- a/workspaces/line-segment-extending/src-rust/extend_line_segment.rs +++ b/workspaces/line-segment-extending/src-rust/extend_line_segment.rs @@ -1,5 +1,5 @@ +use std::f64; use std::f64::consts::PI; -use std::f64::EPSILON; pub type X1Y1X2Y2 = (f64, f64, f64, f64); @@ -14,8 +14,8 @@ pub fn extend_line_segment( let dx = x2 - x1; let dy = y2 - y1; - let is_horizontal = dx.abs() < EPSILON; - let is_vertical = dy.abs() < EPSILON; + let is_horizontal = dx.abs() < f64::EPSILON; + let is_vertical = dy.abs() < f64::EPSILON; // For cases where the line is horizontal or vertical, // we can just use the min/max values of the bbox, and diff --git a/workspaces/line-segment-extending/src-rust/lib.rs b/workspaces/line-segment-extending/src-rust/lib.rs index a4117d8e..c6d0af23 100644 --- a/workspaces/line-segment-extending/src-rust/lib.rs +++ b/workspaces/line-segment-extending/src-rust/lib.rs @@ -1,20 +1,3 @@ mod extend_line_segment; -use wasm_bindgen::prelude::wasm_bindgen; -use wasm_bindgen::{JsError, JsValue}; - pub use self::extend_line_segment::{extend_line_segment, X1Y1X2Y2}; - -#[wasm_bindgen] -pub fn get_extended_line_segment( - line_segment: JsValue, - bounds: JsValue, - extend_start: bool, - extend_end: bool, -) -> Result { - let line_segment = serde_wasm_bindgen::from_value::(line_segment.to_owned())?; - let bounds = serde_wasm_bindgen::from_value::(bounds.to_owned())?; - let extended_line_segment = extend_line_segment(line_segment, bounds, extend_start, extend_end); - - Ok(serde_wasm_bindgen::to_value(&extended_line_segment)?) -} diff --git a/workspaces/line-segment-extending/src/Article.tsx b/workspaces/line-segment-extending/src/Article.tsx index 167fefcd..8354a84e 100644 --- a/workspaces/line-segment-extending/src/Article.tsx +++ b/workspaces/line-segment-extending/src/Article.tsx @@ -165,7 +165,8 @@ let y = |x: f64| m * x + b; Let's say we have 2 line segments. The first line segment is defined by the points (x1, y1) and (x2, y2). The second line segment is defined by the points (x3, y3) and{' '} - (x4, y4) ( + (x4, y4) ( + ). diff --git a/workspaces/line-segment-extending/src/Presentation/Layers/Bounds.tsx b/workspaces/line-segment-extending/src/Presentation/Layers/Bounds.tsx index d7effb82..7bd5bc81 100644 --- a/workspaces/line-segment-extending/src/Presentation/Layers/Bounds.tsx +++ b/workspaces/line-segment-extending/src/Presentation/Layers/Bounds.tsx @@ -113,7 +113,7 @@ export default function Bounds() { ); const isLineIntersecting = (line: BoundingLine): boolean => { - if (line.y1 === line.y2) { + if (line.y1 === line.y2 && extendedLineSegmentToBounds) { return ( extendedLineSegmentToBounds[1] === line.y1 || extendedLineSegmentToBounds[3] === line.y1 || @@ -122,7 +122,7 @@ export default function Bounds() { ); } - if (line.x1 === line.x2) { + if (line.x1 === line.x2 && extendedLineSegmentToBounds) { return ( extendedLineSegmentToBounds[0] === line.x1 || extendedLineSegmentToBounds[2] === line.x1 || diff --git a/workspaces/line-segment-extending/src/Presentation/Layers/ExtendedLineSegment.tsx b/workspaces/line-segment-extending/src/Presentation/Layers/ExtendedLineSegment.tsx index 524f949c..7f489084 100644 --- a/workspaces/line-segment-extending/src/Presentation/Layers/ExtendedLineSegment.tsx +++ b/workspaces/line-segment-extending/src/Presentation/Layers/ExtendedLineSegment.tsx @@ -27,28 +27,32 @@ export default function ExtendedLineSegment() { return ( - + {extendedLineSegmentToContainer && ( + + )} - + {extendedLineSegmentToBounds && ( + + )} - {extendStart && ( + {extendStart && extendedLineSegmentToBounds && ( )} - {extendEnd && ( + {extendEnd && extendedLineSegmentToBounds && ( )} - {extendStart && ( + {extendStart && extendedLineSegmentToBounds && ( )} - {extendEnd && ( + {extendEnd && extendedLineSegmentToBounds && ( (); - const { getExtendedLineSegment } = useWasmApi(); + const { + api: { getExtendedLineSegment }, + } = useWasmApi(); const [bounds, setBounds] = useState([ 0, 0, 0, 0, ]); @@ -42,6 +45,11 @@ export default function LineSegmentProvider({ children }: PropsWithChildren) { [x1, x2, y1, y2] ); + const [extendedLineSegmentToContainer, setExtendedLineSegmentToContainer] = + useState(null); + const [extendedLineSegmentToBounds, setExtendedLineSegmentToBounds] = + useState(null); + // Clamps the points to the bounds of the container const handleSetPoints1 = useCallback( ([x, y]: [number, number]) => { @@ -63,29 +71,6 @@ export default function LineSegmentProvider({ children }: PropsWithChildren) { [bounds] ); - const extendedLineSegmentToContainer = useMemo( - () => - getExtendedLineSegment( - lineSegment, - [0, 0, containerWidth, containerHeight], - extendStart, - extendEnd - ), - [ - extendEnd, - extendStart, - getExtendedLineSegment, - containerWidth, - containerHeight, - lineSegment, - ] - ); - - const extendedLineSegmentToBounds = useMemo( - () => getExtendedLineSegment(lineSegment, bounds, extendStart, extendEnd), - [extendEnd, extendStart, getExtendedLineSegment, bounds, lineSegment] - ); - useEffect(() => { const x1 = Math.round(containerWidth * padding); const y1 = Math.round(containerHeight * padding); @@ -111,6 +96,28 @@ export default function LineSegmentProvider({ children }: PropsWithChildren) { ]); }, [containerHeight, containerWidth]); + useEffect(() => { + getExtendedLineSegment([ + lineSegment, + [0, 0, containerWidth, containerHeight], + extendStart, + extendEnd, + ]).then(setExtendedLineSegmentToContainer); + }, [ + containerHeight, + containerWidth, + extendEnd, + extendStart, + getExtendedLineSegment, + lineSegment, + ]); + + useEffect(() => { + getExtendedLineSegment([lineSegment, bounds, extendStart, extendEnd]).then( + setExtendedLineSegmentToBounds + ); + }, [bounds, extendEnd, extendStart, getExtendedLineSegment, lineSegment]); + const value = { animate, bounds, diff --git a/workspaces/line-segment-extending/src/Presentation/WasmApi/WasmApi.tsx b/workspaces/line-segment-extending/src/Presentation/WasmApi/WasmApi.tsx deleted file mode 100644 index c692013f..00000000 --- a/workspaces/line-segment-extending/src/Presentation/WasmApi/WasmApi.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { WasmProvider } from '@hogg/common'; -import { PropsWithChildren } from 'react'; -import loader from '../../../pkg/line_segment_extending'; -import { wasmApi } from './useWasmApi'; - -export default function WasmApi(props: PropsWithChildren) { - return ; -} diff --git a/workspaces/line-segment-extending/src/Presentation/WasmApi/useWasmApi.ts b/workspaces/line-segment-extending/src/Presentation/WasmApi/useWasmApi.ts deleted file mode 100644 index 41439528..00000000 --- a/workspaces/line-segment-extending/src/Presentation/WasmApi/useWasmApi.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { useWasmContext } from '@hogg/common'; -import * as wasm from '../../../pkg/line_segment_extending'; - -export type X1Y1X2Y2 = [number, number, number, number]; - -function getExtendedLineSegment( - lineSegment: X1Y1X2Y2, - bounds: X1Y1X2Y2, - extendStart: boolean, - extendEnd: boolean -): X1Y1X2Y2 { - return wasm.get_extended_line_segment( - lineSegment, - bounds, - extendStart, - extendEnd - ); -} - -export const wasmApi = { - getExtendedLineSegment, -}; - -export type WasmApi = typeof wasmApi; - -export default function useWasmApi() { - return useWasmContext(); -} diff --git a/workspaces/line-segment-extending/src/Presentation/index.tsx b/workspaces/line-segment-extending/src/Presentation/index.tsx index a42f4648..5560637d 100644 --- a/workspaces/line-segment-extending/src/Presentation/index.tsx +++ b/workspaces/line-segment-extending/src/Presentation/index.tsx @@ -1,9 +1,9 @@ import { ProjectWindow } from '@hogg/common'; +import { WasmApiLoadingScreen } from '@hogg/wasm'; import Controls from './Controls'; import LineSegmentProvider from './LineSegmentProvider'; import Renderer from './Renderer'; import Settings from './Settings'; -import WasmApi from './WasmApi/WasmApi'; import { useLineSegmentContext } from './useLineSegmentContext'; type Props = {}; @@ -25,11 +25,11 @@ function Presentation({}: Props) { function PresentationWithContext() { return ( - + - + ); } diff --git a/workspaces/line-segment-extending/src/Presentation/useLineSegmentContext.ts b/workspaces/line-segment-extending/src/Presentation/useLineSegmentContext.ts index c65258c4..811a2a7f 100644 --- a/workspaces/line-segment-extending/src/Presentation/useLineSegmentContext.ts +++ b/workspaces/line-segment-extending/src/Presentation/useLineSegmentContext.ts @@ -1,6 +1,7 @@ import { Ref, RefObject, createContext, useContext } from 'react'; +import { X1Y1X2Y2 } from '../types'; -const defaultLineSegment: [number, number, number, number] = [0, 0, 0, 0]; +const defaultLineSegment: X1Y1X2Y2 = [0, 0, 0, 0]; export enum BoundFlag { TOP = 'Top', @@ -11,15 +12,15 @@ export enum BoundFlag { export type LineSegmentContextValue = { animate: boolean; - bounds: [number, number, number, number]; + bounds: X1Y1X2Y2; boundsHeight: number; boundsWidth: number; containerHeight: number; containerWidth: number; extendEnd: boolean; extendStart: boolean; - extendedLineSegmentToBounds: [number, number, number, number]; - extendedLineSegmentToContainer: [number, number, number, number]; + extendedLineSegmentToBounds: X1Y1X2Y2 | null; + extendedLineSegmentToContainer: X1Y1X2Y2 | null; refDimensionContainer: Ref; refSvgContainer: RefObject; setAnimate: (animate: boolean) => void; diff --git a/workspaces/line-segment-extending/src/index.ts b/workspaces/line-segment-extending/src/index.ts index 6252dd17..8a4fee57 100644 --- a/workspaces/line-segment-extending/src/index.ts +++ b/workspaces/line-segment-extending/src/index.ts @@ -2,6 +2,7 @@ import { type Project, ProjectKey } from '@hogg/common'; import image from './image.webp'; export { default as Project } from './Project'; +export * from './types'; export const meta: Project = { id: ProjectKey.line_segment_extending, diff --git a/workspaces/line-segment-extending/src/types.ts b/workspaces/line-segment-extending/src/types.ts new file mode 100644 index 00000000..9687e5b6 --- /dev/null +++ b/workspaces/line-segment-extending/src/types.ts @@ -0,0 +1 @@ +export type X1Y1X2Y2 = [number, number, number, number]; diff --git a/workspaces/preshape/package.json b/workspaces/preshape/package.json index bde250b7..397f4ce6 100644 --- a/workspaces/preshape/package.json +++ b/workspaces/preshape/package.json @@ -7,6 +7,6 @@ "main": "./src/index.ts", "dependencies": { "@hogg/common": "workspace:^", - "preshape": "^18.1.3" + "preshape": "^19.1.0" } } diff --git a/workspaces/snake/package.json b/workspaces/snake/package.json index 635d8123..ccffc435 100644 --- a/workspaces/snake/package.json +++ b/workspaces/snake/package.json @@ -8,7 +8,7 @@ "dependencies": { "@hogg/common": "workspace:^", "lucide-react": "^0.294.0", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.20.1" diff --git a/workspaces/spirals/package.json b/workspaces/spirals/package.json index 6a0b1ecd..489d71e7 100644 --- a/workspaces/spirals/package.json +++ b/workspaces/spirals/package.json @@ -16,7 +16,7 @@ "@hogg/common": "workspace:^", "gl-matrix": "^3.4.3", "lodash": "^4.17.21", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.20.1", diff --git a/workspaces/tilings/migrations/20230316081936_create_tables.down.sql b/workspaces/tilings/migrations/20230316081936_create_tables.down.sql index 15e4b8ed..d40d25cb 100644 --- a/workspaces/tilings/migrations/20230316081936_create_tables.down.sql +++ b/workspaces/tilings/migrations/20230316081936_create_tables.down.sql @@ -1,6 +1,6 @@ DROP TABLE state; DROP TABLE tilings; -DROP TABLE traversals; +DROP TABLE visits; DROP TABLE errors; DROP TYPE sys_info; DROP TABLE sessions; diff --git a/workspaces/tilings/migrations/20230316081936_create_tables.up.sql b/workspaces/tilings/migrations/20230316081936_create_tables.up.sql index 4179bdf6..fc8fee75 100644 --- a/workspaces/tilings/migrations/20230316081936_create_tables.up.sql +++ b/workspaces/tilings/migrations/20230316081936_create_tables.up.sql @@ -3,45 +3,42 @@ CREATE TABLE state ( value VARCHAR NOT NULL ); -INSERT INTO state (key, value) VALUES ('current_path', '3'); - CREATE TABLE tilings ( notation VARCHAR PRIMARY KEY, - score INT NOT NULL, has_0 BOOLEAN NOT NULL, has_3 BOOLEAN NOT NULL, has_4 BOOLEAN NOT NULL, has_6 BOOLEAN NOT NULL, has_8 BOOLEAN NOT NULL, has_12 BOOLEAN NOT NULL, + uniform INT NOT NULL, + hash VARCHAR(255) NOT NULL, + path_index INTEGER NOT NULL, + transform_index INTEGER NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE traversals ( +CREATE TABLE visits ( path VARCHAR PRIMARY KEY, - score INT NOT NULL, + index INTEGER NOT NULL, level INT NOT NULL, - is_blocked BOOLEAN NOT NULL, - valid_transforms TEXT NOT NULL, - invalid_transforms TEXT NOT NULL, - blocked_transforms TEXT NOT NULL, - count_valid_transforms INT NOT NULL, - count_invalid_transforms INT NOT NULL, - count_blocked_transforms INT NOT NULL, + is_invalid BOOLEAN NOT NULL, + valid_tilings TEXT NOT NULL, + count_valid_tilings INT NOT NULL, + count_total_tilings INTEGER NOT NULL, has_0 BOOLEAN NOT NULL, has_3 BOOLEAN NOT NULL, has_4 BOOLEAN NOT NULL, has_6 BOOLEAN NOT NULL, has_8 BOOLEAN NOT NULL, has_12 BOOLEAN NOT NULL, - has_valid_transforms BOOLEAN NOT NULL, session_id VARCHAR NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE errors ( - path VARCHAR PRIMARY KEY, - error TEXT NOT NULL, + tiling VARCHAR PRIMARY KEY, + reason TEXT NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); @@ -49,14 +46,15 @@ CREATE TYPE sys_info AS ( hostname TEXT, os TEXT, os_version TEXT, - cpu TEXT + cpu TEXT, + ip_address TEXT ); CREATE TABLE sessions ( id VARCHAR PRIMARY KEY, - ip_address TEXT NOT NULL, worker_count INT NOT NULL, sys_info sys_info NOT NULL, timestamp_start TIMESTAMP DEFAULT CURRENT_TIMESTAMP, timestamp_stop TIMESTAMP ); + diff --git a/workspaces/tilings/migrations/20230624220200_create_materialized_views.up.sql b/workspaces/tilings/migrations/20230624220200_create_materialized_views.up.sql index 23874508..05555623 100644 --- a/workspaces/tilings/migrations/20230624220200_create_materialized_views.up.sql +++ b/workspaces/tilings/migrations/20230624220200_create_materialized_views.up.sql @@ -4,12 +4,10 @@ CREATE MATERIALIZED VIEW insights_per_minute AS ( DATE_TRUNC('minute', timestamp) AS minute, COUNT(DISTINCT session_id) as count_sessions, COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_invalid_transforms) AS count_invalid_transforms, - SUM(count_blocked_transforms) AS count_blocked_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms, + SUM(count_valid_tilings) AS count_valid_tilings, + SUM(count_total_tilings) AS count_total_tilings, MAX(level) AS level - FROM traversals + FROM visits GROUP BY minute ORDER BY minute ); @@ -25,17 +23,15 @@ CREATE MATERIALIZED VIEW insights_per_level AS ( level, ROUND(EXTRACT(epoch FROM MAX(timestamp) - MIN(timestamp)) * 1000)::int AS duration, COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_invalid_transforms) AS count_invalid_transforms, - SUM(count_blocked_transforms) AS count_blocked_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms, - COUNT(CASE WHEN (has_0 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_0, - COUNT(CASE WHEN (has_3 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_3, - COUNT(CASE WHEN (has_4 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_4, - COUNT(CASE WHEN (has_6 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_6, - COUNT(CASE WHEN (has_8 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_8, - COUNT(CASE WHEN (has_12 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_12 - FROM traversals + SUM(count_valid_tilings) AS count_valid_tilings, + SUM(count_total_tilings) AS count_total_tilings, + COUNT(CASE WHEN (has_0 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_0, + COUNT(CASE WHEN (has_3 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_3, + COUNT(CASE WHEN (has_4 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_4, + COUNT(CASE WHEN (has_6 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_6, + COUNT(CASE WHEN (has_8 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_8, + COUNT(CASE WHEN (has_12 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_12 + FROM visits GROUP BY level ORDER BY level ); @@ -50,9 +46,9 @@ CREATE MATERIALIZED VIEW insights_per_session AS ( SELECT session_id, COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms - FROM traversals + SUM(count_valid_tilings) AS count_valid_tilings, + SUM(count_total_tilings) AS count_total_tilings + FROM visits GROUP BY session_id ); diff --git a/workspaces/tilings/migrations/20230915204545_drop_materialized_views.down.sql b/workspaces/tilings/migrations/20230915204545_drop_materialized_views.down.sql deleted file mode 100644 index 23874508..00000000 --- a/workspaces/tilings/migrations/20230915204545_drop_materialized_views.down.sql +++ /dev/null @@ -1,62 +0,0 @@ --- insights_per_minute -CREATE MATERIALIZED VIEW insights_per_minute AS ( - SELECT - DATE_TRUNC('minute', timestamp) AS minute, - COUNT(DISTINCT session_id) as count_sessions, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_invalid_transforms) AS count_invalid_transforms, - SUM(count_blocked_transforms) AS count_blocked_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms, - MAX(level) AS level - FROM traversals - GROUP BY minute - ORDER BY minute -); - -CREATE - UNIQUE INDEX ix_insights_per_minute__minute - ON insights_per_minute(minute DESC); --- insights_per_minute END - --- insights_per_level -CREATE MATERIALIZED VIEW insights_per_level AS ( - SELECT - level, - ROUND(EXTRACT(epoch FROM MAX(timestamp) - MIN(timestamp)) * 1000)::int AS duration, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_invalid_transforms) AS count_invalid_transforms, - SUM(count_blocked_transforms) AS count_blocked_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms, - COUNT(CASE WHEN (has_0 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_0, - COUNT(CASE WHEN (has_3 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_3, - COUNT(CASE WHEN (has_4 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_4, - COUNT(CASE WHEN (has_6 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_6, - COUNT(CASE WHEN (has_8 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_8, - COUNT(CASE WHEN (has_12 AND count_valid_transforms > 0) THEN 1 END) AS count_valid_has_12 - FROM traversals - GROUP BY level - ORDER BY level -); - -CREATE - UNIQUE INDEX ix_insights_per_level - ON insights_per_level(level); --- insights_per_level END - --- insights_per_session -CREATE MATERIALIZED VIEW insights_per_session AS ( - SELECT - session_id, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_transforms) AS count_valid_transforms, - SUM(count_valid_transforms + count_invalid_transforms + count_blocked_transforms) as count_total_transforms - FROM traversals - GROUP BY session_id -); - -CREATE - UNIQUE INDEX ix_insights_per_session__session_id - ON insights_per_session(session_id); --- insights_per_session END diff --git a/workspaces/tilings/migrations/20230915204545_drop_materialized_views.up.sql b/workspaces/tilings/migrations/20230915204545_drop_materialized_views.up.sql deleted file mode 100644 index e5d7bce1..00000000 --- a/workspaces/tilings/migrations/20230915204545_drop_materialized_views.up.sql +++ /dev/null @@ -1,3 +0,0 @@ -DROP MATERIALIZED VIEW insights_per_minute; -DROP MATERIALIZED VIEW insights_per_level; -DROP MATERIALIZED VIEW insights_per_session; diff --git a/workspaces/tilings/migrations/20230916194223_traversals_to_visits.down.sql b/workspaces/tilings/migrations/20230916194223_traversals_to_visits.down.sql deleted file mode 100644 index 034fae29..00000000 --- a/workspaces/tilings/migrations/20230916194223_traversals_to_visits.down.sql +++ /dev/null @@ -1,14 +0,0 @@ -ALTER TABLE visits RENAME TO traversals; - -ALTER TABLE traversals RENAME COLUMN is_invalid TO is_blocked; -ALTER TABLE traversals RENAME column valid_tilings TO valid_transforms; -ALTER TABLE traversals RENAME column count_valid_tilings TO count_valid_transforms; - -ALTER TABLE traversals ADD COLUMN invalid_transforms TEXT NOT NULL; -ALTER TABLE traversals ADD COLUMN blocked_transforms TEXT NOT NULL; -ALTER TABLE traversals ADD COLUMN count_blocked_transforms INT NOT NULL; -ALTER TABLE traversals ADD COLUMN count_invalid_transforms INT NOT NULL; -ALTER TABLE traversals ADD COLUMN has_valid_transforms BOOLEAN NOT NULL; - -ALTER TABLE traversals DROP COLUMN count_total_tilings; - diff --git a/workspaces/tilings/migrations/20230916194223_traversals_to_visits.up.sql b/workspaces/tilings/migrations/20230916194223_traversals_to_visits.up.sql deleted file mode 100644 index 004370da..00000000 --- a/workspaces/tilings/migrations/20230916194223_traversals_to_visits.up.sql +++ /dev/null @@ -1,15 +0,0 @@ -ALTER TABLE traversals RENAME TO visits; - -ALTER TABLE visits RENAME COLUMN is_blocked TO is_invalid; -ALTER TABLE visits RENAME column valid_transforms TO valid_tilings; -ALTER TABLE visits RENAME column count_valid_transforms TO count_valid_tilings; - -ALTER TABLE visits DROP COLUMN invalid_transforms; -ALTER TABLE visits DROP COLUMN blocked_transforms; -ALTER TABLE visits DROP COLUMN count_blocked_transforms; -ALTER TABLE visits DROP COLUMN count_invalid_transforms; -ALTER TABLE visits DROP COLUMN has_valid_transforms; - -ALTER TABLE visits ADD COLUMN count_total_tilings INTEGER NOT NULL DEFAULT 0; - - diff --git a/workspaces/tilings/migrations/20230916194425_create_materialized_views.down.sql b/workspaces/tilings/migrations/20230916194425_create_materialized_views.down.sql deleted file mode 100644 index e5d7bce1..00000000 --- a/workspaces/tilings/migrations/20230916194425_create_materialized_views.down.sql +++ /dev/null @@ -1,3 +0,0 @@ -DROP MATERIALIZED VIEW insights_per_minute; -DROP MATERIALIZED VIEW insights_per_level; -DROP MATERIALIZED VIEW insights_per_session; diff --git a/workspaces/tilings/migrations/20230916194425_create_materialized_views.up.sql b/workspaces/tilings/migrations/20230916194425_create_materialized_views.up.sql deleted file mode 100644 index 05555623..00000000 --- a/workspaces/tilings/migrations/20230916194425_create_materialized_views.up.sql +++ /dev/null @@ -1,58 +0,0 @@ --- insights_per_minute -CREATE MATERIALIZED VIEW insights_per_minute AS ( - SELECT - DATE_TRUNC('minute', timestamp) AS minute, - COUNT(DISTINCT session_id) as count_sessions, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_tilings) AS count_valid_tilings, - SUM(count_total_tilings) AS count_total_tilings, - MAX(level) AS level - FROM visits - GROUP BY minute - ORDER BY minute -); - -CREATE - UNIQUE INDEX ix_insights_per_minute__minute - ON insights_per_minute(minute DESC); --- insights_per_minute END - --- insights_per_level -CREATE MATERIALIZED VIEW insights_per_level AS ( - SELECT - level, - ROUND(EXTRACT(epoch FROM MAX(timestamp) - MIN(timestamp)) * 1000)::int AS duration, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_tilings) AS count_valid_tilings, - SUM(count_total_tilings) AS count_total_tilings, - COUNT(CASE WHEN (has_0 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_0, - COUNT(CASE WHEN (has_3 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_3, - COUNT(CASE WHEN (has_4 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_4, - COUNT(CASE WHEN (has_6 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_6, - COUNT(CASE WHEN (has_8 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_8, - COUNT(CASE WHEN (has_12 AND count_valid_tilings > 0) THEN 1 END) AS count_valid_has_12 - FROM visits - GROUP BY level - ORDER BY level -); - -CREATE - UNIQUE INDEX ix_insights_per_level - ON insights_per_level(level); --- insights_per_level END - --- insights_per_session -CREATE MATERIALIZED VIEW insights_per_session AS ( - SELECT - session_id, - COUNT(DISTINCT path) AS count_nodes, - SUM(count_valid_tilings) AS count_valid_tilings, - SUM(count_total_tilings) AS count_total_tilings - FROM visits - GROUP BY session_id -); - -CREATE - UNIQUE INDEX ix_insights_per_session__session_id - ON insights_per_session(session_id); --- insights_per_session END diff --git a/workspaces/tilings/migrations/20230916194521_errors.down.sql b/workspaces/tilings/migrations/20230916194521_errors.down.sql deleted file mode 100644 index 57aee7af..00000000 --- a/workspaces/tilings/migrations/20230916194521_errors.down.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE errors RENAME tiling TO path; -ALTER TABLE errors RENAME reason TO error; diff --git a/workspaces/tilings/migrations/20230916194521_errors.up.sql b/workspaces/tilings/migrations/20230916194521_errors.up.sql deleted file mode 100644 index a9df539b..00000000 --- a/workspaces/tilings/migrations/20230916194521_errors.up.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE errors RENAME path TO tiling; -ALTER TABLE errors RENAME error TO reason; diff --git a/workspaces/tilings/migrations/20230917131850_drop_scores.down.sql b/workspaces/tilings/migrations/20230917131850_drop_scores.down.sql deleted file mode 100644 index 2c09a601..00000000 --- a/workspaces/tilings/migrations/20230917131850_drop_scores.down.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE tilings ADD COLUMN score INT NOT NULL; -ALTER TABLE visits ADD COLUMN score INT NOT NULL; diff --git a/workspaces/tilings/migrations/20230917131850_drop_scores.up.sql b/workspaces/tilings/migrations/20230917131850_drop_scores.up.sql deleted file mode 100644 index dc940767..00000000 --- a/workspaces/tilings/migrations/20230917131850_drop_scores.up.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE tilings DROP COLUMN score; -ALTER TABLE visits DROP COLUMN score; diff --git a/workspaces/tilings/migrations/20230928211242_drop_default_state.down.sql b/workspaces/tilings/migrations/20230928211242_drop_default_state.down.sql deleted file mode 100644 index fdb27895..00000000 --- a/workspaces/tilings/migrations/20230928211242_drop_default_state.down.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO state (key, value) VALUES ('current_path', '3'); diff --git a/workspaces/tilings/migrations/20230928211242_drop_default_state.up.sql b/workspaces/tilings/migrations/20230928211242_drop_default_state.up.sql deleted file mode 100644 index 0fec0b7d..00000000 --- a/workspaces/tilings/migrations/20230928211242_drop_default_state.up.sql +++ /dev/null @@ -1 +0,0 @@ -DELETE FROM state WHERE key = 'current_path'; diff --git a/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.down.sql b/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.down.sql deleted file mode 100644 index 183b70d7..00000000 --- a/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.down.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE tilings DROP COLUMN uniform; -ALTER TABLE tilings DROP COLUMN vertex; diff --git a/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.up.sql b/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.up.sql deleted file mode 100644 index 039e2c32..00000000 --- a/workspaces/tilings/migrations/20231004222042_add-tilings-uniform-and-vertices.up.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE tilings ADD COLUMN uniform INT NOT NULL; -ALTER TABLE tilings ADD COLUMN vertex TEXT NOT NULL; diff --git a/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.down.sql b/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.down.sql deleted file mode 100644 index 592aadae..00000000 --- a/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.down.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE DROP COLUMN d_key; diff --git a/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.up.sql b/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.up.sql deleted file mode 100644 index b1bcd93f..00000000 --- a/workspaces/tilings/migrations/20231012211003_add_dkey_column_to_tilings_table.up.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE tilings ADD COLUMN d_key VARCHAR(255) NOT NULL; diff --git a/workspaces/tilings/migrations/20231014181543_add_index_columns.down.sql b/workspaces/tilings/migrations/20231014181543_add_index_columns.down.sql deleted file mode 100644 index d027329f..00000000 --- a/workspaces/tilings/migrations/20231014181543_add_index_columns.down.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE visits DROP COLUMN index; -ALTER TABLE tilings DROP COLUMN p_index; -ALTER TABLE tilings DROP COLUMN t_index; diff --git a/workspaces/tilings/migrations/20231014181543_add_index_columns.up.sql b/workspaces/tilings/migrations/20231014181543_add_index_columns.up.sql deleted file mode 100644 index 375d41d4..00000000 --- a/workspaces/tilings/migrations/20231014181543_add_index_columns.up.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE visits ADD COLUMN index INTEGER NOT NULL; -ALTER TABLE tilings ADD COLUMN p_index INTEGER NOT NULL; -ALTER TABLE tilings ADD COLUMN t_index INTEGER NOT NULL; diff --git a/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.down.sql b/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.down.sql deleted file mode 100644 index c45168b0..00000000 --- a/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.down.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE sessions ADD COLUMN ip_address TEXT NOT NULL; diff --git a/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.up.sql b/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.up.sql deleted file mode 100644 index b716c068..00000000 --- a/workspaces/tilings/migrations/20231021215225_drop_ip_address_column_from_sessions.up.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE sessions DROP COLUMN ip_address; diff --git a/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.down.sql b/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.down.sql deleted file mode 100644 index 7ea36a9f..00000000 --- a/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.down.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TYPE sys_info DROP ATTRIBUTE ip_address; diff --git a/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.up.sql b/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.up.sql deleted file mode 100644 index 98175cd7..00000000 --- a/workspaces/tilings/migrations/20231021222058_add_ip_address_to_sys_info_type.up.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TYPE sys_info ADD ATTRIBUTE ip_address TEXT; - diff --git a/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.down.sql b/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.down.sql deleted file mode 100644 index 12c1e13b..00000000 --- a/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.down.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE tilings ADD COLUMN vertex TEXT NOT NULL; diff --git a/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.up.sql b/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.up.sql deleted file mode 100644 index 3dd5357a..00000000 --- a/workspaces/tilings/migrations/20231115082305_add_vertex_and_shape_type_columns.up.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE tilings DROP COLUMN vertex; diff --git a/workspaces/tilings/package.json b/workspaces/tilings/package.json index ee72925b..8ad8c04c 100644 --- a/workspaces/tilings/package.json +++ b/workspaces/tilings/package.json @@ -5,13 +5,15 @@ "private": true, "type": "module", "main": "./src/index.ts", + "exports": { + ".": "./src/index.ts", + "./types": "./src/types.ts" + }, "scripts": { - "build": "yarn clean && yarn build:rust", - "build:rust": "yarn build:types && yarn build:wasm", + "build": "yarn clean && yarn build:types", "build:types": "typeshare src-rust --lang=typescript --output-file=./src/types.ts", - "build:wasm": "wasm-pack build src-rust/wasm --target web --out-dir ../../pkg", - "clean": "rm -rf ./logs ./pkg", - "dev": "cargo watch -w workspaces/circular-sequence/src-rust -w workspaces/tilings/src-rust -q -s \"yarn workspace @hogg/tilings run build:rust\"", + "clean": "rm -rf ./logs", + "dev": "cargo watch -w workspaces/circular-sequence/src-rust -w workspaces/tilings/src-rust -q -s \"yarn workspace @hogg/tilings run build:types\"", "dev:searcher": "cargo watch -w workspaces/circular-sequence/src-rust -w workspaces/tilings/src-rust -q -x \"run --bin tiling-searcher -- --drop-outstanding --reset --migrations-dir=workspaces/tilings/migrations\"", "export:results": "cargo run --release --bin tiling-export", "generate:images": "node ./scripts/generate-images.js", @@ -19,20 +21,21 @@ }, "dependencies": { "@hogg/common": "workspace:^", - "lucide-react": "^0.294.0", - "preshape": "^18.1.3", + "@hogg/wasm": "workspace:^", + "lucide-react": "0.439.0", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.20.1", - "uuid": "^9.0.1" + "uuid": "10.0.0" }, "devDependencies": { "@swc-node/register": "^1.8.0", "@swc/core": "^1.4.2", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", - "puppeteer": "^21.4.1", - "sharp": "^0.32.6", + "puppeteer": "23.3.0", + "sharp": "0.33.5", "typescript": "^5.0.4" } } diff --git a/workspaces/tilings/results/images/12-3:m30:m(h3).png b/workspaces/tilings/results/images/12-3:m30:m(h3).png deleted file mode 100644 index 9af4802d..00000000 Binary files a/workspaces/tilings/results/images/12-3:m30:m(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/12-4-3,3:m90:r(h6).png b/workspaces/tilings/results/images/12-4-3,3:m90:r(h6).png deleted file mode 100644 index b8ce3447..00000000 Binary files a/workspaces/tilings/results/images/12-4-3,3:m90:r(h6).png and /dev/null differ diff --git a/workspaces/tilings/results/images/12-4-3,6:m30:m(c4).png b/workspaces/tilings/results/images/12-4-3,6:m30:m(c4).png deleted file mode 100644 index b84a9d71..00000000 Binary files a/workspaces/tilings/results/images/12-4-3,6:m30:m(c4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-0,3-6-6:m90:r(h9).png b/workspaces/tilings/results/images/3-0,3-6-6:m90:r(h9).png deleted file mode 100644 index 05ca236b..00000000 Binary files a/workspaces/tilings/results/images/3-0,3-6-6:m90:r(h9).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-3,6-6:m60:m(h4).png b/workspaces/tilings/results/images/3-3-3,6-6:m60:m(h4).png deleted file mode 100644 index 07be209b..00000000 Binary files a/workspaces/tilings/results/images/3-3-3,6-6:m60:m(h4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-3-4-3:m30:r(h9).png b/workspaces/tilings/results/images/3-3-3-4-3:m30:r(h9).png deleted file mode 100644 index a1a66d10..00000000 Binary files a/workspaces/tilings/results/images/3-3-3-4-3:m30:r(h9).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-6-0,3:m30:m(h2).png b/workspaces/tilings/results/images/3-3-6-0,3:m30:m(h2).png deleted file mode 100644 index 3670e19b..00000000 Binary files a/workspaces/tilings/results/images/3-3-6-0,3:m30:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-6-3,3:m30:m(c1).png b/workspaces/tilings/results/images/3-3-6-3,3:m30:m(c1).png deleted file mode 100644 index ac78d1fa..00000000 Binary files a/workspaces/tilings/results/images/3-3-6-3,3:m30:m(c1).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-6:m30:m(v5).png b/workspaces/tilings/results/images/3-3-6:m30:m(v5).png deleted file mode 100644 index f72030ab..00000000 Binary files a/workspaces/tilings/results/images/3-3-6:m30:m(v5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-3-6:m60:m(v6).png b/workspaces/tilings/results/images/3-3-6:m60:m(v6).png deleted file mode 100644 index 7b291118..00000000 Binary files a/workspaces/tilings/results/images/3-3-6:m60:m(v6).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4,3-12:r120:m(c2).png b/workspaces/tilings/results/images/3-4,3-12:r120:m(c2).png deleted file mode 100644 index 38cc89d6..00000000 Binary files a/workspaces/tilings/results/images/3-4,3-12:r120:m(c2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3,3-12:m30:r(h11).png b/workspaces/tilings/results/images/3-4-3,3-12:m30:r(h11).png deleted file mode 100644 index 11326131..00000000 Binary files a/workspaces/tilings/results/images/3-4-3,3-12:m30:r(h11).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3,3:m30:m(h2).png b/workspaces/tilings/results/images/3-4-3,3:m30:m(h2).png deleted file mode 100644 index e9e2111a..00000000 Binary files a/workspaces/tilings/results/images/3-4-3,3:m30:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3,4-6:m30:m(c5).png b/workspaces/tilings/results/images/3-4-3,4-6:m30:m(c5).png deleted file mode 100644 index f4e69609..00000000 Binary files a/workspaces/tilings/results/images/3-4-3,4-6:m30:m(c5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3,6-4:m30:m(c2).png b/workspaces/tilings/results/images/3-4-3,6-4:m30:m(c2).png deleted file mode 100644 index 7db7d90f..00000000 Binary files a/workspaces/tilings/results/images/3-4-3,6-4:m30:m(c2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3-3-12:m30:r(h3).png b/workspaces/tilings/results/images/3-4-3-3-12:m30:r(h3).png deleted file mode 100644 index 66dcd9e1..00000000 Binary files a/workspaces/tilings/results/images/3-4-3-3-12:m30:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3-3:m30:m(h6).png b/workspaces/tilings/results/images/3-4-3-3:m30:m(h6).png deleted file mode 100644 index e78f3ecc..00000000 Binary files a/workspaces/tilings/results/images/3-4-3-3:m30:m(h6).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-4-3:m30:m(c3).png b/workspaces/tilings/results/images/3-4-3:m30:m(c3).png deleted file mode 100644 index d824c343..00000000 Binary files a/workspaces/tilings/results/images/3-4-3:m30:m(c3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6,3-3-6:m90:r(h5).png b/workspaces/tilings/results/images/3-6,3-3-6:m90:r(h5).png deleted file mode 100644 index 90f66715..00000000 Binary files a/workspaces/tilings/results/images/3-6,3-3-6:m90:r(h5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6,3-3:m90:r(h4).png b/workspaces/tilings/results/images/3-6,3-3:m90:r(h4).png deleted file mode 100644 index da59e0f2..00000000 Binary files a/workspaces/tilings/results/images/3-6,3-3:m90:r(h4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6,3-6:m90:r(h3).png b/workspaces/tilings/results/images/3-6,3-6:m90:r(h3).png deleted file mode 100644 index 7ebbea43..00000000 Binary files a/workspaces/tilings/results/images/3-6,3-6:m90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6,3:m90:r(h3).png b/workspaces/tilings/results/images/3-6,3:m90:r(h3).png deleted file mode 100644 index 0e4822d8..00000000 Binary files a/workspaces/tilings/results/images/3-6,3:m90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6-3,3-6:m30:m(h5).png b/workspaces/tilings/results/images/3-6-3,3-6:m30:m(h5).png deleted file mode 100644 index 1d3c71a6..00000000 Binary files a/workspaces/tilings/results/images/3-6-3,3-6:m30:m(h5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6-3,3:m30:r(h3).png b/workspaces/tilings/results/images/3-6-3,3:m30:r(h3).png deleted file mode 100644 index ad66215a..00000000 Binary files a/workspaces/tilings/results/images/3-6-3,3:m30:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6-3-3,3:r60:r(v7).png b/workspaces/tilings/results/images/3-6-3-3,3:r60:r(v7).png deleted file mode 100644 index a9ba97b6..00000000 Binary files a/workspaces/tilings/results/images/3-6-3-3,3:r60:r(v7).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6-6:m30:m(h7).png b/workspaces/tilings/results/images/3-6-6:m30:m(h7).png deleted file mode 100644 index 6816d3c9..00000000 Binary files a/workspaces/tilings/results/images/3-6-6:m30:m(h7).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6-6:m60:r(h10).png b/workspaces/tilings/results/images/3-6-6:m60:r(h10).png deleted file mode 100644 index 0b7bad73..00000000 Binary files a/workspaces/tilings/results/images/3-6-6:m60:r(h10).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6:m30:m(c2).png b/workspaces/tilings/results/images/3-6:m30:m(c2).png deleted file mode 100644 index 5bc377f3..00000000 Binary files a/workspaces/tilings/results/images/3-6:m30:m(c2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6:m30:r(h2).png b/workspaces/tilings/results/images/3-6:m30:r(h2).png deleted file mode 100644 index 08307fb2..00000000 Binary files a/workspaces/tilings/results/images/3-6:m30:r(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3-6:r60:r(h3).png b/workspaces/tilings/results/images/3-6:r60:r(h3).png deleted file mode 100644 index d6d03c96..00000000 Binary files a/workspaces/tilings/results/images/3-6:r60:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/3:m30:m(h2).png b/workspaces/tilings/results/images/3:m30:m(h2).png deleted file mode 100644 index 6ab0d241..00000000 Binary files a/workspaces/tilings/results/images/3:m30:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3,3-12-3:m90:r(h6).png b/workspaces/tilings/results/images/4-3,3-12-3:m90:r(h6).png deleted file mode 100644 index c13ded8b..00000000 Binary files a/workspaces/tilings/results/images/4-3,3-12-3:m90:r(h6).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3,4-6-3:m90:r(v2).png b/workspaces/tilings/results/images/4-3,4-6-3:m90:r(v2).png deleted file mode 100644 index 00037d09..00000000 Binary files a/workspaces/tilings/results/images/4-3,4-6-3:m90:r(v2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-12-3:r90:m(h6).png b/workspaces/tilings/results/images/4-3-12-3:r90:m(h6).png deleted file mode 100644 index 2674dd8c..00000000 Binary files a/workspaces/tilings/results/images/4-3-12-3:r90:m(h6).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-12:m45:r(h2).png b/workspaces/tilings/results/images/4-3-12:m45:r(h2).png deleted file mode 100644 index b49545da..00000000 Binary files a/workspaces/tilings/results/images/4-3-12:m45:r(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-3,4:r90:m(h11).png b/workspaces/tilings/results/images/4-3-3,4:r90:m(h11).png deleted file mode 100644 index 9716f931..00000000 Binary files a/workspaces/tilings/results/images/4-3-3,4:r90:m(h11).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-3,4:r90:r(h3).png b/workspaces/tilings/results/images/4-3-3,4:r90:r(h3).png deleted file mode 100644 index 0a3da81b..00000000 Binary files a/workspaces/tilings/results/images/4-3-3,4:r90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-3-3:m90:r(h2).png b/workspaces/tilings/results/images/4-3-3-3:m90:r(h2).png deleted file mode 100644 index 92ff482e..00000000 Binary files a/workspaces/tilings/results/images/4-3-3-3:m90:r(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-4-3-6:m90:r(h11).png b/workspaces/tilings/results/images/4-3-4-3-6:m90:r(h11).png deleted file mode 100644 index e6818ab3..00000000 Binary files a/workspaces/tilings/results/images/4-3-4-3-6:m90:r(h11).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3-4-6:m90:r(c4).png b/workspaces/tilings/results/images/4-3-4-6:m90:r(c4).png deleted file mode 100644 index d8d51dd5..00000000 Binary files a/workspaces/tilings/results/images/4-3-4-6:m90:r(c4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3:m90:r(h2).png b/workspaces/tilings/results/images/4-3:m90:r(h2).png deleted file mode 100644 index 72437aee..00000000 Binary files a/workspaces/tilings/results/images/4-3:m90:r(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-3:r90:m(h2).png b/workspaces/tilings/results/images/4-3:r90:m(h2).png deleted file mode 100644 index c144166b..00000000 Binary files a/workspaces/tilings/results/images/4-3:r90:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-4,6-4,3:m90:r(v4).png b/workspaces/tilings/results/images/4-4,6-4,3:m90:r(v4).png deleted file mode 100644 index ff6902e1..00000000 Binary files a/workspaces/tilings/results/images/4-4,6-4,3:m90:r(v4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-4-3-3-3:m90:r(h3).png b/workspaces/tilings/results/images/4-4-3-3-3:m90:r(h3).png deleted file mode 100644 index a4586487..00000000 Binary files a/workspaces/tilings/results/images/4-4-3-3-3:m90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-4-3:m90:r(h3).png b/workspaces/tilings/results/images/4-4-3:m90:r(h3).png deleted file mode 100644 index d0fdfd19..00000000 Binary files a/workspaces/tilings/results/images/4-4-3:m90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-6-3-3-4:m90:r(h9).png b/workspaces/tilings/results/images/4-6-3-3-4:m90:r(h9).png deleted file mode 100644 index c237f4d0..00000000 Binary files a/workspaces/tilings/results/images/4-6-3-3-4:m90:r(h9).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4-8:m45:r(h5).png b/workspaces/tilings/results/images/4-8:m45:r(h5).png deleted file mode 100644 index 7fb39e65..00000000 Binary files a/workspaces/tilings/results/images/4-8:m45:r(h5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/4:m45:m(h1).png b/workspaces/tilings/results/images/4:m45:m(h1).png deleted file mode 100644 index b2705d25..00000000 Binary files a/workspaces/tilings/results/images/4:m45:m(h1).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-0,3:m90:r(h4).png b/workspaces/tilings/results/images/6-0,3:m90:r(h4).png deleted file mode 100644 index cad6ddf9..00000000 Binary files a/workspaces/tilings/results/images/6-0,3:m90:r(h4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3,3-3,3:m90:r(h3).png b/workspaces/tilings/results/images/6-3,3-3,3:m90:r(h3).png deleted file mode 100644 index ba2f7fce..00000000 Binary files a/workspaces/tilings/results/images/6-3,3-3,3:m90:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3,4-4-6:m60:m(c5).png b/workspaces/tilings/results/images/6-3,4-4-6:m60:m(c5).png deleted file mode 100644 index 6aca32ac..00000000 Binary files a/workspaces/tilings/results/images/6-3,4-4-6:m60:m(c5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3-3:r60:r(h10).png b/workspaces/tilings/results/images/6-3-3:r60:r(h10).png deleted file mode 100644 index 7e9faa66..00000000 Binary files a/workspaces/tilings/results/images/6-3-3:r60:r(h10).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3-4-3:m90:r(h7).png b/workspaces/tilings/results/images/6-3-4-3:m90:r(h7).png deleted file mode 100644 index 21e37ce3..00000000 Binary files a/workspaces/tilings/results/images/6-3-4-3:m90:r(h7).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3-6-3:m30:m(h2).png b/workspaces/tilings/results/images/6-3-6-3:m30:m(h2).png deleted file mode 100644 index 7bffd159..00000000 Binary files a/workspaces/tilings/results/images/6-3-6-3:m30:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-3:m30:m(v2).png b/workspaces/tilings/results/images/6-3:m30:m(v2).png deleted file mode 100644 index ab126761..00000000 Binary files a/workspaces/tilings/results/images/6-3:m30:m(v2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4,12:m60:m(c2).png b/workspaces/tilings/results/images/6-4,12:m60:m(c2).png deleted file mode 100644 index 5c128e0b..00000000 Binary files a/workspaces/tilings/results/images/6-4,12:m60:m(c2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-0,3-3:m30:m(h2).png b/workspaces/tilings/results/images/6-4-0,3-3:m30:m(h2).png deleted file mode 100644 index b946126d..00000000 Binary files a/workspaces/tilings/results/images/6-4-0,3-3:m30:m(h2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-3,3-12:m30:r(h3).png b/workspaces/tilings/results/images/6-4-3,3-12:m30:r(h3).png deleted file mode 100644 index baa11f55..00000000 Binary files a/workspaces/tilings/results/images/6-4-3,3-12:m30:r(h3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-3,3:m30:m(h5).png b/workspaces/tilings/results/images/6-4-3,3:m30:m(h5).png deleted file mode 100644 index 8666cbd1..00000000 Binary files a/workspaces/tilings/results/images/6-4-3,3:m30:m(h5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-3:m90:r(h4).png b/workspaces/tilings/results/images/6-4-3:m90:r(h4).png deleted file mode 100644 index 800d5898..00000000 Binary files a/workspaces/tilings/results/images/6-4-3:m90:r(h4).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-4-3:m90:r(v3).png b/workspaces/tilings/results/images/6-4-4-3:m90:r(v3).png deleted file mode 100644 index 33dbaf05..00000000 Binary files a/workspaces/tilings/results/images/6-4-4-3:m90:r(v3).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-4-4-4-3:m90:r(h7).png b/workspaces/tilings/results/images/6-4-4-4-3:m90:r(h7).png deleted file mode 100644 index 9e8bd397..00000000 Binary files a/workspaces/tilings/results/images/6-4-4-4-3:m90:r(h7).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-6,0,0,6:m30:m(c2).png b/workspaces/tilings/results/images/6-6,0,0,6:m30:m(c2).png deleted file mode 100644 index 58ae3fbd..00000000 Binary files a/workspaces/tilings/results/images/6-6,0,0,6:m30:m(c2).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-6,3:m90:r(h5).png b/workspaces/tilings/results/images/6-6,3:m90:r(h5).png deleted file mode 100644 index f44afae9..00000000 Binary files a/workspaces/tilings/results/images/6-6,3:m90:r(h5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-6-3,3-6:m30:m(h8).png b/workspaces/tilings/results/images/6-6-3,3-6:m30:m(h8).png deleted file mode 100644 index 77edcf52..00000000 Binary files a/workspaces/tilings/results/images/6-6-3,3-6:m30:m(h8).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-6-3,3:m30:r(h7).png b/workspaces/tilings/results/images/6-6-3,3:m30:r(h7).png deleted file mode 100644 index 57f46dda..00000000 Binary files a/workspaces/tilings/results/images/6-6-3,3:m30:r(h7).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6-6-3,6-3:m30:m(c5).png b/workspaces/tilings/results/images/6-6-3,6-3:m30:m(c5).png deleted file mode 100644 index d1d33f4f..00000000 Binary files a/workspaces/tilings/results/images/6-6-3,6-3:m30:m(c5).png and /dev/null differ diff --git a/workspaces/tilings/results/images/6:m30:m(h1).png b/workspaces/tilings/results/images/6:m30:m(h1).png deleted file mode 100644 index a881d1b4..00000000 Binary files a/workspaces/tilings/results/images/6:m30:m(h1).png and /dev/null differ diff --git a/workspaces/tilings/results/output.json b/workspaces/tilings/results/output.json index 053be178..fe51488c 100644 --- a/workspaces/tilings/results/output.json +++ b/workspaces/tilings/results/output.json @@ -1,69 +1 @@ -[ - {"notation":"6-6,0,0,6/m30/m(c2)","has_0":true,"has_3":false,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":-1,"t_index":1,"timestamp":"2024-04-11T21:01:55.410452"}, - {"notation":"3/m30/m(h2)","has_0":false,"has_3":true,"has_4":false,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":1,"t_index":2,"timestamp":"2024-04-11T20:41:47.392796"}, - {"notation":"4/m45/m(h1)","has_0":false,"has_3":false,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":2,"t_index":1,"timestamp":"2024-04-11T20:41:47.260568"}, - {"notation":"3-6/m30/m(c2)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":7,"t_index":1,"timestamp":"2024-04-11T20:41:49.062786"}, - {"notation":"3-6/m30/r(h2)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":7,"t_index":20,"timestamp":"2024-04-11T20:41:49.062963"}, - {"notation":"3-6/r60/r(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":7,"t_index":191,"timestamp":"2024-04-11T20:41:49.064947"}, - {"notation":"4-3/m90/r(h2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":9,"t_index":42,"timestamp":"2024-04-11T20:41:47.404909"}, - {"notation":"4-3/r90/m(h2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":9,"t_index":81,"timestamp":"2024-04-11T20:41:47.404947"}, - {"notation":"4-8/m45/r(h5)","has_0":false,"has_3":false,"has_4":true,"has_6":false,"has_8":true,"has_12":false,"uniform":0,"p_index":12,"t_index":29,"timestamp":"2024-04-11T20:41:48.366399"}, - {"notation":"6-3/m30/m(v2)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":14,"t_index":11,"timestamp":"2024-04-11T20:41:48.596878"}, - {"notation":"12-3/m30/m(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":19,"t_index":62,"timestamp":"2024-04-11T20:41:50.968391"}, - {"notation":"3-3-6/m30/m(v5)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":25,"t_index":17,"timestamp":"2024-04-11T20:41:52.565272"}, - {"notation":"3-3-6/m60/m(v6)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":25,"t_index":60,"timestamp":"2024-04-11T20:41:52.565755"}, - {"notation":"3-4-3/m30/m(c3)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":31,"t_index":2,"timestamp":"2024-04-11T20:41:51.710001"}, - {"notation":"3-6-6/m30/m(h7)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":41,"t_index":9,"timestamp":"2024-04-11T20:41:56.104038"}, - {"notation":"3-6-6/m60/r(h10)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":41,"t_index":93,"timestamp":"2024-04-11T20:41:56.105429"}, - {"notation":"3-6,3/m90/r(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":43,"t_index":110,"timestamp":"2024-04-11T20:41:53.612646"}, - {"notation":"4-3-12/m45/r(h2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":62,"t_index":39,"timestamp":"2024-04-11T20:41:55.945536"}, - {"notation":"4-4-3/m90/r(h3)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":67,"t_index":62,"timestamp":"2024-04-11T20:41:54.096930"}, - {"notation":"6-3-3/r60/r(h10)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":95,"t_index":243,"timestamp":"2024-04-11T20:41:57.576308"}, - {"notation":"6-4-3/m90/r(h4)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":103,"t_index":121,"timestamp":"2024-04-11T20:41:56.923595"}, - {"notation":"6-4,12/m60/m(c2)","has_0":false,"has_3":false,"has_4":true,"has_6":true,"has_8":false,"has_12":true,"uniform":0,"p_index":110,"t_index":79,"timestamp":"2024-04-11T20:41:58.497053"}, - {"notation":"6-6,3/m90/r(h5)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":115,"t_index":142,"timestamp":"2024-04-11T20:41:58.928722"}, - {"notation":"6-0,3/m90/r(h4)","has_0":true,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":127,"t_index":90,"timestamp":"2024-04-11T20:42:01.097260"}, - {"notation":"3-4-3-3/m30/m(h6)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":239,"t_index":9,"timestamp":"2024-04-11T20:42:29.374990"}, - {"notation":"3-4-3,3/m30/m(h2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":243,"t_index":5,"timestamp":"2024-04-11T20:42:30.624767"}, - {"notation":"3-4,3-12/r120/m(c2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":278,"t_index":469,"timestamp":"2024-04-11T20:42:34.629290"}, - {"notation":"3-6-3,3/m30/r(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":315,"t_index":31,"timestamp":"2024-04-11T20:42:38.765872"}, - {"notation":"3-6,3-3/m90/r(h4)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":347,"t_index":132,"timestamp":"2024-04-11T20:42:47.715017"}, - {"notation":"3-6,3-6/m90/r(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":349,"t_index":161,"timestamp":"2024-04-11T20:42:50.197040"}, - {"notation":"4-3-3-3/m90/r(h2)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":491,"t_index":68,"timestamp":"2024-04-11T20:42:55.063854"}, - {"notation":"4-3-3,4/r90/m(h11)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":496,"t_index":152,"timestamp":"2024-04-11T20:42:55.373630"}, - {"notation":"4-3-3,4/r90/r(h3)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":496,"t_index":167,"timestamp":"2024-04-11T20:42:55.373861"}, - {"notation":"4-3-4-6/m90/r(c4)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":501,"t_index":90,"timestamp":"2024-04-11T20:42:55.790792"}, - {"notation":"4-3-12-3/r90/m(h6)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":515,"t_index":243,"timestamp":"2024-04-11T20:42:58.710035"}, - {"notation":"6-3-4-3/m90/r(h7)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":823,"t_index":145,"timestamp":"2024-04-11T20:43:11.991492"}, - {"notation":"6-3-6-3/m30/m(h2)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":831,"t_index":5,"timestamp":"2024-04-11T20:43:17.817657"}, - {"notation":"6-4-3,3/m30/m(h5)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":891,"t_index":8,"timestamp":"2024-04-11T20:43:18.680953"}, - {"notation":"6-4-4-3/m90/r(v3)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":895,"t_index":165,"timestamp":"2024-04-11T20:43:19.091689"}, - {"notation":"6-6-3,3/m30/r(h7)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":963,"t_index":41,"timestamp":"2024-04-11T20:43:33.440532"}, - {"notation":"12-4-3,3/m90/r(h6)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":1215,"t_index":438,"timestamp":"2024-04-11T20:44:34.405043"}, - {"notation":"12-4-3,6/m30/m(c4)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":true,"uniform":0,"p_index":1217,"t_index":89,"timestamp":"2024-04-11T20:44:36.132050"}, - {"notation":"3-3-3-4-3/m30/r(h9)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":1471,"t_index":38,"timestamp":"2024-04-11T20:46:53.201521"}, - {"notation":"3-3-3,6-6/m60/m(h4)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":1517,"t_index":74,"timestamp":"2024-04-11T20:47:01.734964"}, - {"notation":"3-3-6-3,3/m30/m(c1)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":1611,"t_index":0,"timestamp":"2024-04-11T20:47:11.354925"}, - {"notation":"3-3-6-0,3/m30/m(h2)","has_0":true,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":1639,"t_index":5,"timestamp":"2024-04-11T20:47:21.910821"}, - {"notation":"3-4-3-3-12/m30/r(h3)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":2114,"t_index":48,"timestamp":"2024-04-11T20:47:59.917374"}, - {"notation":"3-4-3,3-12/m30/r(h11)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":2150,"t_index":56,"timestamp":"2024-04-11T20:48:13.574121"}, - {"notation":"3-4-3,4-6/m30/m(c5)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":2157,"t_index":4,"timestamp":"2024-04-11T20:48:09.980335"}, - {"notation":"3-4-3,6-4/m30/m(c2)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":2164,"t_index":1,"timestamp":"2024-04-11T20:48:13.164401"}, - {"notation":"3-6-3-3,3/r60/r(v7)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":2763,"t_index":344,"timestamp":"2024-04-11T20:48:59.879073"}, - {"notation":"3-6-3,3-6/m30/m(h5)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":2797,"t_index":9,"timestamp":"2024-04-11T20:49:09.686378"}, - {"notation":"3-6,3-3-6/m90/r(h5)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":3085,"t_index":184,"timestamp":"2024-04-11T20:50:54.398447"}, - {"notation":"3-0,3-6-6/m90/r(h9)","has_0":true,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":4073,"t_index":157,"timestamp":"2024-04-11T20:52:17.823360"}, - {"notation":"4-3-4-3-6/m90/r(h11)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":4453,"t_index":114,"timestamp":"2024-04-11T20:52:27.607138"}, - {"notation":"4-3,3-12-3/m90/r(h6)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":true,"uniform":0,"p_index":4727,"t_index":133,"timestamp":"2024-04-11T20:52:48.370614"}, - {"notation":"4-3,4-6-3/m90/r(v2)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":4791,"t_index":114,"timestamp":"2024-04-11T20:52:48.919975"}, - {"notation":"4-4-3-3-3/m90/r(h3)","has_0":false,"has_3":true,"has_4":true,"has_6":false,"has_8":false,"has_12":false,"uniform":0,"p_index":5027,"t_index":88,"timestamp":"2024-04-11T20:52:55.387571"}, - {"notation":"4-4,6-4,3/m90/r(v4)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":5507,"t_index":123,"timestamp":"2024-04-11T20:53:55.894761"}, - {"notation":"4-6-3-3-4/m90/r(h9)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":5676,"t_index":112,"timestamp":"2024-04-11T20:53:59.399356"}, - {"notation":"6-3,3-3,3/m90/r(h3)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":7623,"t_index":142,"timestamp":"2024-04-11T20:55:54.020751"}, - {"notation":"6-3,4-4-6/m60/m(c5)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":7701,"t_index":78,"timestamp":"2024-04-11T20:55:59.182835"}, - {"notation":"6-4-3,3-12/m30/r(h3)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":true,"uniform":0,"p_index":7982,"t_index":54,"timestamp":"2024-04-11T20:56:27.468938"}, - {"notation":"6-4-4-4-3/m90/r(h7)","has_0":false,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":8023,"t_index":186,"timestamp":"2024-04-11T20:56:28.436226"}, - {"notation":"6-4-0,3-3/m30/m(h2)","has_0":true,"has_3":true,"has_4":true,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":8231,"t_index":5,"timestamp":"2024-04-11T20:57:59.908095"}, - {"notation":"6-6-3,3-6/m30/m(h8)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":8629,"t_index":12,"timestamp":"2024-04-11T20:58:56.004703"}, - {"notation":"6-6-3,6-3/m30/m(c5)","has_0":false,"has_3":true,"has_4":false,"has_6":true,"has_8":false,"has_12":false,"uniform":0,"p_index":8643,"t_index":4,"timestamp":"2024-04-11T20:59:02.402200"} -] \ No newline at end of file +[] diff --git a/workspaces/tilings/src-rust/datastore/Cargo.toml b/workspaces/tilings/src-rust/datastore/Cargo.toml index f1b58fdb..21900123 100644 --- a/workspaces/tilings/src-rust/datastore/Cargo.toml +++ b/workspaces/tilings/src-rust/datastore/Cargo.toml @@ -25,5 +25,5 @@ tracing-subscriber.workspace = true typeshare.workspace = true local-ip-address = "0.6.1" -sysinfo = "0.30.11" +sysinfo = "0.31.4" tiling = { path = "../tiling" } diff --git a/workspaces/tilings/src-rust/datastore/src/lib.rs b/workspaces/tilings/src-rust/datastore/src/lib.rs index 3235420c..3fbc21ec 100644 --- a/workspaces/tilings/src-rust/datastore/src/lib.rs +++ b/workspaces/tilings/src-rust/datastore/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(absolute_path)] - pub mod errors; pub mod insights; pub mod pool; diff --git a/workspaces/tilings/src-rust/datastore/src/state/get.rs b/workspaces/tilings/src-rust/datastore/src/state/get.rs index d7ab9a4e..02f68151 100644 --- a/workspaces/tilings/src-rust/datastore/src/state/get.rs +++ b/workspaces/tilings/src-rust/datastore/src/state/get.rs @@ -2,7 +2,7 @@ use std::str::FromStr; use anyhow::Result; use sqlx::PgPool; -use tiling::Path; +use tiling::notation::Path; use super::State; @@ -19,17 +19,13 @@ pub async fn get(pool: &PgPool) -> Result { .await?; match (current_path, current_path_index) { - (Some(path), Some(path_index)) => { - Ok(State { - path, - path_index: path_index.parse()?, - }) - } - _ => { - Ok(State { - path: Path::default(), - path_index: 0, - }) - } + (Some(path), Some(path_index)) => Ok(State { + path, + path_index: path_index.parse()?, + }), + _ => Ok(State { + path: Path::default(), + path_index: 0, + }), } } diff --git a/workspaces/tilings/src-rust/datastore/src/state/mod.rs b/workspaces/tilings/src-rust/datastore/src/state/mod.rs index 91830ba8..5ab23aa3 100644 --- a/workspaces/tilings/src-rust/datastore/src/state/mod.rs +++ b/workspaces/tilings/src-rust/datastore/src/state/mod.rs @@ -1,4 +1,4 @@ -use tiling::Path; +use tiling::notation::Path; mod get; mod set; diff --git a/workspaces/tilings/src-rust/datastore/src/tilings/get_facets.rs b/workspaces/tilings/src-rust/datastore/src/tilings/get_facets.rs index 7699dbde..0e0827cf 100644 --- a/workspaces/tilings/src-rust/datastore/src/tilings/get_facets.rs +++ b/workspaces/tilings/src-rust/datastore/src/tilings/get_facets.rs @@ -3,7 +3,7 @@ use std::fmt::{Display, Formatter}; use anyhow::Result; use serde::Deserialize; use sqlx::{FromRow, Pool, Postgres}; -use tiling::Shape; +use tiling::notation::Shape; use typeshare::typeshare; use crate::utils::{get_show_nodes_condition, FacetValue}; diff --git a/workspaces/tilings/src-rust/datastore/src/tilings/get_paged.rs b/workspaces/tilings/src-rust/datastore/src/tilings/get_paged.rs index bbfe6194..cae43e3b 100644 --- a/workspaces/tilings/src-rust/datastore/src/tilings/get_paged.rs +++ b/workspaces/tilings/src-rust/datastore/src/tilings/get_paged.rs @@ -3,7 +3,7 @@ use std::fmt::Display; use anyhow::Result; use serde::Deserialize; use sqlx::{Pool, Postgres}; -use tiling::Shape; +use tiling::notation::Shape; use typeshare::typeshare; use super::Tiling; diff --git a/workspaces/tilings/src-rust/datastore/src/tilings/insert.rs b/workspaces/tilings/src-rust/datastore/src/tilings/insert.rs index 79579db6..1ec966c7 100644 --- a/workspaces/tilings/src-rust/datastore/src/tilings/insert.rs +++ b/workspaces/tilings/src-rust/datastore/src/tilings/insert.rs @@ -1,19 +1,20 @@ use anyhow::Result; use futures_util::future::try_join_all; use sqlx::{Pool, Postgres}; -use tiling::{Path, Shape, ValidTiling}; +use tiling::build; +use tiling::notation::{Path, Shape}; pub struct InsertRequest { pub path: Path, pub path_index: i32, - pub tilings: Vec, + pub results: Vec, } pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> { let InsertRequest { path, path_index, - tilings, + results, } = request; let has_0 = path.has_shape(&Shape::Skip); @@ -23,7 +24,7 @@ pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> let has_8 = path.has_shape(&Shape::Octagon); let has_12 = path.has_shape(&Shape::Dodecagon); - let futures_insert_tilings = tilings.iter().cloned().map(|t| { + let futures_insert_results = results.iter().cloned().map(|t| { sqlx::query( "INSERT INTO tilings ( notation, @@ -33,10 +34,10 @@ pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> has_6, has_8, has_12, + path_index, + transform_index, uniform, - p_index, - t_index, - d_key + hash ) VALUES ( $1, $2, @@ -56,10 +57,10 @@ pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> has_6 = $5, has_8 = $6, has_12 = $7, - uniform = $8, - p_index = $9, - t_index = $10, - d_key = $11 + path_index = $8, + transform_index = $9, + uniform = $10, + hash = $11 ", ) .bind(t.notation) @@ -69,14 +70,14 @@ pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> .bind(has_6) .bind(has_8) .bind(has_12) - .bind(t.uniform) .bind(path_index) - .bind(t.t_index) - .bind(t.d_key) + .bind(t.transform_index) + .bind(t.uniform) + .bind(t.hash) .execute(pool) }); - if let Err(error) = try_join_all(futures_insert_tilings).await { + if let Err(error) = try_join_all(futures_insert_results).await { tracing::error!(%error, "writing tilings"); } diff --git a/workspaces/tilings/src-rust/datastore/src/utils.rs b/workspaces/tilings/src-rust/datastore/src/utils.rs index 7dd4034e..697e3835 100644 --- a/workspaces/tilings/src-rust/datastore/src/utils.rs +++ b/workspaces/tilings/src-rust/datastore/src/utils.rs @@ -1,7 +1,7 @@ use std::fmt::Display; use serde::{Deserialize, Serialize}; -use tiling::Shape; +use tiling::notation::Shape; use typeshare::typeshare; pub fn get_results_condition( diff --git a/workspaces/tilings/src-rust/datastore/src/visits/get_by_path.rs b/workspaces/tilings/src-rust/datastore/src/visits/get_by_path.rs index 74bddd94..a3d33628 100644 --- a/workspaces/tilings/src-rust/datastore/src/visits/get_by_path.rs +++ b/workspaces/tilings/src-rust/datastore/src/visits/get_by_path.rs @@ -1,7 +1,7 @@ use anyhow::Result; use serde::Deserialize; use sqlx::{Pool, Postgres}; -use tiling::Path; +use tiling::notation::Path; use typeshare::typeshare; use super::Visit; diff --git a/workspaces/tilings/src-rust/datastore/src/visits/get_facets.rs b/workspaces/tilings/src-rust/datastore/src/visits/get_facets.rs index 73d86909..ad412a22 100644 --- a/workspaces/tilings/src-rust/datastore/src/visits/get_facets.rs +++ b/workspaces/tilings/src-rust/datastore/src/visits/get_facets.rs @@ -3,7 +3,7 @@ use std::fmt::{Display, Formatter}; use anyhow::Result; use serde::{Deserialize, Serialize}; use sqlx::{FromRow, Pool, Postgres}; -use tiling::Shape; +use tiling::notation::Shape; use typeshare::typeshare; use crate::utils::{get_show_nodes_condition, Facet, FacetValue, ResponseMultiple}; @@ -91,19 +91,17 @@ pub async fn get_facets( key: "shape".to_string(), values: Shape::as_vec() .iter() - .map(|s| { - FacetValue { - name: s.get_name(), - disabled: match s.get_name().as_str() { - "Skip" => !filtered_facets.has_0, - "Triangle" => !filtered_facets.has_3, - "Square" => !filtered_facets.has_4, - "Hexagon" => !filtered_facets.has_6, - "Octagon" => !filtered_facets.has_8, - "Dodecagon" => !filtered_facets.has_12, - _ => false, - }, - } + .map(|s| FacetValue { + name: s.get_name(), + disabled: match s.get_name().as_str() { + "Skip" => !filtered_facets.has_0, + "Triangle" => !filtered_facets.has_3, + "Square" => !filtered_facets.has_4, + "Hexagon" => !filtered_facets.has_6, + "Octagon" => !filtered_facets.has_8, + "Dodecagon" => !filtered_facets.has_12, + _ => false, + }, }) .collect(), }], diff --git a/workspaces/tilings/src-rust/datastore/src/visits/get_paged.rs b/workspaces/tilings/src-rust/datastore/src/visits/get_paged.rs index 00111555..25207a3f 100644 --- a/workspaces/tilings/src-rust/datastore/src/visits/get_paged.rs +++ b/workspaces/tilings/src-rust/datastore/src/visits/get_paged.rs @@ -3,7 +3,7 @@ use std::fmt::Display; use anyhow::Result; use serde::Deserialize; use sqlx::{Pool, Postgres}; -use tiling::Shape; +use tiling::notation::Shape; use typeshare::typeshare; use super::Visit; diff --git a/workspaces/tilings/src-rust/datastore/src/visits/insert.rs b/workspaces/tilings/src-rust/datastore/src/visits/insert.rs index e675d6d9..8dc541f7 100644 --- a/workspaces/tilings/src-rust/datastore/src/visits/insert.rs +++ b/workspaces/tilings/src-rust/datastore/src/visits/insert.rs @@ -1,12 +1,13 @@ use anyhow::Result; use sqlx::{Pool, Postgres}; -use tiling::{BuildContext, Path, Shape}; +use tiling::build::Context; +use tiling::notation::{Path, Shape}; pub struct InsertRequest { pub session_id: String, pub path: Path, pub path_index: i32, - pub build_context: BuildContext, + pub build_context: Context, } pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> { @@ -72,16 +73,16 @@ pub async fn insert(pool: &Pool, request: InsertRequest) -> Result<()> ) .bind(path.to_string()) .bind(path.get_level() as i32) - .bind(build_context.valid_tilings.is_empty()) + .bind(build_context.results.is_empty()) .bind( build_context - .valid_tilings + .results .iter() .map(|t| t.notation.clone()) .collect::>() .join(";"), ) - .bind(build_context.valid_tilings.len() as i32) + .bind(build_context.results.len() as i32) .bind(build_context.count_total_tilings as i32) .bind(has_0) .bind(has_3) diff --git a/workspaces/tilings/src-rust/datastore/src/visits/mod.rs b/workspaces/tilings/src-rust/datastore/src/visits/mod.rs index 6297a9b6..929f78db 100644 --- a/workspaces/tilings/src-rust/datastore/src/visits/mod.rs +++ b/workspaces/tilings/src-rust/datastore/src/visits/mod.rs @@ -1,7 +1,7 @@ use serde::Serialize; use sqlx::postgres::PgRow; use sqlx::{FromRow, Row}; -use tiling::Path; +use tiling::notation::Path; mod get_by_path; mod get_facets; @@ -30,11 +30,9 @@ impl<'r> FromRow<'r, PgRow> for Visit { fn from_row(row: &'r PgRow) -> Result { let path = Path::default() .from_string(row.try_get("path")?) - .map_err(|e| { - sqlx::Error::ColumnDecode { - index: "path".into(), - source: e.into(), - } + .map_err(|e| sqlx::Error::ColumnDecode { + index: "path".into(), + source: e.into(), })?; let valid_tilings = row diff --git a/workspaces/tilings/src-rust/renderer/Cargo.toml b/workspaces/tilings/src-rust/renderer/Cargo.toml index 2baaae92..52a68a82 100644 --- a/workspaces/tilings/src-rust/renderer/Cargo.toml +++ b/workspaces/tilings/src-rust/renderer/Cargo.toml @@ -21,14 +21,11 @@ typeshare.workspace = true wasm-bindgen.workspace = true web-sys = { workspace = true, features = [ 'console', - 'CanvasRenderingContext2d', - 'Document', - 'Element', - 'HtmlCanvasElement', - 'Window', + 'OffscreenCanvas', + 'OffscreenCanvasRenderingContext2d', ] } -colorgrad = "0.6.2" +colorgrad = "0.7.0" # This is needed as a dependecy for wasm-bindgen getrandom = { version = "0.2", features = ["js"] } rand = "0.8.5" diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/collision.rs b/workspaces/tilings/src-rust/renderer/src/canvas/collision.rs index b34fda77..02890408 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/collision.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/collision.rs @@ -17,7 +17,7 @@ impl Theia { pub fn has_collision( &mut self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/arc.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/arc.rs index dd34d4f5..b6694e5b 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/arc.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/arc.rs @@ -47,7 +47,7 @@ impl Arc { fn draw_path( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, scale: &Scale, style: &Style, ) -> Result<(), Error> { @@ -69,7 +69,7 @@ impl Arc { impl Draw for Arc { fn bbox( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -129,7 +129,7 @@ impl Draw for Arc { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/arrow.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/arrow.rs index 623c7e58..77b7e0b0 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/arrow.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/arrow.rs @@ -46,7 +46,7 @@ impl Draw for Arrow { fn bbox( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -66,29 +66,23 @@ impl Draw for Arrow { fn collides_with( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, other: &Component, ) -> Result { if match other { - Component::Arrow(arrow) => { - arrow - .bbox(context, canvas_bbox, content_bbox, scale)? - .intersects_bbox(&self.bbox(context, canvas_bbox, content_bbox, scale)?) - } - Component::Point(point) => { - point - .bbox(context, canvas_bbox, content_bbox, scale)? - .intersects_bbox(&self.bbox(context, canvas_bbox, content_bbox, scale)?) - } - Component::LineSegment(line_segment) => { - line_segment.intersects_bbox( - content_bbox, - &self.bbox(context, canvas_bbox, content_bbox, scale)?, - ) - } + Component::Arrow(arrow) => arrow + .bbox(context, canvas_bbox, content_bbox, scale)? + .intersects_bbox(&self.bbox(context, canvas_bbox, content_bbox, scale)?), + Component::Point(point) => point + .bbox(context, canvas_bbox, content_bbox, scale)? + .intersects_bbox(&self.bbox(context, canvas_bbox, content_bbox, scale)?), + Component::LineSegment(line_segment) => line_segment.intersects_bbox( + content_bbox, + &self.bbox(context, canvas_bbox, content_bbox, scale)?, + ), _ => false, } { return Ok(true); @@ -99,7 +93,7 @@ impl Draw for Arrow { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/chevron.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/chevron.rs index 70fb661f..b7a0c3b5 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/chevron.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/chevron.rs @@ -50,7 +50,7 @@ impl Draw for Chevron { fn bbox( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -62,7 +62,7 @@ impl Draw for Chevron { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/draw.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/draw.rs index 3302de64..70450c96 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/draw.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/draw.rs @@ -1,5 +1,4 @@ use tiling::geometry::BBox; -use web_sys::CanvasRenderingContext2d; use super::{Component, Style}; use crate::canvas::collision::Theia; @@ -9,7 +8,7 @@ use crate::Error; pub trait Draw { fn bbox( &self, - _context: &CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, _scale: &Scale, @@ -23,7 +22,7 @@ pub trait Draw { fn collides_with( &self, - _context: &CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, _scale: &Scale, @@ -34,7 +33,7 @@ pub trait Draw { fn draw_start( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, scale: &Scale, style: &Style, ) -> Result<(), Error> { @@ -44,7 +43,7 @@ pub trait Draw { Ok(()) } - fn draw_end(&self, context: &CanvasRenderingContext2d) { + fn draw_end(&self, context: &web_sys::OffscreenCanvasRenderingContext2d) { context.stroke(); context.fill(); context.close_path(); @@ -52,7 +51,7 @@ pub trait Draw { fn draw_bbox( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -70,7 +69,7 @@ pub trait Draw { fn draw( &self, - _context: &CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, _scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment.rs index d052d246..ead81f7c 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment.rs @@ -20,7 +20,7 @@ impl LineSegment { fn draw_path( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -67,13 +67,13 @@ impl Draw for LineSegment { fn bbox( &self, - _context: &web_sys::CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, ) -> Result { - let mut min = Point::default().with_xy(std::f64::INFINITY, std::f64::INFINITY); - let mut max = Point::default().with_xy(std::f64::NEG_INFINITY, std::f64::NEG_INFINITY); + let mut min = Point::default().with_xy(f64::INFINITY, f64::INFINITY); + let mut max = Point::default().with_xy(f64::NEG_INFINITY, f64::NEG_INFINITY); for point in self.get_points(content_bbox) { if point.x < min.x { @@ -106,7 +106,7 @@ impl Draw for LineSegment { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -142,9 +142,8 @@ impl Draw for LineSegment { } } -/// pub fn get_extended_points_to_bbox( - points: &Vec, + points: &[Point], bbox: &BBox, extend_start: bool, extend_end: bool, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment_arrows.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment_arrows.rs index 9af5b1f3..f9309eee 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment_arrows.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/line_segment_arrows.rs @@ -1,5 +1,4 @@ use tiling::geometry::{BBox, LineSegment, LineSegmentOrigin}; -use web_sys::CanvasRenderingContext2d; use super::{Arrow, Component, Draw, Style}; use crate::canvas::collision::Theia; @@ -83,7 +82,7 @@ impl Draw for LineSegmentArrows { fn bbox( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -105,7 +104,7 @@ impl Draw for LineSegmentArrows { fn draw_bbox( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -120,7 +119,7 @@ impl Draw for LineSegmentArrows { fn draw( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/mod.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/mod.rs index 1c126598..3effb95f 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/mod.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/mod.rs @@ -54,7 +54,7 @@ impl Component { impl Draw for Component { fn collides_with( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -75,7 +75,7 @@ impl Draw for Component { fn bbox( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -85,7 +85,7 @@ impl Draw for Component { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, @@ -102,7 +102,7 @@ impl Draw for Component { fn draw_bbox( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, canvas_bbox: &BBox, content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/point.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/point.rs index 70848a6f..da52151b 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/point.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/point.rs @@ -16,7 +16,7 @@ pub struct Point { impl Point { fn draw_path( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, scale: &Scale, style: &Style, ) -> Result<(), Error> { @@ -49,7 +49,7 @@ impl Draw for Point { fn bbox( &self, - _context: &web_sys::CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, scale: &Scale, @@ -71,7 +71,7 @@ impl Draw for Point { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/polygon.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/polygon.rs index c6895a73..fe2e7b2e 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/polygon.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/polygon.rs @@ -22,7 +22,7 @@ impl Draw for Polygon { fn bbox( &self, - _context: &web_sys::CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, _scale: &Scale, @@ -32,7 +32,7 @@ impl Draw for Polygon { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/component/rect.rs b/workspaces/tilings/src-rust/renderer/src/canvas/component/rect.rs index 6673e95b..d26014ad 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/component/rect.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/component/rect.rs @@ -22,7 +22,7 @@ impl Draw for Rect { fn bbox( &self, - _context: &web_sys::CanvasRenderingContext2d, + _context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, _scale: &Scale, @@ -32,7 +32,7 @@ impl Draw for Rect { fn draw( &self, - context: &web_sys::CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, _canvas_bbox: &BBox, _content_bbox: &BBox, scale: &Scale, diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/mod.rs b/workspaces/tilings/src-rust/renderer/src/canvas/mod.rs index 4599bc05..9f768b66 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/mod.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/mod.rs @@ -9,10 +9,9 @@ use std::hash::Hash; use anyhow::Result; use tiling::geometry::BBox; use wasm_bindgen::JsCast; -use web_sys::CanvasRenderingContext2d; use self::collision::Theia; -pub use self::component::{Arc, Arrow, Chevron, LineSegment, LineSegmentArrows, Point, Polygon}; +pub use self::component::{Arc, LineSegment, LineSegmentArrows, Point, Polygon}; use self::component::{Component, Draw, Rect}; pub use self::scale::{Scale, ScaleMode}; pub use self::style::Style; @@ -21,7 +20,7 @@ use crate::Error; pub struct Canvas { pub scale: Scale, - context: CanvasRenderingContext2d, + context: web_sys::OffscreenCanvasRenderingContext2d, content_bbox: BBox, show_debug_layer: bool, @@ -35,21 +34,34 @@ impl Canvas where TLayer: Eq + Hash + Ord, { - pub fn new(canvas_id: &str, scale: Scale) -> Result { - let window = web_sys::window().unwrap(); - let document = window.document().unwrap(); - let canvas = document.get_element_by_id(canvas_id).unwrap(); - let canvas: web_sys::HtmlCanvasElement = canvas - .dyn_into::() - .map_err(|_| ()) - .unwrap(); - - let context = canvas - .get_context("2d") - .unwrap() + pub fn new(canvas: web_sys::OffscreenCanvas, scale: Scale) -> Result { + let context = canvas.get_context("2d"); + + if context.is_err() { + return Err(Error::ApplicationError { + reason: "Failed to get 2d context (error)".into(), + }); + } + + let context = context.unwrap(); + + if context.is_none() { + return Err(Error::ApplicationError { + reason: "Failed to get 2d context (empty)".into(), + }); + } + + let context = context .unwrap() - .dyn_into::() - .unwrap(); + .dyn_into::(); + + if context.is_err() { + return Err(Error::ApplicationError { + reason: "Failed to get 2d context (dyn_into error)".into(), + }); + } + + let context = context.unwrap(); let width = canvas.width() as f64; let height = canvas.height() as f64; diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/scale.rs b/workspaces/tilings/src-rust/renderer/src/canvas/scale.rs index 4d5d26be..30c457f4 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/scale.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/scale.rs @@ -78,7 +78,10 @@ impl Scale { self } - pub fn scale_canvas_context(&self, ctx: &web_sys::CanvasRenderingContext2d) -> Result<(), Error> { + pub fn scale_canvas_context( + &self, + ctx: &web_sys::OffscreenCanvasRenderingContext2d, + ) -> Result<(), Error> { ctx.reset_transform()?; // Move the origin to the center of the canvas. diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/style.rs b/workspaces/tilings/src-rust/renderer/src/canvas/style.rs index 2b52aa5f..b8eec982 100644 --- a/workspaces/tilings/src-rust/renderer/src/canvas/style.rs +++ b/workspaces/tilings/src-rust/renderer/src/canvas/style.rs @@ -1,7 +1,6 @@ use serde::{Deserialize, Serialize}; use typeshare::typeshare; use wasm_bindgen::JsValue; -use web_sys::CanvasRenderingContext2d; use super::Scale; @@ -106,7 +105,11 @@ impl Style { style } - pub fn apply(&self, context: &CanvasRenderingContext2d, scale: &Scale) -> Result<(), JsValue> { + pub fn apply( + &self, + context: &web_sys::OffscreenCanvasRenderingContext2d, + scale: &Scale, + ) -> Result<(), JsValue> { context.set_line_join("round"); context.set_line_cap("round"); self.apply_opacity(context); @@ -117,19 +120,19 @@ impl Style { Ok(()) } - fn apply_fill(&self, context: &CanvasRenderingContext2d) { + fn apply_fill(&self, context: &web_sys::OffscreenCanvasRenderingContext2d) { let default_fill_style = "transparent".to_string(); let fill_style = self.fill.as_ref().unwrap_or(&default_fill_style); context.set_fill_style(&fill_style.into()); } - fn apply_opacity(&self, context: &CanvasRenderingContext2d) { + fn apply_opacity(&self, context: &web_sys::OffscreenCanvasRenderingContext2d) { let opacity = self.opacity.unwrap_or(1.0); context.set_global_alpha(opacity); } - fn apply_stroke(&self, context: &CanvasRenderingContext2d, scale: &Scale) { + fn apply_stroke(&self, context: &web_sys::OffscreenCanvasRenderingContext2d, scale: &Scale) { let stroke_color = self.get_stroke_color(); let stroke_width = self.get_stroke_width(scale); @@ -144,7 +147,7 @@ impl Style { fn apply_line_dash( &self, - context: &CanvasRenderingContext2d, + context: &web_sys::OffscreenCanvasRenderingContext2d, scale: &Scale, ) -> Result<(), JsValue> { if let Some(line_dash) = &self.get_line_dash(scale) { diff --git a/workspaces/tilings/src-rust/renderer/src/canvas/window.rs b/workspaces/tilings/src-rust/renderer/src/canvas/window.rs new file mode 100644 index 00000000..dc72072b --- /dev/null +++ b/workspaces/tilings/src-rust/renderer/src/canvas/window.rs @@ -0,0 +1,30 @@ +use web_sys::{Window, WorkerGlobalScope}; + +pub enum GlobalProxy { + Window(Window), + WorkerGlobalScope(WorkerGlobalScope), +} + +impl GlobalProxy { + // fn create_image_bitmap_with_image_data( + // &self, + // a_image: &ImageData, + // ) -> Result { + // match self { + // GlobalProxy::Window(window) => window.create_image_bitmap_with_image_data(a_image), + // GlobalProxy::WorkerGlobalScope(scope) => scope.create_image_bitmap_with_image_data(a_image), + // //... more of that + // } + // } +} + +// fn self_() -> Result { +// let global = js_sys::global(); +// // how to properly detect this in wasm_bindgen? +// if js_sys::eval("typeof WorkerGlobalScope !== 'undefined'")?.as_bool().unwrap() { +// Ok(global.dyn_into::().map(GlobalProxy::WorkerGlobalScope)?) +// } +// else { +// Ok(global.dyn_into::().map(GlobalProxy::Window)?) +// } +// } diff --git a/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_shapes.rs b/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_shapes.rs index d8733134..4303879b 100644 --- a/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_shapes.rs +++ b/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_shapes.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use colorgrad::{CustomGradient, CustomGradientError, Gradient}; +use colorgrad::{Gradient, GradientBuilder, GradientBuilderError}; use rand::seq::SliceRandom; use rand::thread_rng; use tiling::{Tiling, TilingError}; @@ -19,25 +19,25 @@ pub fn create_custom_gradient( domain_min: usize, domain_max: usize, colors: [&str; 2], -) -> Result { - CustomGradient::new() +) -> Result { + GradientBuilder::new() .html_colors(&colors) - .domain(&[domain_min as f64, domain_max as f64]) + .domain(&[domain_min as f32, domain_max as f32]) .mode(colorgrad::BlendMode::Rgb) - .build() + .build::() } pub fn create_invalid_mode_gradient( domain_min: usize, domain_max: usize, -) -> Result { +) -> Result { create_custom_gradient(domain_min, domain_max, ["#e64980", "#a61e4d"]) } pub fn create_valid_mode_gradient( domain_min: usize, domain_max: usize, -) -> Result { +) -> Result { create_custom_gradient(domain_min, domain_max, ["#12b886", "#087f5b"]) } @@ -46,7 +46,7 @@ pub fn draw_shapes( options: &Options, tiling: &Tiling, ) -> Result<(), Error> { - let path_shape_count = tiling.notation.path.get_shape_count() as f64; + let path_shape_count = tiling.notation.path.get_shape_count() as f32; let color_mode = options.color_mode.clone().unwrap_or_default(); let shape_style = options.styles.shape.clone().unwrap_or_default(); @@ -57,31 +57,27 @@ pub fn draw_shapes( let gradient = { match color_mode { ColorMode::None => None, - ColorMode::BlackAndWhite => { - Some( - CustomGradient::new() - .html_colors(&["#000000", "#ffffff"]) - .domain(&[0.0, path_shape_count]) - .mode(colorgrad::BlendMode::Rgb) - .build()?, - ) - } - ColorMode::VaporWave => { - Some( - CustomGradient::new() - .html_colors(&VAPOR_WAVE_COLOR_PALETTE) - .domain(&[0.0, path_shape_count]) - .mode(colorgrad::BlendMode::Rgb) - .build()?, - ) - } + ColorMode::BlackAndWhite => Some( + GradientBuilder::new() + .html_colors(&["#000000", "#ffffff"]) + .domain(&[0.0, path_shape_count]) + .mode(colorgrad::BlendMode::Rgb) + .build()?, + ), + ColorMode::VaporWave => Some( + GradientBuilder::new() + .html_colors(&VAPOR_WAVE_COLOR_PALETTE) + .domain(&[0.0, path_shape_count]) + .mode(colorgrad::BlendMode::Rgb) + .build()?, + ), ColorMode::VaporWaveRandom => { let mut colors = VAPOR_WAVE_COLOR_PALETTE.to_vec(); colors.shuffle(&mut thread_rng()); Some( - CustomGradient::new() + GradientBuilder::new() .html_colors(&colors) .domain(&[0.0, path_shape_count]) .mode(colorgrad::BlendMode::Rgb) @@ -123,17 +119,15 @@ pub fn draw_shapes( .set_stroke_width(&canvas.scale, None) .set_fill(match (&gradient, shape.shape_type) { (Some(gradient), Some(shape_type)) => { - Some(gradient.at(shape_type as f64).to_hex_string()) + Some(gradient.at(shape_type as f32).to_hex_string()) } _ => shape_style.get_fill(), }) - .set_opacity( - if options.fade_unmatched_shape_types.unwrap_or_default() { - shape.shape_type.map(|_| 1.0).or(Some(0.2)) - } else { - None - }, - ), + .set_opacity(if options.fade_unmatched_shape_types.unwrap_or_default() { + shape.shape_type.map(|_| 1.0).or(Some(0.2)) + } else { + None + }), } .into(), )?; diff --git a/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_transform.rs b/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_transform.rs index 90344d58..a388c95f 100644 --- a/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_transform.rs +++ b/workspaces/tilings/src-rust/renderer/src/draw/layers/draw_transform.rs @@ -28,16 +28,14 @@ pub fn draw_transform( operation, origin_index, origin_type, - }) => { - draw_transform_eccentric( - canvas, - options, - tiling, - operation, - origin_type, - origin_index, - )? - } + }) => draw_transform_eccentric( + canvas, + options, + tiling, + operation, + origin_type, + origin_index, + )?, } } diff --git a/workspaces/tilings/src-rust/renderer/src/draw/mod.rs b/workspaces/tilings/src-rust/renderer/src/draw/mod.rs index 5dd50039..ba739f5c 100644 --- a/workspaces/tilings/src-rust/renderer/src/draw/mod.rs +++ b/workspaces/tilings/src-rust/renderer/src/draw/mod.rs @@ -3,6 +3,7 @@ mod options; use anyhow::Result; use tiling::Tiling; +use web_sys::OffscreenCanvas; use self::layers::{draw_axis, draw_shapes, draw_transform, draw_vertex_types, Layer}; use self::options::Annotation; @@ -10,13 +11,17 @@ pub use self::options::Options; use crate::canvas::{Canvas, Scale}; use crate::Error; -pub fn draw(tiling: &Tiling, canvas_id: &str, options: Options) -> Result<(), Error> { +pub fn draw( + tiling: &Tiling, + offscreen_canvas: OffscreenCanvas, + options: Options, +) -> Result<(), Error> { let scale = Scale::default() .with_auto_rotate(options.auto_rotate) .with_padding(options.padding) .with_mode(options.scale_mode); - let mut canvas = Canvas::::new(canvas_id, scale)?; + let mut canvas = Canvas::::new(offscreen_canvas, scale)?; let show_annotations = options.show_annotations.clone().unwrap_or_default(); let show_debug = options.show_debug.unwrap_or(false); diff --git a/workspaces/tilings/src-rust/renderer/src/error.rs b/workspaces/tilings/src-rust/renderer/src/error.rs index 63b506d9..a494e518 100644 --- a/workspaces/tilings/src-rust/renderer/src/error.rs +++ b/workspaces/tilings/src-rust/renderer/src/error.rs @@ -1,4 +1,4 @@ -use colorgrad::CustomGradientError; +use colorgrad::GradientBuilderError; use wasm_bindgen::JsValue; #[derive(Clone, Debug, thiserror::Error)] @@ -17,8 +17,8 @@ impl From for Error { } } -impl From for Error { - fn from(error: CustomGradientError) -> Self { +impl From for Error { + fn from(error: GradientBuilderError) -> Self { Self::ApplicationError { reason: error.to_string(), } diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/errors/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/errors/messages/mod.rs index abb712e6..3e1cf8fb 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/errors/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/errors/messages/mod.rs @@ -1,5 +1,4 @@ mod get_all; mod insert; -pub use get_all::GetAll; pub use insert::Insert; diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/insights/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/insights/messages/mod.rs index 4735aa55..a22c4900 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/insights/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/insights/messages/mod.rs @@ -5,9 +5,6 @@ mod refresh_per_level; mod refresh_per_minute; mod refresh_per_session; -pub use self::get_per_level::GetPerLevel; -pub use self::get_per_minute::GetPerMinute; -pub use self::get_per_session::GetPerSession; pub use self::refresh_per_level::RefreshPerLevel; pub use self::refresh_per_minute::RefreshPerMinute; pub use self::refresh_per_session::RefreshPerSession; diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/sessions/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/sessions/messages/mod.rs index 1f14a8c2..c0d6e9cb 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/sessions/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/sessions/messages/mod.rs @@ -3,5 +3,4 @@ mod get_all; mod insert; pub use close::Close; -pub use get_all::GetAll; pub use insert::Insert; diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/insert.rs b/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/insert.rs index 298948d8..762e956b 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/insert.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/insert.rs @@ -1,6 +1,6 @@ use actix::prelude::*; use anyhow::Result; -use tiling::{Path, ValidTiling}; +use tiling::notation::Path; use tiling_datastore::tilings::{self, InsertRequest}; use crate::datastore::tilings::Store; @@ -8,7 +8,7 @@ use crate::datastore::tilings::Store; pub struct Insert { pub path: Path, pub path_index: i32, - pub tilings: Vec, + pub results: Vec, } impl Message for Insert { @@ -22,7 +22,7 @@ impl Handler for Store { let Insert { path, path_index, - tilings, + results, } = message; let pool = self.pool.clone(); @@ -33,7 +33,7 @@ impl Handler for Store { InsertRequest { path, path_index, - tilings, + results, }, ) .await diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/mod.rs index 876485d0..0aa5b62d 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/tilings/messages/mod.rs @@ -2,6 +2,4 @@ mod get_facets; mod get_paged; mod insert; -pub use get_facets::GetFacets; -pub use get_paged::GetPaged; pub use insert::Insert; diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/get_paged.rs b/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/get_paged.rs index 68754043..c621be21 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/get_paged.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/get_paged.rs @@ -29,7 +29,7 @@ impl Handler for Store { .results .into_iter() .map(Tree::from_visit) - .try_collect::>()?, + .collect::, _>>()?, }) }) } diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/mod.rs index 402eb375..b791dc41 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/visits/messages/mod.rs @@ -4,8 +4,4 @@ mod get_latest; mod get_paged; mod insert; -pub use get_by_path::GetByPath; -pub use get_facets::GetFacets; -pub use get_latest::GetLatest; -pub use get_paged::GetPaged; pub use insert::Insert; diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/visits/mod.rs b/workspaces/tilings/src-rust/searcher/src/datastore/visits/mod.rs index 0ea21f8b..8aa89fd9 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/visits/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/visits/mod.rs @@ -5,7 +5,7 @@ use actix::prelude::*; use serde::Serialize; use sqlx::postgres::PgRow; use sqlx::{FromRow, PgPool, Row}; -use tiling::Path; +use tiling::notation::Path; pub use self::tree::Tree; @@ -39,11 +39,9 @@ impl<'r> FromRow<'r, PgRow> for Visit { fn from_row(row: &'r PgRow) -> Result { let path = Path::default() .from_string(row.try_get("path")?) - .map_err(|e| { - sqlx::Error::ColumnDecode { - index: "path".into(), - source: e.into(), - } + .map_err(|e| sqlx::Error::ColumnDecode { + index: "path".into(), + source: e.into(), })?; let valid_tilings = row diff --git a/workspaces/tilings/src-rust/searcher/src/datastore/visits/tree.rs b/workspaces/tilings/src-rust/searcher/src/datastore/visits/tree.rs index d571e5a0..054bf266 100644 --- a/workspaces/tilings/src-rust/searcher/src/datastore/visits/tree.rs +++ b/workspaces/tilings/src-rust/searcher/src/datastore/visits/tree.rs @@ -1,5 +1,6 @@ use serde::{Serialize, Serializer}; -use tiling::{Path, Tiling, TilingError, Transform}; +use tiling::notation::{Path, Transform}; +use tiling::{Tiling, TilingError}; use tiling_datastore::visits::Visit; use typeshare::typeshare; @@ -28,6 +29,7 @@ impl Tree { tree.insert( Tiling::default() .from_string(tiling_string) + .notation .transforms .list .as_slice(), @@ -38,7 +40,7 @@ impl Tree { } fn insert(&mut self, transforms: &[Transform]) { - if let Some(transform) = transforms.get(0) { + if let Some(transform) = transforms.first() { // Search for existing Transform child for child in self.children.iter_mut() { if child.id == NodeId::Transform(transform.clone()) { diff --git a/workspaces/tilings/src-rust/searcher/src/issuer/messages/get_leased_paths.rs b/workspaces/tilings/src-rust/searcher/src/issuer/messages/get_leased_paths.rs index fe09a784..6784a34d 100644 --- a/workspaces/tilings/src-rust/searcher/src/issuer/messages/get_leased_paths.rs +++ b/workspaces/tilings/src-rust/searcher/src/issuer/messages/get_leased_paths.rs @@ -1,5 +1,5 @@ use actix::prelude::*; -use tiling::Path; +use tiling::notation::Path; use crate::issuer::Issuer; diff --git a/workspaces/tilings/src-rust/searcher/src/issuer/messages/path_response.rs b/workspaces/tilings/src-rust/searcher/src/issuer/messages/path_response.rs index 4450af93..b0a3e2f4 100644 --- a/workspaces/tilings/src-rust/searcher/src/issuer/messages/path_response.rs +++ b/workspaces/tilings/src-rust/searcher/src/issuer/messages/path_response.rs @@ -1,6 +1,6 @@ pub use actix::prelude::*; use anyhow::Result; -use tiling::Path; +use tiling::notation::Path; #[derive(Debug)] pub struct PathResponse { diff --git a/workspaces/tilings/src-rust/searcher/src/issuer/messages/process_visit.rs b/workspaces/tilings/src-rust/searcher/src/issuer/messages/process_visit.rs index 106def0d..c819d644 100644 --- a/workspaces/tilings/src-rust/searcher/src/issuer/messages/process_visit.rs +++ b/workspaces/tilings/src-rust/searcher/src/issuer/messages/process_visit.rs @@ -59,7 +59,7 @@ impl Handler for Issuer { .try_send(tilings::messages::Insert { path: msg.result.path.clone(), path_index, - tilings: msg.result.build_context.valid_tilings.clone(), + results: msg.result.build_context.results.clone(), }) .inspect_err( |error| tracing::error!(%error, path = %msg.result.path, "failed_to_store_tilings"), diff --git a/workspaces/tilings/src-rust/searcher/src/issuer/mod.rs b/workspaces/tilings/src-rust/searcher/src/issuer/mod.rs index afa90de3..04bb4cb3 100644 --- a/workspaces/tilings/src-rust/searcher/src/issuer/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/issuer/mod.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use actix::prelude::*; use anyhow::Result; -use tiling::Path; +use tiling::notation::Path; use tiling_datastore::state::State; use tokio::sync::Mutex; @@ -27,7 +27,7 @@ pub struct Issuer { stop_issuing: Arc>, buffer_tx: async_channel::Sender, - buffer_rx: async_channel::Receiver, + buffer_rx: Box>, buffer_size: Arc>, leases: Arc>>, } @@ -54,7 +54,7 @@ impl Issuer { stop_issuing: Arc::new(Mutex::new(false)), buffer_tx, - buffer_rx, + buffer_rx: Box::new(buffer_rx), buffer_size: Arc::new(Mutex::new(0)), leases: Arc::new(Mutex::new(HashMap::default())), }) diff --git a/workspaces/tilings/src-rust/searcher/src/logging.rs b/workspaces/tilings/src-rust/searcher/src/logging.rs index 301e0597..ce8eaf5f 100644 --- a/workspaces/tilings/src-rust/searcher/src/logging.rs +++ b/workspaces/tilings/src-rust/searcher/src/logging.rs @@ -2,7 +2,6 @@ use tracing::Level; use tracing_appender::non_blocking::WorkerGuard; use tracing_subscriber::fmt::format; -/// pub fn setup(max_level: Level, log_to_file: bool) -> Option { let event_format = format() .with_ansi(false) diff --git a/workspaces/tilings/src-rust/searcher/src/main.rs b/workspaces/tilings/src-rust/searcher/src/main.rs index 9434dfa4..b6560fc1 100644 --- a/workspaces/tilings/src-rust/searcher/src/main.rs +++ b/workspaces/tilings/src-rust/searcher/src/main.rs @@ -1,5 +1,3 @@ -#![feature(iterator_try_collect, result_option_inspect)] - mod datastore; mod issuer; mod logging; @@ -93,7 +91,6 @@ async fn main() -> Result<()> { Ok(()) } -/// async fn shutdown( issuer_addr: Addr, search_client_addr: Addr, diff --git a/workspaces/tilings/src-rust/searcher/src/search/messages/mod.rs b/workspaces/tilings/src-rust/searcher/src/search/messages/mod.rs index 68b3e439..02c79232 100644 --- a/workspaces/tilings/src-rust/searcher/src/search/messages/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/search/messages/mod.rs @@ -2,4 +2,3 @@ mod close; mod visit; pub use close::Close; -pub use visit::Visit; diff --git a/workspaces/tilings/src-rust/searcher/src/search/messages/visit.rs b/workspaces/tilings/src-rust/searcher/src/search/messages/visit.rs index 7a17c340..057a9202 100644 --- a/workspaces/tilings/src-rust/searcher/src/search/messages/visit.rs +++ b/workspaces/tilings/src-rust/searcher/src/search/messages/visit.rs @@ -1,7 +1,7 @@ use actix::prelude::*; use anyhow::Result; use serde::{Deserialize, Serialize}; -use tiling::Path; +use tiling::notation::Path; use typeshare::typeshare; use crate::search::Client; diff --git a/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit.rs b/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit.rs index 94e660c2..0642a9e1 100644 --- a/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit.rs +++ b/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit.rs @@ -1,6 +1,6 @@ use actix::prelude::*; use anyhow::Result; -use tiling::Path; +use tiling::notation::Path; use super::VisitResult; use crate::visitor::Visitor; diff --git a/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit_result.rs b/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit_result.rs index 274828ed..26362b3e 100644 --- a/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit_result.rs +++ b/workspaces/tilings/src-rust/searcher/src/visitor/messages/visit_result.rs @@ -1,12 +1,13 @@ use actix::prelude::*; use anyhow::Result; use serde::Serialize; -use tiling::{BuildContext, Path}; +use tiling::build; +use tiling::notation::Path; #[derive(Clone, Debug, Default, Serialize)] pub struct VisitResult { pub path: Path, - pub build_context: BuildContext, + pub build_context: build::Context, } impl VisitResult { @@ -15,7 +16,7 @@ impl VisitResult { self } - pub fn with_build_context(mut self, build_context: BuildContext) -> Self { + pub fn with_build_context(mut self, build_context: build::Context) -> Self { self.build_context = build_context; self } diff --git a/workspaces/tilings/src-rust/searcher/src/visitor/mod.rs b/workspaces/tilings/src-rust/searcher/src/visitor/mod.rs index 4bab3fe1..5bbd6b63 100644 --- a/workspaces/tilings/src-rust/searcher/src/visitor/mod.rs +++ b/workspaces/tilings/src-rust/searcher/src/visitor/mod.rs @@ -4,7 +4,6 @@ mod worker; use actix::prelude::*; -pub use self::error::VisitError; pub use self::messages::{Visit, VisitResult}; use self::worker::Worker; diff --git a/workspaces/tilings/src-rust/searcher/src/visitor/worker.rs b/workspaces/tilings/src-rust/searcher/src/visitor/worker.rs index 156680e1..3b62329f 100644 --- a/workspaces/tilings/src-rust/searcher/src/visitor/worker.rs +++ b/workspaces/tilings/src-rust/searcher/src/visitor/worker.rs @@ -1,6 +1,6 @@ use actix::prelude::*; use anyhow::Result; -use tiling::{Tiling, ValidationFlag}; +use tiling::{validation, Tiling}; use super::{Visit, VisitResult}; @@ -18,7 +18,7 @@ impl Handler for Worker { let Visit { sender, path } = message; let mut tiling = Tiling::default() - .with_validations(Some(ValidationFlag::all())) + .with_validations(Some(validation::Flag::all())) .with_expansion_phases(3) .with_path(path.clone()) .with_first_transform(); diff --git a/workspaces/tilings/src-rust/tiling/src/build/context.rs b/workspaces/tilings/src-rust/tiling/src/build/context.rs index cf23e34c..a5740a1d 100644 --- a/workspaces/tilings/src-rust/tiling/src/build/context.rs +++ b/workspaces/tilings/src-rust/tiling/src/build/context.rs @@ -11,7 +11,7 @@ use crate::{ApplicationError, TilingError}; pub struct Context { pub application_errors: Vec, pub count_total_tilings: u16, - pub valid_tilings: Vec, + pub results: Vec, } impl Context { @@ -31,11 +31,11 @@ impl Context { }); } Ok(()) => { - self.valid_tilings.push( + self.results.push( super::Result::default() .with_notation(notation.to_string()) - .with_uid(plane.classifier.get_unique_key()) - .with_transform_index(notation.transforms.list.len()), + .with_hash(plane.classifier.get_unique_key()) + .with_transform_index(notation.transforms.index), ); } _ => {} diff --git a/workspaces/tilings/src-rust/tiling/src/build/plane.rs b/workspaces/tilings/src-rust/tiling/src/build/plane.rs index f02811ae..f8c05c88 100644 --- a/workspaces/tilings/src-rust/tiling/src/build/plane.rs +++ b/workspaces/tilings/src-rust/tiling/src/build/plane.rs @@ -8,18 +8,8 @@ use super::phase::Phase; use crate::classification::Classifier; use crate::geometry::{BBox, LineSegment, Point, Polygon}; use crate::notation::{ - Node, - Notation, - Operation, - OriginIndex, - OriginType, - Path, - Separator, - Shape, - Transform, - TransformContinuous, - TransformEccentric, - TransformValue, + Node, Notation, Operation, OriginIndex, OriginType, Path, Separator, Shape, Transform, + TransformContinuous, TransformEccentric, TransformValue, }; use crate::validation::{self, Validator}; use crate::TilingError; @@ -132,7 +122,6 @@ impl Plane { Ok(()) } - /// pub fn apply_path(&mut self, path: &Path) -> Result<(), TilingError> { // Keep track of the number of line segments that need to be // skipped as we go around placing shapes. @@ -205,7 +194,6 @@ impl Plane { Ok(()) } - /// fn next_stage(&mut self) { if self.stage_added_polygon { self.stages += 1; @@ -271,7 +259,6 @@ impl Plane { } } - /// pub fn get_reflection_line( &self, origin_index: &OriginIndex, @@ -279,25 +266,23 @@ impl Plane { ) -> Option { self .get_point_by_index_and_type(origin_type, origin_index) - .and_then(|origin| { - match origin_type { - OriginType::MidPoint => self.line_segments_by_mid_point.get(origin).copied(), - _ => { - if origin.eq(&Point::default()) { - return Some( - LineSegment::default() - .with_start(Point::default().with_xy(-1.0, 0.0)) - .with_end(Point::default().with_xy(1.0, 0.0)), - ); - } - - Some( + .and_then(|origin| match origin_type { + OriginType::MidPoint => self.line_segments_by_mid_point.get(origin).copied(), + _ => { + if origin.eq(&Point::default()) { + return Some( LineSegment::default() - .with_start(Point::default()) - .with_end(origin.multiply(2.0)) - .rotate(PI * 0.5, None), - ) + .with_start(Point::default().with_xy(-1.0, 0.0)) + .with_end(Point::default().with_xy(1.0, 0.0)), + ); } + + Some( + LineSegment::default() + .with_start(Point::default()) + .with_end(origin.multiply(2.0)) + .rotate(PI * 0.5, None), + ) } }) } diff --git a/workspaces/tilings/src-rust/tiling/src/build/result.rs b/workspaces/tilings/src-rust/tiling/src/build/result.rs index 4742b44b..3aaaf825 100644 --- a/workspaces/tilings/src-rust/tiling/src/build/result.rs +++ b/workspaces/tilings/src-rust/tiling/src/build/result.rs @@ -7,7 +7,7 @@ use typeshare::typeshare; #[typeshare] pub struct Result { pub notation: String, - pub uid: String, + pub hash: String, pub transform_index: i32, pub uniform: i32, #[typeshare(serialized_as = "string")] @@ -20,13 +20,13 @@ impl Result { self } - pub fn with_uid(mut self, uid: String) -> Self { - self.uid = uid; + pub fn with_hash(mut self, hash: String) -> Self { + self.hash = hash; self } - pub fn with_transform_index(mut self, transform_index: usize) -> Self { - self.transform_index = transform_index as i32; + pub fn with_transform_index(mut self, transform_index: i32) -> Self { + self.transform_index = transform_index; self } } @@ -35,7 +35,7 @@ impl Default for Result { fn default() -> Self { Self { notation: String::new(), - uid: String::new(), + hash: String::new(), transform_index: 0, uniform: 0, timestamp: Utc::now().naive_utc(), diff --git a/workspaces/tilings/src-rust/tiling/src/classification/classifier.rs b/workspaces/tilings/src-rust/tiling/src/classification/classifier.rs index 8ec4f855..91641e94 100644 --- a/workspaces/tilings/src-rust/tiling/src/classification/classifier.rs +++ b/workspaces/tilings/src-rust/tiling/src/classification/classifier.rs @@ -32,10 +32,10 @@ impl Classifier { pub fn add_polygon(&mut self, polygon: &mut Polygon) -> Result<(), TilingError> { self.vertex_type_store.add_polygon(polygon)?; - self.edge_type_store.add_polygon(&polygon)?; + self.edge_type_store.add_polygon(polygon)?; self .shape_type_store - .add_polygon(&polygon, &self.edge_type_store)?; + .add_polygon(polygon, &self.edge_type_store)?; Ok(()) } diff --git a/workspaces/tilings/src-rust/tiling/src/classification/edge_type_store.rs b/workspaces/tilings/src-rust/tiling/src/classification/edge_type_store.rs index edb4c32b..401e17bd 100644 --- a/workspaces/tilings/src-rust/tiling/src/classification/edge_type_store.rs +++ b/workspaces/tilings/src-rust/tiling/src/classification/edge_type_store.rs @@ -34,7 +34,7 @@ impl EdgeTypeStore { /// Returns the number of times a line segment has been used /// by a polygon. pub fn get_mut(&mut self, line_segment: &LineSegment) -> Option<&mut GeoNode> { - if self.edge_types_by_line_segment.get(line_segment).is_some() { + if self.edge_types_by_line_segment.contains_key(line_segment) { return self.edge_types_by_line_segment.get_mut(line_segment); } @@ -42,8 +42,7 @@ impl EdgeTypeStore { if self .edge_types_by_line_segment - .get(&flipped_line_segment) - .is_some() + .contains_key(&flipped_line_segment) { return self .edge_types_by_line_segment @@ -87,7 +86,6 @@ impl EdgeTypeStore { self.get_count(line_segment) <= 1 } - /// pub fn add_polygon(&mut self, polygon: &Polygon) -> Result<(), TilingError> { for line_segment in polygon.line_segments.iter() { if let Some(node) = self.get_mut(line_segment) { diff --git a/workspaces/tilings/src-rust/tiling/src/classification/shape_node.rs b/workspaces/tilings/src-rust/tiling/src/classification/shape_node.rs index e0156703..749923f4 100644 --- a/workspaces/tilings/src-rust/tiling/src/classification/shape_node.rs +++ b/workspaces/tilings/src-rust/tiling/src/classification/shape_node.rs @@ -31,6 +31,10 @@ impl GeoNode { circular_sequence::get_length(&self.sequence) } + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + pub fn is_full(&self) -> bool { self.len() == self.size.unwrap_or(MAX_SIZE as u8) as usize } @@ -60,18 +64,14 @@ impl GeoNode { // The shapes need to be sorted to match // up with a valid combination. - self.links.sort_by(|a, b| { - match (a, b) { - (Some(a), Some(b)) => { - compare_radians( - a.point.radian_to(&self.point), - b.point.radian_to(&self.point), - ) - } - (Some(_), None) => Ordering::Less, - (None, Some(_)) => Ordering::Greater, - (None, None) => Ordering::Equal, - } + self.links.sort_by(|a, b| match (a, b) { + (Some(a), Some(b)) => compare_radians( + a.point.radian_to(&self.point), + b.point.radian_to(&self.point), + ), + (Some(_), None) => Ordering::Less, + (None, Some(_)) => Ordering::Greater, + (None, None) => Ordering::Equal, }); // Update the sequence. diff --git a/workspaces/tilings/src-rust/tiling/src/classification/shape_type_store.rs b/workspaces/tilings/src-rust/tiling/src/classification/shape_type_store.rs index cb4d3389..d6a68783 100644 --- a/workspaces/tilings/src-rust/tiling/src/classification/shape_type_store.rs +++ b/workspaces/tilings/src-rust/tiling/src/classification/shape_type_store.rs @@ -20,7 +20,6 @@ pub struct ShapeTypeStore { } impl ShapeTypeStore { - /// pub fn annotate_polygon(&mut self, polygon: &mut Polygon) { if let Some(node) = self.shape_types_by_point.get(&polygon.centroid) { if node.is_full() { diff --git a/workspaces/tilings/src-rust/tiling/src/classification/vertex_type_store.rs b/workspaces/tilings/src-rust/tiling/src/classification/vertex_type_store.rs index 6336f00a..658e78cd 100644 --- a/workspaces/tilings/src-rust/tiling/src/classification/vertex_type_store.rs +++ b/workspaces/tilings/src-rust/tiling/src/classification/vertex_type_store.rs @@ -22,7 +22,6 @@ pub struct VertexTypeStore { } impl VertexTypeStore { - /// pub fn add_polygon(&mut self, polygon: &mut Polygon) -> Result<(), TilingError> { for point in polygon.points.iter_mut() { let node = self diff --git a/workspaces/tilings/src-rust/tiling/src/geometry/point.rs b/workspaces/tilings/src-rust/tiling/src/geometry/point.rs index b74f9453..82cf65dc 100644 --- a/workspaces/tilings/src-rust/tiling/src/geometry/point.rs +++ b/workspaces/tilings/src-rust/tiling/src/geometry/point.rs @@ -10,11 +10,7 @@ use serde::{Deserialize, Serialize}; use typeshare::typeshare; use crate::utils::math::{ - compare_coordinate, - compare_radians, - coordinate_equals, - normalize_radian, - round_coordinate, + compare_coordinate, compare_radians, coordinate_equals, normalize_radian, round_coordinate, }; #[derive(Clone, Copy, Debug, Default, Deserialize, Serialize)] diff --git a/workspaces/tilings/src-rust/tiling/src/geometry/polygon.rs b/workspaces/tilings/src-rust/tiling/src/geometry/polygon.rs index d2108143..8b71c3c3 100644 --- a/workspaces/tilings/src-rust/tiling/src/geometry/polygon.rs +++ b/workspaces/tilings/src-rust/tiling/src/geometry/polygon.rs @@ -209,7 +209,6 @@ impl Polygon { false } - /// pub fn reflect(self, line_segment: &LineSegment) -> Self { let mut points = vec![]; points.reserve_exact(self.points.len()); @@ -221,7 +220,6 @@ impl Polygon { self.with_points(points) } - /// pub fn rotate(self, radians: f64, origin: Option<&Point>) -> Self { let mut points = vec![]; points.reserve_exact(self.points.len()); diff --git a/workspaces/tilings/src-rust/tiling/src/notation/mod.rs b/workspaces/tilings/src-rust/tiling/src/notation/mod.rs index 26f0b214..4fb3328e 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/mod.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/mod.rs @@ -72,7 +72,7 @@ impl Notation { self.transforms = if self.transforms.list.is_empty() { Transforms::default().with_path(self.path.clone()) } else { - Transforms::first(path.clone(), &plane, direction)? + Transforms::first(path.clone(), plane, direction)? }; Ok(()) @@ -90,7 +90,6 @@ impl Notation { self.transforms.list.get(index) } - /// pub fn from_string(&mut self, notation: String, plane: &Plane) -> Result<(), TilingError> { let mut sections = notation.split('/'); let path_string = sections.next().unwrap(); @@ -112,7 +111,7 @@ impl Notation { .with_type_ahead(self.option_type_ahead) .from_string(path_string)?; - self.set_path(path.clone(), &plane, &Direction::FromStart)?; + self.set_path(path.clone(), plane, &Direction::FromStart)?; // Keep parsing transform sections, building up // a list of transforms, and then add them to the @@ -139,10 +138,10 @@ impl Notation { if !self.transforms.list.is_empty() || self.option_with_first_transform { if self.path.is_empty() { let next_path = self.path.next_path(); - self.set_path(next_path, &plane, &Direction::FromStart)?; + self.set_path(next_path, plane, &Direction::FromStart)?; } - if let Some(next_transforms) = self.transforms.next(&plane, &self.path)? { + if let Some(next_transforms) = self.transforms.next(plane, &self.path)? { self.set_transforms(next_transforms); return Ok(Some(())); } @@ -153,7 +152,7 @@ impl Notation { } let next_path = self.path.next_path(); - self.set_path(next_path, &plane, &Direction::FromStart)?; + self.set_path(next_path, plane, &Direction::FromStart)?; Ok(Some(())) } @@ -166,7 +165,7 @@ impl Notation { }); } - if let Some(previous_transforms) = self.transforms.previous(&plane, &self.path)? { + if let Some(previous_transforms) = self.transforms.previous(plane, &self.path)? { self.set_transforms(previous_transforms); return Ok(Some(())); } @@ -177,7 +176,7 @@ impl Notation { } if let Some(previous_path) = self.path.previous_path() { - self.set_path(previous_path, &plane, &Direction::FromEnd)?; + self.set_path(previous_path, plane, &Direction::FromEnd)?; return Ok(Some(())); } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/offset.rs b/workspaces/tilings/src-rust/tiling/src/notation/offset.rs index a095117d..58d208e6 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/offset.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/offset.rs @@ -63,12 +63,10 @@ impl FromStr for Offset { fn from_str(value: &str) -> Result { match value { "c" => Ok(Self::Center), - _ => { - Err(TilingError::InvalidOffset { - offset: value.into(), - reason: "invalid".into(), - }) - } + _ => Err(TilingError::InvalidOffset { + offset: value.into(), + reason: "invalid".into(), + }), } } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/operation.rs b/workspaces/tilings/src-rust/tiling/src/notation/operation.rs index 32f45ffe..6dacff16 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/operation.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/operation.rs @@ -60,12 +60,10 @@ impl std::str::FromStr for Operation { match value { "m" => Ok(Self::Reflect), "r" => Ok(Self::Rotate), - _ => { - Err(TilingError::InvalidOperation { - operation: value.to_string(), - reason: "invalid".into(), - }) - } + _ => Err(TilingError::InvalidOperation { + operation: value.to_string(), + reason: "invalid".into(), + }), } } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/origin_index.rs b/workspaces/tilings/src-rust/tiling/src/notation/origin_index.rs index a0bc9d38..e391978c 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/origin_index.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/origin_index.rs @@ -50,12 +50,10 @@ impl FromStr for OriginIndex { fn from_str(value: &str) -> Result { match value.parse::() { Ok(n) => Ok(Self::from(n - 1)), - Err(_) => { - Err(TilingError::InvalidOriginIndex { - origin_index: value.into(), - reason: "failed to parse".into(), - }) - } + Err(_) => Err(TilingError::InvalidOriginIndex { + origin_index: value.into(), + reason: "failed to parse".into(), + }), } } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/origin_type.rs b/workspaces/tilings/src-rust/tiling/src/notation/origin_type.rs index 51140f62..7b3a06c4 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/origin_type.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/origin_type.rs @@ -55,12 +55,10 @@ impl std::str::FromStr for OriginType { "c" => Ok(Self::CenterPoint), "h" => Ok(Self::MidPoint), "v" => Ok(Self::EndPoint), - _ => { - Err(TilingError::InvalidOriginType { - origin_type: value.to_string(), - reason: "failed to parse".into(), - }) - } + _ => Err(TilingError::InvalidOriginType { + origin_type: value.to_string(), + reason: "failed to parse".into(), + }), } } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/path.rs b/workspaces/tilings/src-rust/tiling/src/notation/path.rs index 0f86f2b7..39cf85f7 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/path.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/path.rs @@ -12,7 +12,6 @@ use super::{Direction, Seed, Separator, Shape}; use crate::utils::SiblingIterator; use crate::{Tiling, TilingError}; -/// #[derive(Clone, Debug, Default, Eq, Hash, PartialEq, Deserialize, Serialize)] #[serde(into = "String", from = "String")] #[typeshare] @@ -31,7 +30,6 @@ impl Path { self } - /// pub fn from_string(mut self, string: &str) -> Result { if string.is_empty() { if self.option_type_ahead { @@ -54,13 +52,11 @@ impl Path { Ok(self) } - /// fn parse_seed_shape_group(&mut self, group: &str) -> Result<(), TilingError> { self.nodes.push(Seed::from_str(group)?.into()); Ok(()) } - /// fn parse_shape_group(&mut self, group: &str) -> Result<(), TilingError> { let shapes: Vec<_> = group.split(',').collect(); @@ -71,12 +67,10 @@ impl Path { return Ok(()); } - let shape = Shape::from_str(shape).map_err(|error| { - TilingError::InvalidShapeInGroup { - shape: shape.to_string(), - group: group.to_string(), - reason: error.to_string(), - } + let shape = Shape::from_str(shape).map_err(|error| TilingError::InvalidShapeInGroup { + shape: shape.to_string(), + group: group.to_string(), + reason: error.to_string(), })?; if shape_index > 0 { @@ -116,12 +110,10 @@ impl Path { } pub fn get_seed(&self) -> Option<&Seed> { - self.nodes.first().and_then(|node| { - match node { - Node::Seed(seed) => Some(seed), - Node::Shape(_) => None, - Node::Separator(_) => None, - } + self.nodes.first().and_then(|node| match node { + Node::Seed(seed) => Some(seed), + Node::Shape(_) => None, + Node::Separator(_) => None, }) } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/shape.rs b/workspaces/tilings/src-rust/tiling/src/notation/shape.rs index 55ea3da1..c2bd80a6 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/shape.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/shape.rs @@ -132,12 +132,10 @@ impl FromStr for Shape { "Octagon" => Ok(Self::Octagon), "Dodecagon" => Ok(Self::Dodecagon), "Skip" => Ok(Self::Skip), - _ => { - Err(TilingError::InvalidShape { - shape: value.into(), - reason: "invalid".into(), - }) - } + _ => Err(TilingError::InvalidShape { + shape: value.into(), + reason: "invalid".into(), + }), } } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/transform.rs b/workspaces/tilings/src-rust/tiling/src/notation/transform.rs index 2f2af2a3..d441ed99 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/transform.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/transform.rs @@ -10,13 +10,7 @@ use serde::{Deserialize, Serialize}; use typeshare::typeshare; use super::{ - Direction, - Operation, - OriginIndex, - OriginType, - Path, - TransformContinuous, - TransformEccentric, + Direction, Operation, OriginIndex, OriginType, Path, TransformContinuous, TransformEccentric, TransformValue, }; use crate::build::Plane; @@ -126,16 +120,12 @@ impl Transform { pub fn previous(&mut self, polygons: &Plane) -> Option { match self { - Self::Continuous(transform) => { - transform - .previous_transform() - .map(|transform| transform.into()) - } - Self::Eccentric(transform) => { - transform - .previous(polygons) - .map(|transform| transform.into()) - } + Self::Continuous(transform) => transform + .previous_transform() + .map(|transform| transform.into()), + Self::Eccentric(transform) => transform + .previous(polygons) + .map(|transform| transform.into()), } } diff --git a/workspaces/tilings/src-rust/tiling/src/notation/transform_continuous.rs b/workspaces/tilings/src-rust/tiling/src/notation/transform_continuous.rs index 102ef461..af2a07e3 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/transform_continuous.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/transform_continuous.rs @@ -6,7 +6,6 @@ use typeshare::typeshare; use super::{Direction, Operation, Path, TransformValue}; use crate::TilingError; -/// #[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[typeshare] diff --git a/workspaces/tilings/src-rust/tiling/src/notation/transforms.rs b/workspaces/tilings/src-rust/tiling/src/notation/transforms.rs index 276ed9dd..98fec53e 100644 --- a/workspaces/tilings/src-rust/tiling/src/notation/transforms.rs +++ b/workspaces/tilings/src-rust/tiling/src/notation/transforms.rs @@ -40,7 +40,6 @@ impl Transforms { pub fn from_string(mut self, string: &str) -> Result { string - .to_string() .split(Separator::Transform.to_string().as_str()) .try_for_each(|s| self.push_string(s))?; diff --git a/workspaces/tilings/src-rust/tiling/src/tiling.rs b/workspaces/tilings/src-rust/tiling/src/tiling.rs index 2b246882..2e50c02b 100644 --- a/workspaces/tilings/src-rust/tiling/src/tiling.rs +++ b/workspaces/tilings/src-rust/tiling/src/tiling.rs @@ -9,7 +9,6 @@ use typeshare::typeshare; use crate::notation::{Direction, Notation, Path, Transforms}; use crate::{build, validation, TilingError}; -/// #[serde_as] #[derive(Clone, Debug, Default, Serialize)] #[serde(rename_all = "camelCase")] @@ -30,7 +29,6 @@ pub struct Tiling { } impl Tiling { - /// pub fn with_expansion_phases(mut self, expansion_phases: u8) -> Self { self.option_expansion_phases = expansion_phases; self @@ -49,7 +47,6 @@ impl Tiling { self } - /// pub fn with_path(mut self, path: Path) -> Self { if let Err(err) = self .notation @@ -61,13 +58,11 @@ impl Tiling { self } - /// pub fn with_scale(mut self, scale: u8) -> Self { self.plane.with_scale(scale); self } - /// pub fn with_transforms(mut self, transforms: Transforms) -> Self { self.notation.set_transforms(transforms); self diff --git a/workspaces/tilings/src-rust/wasm/Cargo.toml b/workspaces/tilings/src-rust/wasm/Cargo.toml index 8d3a4071..f37e75f4 100644 --- a/workspaces/tilings/src-rust/wasm/Cargo.toml +++ b/workspaces/tilings/src-rust/wasm/Cargo.toml @@ -10,23 +10,17 @@ crate-type = ["cdylib"] path = "src/lib.rs" [dependencies] -anyhow.workspace = true console_log.workspace = true console_error_panic_hook.workspace = true log.workspace = true serde.workspace = true serde_json.workspace = true serde-wasm-bindgen.workspace = true -thiserror.workspace = true -typeshare.workspace = true wasm-bindgen.workspace = true web-sys = { workspace = true, features = [ 'console', - 'CanvasRenderingContext2d', - 'Document', - 'Element', - 'HtmlCanvasElement', - 'Window', + 'OffscreenCanvas', + 'OffscreenCanvasRenderingContext2d', ] } tiling = { path = "../tiling" } diff --git a/workspaces/tilings/src-rust/wasm/src/lib.rs b/workspaces/tilings/src-rust/wasm/src/lib.rs index 41926f49..83121164 100644 --- a/workspaces/tilings/src-rust/wasm/src/lib.rs +++ b/workspaces/tilings/src-rust/wasm/src/lib.rs @@ -4,6 +4,7 @@ use tiling::notation::{Path, Transform}; use tiling::{validation, Tiling}; use tiling_renderer::{draw, Options}; use wasm_bindgen::prelude::*; +use web_sys::OffscreenCanvas; #[wasm_bindgen(start)] fn main() -> Result<(), JsError> { @@ -65,11 +66,12 @@ pub fn find_next_tiling(notation: &str, validations: &JsValue) -> Result Result { + let offscreen_canvas: OffscreenCanvas = canvas.dyn_into().unwrap(); let options = serde_wasm_bindgen::from_value::(options.to_owned())?; let validations = serde_wasm_bindgen::from_value::>(validations.to_owned())?; @@ -81,7 +83,7 @@ pub fn render_notation( .with_expansion_phases(options.expansion_phases.unwrap_or_default()) .from_string(notation.to_string()); - draw(&tiling, canvas_id, options)?; + draw(&tiling, offscreen_canvas, options)?; Ok(serde_wasm_bindgen::to_value(&tiling)?) } diff --git a/workspaces/tilings/src/Presentation/Arrangement/ArrangementInformation.tsx b/workspaces/tilings/src/Presentation/Arrangement/ArrangementInformation.tsx index 7caff0e0..1fdd7ef9 100644 --- a/workspaces/tilings/src/Presentation/Arrangement/ArrangementInformation.tsx +++ b/workspaces/tilings/src/Presentation/Arrangement/ArrangementInformation.tsx @@ -17,7 +17,7 @@ const Section = ({ children, title, ...rest }: BoxProps) => ( export default function ArrangementInformation() { const { tiling } = useArrangementContext(); - const validTiling = tiling?.buildContext.validTilings[0]; + const validTiling = tiling?.buildContext.results[0]; const vertexTypes = tiling?.plane.classifier.vertexTypeStore.vertexTypes ?? []; const edgeTypes = tiling?.plane.classifier.edgeTypeStore.edgeTypes ?? []; @@ -31,8 +31,8 @@ export default function ArrangementInformation() { -
- +
+
)} diff --git a/workspaces/tilings/src/Presentation/Library/useLibraryContext.ts b/workspaces/tilings/src/Presentation/Library/useLibraryContext.ts index 995adfd0..8f433138 100644 --- a/workspaces/tilings/src/Presentation/Library/useLibraryContext.ts +++ b/workspaces/tilings/src/Presentation/Library/useLibraryContext.ts @@ -1,5 +1,6 @@ import { createContext, useContext } from 'react'; -import { TilingResult, results } from '../utils/results'; +import { Result } from '../../types'; +import { results } from '../utils/results'; const FILTER_KEYS = [ 'has_0', @@ -16,8 +17,8 @@ export type LibraryResultCounts = Record; export type LibraryContextProps = { countsByShapes: LibraryResultCounts; - filteredResults: TilingResult[]; - filteredResultsByUniform: Record; + filteredResults: Result[]; + filteredResultsByUniform: Record; filters: LibraryFilters; toggleFilter: (filter: keyof LibraryFilters) => void; }; @@ -33,9 +34,9 @@ export const defaultFilters = FILTER_KEYS.reduce( ); export const getFilteredResults = ( - results: TilingResult[], + results: Result[], filters: LibraryFilters -): TilingResult[] => { +): Result[] => { if (Object.values(filters).every((value) => !value)) { return results; } @@ -45,7 +46,7 @@ export const getFilteredResults = ( Object.entries(filters) // .filter(([, selected]) => selected) .every(([key, value]) => { - return result[key as keyof TilingResult] === value; + return result[key as keyof Result] === value; }) ); }); @@ -63,7 +64,7 @@ export const getCountsByShapes = ( // then we increase all the counts const matches = Object.entries(filters) .filter(([, selected]) => selected) - .every(([key]) => result[key as keyof TilingResult]); + .every(([key]) => result[key as keyof Result]); if (!matches) { continue; @@ -71,7 +72,7 @@ export const getCountsByShapes = ( } for (const key of FILTER_KEYS) { - if (result[key as keyof TilingResult]) { + if (result[key as keyof Result]) { counts[key]++; } } diff --git a/workspaces/tilings/src/Presentation/Notation/NotationInput.tsx b/workspaces/tilings/src/Presentation/Notation/NotationInput.tsx index 07dfac67..3bd1f8c1 100644 --- a/workspaces/tilings/src/Presentation/Notation/NotationInput.tsx +++ b/workspaces/tilings/src/Presentation/Notation/NotationInput.tsx @@ -1,5 +1,6 @@ +import { useWasmApi } from '@hogg/wasm'; import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react'; -import { Box, Button, Input, Tooltip } from 'preshape'; +import { Box, ButtonAsync, Input, Tooltip } from 'preshape'; import { useArrangementContext } from '../Arrangement/useArrangementContext'; import { useNotationContext } from './useNotationContext'; @@ -7,6 +8,7 @@ export default function NotationInput() { const { notation, setNotation, previousNotation, nextNotation } = useNotationContext(); const { tiling } = useArrangementContext(); + const { errors, loading } = useWasmApi(); const error = tiling?.error; const handleInputChange = (e: React.ChangeEvent) => { @@ -17,9 +19,16 @@ export default function NotationInput() { return ( - + - + ); diff --git a/workspaces/tilings/src/Presentation/Notation/NotationProvider.tsx b/workspaces/tilings/src/Presentation/Notation/NotationProvider.tsx index 1f077ece..aa7217dc 100644 --- a/workspaces/tilings/src/Presentation/Notation/NotationProvider.tsx +++ b/workspaces/tilings/src/Presentation/Notation/NotationProvider.tsx @@ -1,5 +1,5 @@ +import { useWasmApi } from '@hogg/wasm'; import { PropsWithChildren, useCallback, useRef, useState } from 'react'; -import useWasmApi from '../WasmApi/useWasmApi'; import { NotationContext } from './useNotationContext'; export type NotationProviderProps = { @@ -14,7 +14,7 @@ export default function NotationProvider({ isValid, onChange, }: PropsWithChildren) { - const { findNextTiling, findPreviousTiling } = useWasmApi(); + const { api } = useWasmApi(); const [notation, setNotation] = useState(initialNotation); const notationRef = useRef(initialNotation); @@ -27,21 +27,23 @@ export default function NotationProvider({ [onChange] ); - const handlePreviousNotation = useCallback(() => { - const previousNotation = findPreviousTiling(notationRef.current); + const handlePreviousNotation = useCallback(async () => { + const previousNotation = await api.findPreviousTiling([ + notationRef.current, + ]); if (previousNotation) { handleSetNotation(previousNotation); } - }, [findPreviousTiling, handleSetNotation]); + }, [api, handleSetNotation]); - const handleNextNotation = useCallback(() => { - const nextNotation = findNextTiling(notationRef.current); + const handleNextNotation = useCallback(async () => { + const nextNotation = await api.findNextTiling([notationRef.current]); if (nextNotation) { handleSetNotation(nextNotation); } - }, [findNextTiling, handleSetNotation]); + }, [api, handleSetNotation]); const value = { notation, diff --git a/workspaces/tilings/src/Presentation/Player/usePlayerContext.ts b/workspaces/tilings/src/Presentation/Player/usePlayerContext.ts index 72925d24..ce104f74 100644 --- a/workspaces/tilings/src/Presentation/Player/usePlayerContext.ts +++ b/workspaces/tilings/src/Presentation/Player/usePlayerContext.ts @@ -5,7 +5,7 @@ const noop = () => { throw new Error('usePlayerContext was not initialized'); }; -export const PlayerContext = createContext({ +const initialContext = { ...defaultOptions, elapsed: 0, backward: noop, @@ -15,6 +15,11 @@ export const PlayerContext = createContext({ setSpeed: noop, toStart: noop, toEnd: noop, -}); +}; + +export const PlayerContext = createContext(initialContext); -export const usePlayerContext = () => useContext(PlayerContext); +export const usePlayerContext = (enabled = true): UsePlayerResult => { + const context = useContext(PlayerContext); + return enabled ? context : initialContext; +}; diff --git a/workspaces/tilings/src/Presentation/Renderer/Canvas.tsx b/workspaces/tilings/src/Presentation/Renderer/Canvas.tsx deleted file mode 100644 index 95eee6ca..00000000 --- a/workspaces/tilings/src/Presentation/Renderer/Canvas.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { - Box, - BoxProps, - Text, - useResizeObserver, - useThemeContext, -} from 'preshape'; -import { memo, useEffect, useMemo, useRef, useState } from 'react'; -import { v4 } from 'uuid'; - -export type CanvasProps = { - scale?: number; - shadow?: boolean; - render: (id: string) => void; -}; - -function Canvas({ - scale = 1, - shadow, - render, - ...rest -}: BoxProps & CanvasProps) { - const ref = useRef(null); - const [error, setError] = useState(''); - const { theme } = useThemeContext(); - const [size, setSize] = useResizeObserver(); - const { height, width } = size; - const id = useMemo(() => v4(), []); - - useEffect(() => { - if (ref.current) { - ref.current.width = width * window.devicePixelRatio * scale; - ref.current.height = height * window.devicePixelRatio * scale; - ref.current.style.width = `${width * scale}px`; - ref.current.style.height = `${height * scale}px`; - ref.current.style.transform = `scale(${1 / scale})`; - - try { - render(id); - setError(''); - } catch (error) { - setError((error as Error).message); - } - } - }, [scale, height, width, render, id]); - - return ( - - - - - {error && ( - - - {error} - - - )} - - - ); -} - -const CanvasMemo = memo(Canvas); - -export default CanvasMemo; diff --git a/workspaces/tilings/src/Presentation/Renderer/Renderer.tsx b/workspaces/tilings/src/Presentation/Renderer/Renderer.tsx index c0e55e96..c17b3935 100644 --- a/workspaces/tilings/src/Presentation/Renderer/Renderer.tsx +++ b/workspaces/tilings/src/Presentation/Renderer/Renderer.tsx @@ -1,35 +1,47 @@ +import { useWasmApi } from '@hogg/wasm'; import { + Box, BoxProps, + Motion, + Text, colorBlack, colorNegativeShade4, + useResizeObserver, useThemeContext, } from 'preshape'; -import { useCallback, useMemo } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; +import { v4 } from 'uuid'; import { ColorMode, Options, ValidationFlag } from '../../types'; import { useArrangementContext } from '../Arrangement/useArrangementContext'; import { useNotationContext } from '../Notation/useNotationContext'; import { usePlayerContext } from '../Player/usePlayerContext'; import { useSettingsContext } from '../Settings/useSettingsContext'; -import useWasmApi from '../WasmApi/useWasmApi'; -import Canvas, { CanvasProps } from './Canvas'; -export type RendererProps = Omit & { +export type RendererProps = { options?: Partial; + scale?: number; + shadow?: boolean; validations?: ValidationFlag[]; + withPlayer?: boolean; }; export default function Renderer({ options: optionsProp, - scale, + scale = 1, shadow, validations, + withPlayer = false, ...rest }: BoxProps & RendererProps) { - const { colors: themeColors } = useThemeContext(); - const { renderNotation } = useWasmApi(); + const { colors: themeColors, theme } = useThemeContext(); + const refCanvas = useRef(null); + const refCanvasTransferred = useRef(false); + const refUuid = useRef(v4()); + const [error, setError] = useState(''); + const { api, loading } = useWasmApi(); const { notation } = useNotationContext(); const { setTiling } = useArrangementContext(); - const { maxStage } = usePlayerContext(); + const { isPlaying, maxStage } = usePlayerContext(withPlayer); const { autoRotate, expansionPhases, @@ -39,6 +51,10 @@ export default function Renderer({ showAnnotations, showDebug, } = useSettingsContext(); + const [size, setSize] = useResizeObserver(); + const { height, width } = size; + + const showLoading = !isPlaying && loading.renderNotation; const options = useMemo( () => ({ @@ -117,14 +133,93 @@ export default function Renderer({ ] ); - const canvasRender = useCallback( - (id: string) => { - setTiling(renderNotation(notation, id, options, validations)); - }, - [setTiling, notation, options, validations, renderNotation] - ); + // Transfer the canvas to the worker + useEffect(() => { + if (refCanvas.current && !refCanvasTransferred.current) { + const offscreenCanvas = refCanvas.current.transferControlToOffscreen(); + api.transferCanvas([refUuid.current, offscreenCanvas], [offscreenCanvas]); + refCanvasTransferred.current = true; + } + }, [api]); + + // Render the tiling + useEffect(() => { + try { + const scaledWidth = width * window.devicePixelRatio * scale; + const scaledHeight = height * window.devicePixelRatio * scale; + + if (!scaledWidth || !scaledHeight) { + return; + } + + api + .renderNotation([ + refUuid.current, + notation, + scaledWidth, + scaledHeight, + options, + validations, + ]) + .then(setTiling); + } catch (error) { + setError((error as Error).message); + } + }, [ + api, + notation, + scale, + width, + height, + options, + setError, + setTiling, + validations, + ]); return ( - + + + + + + + {error && ( + + + {error} + + + )} + + ); } diff --git a/workspaces/tilings/src/Presentation/WasmApi/WasmApi.tsx b/workspaces/tilings/src/Presentation/WasmApi/WasmApi.tsx deleted file mode 100644 index 2f180074..00000000 --- a/workspaces/tilings/src/Presentation/WasmApi/WasmApi.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { WasmProvider } from '@hogg/common'; -import { PropsWithChildren } from 'react'; -import loader from '../../../pkg/tiling_wasm'; -import { wasmApi } from './useWasmApi'; - -export default function WasmApi(props: PropsWithChildren) { - return ; -} diff --git a/workspaces/tilings/src/Presentation/WasmApi/useWasmApi.ts b/workspaces/tilings/src/Presentation/WasmApi/useWasmApi.ts deleted file mode 100644 index 84d3cd17..00000000 --- a/workspaces/tilings/src/Presentation/WasmApi/useWasmApi.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { useWasmContext } from '@hogg/common'; -import * as wasm from '../../../pkg/tiling_wasm'; -import { Options, Tiling, Transform, ValidationFlag } from '../../types'; - -const defaultValidations: ValidationFlag[] = [ - ValidationFlag.Overlaps, - ValidationFlag.Gaps, - ValidationFlag.Expansion, - ValidationFlag.VertexTypes, - ValidationFlag.EdgeTypes, - ValidationFlag.ShapeTypes, -]; - -function parseNotation(notation: string): Tiling { - return wasm.parse_notation(notation); -} - -function parseTransform(transform: string, path: string): Transform { - return wasm.parse_transform(transform, path); -} - -function findPreviousTiling( - notation: string, - validations = defaultValidations -): string | undefined { - return wasm.find_previous_tiling(notation, validations); -} - -function findNextTiling( - notation: string, - validations = defaultValidations -): string | undefined { - return wasm.find_next_tiling(notation, validations); -} - -function renderNotation( - canvasId: string, - notation: string, - options?: Options, - validations = defaultValidations -): Tiling { - return wasm.render_notation(notation, canvasId, options, validations); -} - -export const wasmApi = { - parseNotation, - parseTransform, - findPreviousTiling, - findNextTiling, - renderNotation, -}; - -export type WasmApi = typeof wasmApi; - -export default function useWasmApi() { - return useWasmContext(); -} diff --git a/workspaces/tilings/src/Presentation/index.tsx b/workspaces/tilings/src/Presentation/index.tsx index d90d14c2..edfcbd59 100644 --- a/workspaces/tilings/src/Presentation/index.tsx +++ b/workspaces/tilings/src/Presentation/index.tsx @@ -1,7 +1,7 @@ import { ProjectWindow, ProjectTabs, ProjectTab } from '@hogg/common'; +import { WasmApiLoadingScreen } from '@hogg/wasm'; import { BookOpenIcon, InfoIcon } from 'lucide-react'; import { Box } from 'preshape'; -import { useSearchParams } from 'react-router-dom'; import ArrangementInformation from './Arrangement/ArrangementInformation'; import ArrangementProvider from './Arrangement/ArrangementProvider'; import Library from './Library/Library'; @@ -13,7 +13,8 @@ import Renderer, { RendererProps } from './Renderer/Renderer'; import Settings from './Settings/Settings'; import SettingsProvider from './Settings/SettingsProvider'; import { useSettingsContext } from './Settings/useSettingsContext'; -import WasmApi from './WasmApi/WasmApi'; + +const DEFAULT_NOTATION = '3-4,3-3,3-12/m90/r(h12)'; function PresentationInner(props: RendererProps) { const { setShowSettings } = useSettingsContext(); @@ -36,7 +37,7 @@ function PresentationInner(props: RendererProps) { > - + @@ -44,20 +45,11 @@ function PresentationInner(props: RendererProps) { ); } -const DEFAULT_NOTATION = '3-4,3-3,3-12/m90/r(h12)'; - export default function Presentation({}) { - const [params, setParams] = useSearchParams(); - const notation = params.get('notation') ?? DEFAULT_NOTATION; - - const handleNotationChange = (notation: string) => { - setParams({ notation }); - }; - return ( - + - + @@ -65,6 +57,6 @@ export default function Presentation({}) { - + ); } diff --git a/workspaces/tilings/src/Presentation/utils/results.ts b/workspaces/tilings/src/Presentation/utils/results.ts index a02fd275..2611191f 100644 --- a/workspaces/tilings/src/Presentation/utils/results.ts +++ b/workspaces/tilings/src/Presentation/utils/results.ts @@ -1,10 +1,10 @@ import groupBy from 'lodash/groupBy'; import uniqueTilings from '../../../results/output.json'; +import { Result } from '../../types'; export type ImageModule = { default: string }; -export type TilingResult = (typeof uniqueTilings)[number]; -export const results = uniqueTilings; +export const results = uniqueTilings as Result[]; export const getRandomNotation = (previous: string): string => { const randomResult = results[Math.floor(Math.random() * results.length)]; @@ -14,11 +14,11 @@ export const getRandomNotation = (previous: string): string => { }; export const groupResultsByUniform = ( - results: TilingResult[] -): Record => groupBy(results, 'uniform'); + results: Result[] +): Record => groupBy(results, 'uniform'); -const indexResultsBy = (key: keyof Pick) => - results.reduce>((acc, tiling) => { +const indexResultsBy = (key: keyof Pick) => + results.reduce>((acc, tiling) => { acc[tiling[key]] = tiling; return acc; }, {}); diff --git a/workspaces/tilings/src/TilingRenderer.tsx b/workspaces/tilings/src/TilingRenderer.tsx index 6e00ec8c..8e67cc99 100644 --- a/workspaces/tilings/src/TilingRenderer.tsx +++ b/workspaces/tilings/src/TilingRenderer.tsx @@ -1,10 +1,10 @@ +import { WasmApiLoadingScreen } from '@hogg/wasm'; import { BoxProps } from 'preshape'; import ArrangementProvider from './Presentation/Arrangement/ArrangementProvider'; import NotationProvider, { NotationProviderProps, } from './Presentation/Notation/NotationProvider'; import Renderer, { RendererProps } from './Presentation/Renderer/Renderer'; -import WasmApi from './Presentation/WasmApi/WasmApi'; export type TilingRendererProps = BoxProps & NotationProviderProps & @@ -18,12 +18,12 @@ export default function TilingRenderer({ ...rest }: TilingRendererProps) { return ( - + - + ); } diff --git a/workspaces/tilings/src/types.ts b/workspaces/tilings/src/types.ts index 79b8b9bc..5d79706b 100644 --- a/workspaces/tilings/src/types.ts +++ b/workspaces/tilings/src/types.ts @@ -201,7 +201,7 @@ export interface ApplicationError { export interface Result { notation: string; - uid: string; + hash: string; transformIndex: number; uniform: number; timestamp: string; @@ -210,7 +210,7 @@ export interface Result { export interface Context { applicationErrors: ApplicationError[]; countTotalTilings: number; - validTilings: Result[]; + results: Result[]; } export interface Point { @@ -290,7 +290,6 @@ export interface OriginIndex { value: number; } -/** */ export interface Path { option_type_ahead: boolean; nodes: Node[]; @@ -313,7 +312,6 @@ export interface TransformValue { value: number; } -/** */ export interface TransformContinuous { operation: Operation; value: TransformValue; @@ -341,7 +339,6 @@ export interface Transforms { list: Transform[]; } -/** */ export interface Tiling { optionExpansionPhases: number; optionLinkPaths: boolean; diff --git a/workspaces/wasm/Cargo.toml b/workspaces/wasm/Cargo.toml new file mode 100644 index 00000000..6f8c2866 --- /dev/null +++ b/workspaces/wasm/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "wasm" +version = "0.0.0" +edition = "2021" +authors = ["Harry Hogg "] +description = "" +license = "MIT/Apache-2.0" +repository = "https://github.com/hhogg/hogg.io" + +[lib] +crate-type = ["cdylib", "rlib"] +name = "wasm" +path = "src-rust/lib.rs" + +[dependencies] +console_log.workspace = true +console_error_panic_hook.workspace = true +log.workspace = true +serde.workspace = true +serde_json.workspace = true +serde-wasm-bindgen.workspace = true +wasm-bindgen.workspace = true +web-sys = { workspace = true, features = [ + 'console', + 'OffscreenCanvas', + 'OffscreenCanvasRenderingContext2d', +] } + +circular-sequence = { path = "../circular-sequence" } +line_segment_extending = { path = "../line-segment-extending" } +tiling = { path = "../tilings/src-rust/tiling" } +tiling-renderer = { path = "../tilings/src-rust/renderer" } + +[dev-dependencies] +pretty_assertions.workspace = true diff --git a/workspaces/wasm/package.json b/workspaces/wasm/package.json new file mode 100644 index 00000000..42bfb763 --- /dev/null +++ b/workspaces/wasm/package.json @@ -0,0 +1,23 @@ +{ + "name": "@hogg/wasm", + "version": "0.0.0", + "author": "Harry Hogg ", + "private": true, + "type": "module", + "main": "./src/index.ts", + "scripts": { + "build": "yarn clean && yarn build:wasm", + "build:wasm": "wasm-pack build --target web", + "clean": "rm -rf ./pkg", + "dev": "cargo watch -w ./src-rust -w ../circular-sequence/src-rust -w ../line-segment-extending/src-rust -w ../tilings/src-rust -q -s 'yarn workspace @hogg/wasm run build:wasm'" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11" + } +} diff --git a/workspaces/wasm/src-rust/lib.rs b/workspaces/wasm/src-rust/lib.rs new file mode 100644 index 00000000..5592168d --- /dev/null +++ b/workspaces/wasm/src-rust/lib.rs @@ -0,0 +1,161 @@ +use std::panic; + +use circular_sequence::{ + get_length as get_length_internal, get_min_permutation as get_min_permutation_internal, + get_symmetry_index as get_symmetry_index_internal, is_symmetrical as is_symmetrical_internal, + sort as sort_internal, to_string as to_string_internal, Sequence, +}; +use line_segment_extending::{extend_line_segment, X1Y1X2Y2}; +use serde_wasm_bindgen::from_value; +use tiling::notation::{Path, Transform}; +use tiling::{validation, Tiling}; +use tiling_renderer::{draw, Options}; +use wasm_bindgen::prelude::wasm_bindgen; +use wasm_bindgen::{JsCast, JsError, JsValue}; +use web_sys::OffscreenCanvas; + +#[wasm_bindgen(start)] +fn main() -> Result<(), JsError> { + console_log::init_with_level(log::Level::Debug).unwrap(); + panic::set_hook(Box::new(console_error_panic_hook::hook)); + + Ok(()) +} + +// circular-sequence + +#[wasm_bindgen] +pub fn get_symmetry_index(sequence: &JsValue) -> Result, JsError> { + Ok(get_symmetry_index_internal(&from_value::( + sequence.to_owned(), + )?)) +} + +#[wasm_bindgen] +pub fn is_symmetrical(sequence: &JsValue) -> Result { + Ok(is_symmetrical_internal(&from_value::( + sequence.to_owned(), + )?)) +} + +#[wasm_bindgen] +pub fn get_length(sequence: &JsValue) -> Result { + Ok(get_length_internal(&from_value::( + sequence.to_owned(), + )?)) +} + +#[wasm_bindgen] +pub fn get_min_permutation(sequence: &JsValue) -> Result { + Ok(serde_wasm_bindgen::to_value( + &get_min_permutation_internal(&from_value::(sequence.to_owned())?), + )?) +} + +#[wasm_bindgen] +pub fn to_string(sequences: &JsValue) -> Result { + Ok(to_string_internal(from_value::>( + sequences.to_owned(), + )?)) +} + +#[wasm_bindgen] +pub fn sort(sequences: &JsValue) -> Result { + Ok(serde_wasm_bindgen::to_value(&sort_internal(from_value::< + Vec, + >( + sequences.to_owned(), + )?))?) +} + +// line-segment-extending + +#[wasm_bindgen] +pub fn get_extended_line_segment( + line_segment: JsValue, + bounds: JsValue, + extend_start: bool, + extend_end: bool, +) -> Result { + let line_segment = serde_wasm_bindgen::from_value::(line_segment.to_owned())?; + let bounds = serde_wasm_bindgen::from_value::(bounds.to_owned())?; + let extended_line_segment = extend_line_segment(line_segment, bounds, extend_start, extend_end); + + Ok(serde_wasm_bindgen::to_value(&extended_line_segment)?) +} + +// tilings + +#[wasm_bindgen] +pub fn parse_notation(notation: &str) -> Result { + Ok(serde_wasm_bindgen::to_value( + &Tiling::default().from_string(notation.into()), + )?) +} + +#[wasm_bindgen] +pub fn parse_transform(transform: &str, path: &str) -> Result { + Ok(serde_wasm_bindgen::to_value(&Transform::from_string( + transform, + &Path::default().from_string(path)?, + )?)?) +} + +#[wasm_bindgen] +pub fn find_previous_tiling( + notation: &str, + validations: &JsValue, +) -> Result, JsError> { + let validations = + serde_wasm_bindgen::from_value::>(validations.to_owned())?; + + let mut tiling = Tiling::default() + .with_validations(Some(validations)) + .with_expansion_phases(3) + .with_link_paths(true) + .from_string(notation.to_string()); + + Ok( + tiling + .find_previous_tiling() + .map(|t| t.notation.to_string()), + ) +} + +#[wasm_bindgen] +pub fn find_next_tiling(notation: &str, validations: &JsValue) -> Result, JsError> { + let validations = + serde_wasm_bindgen::from_value::>(validations.to_owned())?; + + let mut tiling = Tiling::default() + .with_validations(Some(validations)) + .with_expansion_phases(3) + .with_link_paths(true) + .from_string(notation.to_string()); + + Ok(tiling.find_next_tiling().map(|t| t.notation.to_string())) +} + +#[wasm_bindgen] +pub fn render_notation( + canvas: JsValue, + notation: &str, + options: &JsValue, + validations: &JsValue, +) -> Result { + let offscreen_canvas: OffscreenCanvas = canvas.dyn_into().unwrap(); + let options = serde_wasm_bindgen::from_value::(options.to_owned())?; + let validations = + serde_wasm_bindgen::from_value::>(validations.to_owned())?; + + let tiling = Tiling::default() + .with_validations(Some(validations)) + .with_scale(options.scale_size.unwrap_or(1)) + .with_type_ahead(true) + .with_expansion_phases(options.expansion_phases.unwrap_or_default()) + .from_string(notation.to_string()); + + draw(&tiling, offscreen_canvas, options)?; + + Ok(serde_wasm_bindgen::to_value(&tiling)?) +} diff --git a/workspaces/wasm/src/Article.tsx b/workspaces/wasm/src/Article.tsx new file mode 100644 index 00000000..fe5e6c89 --- /dev/null +++ b/workspaces/wasm/src/Article.tsx @@ -0,0 +1,16 @@ +import { ArticlePage } from '@hogg/common'; +import { ArticleSection, ArticleHeading } from 'preshape'; + +type Props = {}; + +const Article = ({}: Props) => { + return ( + + + Introduction + + + ); +}; + +export default Article; diff --git a/workspaces/wasm/src/Project.tsx b/workspaces/wasm/src/Project.tsx new file mode 100644 index 00000000..cde27e94 --- /dev/null +++ b/workspaces/wasm/src/Project.tsx @@ -0,0 +1,6 @@ +import { ProjectPage, ProjectPageProps } from '@hogg/common'; +import Article from './Article'; + +export default function Project(props: ProjectPageProps) { + return } />; +} diff --git a/workspaces/wasm/src/WasmApi/WasmApiLoadingScreen.tsx b/workspaces/wasm/src/WasmApi/WasmApiLoadingScreen.tsx new file mode 100644 index 00000000..e30f80c6 --- /dev/null +++ b/workspaces/wasm/src/WasmApi/WasmApiLoadingScreen.tsx @@ -0,0 +1,21 @@ +import { Spinner } from '@hogg/common'; +import { Appear, AppearProps } from 'preshape'; +import { PropsWithChildren } from 'react'; +import { useWasmApi } from './useWasmApi'; + +export default function WasmApiLoadingScreen({ + children, + ...props +}: PropsWithChildren) { + const { loading } = useWasmApi(); + + if (loading._init) { + return Wasm loading...; + } + + return ( + + {children} + + ); +} diff --git a/workspaces/wasm/src/WasmApi/WasmApiProvider.tsx b/workspaces/wasm/src/WasmApi/WasmApiProvider.tsx new file mode 100644 index 00000000..4e90fd13 --- /dev/null +++ b/workspaces/wasm/src/WasmApi/WasmApiProvider.tsx @@ -0,0 +1,11 @@ +import { PropsWithChildren } from 'react'; +import useWasmWorkerRunner from '../WasmWorker/useWasmWorker'; +import { WasmApiContext } from './useWasmApi'; + +export default function WasmApiProvider({ children }: PropsWithChildren) { + const value = useWasmWorkerRunner(); + + return ( + {children} + ); +} diff --git a/workspaces/wasm/src/WasmApi/useWasmApi.ts b/workspaces/wasm/src/WasmApi/useWasmApi.ts new file mode 100644 index 00000000..3bd1fdbc --- /dev/null +++ b/workspaces/wasm/src/WasmApi/useWasmApi.ts @@ -0,0 +1,14 @@ +import { createContext, useContext } from 'react'; +import { UseWasmWorkerResult } from '../WasmWorker/useWasmWorker'; + +export const WasmApiContext = createContext(null); + +export function useWasmApi(): UseWasmWorkerResult { + const value = useContext(WasmApiContext); + + if (!value) { + throw new Error('useWasmApi must be used within a WasmProvider'); + } + + return value; +} diff --git a/workspaces/wasm/src/WasmWorker/WasmWorker.ts b/workspaces/wasm/src/WasmWorker/WasmWorker.ts new file mode 100644 index 00000000..20821a7b --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/WasmWorker.ts @@ -0,0 +1,55 @@ +import init from '@hogg/wasm/pkg'; +import * as circularSequence from './modules/circular-sequence'; +import * as lineSegmentExtending from './modules/line-segment-extending'; +import * as tilings from './modules/tilings'; +import { WasmWorkerMessageRequest, WasmWorkerMessageResponse } from './state'; + +let ready = false; + +const wasmApi = { + ...circularSequence, + ...lineSegmentExtending, + ...tilings, +}; + +export type WasmApi = typeof wasmApi; +export type WasmApiKey = keyof WasmApi; + +init({}).then(() => { + ready = true; + postMessage({ key: '_init', ready }); +}); + +onmessage = async ({ data }: MessageEvent) => { + const { id, args, key } = data; + const fn = wasmApi[key]; + + if (!ready) { + const response: WasmWorkerMessageResponse = { + id, + key, + error: `Wasm not ready (${data.key})`, + result: null, + }; + + postMessage(response); + return; + } + + if (!fn) { + const response: WasmWorkerMessageResponse = { + id, + key, + error: `Api "${key}" not found`, + result: null, + }; + + postMessage(response); + return; + } + + // @ts-ignore + const result = fn(...args); + + postMessage({ id, key, result }); +}; diff --git a/workspaces/wasm/src/WasmWorker/api.ts b/workspaces/wasm/src/WasmWorker/api.ts new file mode 100644 index 00000000..782c529c --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/api.ts @@ -0,0 +1,67 @@ +import { WasmApi, WasmApiKey } from './WasmWorker'; +import { + createRequest, + handleMessageResponse, + WasmWorkerMessageResponse, +} from './state'; + +let worker: Worker | undefined = undefined; + +// Create a new worker +if (typeof Worker === 'undefined') { + console.error('Web Workers are not supported in this environment'); +} else { + worker = new Worker(new URL('./WasmWorker', import.meta.url), { + type: 'module', + }); +} + +// Converts an object of functions to a promise-based object of functions +// where the args have been converted to an array and the return value is a promise +export type WasmWorkerApi = { + [K in WasmApiKey]: ( + args: Parameters, + transfer?: Transferable[] + ) => Promise>; +}; + +const apisAvailable: Record = { + // circular_sequence, + getSequenceLength: true, + getSequenceMinPermutation: true, + getSequenceSymmetryIndex: true, + isSequenceSymmetrical: true, + sequenceToString: true, + sortSequence: true, + // line_segment_extending, + getExtendedLineSegment: true, + // tilings, + findNextTiling: true, + findPreviousTiling: true, + parseNotation: true, + parseTransform: true, + renderNotation: true, + transferCanvas: true, +}; + +const apiKeys = Object.keys(apisAvailable).filter( + (key) => apisAvailable[key as WasmApiKey] +) as WasmApiKey[]; + +const api = {} as WasmWorkerApi; + +for (const key of apiKeys) { + api[key] = (args, transfer = []): Promise => { + return new Promise((resolve, reject) => { + worker?.postMessage(createRequest(key, args, resolve, reject), transfer); + }); + }; +} + +if (worker) { + worker.onmessage = ({ data }: MessageEvent) => { + handleMessageResponse(data); + }; +} + +export default api; diff --git a/workspaces/wasm/src/WasmWorker/modules/circular-sequence.ts b/workspaces/wasm/src/WasmWorker/modules/circular-sequence.ts new file mode 100644 index 00000000..415e4e76 --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/modules/circular-sequence.ts @@ -0,0 +1,26 @@ +import { type Sequence } from '@hogg/circular-sequence/types'; +import { + get_length as _getSequenceLength, + get_min_permutation as _getMinPermutation, + get_symmetry_index as _getSequenceSymmetryIndex, + is_symmetrical as _isSequenceSymmetrical, + to_string as _sequenceToString, + sort as _sortSequence, +} from '@hogg/wasm/pkg'; + +export const isSequenceSymmetrical = (sequence: Sequence) => + _isSequenceSymmetrical(sequence); + +export const getSequenceMinPermutation = (sequence: Sequence) => + _getMinPermutation(sequence); + +export const getSequenceLength = (sequence: Sequence) => + _getSequenceLength(sequence); + +export const getSequenceSymmetryIndex = (sequence: Sequence) => + _getSequenceSymmetryIndex(sequence); + +export const sequenceToString = (sequences: Sequence[]) => + _sequenceToString(sequences); + +export const sortSequence = (sequences: Sequence[]) => _sortSequence(sequences); diff --git a/workspaces/wasm/src/WasmWorker/modules/line-segment-extending.ts b/workspaces/wasm/src/WasmWorker/modules/line-segment-extending.ts new file mode 100644 index 00000000..303a3ed6 --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/modules/line-segment-extending.ts @@ -0,0 +1,9 @@ +import { type X1Y1X2Y2 } from '@hogg/line-segment-extending/types'; +import { get_extended_line_segment as _getExtendedLineSegment } from '@hogg/wasm/pkg'; + +export const getExtendedLineSegment = ( + lineSegment: X1Y1X2Y2, + bounds: X1Y1X2Y2, + extendStart: boolean, + extendEnd: boolean +) => _getExtendedLineSegment(lineSegment, bounds, extendStart, extendEnd); diff --git a/workspaces/wasm/src/WasmWorker/modules/tilings.ts b/workspaces/wasm/src/WasmWorker/modules/tilings.ts new file mode 100644 index 00000000..4e6ce4cb --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/modules/tilings.ts @@ -0,0 +1,70 @@ +import { + type Options, + type Tiling, + type Transform, + ValidationFlag, +} from '@hogg/tilings/types'; +import { + parse_notation as _parseNotation, + parse_transform as _parseTransform, + find_previous_tiling as _findPreviousTiling, + find_next_tiling as _findNextTiling, + render_notation as _renderNotation, +} from '@hogg/wasm/pkg'; + +const defaultValidations: ValidationFlag[] = [ + ValidationFlag.Overlaps, + ValidationFlag.Gaps, + ValidationFlag.Expansion, + ValidationFlag.VertexTypes, + ValidationFlag.EdgeTypes, + ValidationFlag.ShapeTypes, +]; + +const canvases = new Map(); + +export function transferCanvas(id: string, canvas: OffscreenCanvas): void { + canvases.set(id, canvas); +} + +export function parseNotation(notation: string): Tiling { + return _parseNotation(notation); +} + +export function parseTransform(transform: string, path: string): Transform { + return _parseTransform(transform, path); +} + +export function findPreviousTiling( + notation: string, + validations = defaultValidations +): string | undefined { + return _findPreviousTiling(notation, validations); +} + +export function findNextTiling( + notation: string, + validations = defaultValidations +): string | undefined { + return _findNextTiling(notation, validations); +} + +export function renderNotation( + id: string, + notation: string, + width: number, + height: number, + options?: Options, + validations = defaultValidations +): Tiling { + const canvas = canvases.get(id); + + if (!canvas) { + throw new Error(`Canvas with id ${id} not found`); + } + + canvas.width = width; + canvas.height = height; + + return _renderNotation(canvas, notation, options, validations); +} diff --git a/workspaces/wasm/src/WasmWorker/state.ts b/workspaces/wasm/src/WasmWorker/state.ts new file mode 100644 index 00000000..b9f2030d --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/state.ts @@ -0,0 +1,129 @@ +import { v4 } from 'uuid'; +import { WasmApi, WasmApiKey } from './WasmWorker'; + +export type WasmWorkerMessageRequest = { + id: string; + key: WasmApiKey; + args: any[]; +}; + +export type WasmWorkerMessageResponse = { + id: string; + key: WasmApiKey; + result: ReturnType; + error?: string; +}; + +export type WasmWorkerMessagesStore = Record< + string, + WasmWorkerMessagesStoreEntry +>; + +export type WasmWorkerMessagesStoreEntry = { + key: WasmApiKey | '_init'; + initiated: number; + reject?: (reason?: any) => void; + resolve?: (value: any) => any; +}; + +export type WasmWorkerState = { + errors: Partial>; + loading: Partial>; +}; + +export type WasmWorkerStateListener = (state: WasmWorkerState) => void; + +const messages: WasmWorkerMessagesStore = { + _init: { key: '_init', initiated: Date.now() }, +}; + +const errors: WasmWorkerState['errors'] = {}; +const loading: WasmWorkerState['loading'] = { _init: true }; +const listeners: Record = {}; + +export function getMessage( + response: WasmWorkerMessageResponse +): WasmWorkerMessagesStoreEntry { + return messages[response.id] ?? messages[response.key]; +} + +export function getState(): WasmWorkerState { + return { errors, loading }; +} + +export function setError(key: WasmApiKey, error: string) { + errors[key] = error; +} + +export function removeError(key: WasmApiKey) { + delete errors[key]; +} + +function removeMessage(id: string) { + delete messages[id]; +} + +export function setLoading(key: WasmApiKey, value: boolean) { + loading[key] = value; + notifyListeners(); +} + +function notifyListeners() { + for (const id in listeners) { + listeners[id](getState()); + } +} + +export function onStateChange( + listener: (state: WasmWorkerState) => void +): () => void { + const id = v4(); + listeners[id] = listener; + return () => delete listeners[id]; +} + +export function createRequest( + key: WasmApiKey, + args: any, + resolve: (value: string | PromiseLike) => void, + reject: (reason?: any) => void +): WasmWorkerMessageRequest { + const id = `${Date.now()}-${Math.random()}`; + + messages[id] = { + key, + initiated: Date.now(), + reject, + resolve, + }; + + setLoading(key, true); + + return { id, key, args }; +} + +export function handleMessageResponse(response: WasmWorkerMessageResponse) { + const message = getMessage(response); + + if (!message) { + console.warn('WasmWorker request not found', response); + return; + } + + if (response.error) { + if (message.reject) { + message.reject(response.error); + } + + setError(response.key, response.error); + } else { + if (message.resolve) { + message.resolve(response.result); + } + + removeError(response.key); + } + + setLoading(response.key, false); + removeMessage(response.id); +} diff --git a/workspaces/wasm/src/WasmWorker/useWasmWorker.ts b/workspaces/wasm/src/WasmWorker/useWasmWorker.ts new file mode 100644 index 00000000..27389fc5 --- /dev/null +++ b/workspaces/wasm/src/WasmWorker/useWasmWorker.ts @@ -0,0 +1,19 @@ +import { useEffect, useState } from 'react'; +import api, { WasmWorkerApi } from './api'; +import { getState, onStateChange, WasmWorkerState } from './state'; + +export type UseWasmWorkerResult = { + api: WasmWorkerApi; + loading: WasmWorkerState['loading']; + errors: WasmWorkerState['errors']; +}; + +export default function useWasmWorker() { + const [{ loading, errors }, updateState] = useState(getState()); + + useEffect(() => { + return onStateChange(updateState); + }, [updateState]); + + return { api, loading, errors }; +} diff --git a/workspaces/wasm/src/image.webp b/workspaces/wasm/src/image.webp new file mode 100644 index 00000000..d7d16933 Binary files /dev/null and b/workspaces/wasm/src/image.webp differ diff --git a/workspaces/wasm/src/index.ts b/workspaces/wasm/src/index.ts new file mode 100644 index 00000000..147c8c54 --- /dev/null +++ b/workspaces/wasm/src/index.ts @@ -0,0 +1,17 @@ +import { type Project, ProjectKey } from '@hogg/common'; +import image from './image.webp'; + +export { useWasmApi } from './WasmApi/useWasmApi'; +export { default as WasmApiLoadingScreen } from './WasmApi/WasmApiLoadingScreen'; +export { default as WasmApiProvider } from './WasmApi/WasmApiProvider'; + +export const meta: Project = { + id: ProjectKey.wasm, + name: 'Using rust in the browser', + description: '', + image, + tags: ['rust', 'wasm'], + created: '2024-09-08', + updated: '2024-09-08', + wip: true, +}; diff --git a/workspaces/wasm/src/react-app-env.d.ts b/workspaces/wasm/src/react-app-env.d.ts new file mode 100644 index 00000000..8880c208 --- /dev/null +++ b/workspaces/wasm/src/react-app-env.d.ts @@ -0,0 +1,3 @@ +declare module '*.json'; +declare module '*.webp'; +declare module '*.wav'; diff --git a/workspaces/wasm/tsconfig.json b/workspaces/wasm/tsconfig.json new file mode 100644 index 00000000..1515d8f9 --- /dev/null +++ b/workspaces/wasm/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "src" + ], +} diff --git a/workspaces/website/package.json b/workspaces/website/package.json index 7ff5282d..0c6647d7 100644 --- a/workspaces/website/package.json +++ b/workspaces/website/package.json @@ -20,7 +20,7 @@ "@swc/core": "^1.4.2", "@types/lodash": "^4.14.202", "@types/luxon": "^3.4.1", - "@types/node": "^20.11.20", + "@types/node": "22.5.4", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@vitejs/plugin-react-swc": "^3.0.0", @@ -39,6 +39,7 @@ "@hogg/snake": "workspace:^", "@hogg/spirals": "workspace:^", "@hogg/tilings": "workspace:^", + "@hogg/wasm": "workspace:^", "@react-spring/web": "^9.7.3", "@visx/axis": "^3.5.0", "@visx/curve": "^3.3.0", @@ -51,7 +52,7 @@ "lucide-react": "^0.294.0", "luxon": "^3.4.4", "numbro": "^2.4.0", - "preshape": "^18.1.3", + "preshape": "^19.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet-async": "^2.0.3", diff --git a/workspaces/website/src/App.tsx b/workspaces/website/src/App.tsx index 1b95b6aa..5bda35f6 100644 --- a/workspaces/website/src/App.tsx +++ b/workspaces/website/src/App.tsx @@ -1,4 +1,5 @@ import { MediaContextProvider, getProjectRoutePath } from '@hogg/common'; +import { WasmApiProvider } from '@hogg/wasm'; import { ThemeProvider } from 'preshape'; import { Suspense } from 'react'; import { HelmetProvider } from 'react-helmet-async'; @@ -20,37 +21,39 @@ export default function App({ helmetContext = {} }: Props) { - - - - } /> + + + + + } /> - {projects - .filter( - ({ Component, meta }) => - Component && shouldShowProject(meta) - ) - .map(({ Component, meta }) => ( - - } - /> - ))} - + {projects + .filter( + ({ Component, meta }) => + Component && shouldShowProject(meta) + ) + .map(({ Component, meta }) => ( + + } + /> + ))} + - {process.env.NODE_ENV === 'development' && ( - } - /> - )} + {process.env.NODE_ENV === 'development' && ( + } + /> + )} - } /> - - + } /> + + + diff --git a/workspaces/website/src/pages/Landing/AboutMe.tsx b/workspaces/website/src/pages/Landing/AboutMe.tsx index 5250c561..4655b14a 100644 --- a/workspaces/website/src/pages/Landing/AboutMe.tsx +++ b/workspaces/website/src/pages/Landing/AboutMe.tsx @@ -24,7 +24,7 @@ export default function AboutMe() { - The last ~3 years I've been working at Spotify. The + The last +3 years I've been working at Spotify. The previous 7 years were spent working at startups in Brighton and London within various industries. Before that, for 2 years I was shipping jQuery and PHP over FTP (it still counts). diff --git a/workspaces/website/src/projects.ts b/workspaces/website/src/projects.ts index ca7234e5..895c91ba 100644 --- a/workspaces/website/src/projects.ts +++ b/workspaces/website/src/projects.ts @@ -2,6 +2,7 @@ import * as CircleArt from '@hogg/circle-art'; import * as CircleIntersections from '@hogg/circle-intersections'; import * as CircularSequence from '@hogg/circular-sequence'; import { Project, ProjectKey, ProjectPageProps } from '@hogg/common'; +import * as Evolution from '@hogg/evolution'; import * as LineSegmentExtending from '@hogg/line-segment-extending'; import * as Preshape from '@hogg/preshape'; import * as Snake from '@hogg/snake'; @@ -44,6 +45,10 @@ export const projects: { meta: LineSegmentExtending.meta, Component: LineSegmentExtending.Project, }, + { + meta: Evolution.meta, + Component: Evolution.Project, + }, // Next: Performance benchmark difference between atan2 and hypot. ]; diff --git a/yarn.lock b/yarn.lock index 09969b7f..abb9f9ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -386,6 +386,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.2.0": + version: 1.2.0 + resolution: "@emnapi/runtime@npm:1.2.0" + dependencies: + tslib: ^2.4.0 + checksum: c9f5814f65a7851eda3fae96320b7ebfaf3b7e0db4e1ac2d77b55f5c0785e56b459a029413dbfc0abb1b23f059b850169888f92833150a28cdf24b9a53e535c5 + languageName: node + linkType: hard + "@emotion/is-prop-valid@npm:^0.8.2": version: 0.8.6 resolution: "@emotion/is-prop-valid@npm:0.8.6" @@ -785,7 +794,7 @@ __metadata: "@hogg/common": "workspace:^" "@types/react": ^18.0.28 "@types/react-dom": ^18.0.11 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown @@ -809,7 +818,7 @@ __metadata: file-saver: ^2.0.5 framer-motion: ^10.16.16 lucide-react: ^0.294.0 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 sat: ^0.9.0 @@ -825,11 +834,11 @@ __metadata: "@svgr/cli": ^8.1.0 "@svgr/plugin-jsx": ^8.1.0 "@types/react": ^18.0.28 - lucide-react: ^0.294.0 - preshape: ^18.1.3 + lucide-react: 0.439.0 + preshape: ^19.1.0 react: ^18.2.0 typescript: ^5.0.4 - uuid: ^9.0.1 + uuid: 10.0.0 languageName: unknown linkType: soft @@ -839,7 +848,7 @@ __metadata: dependencies: framer-motion: ^10.16.16 lucide-react: ^0.294.0 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.20.1 @@ -849,17 +858,32 @@ __metadata: languageName: unknown linkType: soft +"@hogg/evolution@workspace:workspaces/evolution": + version: 0.0.0-use.local + resolution: "@hogg/evolution@workspace:workspaces/evolution" + dependencies: + "@hogg/common": "workspace:^" + "@types/react": ^18.0.28 + lucide-react: ^0.294.0 + preshape: ^19.1.0 + react: ^18.2.0 + typescript: ^5.0.4 + uuid: ^9.0.1 + languageName: unknown + linkType: soft + "@hogg/line-segment-extending@workspace:^, @hogg/line-segment-extending@workspace:workspaces/line-segment-extending": version: 0.0.0-use.local resolution: "@hogg/line-segment-extending@workspace:workspaces/line-segment-extending" dependencies: "@hogg/common": "workspace:^" "@hogg/tilings": "workspace:^" + "@hogg/wasm": "workspace:^" "@types/react": ^18.0.28 "@types/react-dom": ^18.0.11 - framer-motion: ^10.16.16 - lucide-react: ^0.294.0 - preshape: ^18.1.3 + framer-motion: 11.5.4 + lucide-react: 0.439.0 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown @@ -870,7 +894,7 @@ __metadata: resolution: "@hogg/preshape@workspace:workspaces/preshape" dependencies: "@hogg/common": "workspace:^" - preshape: ^18.1.3 + preshape: ^19.1.0 languageName: unknown linkType: soft @@ -883,7 +907,7 @@ __metadata: "@types/react-dom": ^18.0.11 caniuse-lite: ^1.0.30000697 lucide-react: ^0.294.0 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.20.1 @@ -902,7 +926,7 @@ __metadata: caniuse-lite: ^1.0.30000697 gl-matrix: ^3.4.3 lodash: ^4.17.21 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.20.1 @@ -916,19 +940,32 @@ __metadata: resolution: "@hogg/tilings@workspace:workspaces/tilings" dependencies: "@hogg/common": "workspace:^" + "@hogg/wasm": "workspace:^" "@swc-node/register": ^1.8.0 "@swc/core": ^1.4.2 "@types/react": ^18.0.28 "@types/react-dom": ^18.0.11 - lucide-react: ^0.294.0 - preshape: ^18.1.3 - puppeteer: ^21.4.1 + lucide-react: 0.439.0 + preshape: ^19.1.0 + puppeteer: 23.3.0 react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.20.1 - sharp: ^0.32.6 + sharp: 0.33.5 typescript: ^5.0.4 - uuid: ^9.0.1 + uuid: 10.0.0 + languageName: unknown + linkType: soft + +"@hogg/wasm@workspace:^, @hogg/wasm@workspace:workspaces/wasm": + version: 0.0.0-use.local + resolution: "@hogg/wasm@workspace:workspaces/wasm" + dependencies: + "@types/react": ^18.0.28 + "@types/react-dom": ^18.0.11 + react: ^18.2.0 + react-dom: ^18.2.0 + uuid: ^8.3.2 languageName: unknown linkType: soft @@ -945,13 +982,14 @@ __metadata: "@hogg/snake": "workspace:^" "@hogg/spirals": "workspace:^" "@hogg/tilings": "workspace:^" + "@hogg/wasm": "workspace:^" "@react-spring/web": ^9.7.3 "@svgr/cli": ^8.1.0 "@svgr/plugin-jsx": ^8.1.0 "@swc/core": ^1.4.2 "@types/lodash": ^4.14.202 "@types/luxon": ^3.4.1 - "@types/node": ^20.11.20 + "@types/node": 22.5.4 "@types/react": ^18.0.28 "@types/react-dom": ^18.0.11 "@visx/axis": ^3.5.0 @@ -967,7 +1005,7 @@ __metadata: lucide-react: ^0.294.0 luxon: ^3.4.4 numbro: ^2.4.0 - preshape: ^18.1.3 + preshape: ^19.1.0 react: ^18.2.0 react-dom: ^18.2.0 react-helmet-async: ^2.0.3 @@ -1004,6 +1042,181 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-darwin-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-darwin-arm64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-darwin-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-darwin-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-darwin-x64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm@npm:1.0.5": + version: 1.0.5 + resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-s390x@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linux-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-arm64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-arm@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-arm@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-arm": 1.0.5 + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-s390x@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-s390x@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-s390x": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-x64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-wasm32@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-wasm32@npm:0.33.5" + dependencies: + "@emnapi/runtime": ^1.2.0 + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-ia32@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-win32-ia32@npm:0.33.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@img/sharp-win32-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-win32-x64@npm:0.33.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -1494,20 +1707,21 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:1.9.1": - version: 1.9.1 - resolution: "@puppeteer/browsers@npm:1.9.1" - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.3.1 - tar-fs: 3.0.4 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 +"@puppeteer/browsers@npm:2.4.0": + version: 2.4.0 + resolution: "@puppeteer/browsers@npm:2.4.0" + dependencies: + debug: ^4.3.6 + extract-zip: ^2.0.1 + progress: ^2.0.3 + proxy-agent: ^6.4.0 + semver: ^7.6.3 + tar-fs: ^3.0.6 + unbzip2-stream: ^1.4.3 + yargs: ^17.7.2 bin: browsers: lib/cjs/main-cli.js - checksum: 1ea82e34af882dc6d7e8392a88ec4196e206a7f65743be39c196c7068d66b9bdfa370e28c6ab09946bd2baa2182adbcbf445e79cc9bcc5242f05878ae7045b27 + checksum: c5f9890f1bf355783574c00b42e8a9bf9e4788d0dce76cc4cd50fcf80b5e5f99ae2b4325edd5350d4fb289f7dfa89f67edf8bc2da9abd53eba1f815caae97beb languageName: node linkType: hard @@ -2461,6 +2675,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:22.5.4": + version: 22.5.4 + resolution: "@types/node@npm:22.5.4" + dependencies: + undici-types: ~6.19.2 + checksum: 77ac225c38c428200036780036da0bc6764e2721cfa8f528c7e7da7cfefe01a32a5791e28a54efbeedbc977949058d7db902b2e00139298225d4686cee4ae6db + languageName: node + linkType: hard + "@types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": version: 20.10.0 resolution: "@types/node@npm:20.10.0" @@ -4282,13 +4505,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -4296,15 +4512,16 @@ __metadata: languageName: node linkType: hard -"chromium-bidi@npm:0.5.8": - version: 0.5.8 - resolution: "chromium-bidi@npm:0.5.8" +"chromium-bidi@npm:0.6.5": + version: 0.6.5 + resolution: "chromium-bidi@npm:0.6.5" dependencies: mitt: 3.0.1 urlpattern-polyfill: 10.0.0 + zod: 3.23.8 peerDependencies: devtools-protocol: "*" - checksum: 4e4bb8d3907b3a17adf15e95220fc16733e0c4b03d0eccb071010a78ca85d122a0435da95ab657ade6d15e8c9b3cd917088b6128a0aec45e4444916625a4076f + checksum: 7e240ef392998240885e42906e47bed60a1d3e3f7a9874543dfeda151e912ceab0b618a110b838b1b8544c353bd41cf0a7702e4cfa9c9b55b6519631e2f399a5 languageName: node linkType: hard @@ -4772,37 +4989,37 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:9.0.0": - version: 9.0.0 - resolution: "cosmiconfig@npm:9.0.0" +"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: - env-paths: ^2.2.1 import-fresh: ^3.3.0 js-yaml: ^4.1.0 parse-json: ^5.2.0 + path-type: ^4.0.0 peerDependencies: typescript: ">=4.9.5" peerDependenciesMeta: typescript: optional: true - checksum: a30c424b53d442ea0bdd24cb1b3d0d8687c8dda4a17ab6afcdc439f8964438801619cdb66e8e79f63b9caa3e6586b60d8bab9ce203e72df6c5e80179b971fe8f + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 languageName: node linkType: hard -"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": - version: 8.3.6 - resolution: "cosmiconfig@npm:8.3.6" +"cosmiconfig@npm:^9.0.0": + version: 9.0.0 + resolution: "cosmiconfig@npm:9.0.0" dependencies: + env-paths: ^2.2.1 import-fresh: ^3.3.0 js-yaml: ^4.1.0 parse-json: ^5.2.0 - path-type: ^4.0.0 peerDependencies: typescript: ">=4.9.5" peerDependenciesMeta: typescript: optional: true - checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + checksum: a30c424b53d442ea0bdd24cb1b3d0d8687c8dda4a17ab6afcdc439f8964438801619cdb66e8e79f63b9caa3e6586b60d8bab9ce203e72df6c5e80179b971fe8f languageName: node linkType: hard @@ -4846,15 +5063,6 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:4.0.0": - version: 4.0.0 - resolution: "cross-fetch@npm:4.0.0" - dependencies: - node-fetch: ^2.6.12 - checksum: ecca4f37ffa0e8283e7a8a590926b66713a7ef7892757aa36c2d20ffa27b0ac5c60dcf453119c809abe5923fc0bae3702a4d896bfb406ef1077b0d0018213e24 - languageName: node - linkType: hard - "cross-spawn@npm:^5.0.1": version: 5.1.0 resolution: "cross-spawn@npm:5.1.0" @@ -5221,7 +5429,16 @@ __metadata: languageName: node linkType: hard -"debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -5233,15 +5450,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - "debug@npm:^4.3.1": version: 4.3.2 resolution: "debug@npm:4.3.2" @@ -5254,6 +5462,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" @@ -5287,15 +5507,6 @@ __metadata: languageName: node linkType: hard -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -5436,10 +5647,10 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.2": - version: 2.0.2 - resolution: "detect-libc@npm:2.0.2" - checksum: 2b2cd3649b83d576f4be7cc37eb3b1815c79969c8b1a03a40a4d55d83bc74d010753485753448eacb98784abf22f7dbd3911fd3b60e29fda28fed2d1a997944d +"detect-libc@npm:^2.0.3": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d languageName: node linkType: hard @@ -5452,10 +5663,10 @@ __metadata: languageName: node linkType: hard -"devtools-protocol@npm:0.0.1232444": - version: 0.0.1232444 - resolution: "devtools-protocol@npm:0.0.1232444" - checksum: b421a3c20506d597211d101c3ed4e550db2ca195d59c3371b2e04a8d057f33be60e732bafc80dc53b34546593a7751857321971e235e9ce9f1c5a9523fd8fa20 +"devtools-protocol@npm:0.0.1330662": + version: 0.0.1330662 + resolution: "devtools-protocol@npm:0.0.1330662" + checksum: de34cf3330f5b81b9fab346eea4dbab37ea6fbc6f9eb5a38deba115adfc30f292b861b8b674f16b8d27d5e3d13d2c82a0950b6ba8f46ff78fe1dbc6f83162389 languageName: node linkType: hard @@ -6384,13 +6595,6 @@ __metadata: languageName: node linkType: hard -"expand-template@npm:^2.0.3": - version: 2.0.3 - resolution: "expand-template@npm:2.0.3" - checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -6454,7 +6658,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:2.0.1": +"extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -6899,24 +7103,23 @@ __metadata: languageName: node linkType: hard -"framer-motion@npm:^10.12.10": - version: 10.16.5 - resolution: "framer-motion@npm:10.16.5" +"framer-motion@npm:11.5.4": + version: 11.5.4 + resolution: "framer-motion@npm:11.5.4" dependencies: - "@emotion/is-prop-valid": ^0.8.2 tslib: ^2.4.0 peerDependencies: + "@emotion/is-prop-valid": "*" react: ^18.0.0 react-dom: ^18.0.0 - dependenciesMeta: + peerDependenciesMeta: "@emotion/is-prop-valid": optional: true - peerDependenciesMeta: react: optional: true react-dom: optional: true - checksum: 189e26745c860390d9320586c11248c81c63edf093cda33f95cc6f5e5a31fdf09ed64319c8303923692c36beb5cf56a1a40a32c70520d55df37b7d77a690aeb0 + checksum: da7cee2203797692033344a2ea9f9699b17a7f95db0bcfeb13ab65d8705a3b5616ff5a61c49b5ddafeff1206c4cc52fc63396752cc9f031ff5d375163e4ae02f languageName: node linkType: hard @@ -6941,6 +7144,26 @@ __metadata: languageName: node linkType: hard +"framer-motion@npm:^11.2.11": + version: 11.3.24 + resolution: "framer-motion@npm:11.3.24" + dependencies: + tslib: ^2.4.0 + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: c036284f7adb0f8fa05624e0bfb5e0000c1a3cfdc349a01797c9f8be0fadb5b9ccdbea095abfe685cc52c94f7a69a79d98569c8f74aa1ba3bc1676624f614952 + languageName: node + linkType: hard + "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" @@ -7227,13 +7450,6 @@ __metadata: languageName: node linkType: hard -"github-from-package@npm:0.0.0": - version: 0.0.0 - resolution: "github-from-package@npm:0.0.0" - checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 - languageName: node - linkType: hard - "gl-matrix@npm:^3.4.3": version: 3.4.3 resolution: "gl-matrix@npm:3.4.3" @@ -7819,7 +8035,7 @@ __metadata: eslint-plugin-react-refresh: ^0.4.1 firebase-tools: ^13.3.0 knip: ^5.0.1 - preshape: ^18.1.3 + preshape: ^19.1.0 prettier: ^2.8.8 stylelint: ^15.6.1 stylelint-config-prettier: ^8.0.2 @@ -7924,6 +8140,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 670858c8f8f3146db5889e1fa117630910101db601fff7d5a8aa637da0abedf68c899f03d3451cac2f83bcc4c3d2dabf339b3aa00ff8080571cceb02c3ce02f3 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" @@ -7944,6 +8170,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.3": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + languageName: node + linkType: hard + "hyphenate-style-name@npm:^1.0.3": version: 1.0.4 resolution: "hyphenate-style-name@npm:1.0.4" @@ -9729,6 +9965,15 @@ __metadata: languageName: node linkType: hard +"lucide-react@npm:0.439.0": + version: 0.439.0 + resolution: "lucide-react@npm:0.439.0" + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + checksum: 3de85588b697cdec076172878aedcffb382953e96cf529dfe738bf63f2dad9f22dcf7ebfebbc9d64ca02c7c05346c5706c5cde940107f172ed7fdd90c79f6fa4 + languageName: node + linkType: hard + "lucide-react@npm:^0.291.0": version: 0.291.0 resolution: "lucide-react@npm:0.291.0" @@ -10428,13 +10673,6 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - "min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -10498,7 +10736,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:1.2.8, minimist@npm:^1.2.3, minimist@npm:^1.2.5": +"minimist@npm:1.2.8, minimist@npm:^1.2.5": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -10617,13 +10855,6 @@ __metadata: languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": - version: 0.5.3 - resolution: "mkdirp-classic@npm:0.5.3" - checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac - languageName: node - linkType: hard - "mkdirp@npm:^0.5.6": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" @@ -10691,6 +10922,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + "mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -10735,13 +10973,6 @@ __metadata: languageName: node linkType: hard -"napi-build-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "napi-build-utils@npm:1.0.2" - checksum: 06c14271ee966e108d55ae109f340976a9556c8603e888037145d6522726aebe89dd0c861b4b83947feaf6d39e79e08817559e8693deedc2c94e82c5cbd090c7 - languageName: node - linkType: hard - "nash@npm:^3.0.0": version: 3.0.0 resolution: "nash@npm:3.0.0" @@ -10814,24 +11045,6 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:^3.3.0": - version: 3.55.0 - resolution: "node-abi@npm:3.55.0" - dependencies: - semver: ^7.3.5 - checksum: ceb55af47341cab590ebbed8cfa88a209462d032cb69b00c494d1c4566ccf1190550ca211f022095f4ce23a8b177869761cdbe64393a8bcfb7ce0ecf6d810216 - languageName: node - linkType: hard - -"node-addon-api@npm:^6.1.0": - version: 6.1.0 - resolution: "node-addon-api@npm:6.1.0" - dependencies: - node-gyp: latest - checksum: 3a539510e677cfa3a833aca5397300e36141aca064cdc487554f2017110709a03a95da937e98c2a14ec3c626af7b2d1b6dabe629a481f9883143d0d5bff07bf2 - languageName: node - linkType: hard - "node-emoji@npm:^1.11.0": version: 1.11.0 resolution: "node-emoji@npm:1.11.0" @@ -10851,7 +11064,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -11651,28 +11864,6 @@ __metadata: languageName: node linkType: hard -"prebuild-install@npm:^7.1.1": - version: 7.1.1 - resolution: "prebuild-install@npm:7.1.1" - dependencies: - detect-libc: ^2.0.0 - expand-template: ^2.0.3 - github-from-package: 0.0.0 - minimist: ^1.2.3 - mkdirp-classic: ^0.5.3 - napi-build-utils: ^1.0.1 - node-abi: ^3.3.0 - pump: ^3.0.0 - rc: ^1.2.7 - simple-get: ^4.0.0 - tar-fs: ^2.0.0 - tunnel-agent: ^0.6.0 - bin: - prebuild-install: bin.js - checksum: dbf96d0146b6b5827fc8f67f72074d2e19c69628b9a7a0a17d0fad1bf37e9f06922896972e074197fc00a52eae912993e6ef5a0d471652f561df5cb516f3f467 - languageName: node - linkType: hard - "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -11694,13 +11885,13 @@ __metadata: languageName: node linkType: hard -"preshape@npm:^18.1.3": - version: 18.1.3 - resolution: "preshape@npm:18.1.3" +"preshape@npm:^19.1.0": + version: 19.1.0 + resolution: "preshape@npm:19.1.0" dependencies: "@floating-ui/react": ^0.24.0 classnames: ^2.2.5 - framer-motion: ^10.12.10 + framer-motion: ^11.2.11 lodash.omit: ^4.5.0 lucide-react: ^0.291.0 luxon: ^3.3.0 @@ -11716,7 +11907,7 @@ __metadata: react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.11.1 - checksum: 1cfa49dc5003fb83cd3484c22d6abd8a7d3fef04fbf7dfb229c4292d39a0343e80d317b7d81cd546839d28b036f370388f522261d96c3864b03851cdb57b0368 + checksum: 7716ddbc6b3b2c8775eca4966624247630e2f53a0ce4f991f5934a9e111a052401552624674283e214fdec9205228cfe83557bc16af32107da4f8076fa3ed625 languageName: node linkType: hard @@ -11766,7 +11957,7 @@ __metadata: languageName: node linkType: hard -"progress@npm:2.0.3, progress@npm:^2.0.3": +"progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 @@ -11913,7 +12104,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:6.3.1, proxy-agent@npm:^6.3.0": +"proxy-agent@npm:^6.3.0": version: 6.3.1 resolution: "proxy-agent@npm:6.3.1" dependencies: @@ -11929,6 +12120,22 @@ __metadata: languageName: node linkType: hard +"proxy-agent@npm:^6.4.0": + version: 6.4.0 + resolution: "proxy-agent@npm:6.4.0" + dependencies: + agent-base: ^7.0.2 + debug: ^4.3.4 + http-proxy-agent: ^7.0.1 + https-proxy-agent: ^7.0.3 + lru-cache: ^7.14.1 + pac-proxy-agent: ^7.0.1 + proxy-from-env: ^1.1.0 + socks-proxy-agent: ^8.0.2 + checksum: 4d3794ad5e07486298902f0a7f250d0f869fa0e92d790767ca3f793a81374ce0ab6c605f8ab8e791c4d754da96656b48d1c24cb7094bfd310a15867e4a0841d7 + languageName: node + linkType: hard + "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -11976,30 +12183,33 @@ __metadata: languageName: node linkType: hard -"puppeteer-core@npm:21.11.0": - version: 21.11.0 - resolution: "puppeteer-core@npm:21.11.0" +"puppeteer-core@npm:23.3.0": + version: 23.3.0 + resolution: "puppeteer-core@npm:23.3.0" dependencies: - "@puppeteer/browsers": 1.9.1 - chromium-bidi: 0.5.8 - cross-fetch: 4.0.0 - debug: 4.3.4 - devtools-protocol: 0.0.1232444 - ws: 8.16.0 - checksum: 953018ca679542d747e5974fd732349d73f4c685c0b49dd6027d493ad95d64a23b2d6e3e72f0a0a12c7335d3e08a0b3e6bc9ac3adfb3fb0316fb1ca62f46f129 + "@puppeteer/browsers": 2.4.0 + chromium-bidi: 0.6.5 + debug: ^4.3.6 + devtools-protocol: 0.0.1330662 + typed-query-selector: ^2.12.0 + ws: ^8.18.0 + checksum: e8c9cb505dbe2211aa708a22478c44f4d1ad04fc805ebd44a60679d5461b8619d710d3e125da3eb7ebe959daa36844368871a1487be8c6cb5fb9ff83df10e160 languageName: node linkType: hard -"puppeteer@npm:^21.4.1": - version: 21.11.0 - resolution: "puppeteer@npm:21.11.0" +"puppeteer@npm:23.3.0": + version: 23.3.0 + resolution: "puppeteer@npm:23.3.0" dependencies: - "@puppeteer/browsers": 1.9.1 - cosmiconfig: 9.0.0 - puppeteer-core: 21.11.0 + "@puppeteer/browsers": 2.4.0 + chromium-bidi: 0.6.5 + cosmiconfig: ^9.0.0 + devtools-protocol: 0.0.1330662 + puppeteer-core: 23.3.0 + typed-query-selector: ^2.12.0 bin: - puppeteer: lib/esm/puppeteer/node/cli.js - checksum: 0f2e6f6d9269e511022ec8e8478f42bf5f3dbddbdac7b50d31c90504993eaef436e8729a5b3f105576ec2031519de723d4a9d0ad797821d0f16540073fabc37a + puppeteer: lib/cjs/puppeteer/node/cli.js + checksum: a7b4b47507748a171b9d64b2ee4a2ba3eb888c755b35dd6ac573e3c9a82d4763029654b0f3cf619788a7310218af5d31d348c5ce9c7ff269c1e0d3421f72db40 languageName: node linkType: hard @@ -12094,7 +12304,7 @@ __metadata: languageName: node linkType: hard -"rc@npm:^1.0.1, rc@npm:^1.1.6, rc@npm:^1.2.7, rc@npm:^1.2.8": +"rc@npm:^1.0.1, rc@npm:^1.1.6, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" dependencies: @@ -12993,6 +13203,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + "send@npm:0.17.1": version: 0.17.1 resolution: "send@npm:0.17.1" @@ -13077,20 +13296,72 @@ __metadata: languageName: node linkType: hard -"sharp@npm:^0.32.6": - version: 0.32.6 - resolution: "sharp@npm:0.32.6" - dependencies: +"sharp@npm:0.33.5": + version: 0.33.5 + resolution: "sharp@npm:0.33.5" + dependencies: + "@img/sharp-darwin-arm64": 0.33.5 + "@img/sharp-darwin-x64": 0.33.5 + "@img/sharp-libvips-darwin-arm64": 1.0.4 + "@img/sharp-libvips-darwin-x64": 1.0.4 + "@img/sharp-libvips-linux-arm": 1.0.5 + "@img/sharp-libvips-linux-arm64": 1.0.4 + "@img/sharp-libvips-linux-s390x": 1.0.4 + "@img/sharp-libvips-linux-x64": 1.0.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + "@img/sharp-linux-arm": 0.33.5 + "@img/sharp-linux-arm64": 0.33.5 + "@img/sharp-linux-s390x": 0.33.5 + "@img/sharp-linux-x64": 0.33.5 + "@img/sharp-linuxmusl-arm64": 0.33.5 + "@img/sharp-linuxmusl-x64": 0.33.5 + "@img/sharp-wasm32": 0.33.5 + "@img/sharp-win32-ia32": 0.33.5 + "@img/sharp-win32-x64": 0.33.5 color: ^4.2.3 - detect-libc: ^2.0.2 - node-addon-api: ^6.1.0 - node-gyp: latest - prebuild-install: ^7.1.1 - semver: ^7.5.4 - simple-get: ^4.0.1 - tar-fs: ^3.0.4 - tunnel-agent: ^0.6.0 - checksum: 0cca1d16b1920800c0e22d27bc6305f4c67c9ebe44f67daceb30bf645ae39e7fb7dfbd7f5d6cd9f9eebfddd87ac3f7e2695f4eb906d19b7a775286238e6a29fc + detect-libc: ^2.0.3 + semver: ^7.6.3 + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 04beae89910ac65c5f145f88de162e8466bec67705f497ace128de849c24d168993e016f33a343a1f3c30b25d2a90c3e62b017a9a0d25452371556f6cd2471e4 languageName: node linkType: hard @@ -13158,24 +13429,6 @@ __metadata: languageName: node linkType: hard -"simple-concat@npm:^1.0.0": - version: 1.0.1 - resolution: "simple-concat@npm:1.0.1" - checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a - languageName: node - linkType: hard - -"simple-get@npm:^4.0.0, simple-get@npm:^4.0.1": - version: 4.0.1 - resolution: "simple-get@npm:4.0.1" - dependencies: - decompress-response: ^6.0.0 - once: ^1.3.1 - simple-concat: ^1.0.0 - checksum: e4132fd27cf7af230d853fa45c1b8ce900cb430dd0a3c6d3829649fe4f2b26574c803698076c4006450efb0fad2ba8c5455fbb5755d4b0a5ec42d4f12b31d27e - languageName: node - linkType: hard - "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -14038,32 +14291,9 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:3.0.4": - version: 3.0.4 - resolution: "tar-fs@npm:3.0.4" - dependencies: - mkdirp-classic: ^0.5.2 - pump: ^3.0.0 - tar-stream: ^3.1.5 - checksum: dcf4054f9e92ca0efe61c2b3f612914fb259a47900aa908a63106513a6d006c899b426ada53eb88d9dbbf089b5724c8e90b96a2c4ca6171845fa14203d734e30 - languageName: node - linkType: hard - -"tar-fs@npm:^2.0.0": - version: 2.1.1 - resolution: "tar-fs@npm:2.1.1" - dependencies: - chownr: ^1.1.1 - mkdirp-classic: ^0.5.2 - pump: ^3.0.0 - tar-stream: ^2.1.4 - checksum: f5b9a70059f5b2969e65f037b4e4da2daf0fa762d3d232ffd96e819e3f94665dbbbe62f76f084f1acb4dbdcce16c6e4dac08d12ffc6d24b8d76720f4d9cf032d - languageName: node - linkType: hard - -"tar-fs@npm:^3.0.4": - version: 3.0.5 - resolution: "tar-fs@npm:3.0.5" +"tar-fs@npm:^3.0.6": + version: 3.0.6 + resolution: "tar-fs@npm:3.0.6" dependencies: bare-fs: ^2.1.1 bare-path: ^2.1.0 @@ -14074,11 +14304,11 @@ __metadata: optional: true bare-path: optional: true - checksum: e31c7e3e525fec0afecdec1cac58071809e396187725f2eba442f08a4c5649c8cd6b7ce25982f9a91bb0f055628df47c08177dd2ea4f5dafd3c22f42f8da8f00 + checksum: b4fa09c70f75caf05bf5cf87369cd2862f1ac5fb75c4ddf9d25d55999f7736a94b58ad679d384196cba837c5f5ff14086e060fafccef5474a16e2d3058ffa488 languageName: node linkType: hard -"tar-stream@npm:^2.1.4, tar-stream@npm:^2.2.0": +"tar-stream@npm:^2.2.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" dependencies: @@ -14352,15 +14582,6 @@ __metadata: languageName: node linkType: hard -"tunnel-agent@npm:^0.6.0": - version: 0.6.0 - resolution: "tunnel-agent@npm:0.6.0" - dependencies: - safe-buffer: ^5.0.1 - checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -14471,6 +14692,13 @@ __metadata: languageName: node linkType: hard +"typed-query-selector@npm:^2.12.0": + version: 2.12.0 + resolution: "typed-query-selector@npm:2.12.0" + checksum: c4652f2eec16112d69e0da30c2effab3f03d1710f9559da1e1209bbfc9a20990d5de4ba97890c11f9d17d85c8ae3310953a86c198166599d4c36abc63664f169 + languageName: node + linkType: hard + "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -14540,7 +14768,7 @@ __metadata: languageName: node linkType: hard -"unbzip2-stream@npm:1.4.3": +"unbzip2-stream@npm:^1.4.3": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" dependencies: @@ -14564,6 +14792,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 + languageName: node + linkType: hard + "unescape-js@npm:^1.0.5": version: 1.1.4 resolution: "unescape-js@npm:1.1.4" @@ -14822,6 +15057,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:10.0.0": + version: 10.0.0 + resolution: "uuid@npm:10.0.0" + bin: + uuid: dist/bin/uuid + checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869 + languageName: node + linkType: hard + "uuid@npm:^8.0.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -15232,33 +15476,33 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.16.0": - version: 8.16.0 - resolution: "ws@npm:8.16.0" +"ws@npm:^7.2.3": + version: 7.5.9 + resolution: "ws@npm:7.5.9" peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" + utf-8-validate: ^5.0.2 peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true - checksum: feb3eecd2bae82fa8a8beef800290ce437d8b8063bdc69712725f21aef77c49cb2ff45c6e5e7fce622248f9c7abaee506bae0a9064067ffd6935460c7357321b + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 languageName: node linkType: hard -"ws@npm:^7.2.3": - version: 7.5.9 - resolution: "ws@npm:7.5.9" +"ws@npm:^8.18.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true - checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975 languageName: node linkType: hard @@ -15339,7 +15583,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.7.2": +"yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -15398,6 +15642,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:3.23.8": + version: 3.23.8 + resolution: "zod@npm:3.23.8" + checksum: 15949ff82118f59c893dacd9d3c766d02b6fa2e71cf474d5aa888570c469dbf5446ac5ad562bb035bf7ac9650da94f290655c194f4a6de3e766f43febd432c5c + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4"