From 9db0d4aa1900dd3dee0f82ce36d18499860d5030 Mon Sep 17 00:00:00 2001 From: Emilia Date: Sun, 11 Feb 2024 20:49:52 -0500 Subject: [PATCH] lib migration pt4 --- Cargo.lock | 500 +- Cargo.toml | 33 +- lib/src/csv.rs | 62 - lib/src/lib.rs | 6 - lib/src/plate.rs | 77 - lib/src/plate_instances.rs | 50 - lib/src/transfer.rs | 58 - lib/src/transfer_region.rs | 591 -- lib/src/util.rs | 70 - {lib => plate-tool-lib}/.gitignore | 0 {lib => plate-tool-lib}/Cargo.lock | 0 {lib => plate-tool-lib}/Cargo.toml | 0 plate-tool-lib/src/csv.rs | 40 +- plate-tool-web/Cargo.toml | 30 + .../assets}/fonts/Inconsolata.ttf | Bin .../assets}/fonts/Jost.ttf | Bin .../assets}/js/html2canvas.js | 0 .../assets}/js/screenshot_utility.js | 0 .../scss/default_theme/_variables.scss | 0 .../assets}/scss/default_theme/base.scss | 0 .../default_theme/components/_dialog.scss | 0 .../scss/default_theme/components/_index.scss | 0 .../components/_main_window.scss | 0 .../components/_plate_container.scss | 0 .../default_theme/components/_plates.scss | 0 .../components/_transfer_menu.scss | 0 .../scss/default_theme/components/_tree.scss | 0 .../default_theme/components/_upper_menu.scss | 0 .../assets}/scss/default_theme/main.scss | 0 .../assets}/scss/index.scss | 0 plate-tool-web/dist/fonts/Inconsolata.ttf | Bin 0 -> 338540 bytes plate-tool-web/dist/fonts/Jost.ttf | Bin 0 -> 134476 bytes .../dist/html2canvas-bafc21265de2354d.js | 7830 +++++++++++++++++ .../dist/index-136b7d4afc3986e5.css | 608 ++ plate-tool-web/dist/index.html | 146 + .../dist/plate-tool-web-6c71e2a649203e02.js | 1042 +++ .../plate-tool-web-6c71e2a649203e02_bg.wasm | Bin 0 -> 8831620 bytes .../screenshot_utility-18639e2bdd58e7f7.js | 25 + index.html => plate-tool-web/index.html | 0 .../callbacks/import_csv_callbacks.rs | 17 +- .../callbacks/main_window_callbacks.rs | 0 .../src}/components/callbacks/mod.rs | 0 .../callbacks/new_plate_dialog_callbacks.rs | 0 .../callbacks/transfer_menu_callbacks.rs | 0 .../components/callbacks/tree_callbacks.rs | 0 .../src}/components/main_window.rs | 0 {src => plate-tool-web/src}/components/mod.rs | 0 .../src}/components/new_plate_dialog.rs | 0 .../src}/components/plates/mod.rs | 0 .../src}/components/plates/plate.rs | 0 .../src}/components/plates/plate_callbacks.rs | 0 .../src}/components/plates/plate_container.rs | 0 .../src}/components/plates/plate_data.rs | 0 .../src}/components/plates/util.rs | 0 .../src}/components/states.rs | 0 .../src}/components/transfer_menu.rs | 0 .../src}/components/tree.rs | 0 {src => plate-tool-web/src}/lib.rs | 0 {src => plate-tool-web/src}/main.rs | 2 +- 59 files changed, 9984 insertions(+), 1203 deletions(-) delete mode 100644 lib/src/csv.rs delete mode 100644 lib/src/lib.rs delete mode 100644 lib/src/plate.rs delete mode 100644 lib/src/plate_instances.rs delete mode 100644 lib/src/transfer.rs delete mode 100644 lib/src/transfer_region.rs delete mode 100644 lib/src/util.rs rename {lib => plate-tool-lib}/.gitignore (100%) rename {lib => plate-tool-lib}/Cargo.lock (100%) rename {lib => plate-tool-lib}/Cargo.toml (100%) create mode 100644 plate-tool-web/Cargo.toml rename {assets => plate-tool-web/assets}/fonts/Inconsolata.ttf (100%) rename {assets => plate-tool-web/assets}/fonts/Jost.ttf (100%) rename {assets => plate-tool-web/assets}/js/html2canvas.js (100%) rename {assets => plate-tool-web/assets}/js/screenshot_utility.js (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/_variables.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/base.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_dialog.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_index.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_main_window.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_plate_container.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_plates.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_transfer_menu.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_tree.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/components/_upper_menu.scss (100%) rename {assets => plate-tool-web/assets}/scss/default_theme/main.scss (100%) rename {assets => plate-tool-web/assets}/scss/index.scss (100%) create mode 100644 plate-tool-web/dist/fonts/Inconsolata.ttf create mode 100644 plate-tool-web/dist/fonts/Jost.ttf create mode 100644 plate-tool-web/dist/html2canvas-bafc21265de2354d.js create mode 100644 plate-tool-web/dist/index-136b7d4afc3986e5.css create mode 100644 plate-tool-web/dist/index.html create mode 100644 plate-tool-web/dist/plate-tool-web-6c71e2a649203e02.js create mode 100644 plate-tool-web/dist/plate-tool-web-6c71e2a649203e02_bg.wasm create mode 100644 plate-tool-web/dist/screenshot_utility-18639e2bdd58e7f7.js rename index.html => plate-tool-web/index.html (100%) rename {src => plate-tool-web/src}/components/callbacks/import_csv_callbacks.rs (94%) rename {src => plate-tool-web/src}/components/callbacks/main_window_callbacks.rs (100%) rename {src => plate-tool-web/src}/components/callbacks/mod.rs (100%) rename {src => plate-tool-web/src}/components/callbacks/new_plate_dialog_callbacks.rs (100%) rename {src => plate-tool-web/src}/components/callbacks/transfer_menu_callbacks.rs (100%) rename {src => plate-tool-web/src}/components/callbacks/tree_callbacks.rs (100%) rename {src => plate-tool-web/src}/components/main_window.rs (100%) rename {src => plate-tool-web/src}/components/mod.rs (100%) rename {src => plate-tool-web/src}/components/new_plate_dialog.rs (100%) rename {src => plate-tool-web/src}/components/plates/mod.rs (100%) rename {src => plate-tool-web/src}/components/plates/plate.rs (100%) rename {src => plate-tool-web/src}/components/plates/plate_callbacks.rs (100%) rename {src => plate-tool-web/src}/components/plates/plate_container.rs (100%) rename {src => plate-tool-web/src}/components/plates/plate_data.rs (100%) rename {src => plate-tool-web/src}/components/plates/util.rs (100%) rename {src => plate-tool-web/src}/components/states.rs (100%) rename {src => plate-tool-web/src}/components/transfer_menu.rs (100%) rename {src => plate-tool-web/src}/components/tree.rs (100%) rename {src => plate-tool-web/src}/lib.rs (100%) rename {src => plate-tool-web/src}/main.rs (81%) diff --git a/Cargo.lock b/Cargo.lock index 8f9dde5..a08ee23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,10 +3,25 @@ version = 3 [[package]] -name = "aho-corasick" -version = "1.0.1" +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -25,13 +40,13 @@ checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -46,6 +61,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "bincode" version = "1.3.3" @@ -63,9 +93,24 @@ checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" [[package]] name = "bumpalo" -version = "3.12.2" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -85,9 +130,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -97,18 +142,18 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] [[package]] name = "darling" -version = "0.13.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" dependencies = [ "darling_core", "darling_macro", @@ -116,27 +161,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.13.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] name = "darling_macro" -version = "0.13.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ "darling_core", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -147,18 +192,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -170,9 +215,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -180,44 +225,44 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -233,9 +278,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -245,10 +290,16 @@ dependencies = [ ] [[package]] -name = "gloo" -version = "0.8.0" +name = "gimli" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4bef6b277b3ab073253d4bca60761240cf8d6998f4bd142211957b69a61b20" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gloo" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" dependencies = [ "gloo-console", "gloo-dialogs", @@ -310,9 +361,9 @@ dependencies = [ [[package]] name = "gloo-history" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd451019e0b7a2b8a7a7b23e74916601abf1135c54664e57ff71dcc26dfcdeb7" +checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" dependencies = [ "gloo-events", "gloo-utils", @@ -326,14 +377,15 @@ dependencies = [ [[package]] name = "gloo-net" -version = "0.2.6" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" +checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620" dependencies = [ "futures-channel", "futures-core", "futures-sink", "gloo-utils", + "http", "js-sys", "pin-project", "serde", @@ -381,9 +433,9 @@ dependencies = [ [[package]] name = "gloo-utils" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" dependencies = [ "js-sys", "serde", @@ -417,11 +469,19 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ - "libc", + "bytes", + "fnv", + "itoa", ] [[package]] @@ -432,9 +492,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "implicit-clone" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fc102e70475c320b185cd18c1e48bba2d7210b63970a4d581ef903e4368ef7" +checksum = "cfd6201e7c30ccb24773cac7efa6fec1e06189d414b7439ce756a481c8bfbf53" dependencies = [ "indexmap", ] @@ -451,15 +511,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -472,72 +532,87 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.144" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi", "libc", ] [[package]] -name = "once_cell" -version = "1.17.1" +name = "object" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -557,7 +632,21 @@ dependencies = [ ] [[package]] -name = "plate-tool" +name = "plate-tool-lib" +version = "0.1.0" +dependencies = [ + "csv", + "getrandom", + "log", + "rand", + "regex", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "plate-tool-web" version = "0.2.0" dependencies = [ "csv", @@ -579,20 +668,6 @@ dependencies = [ "yewdux", ] -[[package]] -name = "plate-tool-lib" -version = "0.1.0" -dependencies = [ - "csv", - "getrandom", - "log", - "rand", - "regex", - "serde", - "serde_json", - "uuid", -] - [[package]] name = "ppv-lite86" version = "0.2.17" @@ -635,9 +710,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.58" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -661,9 +736,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.27" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -700,9 +775,21 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.1" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -711,21 +798,27 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scoped-tls" @@ -735,18 +828,18 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "serde" -version = "1.0.163" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde-wasm-bindgen" -version = "0.4.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" dependencies = [ "js-sys", "serde", @@ -755,20 +848,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ "itoa", "ryu", @@ -789,9 +882,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -815,9 +908,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.16" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -826,33 +919,32 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "tokio" -version = "1.28.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ - "autocfg", + "backtrace", "pin-project-lite", - "windows-sys", ] [[package]] @@ -868,11 +960,10 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -880,35 +971,35 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "uuid" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "atomic", "getrandom", @@ -920,13 +1011,13 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49e7f3f3db8040a100710a11932239fd30697115e2ba4107080d8252939845e" +checksum = "7abb14ae1a50dad63eaa768a458ef43d298cd1bd44951677bd10b732a9ba2a2d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -943,9 +1034,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -953,24 +1044,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.36" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -980,9 +1071,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -990,28 +1081,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasm-bindgen-test" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e636f3a428ff62b3742ebc3c70e254dfe12b8c2b469d688ea59cdd4abcf502" +checksum = "143ddeb4f833e2ed0d252e618986e18bfc7b0e52f2d28d77d05b2f045dd8eb61" dependencies = [ "console_error_panic_hook", "js-sys", @@ -1023,12 +1114,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f18c1fad2f7c4958e7bcce014fa212f59a65d5e3721d0f77e6c0b27ede936ba3" +checksum = "a5211b7550606857312bba1d978a8ec75692eae187becc5e680444fffc5e6f89" dependencies = [ "proc-macro2", "quote", + "syn 2.0.48", ] [[package]] @@ -1044,80 +1136,14 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.63" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - [[package]] name = "yew" version = "0.20.0" @@ -1160,9 +1186,9 @@ dependencies = [ [[package]] name = "yewdux" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653ba356bc60d1804c28ec6cc8ddac2741c686bde2a65074d07faba735914464" +checksum = "3c528544a814a0beb30059c8340eb78c88160141db788112b51a5a08098cef2d" dependencies = [ "anymap", "async-trait", @@ -1179,13 +1205,13 @@ dependencies = [ [[package]] name = "yewdux-macros" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bcd923aceaa85cb4affad8657cc36e3d6b6932740e711574182f7817492739" +checksum = "d22b1832d3e3eaa61a5c2ecd40affa876507457180d1e599143368c1c3317c2d" dependencies = [ "darling", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] diff --git a/Cargo.toml b/Cargo.toml index 381c5c4..d040592 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,30 +1,3 @@ -[package] -name = "plate-tool" -version = "0.2.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -plate-tool-lib = { path = "lib" } -yew = { version = "0.20.0", features = ["csr"] } -yewdux = "0.9" -wasm-bindgen = "0.2" -web-sys = { version = "0.3", features = ["FormData", "HtmlFormElement", - "HtmlDialogElement", "Blob", "Url", "Window", - "HtmlAnchorElement", "ReadableStream", "HtmlSelectElement", "HtmlOptionElement", "HtmlButtonElement", - "FileReader"] } -js-sys = "0.3" -log = "0.4" -wasm-logger = "0.2" -regex = "1" -lazy_static = "1.4" -uuid = { version = "1.6", features = ["v7", "fast-rng", "macro-diagnostics", "js", "serde"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -csv = "1.2" -getrandom = { version = "0.2", features = ["js"] } -rand = { version = "0.8", features = ["small_rng"] } - -[dev-dependencies] -wasm-bindgen-test = "0.3.0" +[workspace] +members = ["plate-tool-web", "plate-tool-lib"] +resolver = "2" diff --git a/lib/src/csv.rs b/lib/src/csv.rs deleted file mode 100644 index 02feb01..0000000 --- a/lib/src/csv.rs +++ /dev/null @@ -1,62 +0,0 @@ -// use crate::components::states::MainState; -use crate::transfer::Transfer; -use crate::util::*; - -use serde::{Serialize, Deserialize}; -use std::error::Error; - -#[derive(Serialize, Deserialize, Debug)] -pub struct TransferRecord { - #[serde(rename = "Source Plate", alias = "source plate", alias = "src plate")] - pub source_plate: String, - #[serde(rename = "Source Well", alias = "source well", alias = "src well")] - pub source_well: String, - #[serde(rename = "Dest Plate", alias = "dest plate", alias = "destination plate")] - pub destination_plate: String, - #[serde(rename = "Destination Well", alias = "destination well", alias = "dest well")] - pub destination_well: String, - #[serde(rename = "Transfer Volume", alias = "transfer volume")] - pub volume: f32, - #[serde(rename = "Concentration", alias = "concentration")] - pub concentration: Option, -} - -/* -*/ - -pub fn transfer_to_records( - tr: &Transfer, - src_barcode: &str, - dest_barcode: &str, -) -> Vec { - let source_wells = tr.transfer_region.get_source_wells(); - let map = tr.transfer_region.calculate_map(); - - let mut records: Vec = vec![]; - - for s_well in source_wells { - let dest_wells = map(s_well); - if let Some(dest_wells) = dest_wells { - for d_well in dest_wells { - records.push(TransferRecord { - source_plate: src_barcode.to_string(), - source_well: format!("{}{}", num_to_letters(s_well.0).unwrap(), s_well.1), - destination_plate: dest_barcode.to_string(), - destination_well: format!("{}{}", num_to_letters(d_well.0).unwrap(), d_well.1), - volume: tr.volume, - concentration: None, - }) - } - } - } - records -} - -pub fn records_to_csv(trs: Vec) -> Result> { - let mut wtr = csv::WriterBuilder::new().from_writer(vec![]); - for record in trs { - wtr.serialize(record)? - } - let data = String::from_utf8(wtr.into_inner()?)?; - Ok(data) -} diff --git a/lib/src/lib.rs b/lib/src/lib.rs deleted file mode 100644 index a85a4bb..0000000 --- a/lib/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod csv; -pub mod plate; -pub mod plate_instances; -pub mod transfer; -pub mod transfer_region; -pub mod util; diff --git a/lib/src/plate.rs b/lib/src/plate.rs deleted file mode 100644 index 2331aea..0000000 --- a/lib/src/plate.rs +++ /dev/null @@ -1,77 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(PartialEq, Eq, Default, Clone, Copy, Serialize, Deserialize, Debug)] -pub struct Plate { - pub plate_type: PlateType, - pub plate_format: PlateFormat, -} - -impl Plate { - pub fn new(plate_type: PlateType, plate_format: PlateFormat) -> Self { - Plate { - plate_type, - plate_format, - } - } - - pub fn size(&self) -> (u8, u8) { - self.plate_format.size() - } -} - -#[derive(PartialEq, Eq, Clone, Copy, Serialize, Deserialize, Debug)] -pub enum PlateType { - Source, - Destination, -} -impl Default for PlateType { - fn default() -> Self { - Self::Source - } -} - -#[derive(PartialEq, Eq, Clone, Copy, Serialize, Deserialize, Debug)] -pub enum PlateFormat { - W6, - W12, - W24, - W48, - W96, - W384, - W1536, - W3456, -} -impl Default for PlateFormat { - fn default() -> Self { - Self::W96 - } -} -impl std::fmt::Display for PlateFormat { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - PlateFormat::W6 => write!(f, "6"), - PlateFormat::W12 => write!(f, "12"), - PlateFormat::W24 => write!(f, "24"), - PlateFormat::W48 => write!(f, "48"), - PlateFormat::W96 => write!(f, "96"), - PlateFormat::W384 => write!(f, "384"), - PlateFormat::W1536 => write!(f, "1536"), - PlateFormat::W3456 => write!(f, "3456"), - } - } -} - -impl PlateFormat { - pub fn size(&self) -> (u8, u8) { - match self { - PlateFormat::W6 => (2, 3), - PlateFormat::W12 => (3, 4), - PlateFormat::W24 => (4, 6), - PlateFormat::W48 => (6, 8), - PlateFormat::W96 => (8, 12), - PlateFormat::W384 => (16, 24), - PlateFormat::W1536 => (32, 48), - PlateFormat::W3456 => (48, 72), - } - } -} diff --git a/lib/src/plate_instances.rs b/lib/src/plate_instances.rs deleted file mode 100644 index c8a1e6d..0000000 --- a/lib/src/plate_instances.rs +++ /dev/null @@ -1,50 +0,0 @@ -use super::plate::*; -use serde::{Deserialize, Serialize}; -use uuid::Uuid; - -#[derive(PartialEq, Clone, Serialize, Deserialize)] -pub struct PlateInstance { - pub plate: Plate, - #[serde(rename = "id_v7")] - #[serde(default = "Uuid::now_v7")] - id: Uuid, - pub name: String, -} - -impl PlateInstance { - pub fn new(sort: PlateType, format: PlateFormat, name: String) -> Self { - PlateInstance { - plate: Plate { - plate_type: sort, - plate_format: format, - }, - id: Uuid::now_v7(), - name, - } - } - - pub fn get_uuid(&self) -> Uuid { - self.id - } - - pub fn change_name(&mut self, new_name: String) { - self.name = new_name; - } -} - -impl From for PlateInstance { - fn from(value: Plate) -> Self { - PlateInstance { - plate: value, - id: Uuid::now_v7(), - name: "New Plate".to_string(), - } - } -} - -impl From<&PlateInstance> for String { - fn from(value: &PlateInstance) -> Self { - // Could have other formatting here - format!("{}, {}", value.name, value.plate.plate_format) - } -} diff --git a/lib/src/transfer.rs b/lib/src/transfer.rs deleted file mode 100644 index b27868b..0000000 --- a/lib/src/transfer.rs +++ /dev/null @@ -1,58 +0,0 @@ -use super::plate_instances::*; -use super::transfer_region::*; -use serde::Deserialize; -use serde::Serialize; -use uuid::Uuid; - -#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)] -#[non_exhaustive] -pub struct Transfer { - pub source_id: Uuid, - pub dest_id: Uuid, - pub name: String, - #[serde(rename = "id_v7")] - #[serde(default = "Uuid::now_v7")] - pub id: Uuid, - pub transfer_region: TransferRegion, - #[serde(default = "default_volume")] - pub volume: f32, -} - -impl Default for Transfer { - fn default() -> Self { - Transfer { - source_id: Default::default(), - dest_id: Default::default(), - name: "New Transfer".to_string(), - id: Default::default(), - transfer_region: Default::default(), - volume: 2.5f32, - } - } -} - -fn default_volume() -> f32 { - 2.5f32 -} - -impl Transfer { - pub fn new( - source: PlateInstance, - dest: PlateInstance, - tr: TransferRegion, - name: String, - ) -> Self { - Self { - source_id: source.get_uuid(), - dest_id: dest.get_uuid(), - name, - id: Uuid::now_v7(), - transfer_region: tr, - volume: 2.5, - } - } - - pub fn get_uuid(&self) -> Uuid { - self.id - } -} diff --git a/lib/src/transfer_region.rs b/lib/src/transfer_region.rs deleted file mode 100644 index a6b60ca..0000000 --- a/lib/src/transfer_region.rs +++ /dev/null @@ -1,591 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use super::plate::Plate; - -#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug)] -pub struct CustomRegion { - src: Vec<(u8, u8)>, - dest: Vec<(u8, u8)>, -} - -#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug)] -pub enum Region { - Rect((u8, u8), (u8, u8)), - Point((u8, u8)), - Custom(CustomRegion), -} -impl Default for Region { - fn default() -> Self { - Region::Point((1, 1)) - } -} -impl TryFrom for ((u8, u8), (u8, u8)) { - type Error = &'static str; - fn try_from(region: Region) -> Result { - if let Region::Rect(c1, c2) = region { - Ok((c1, c2)) - } else { - // Should consider returning a degenerate rectangle here instead - Err("Cannot convert this region to a rectangle, it was a point.") - } - } -} - -type Corner = (u8, u8); -type Rectangle = (Corner, Corner); -impl Region { - pub fn new_custom(transfers: &Vec) -> Self { - let mut src_pts: Vec<(u8, u8)> = Vec::with_capacity(transfers.len()); - let mut dest_pts: Vec<(u8, u8)> = Vec::with_capacity(transfers.len()); - - for transfer in transfers { - src_pts.push(transfer.0); - dest_pts.push(transfer.1); - } - - Region::Custom(CustomRegion { - src: src_pts, - dest: dest_pts, - }) - } -} - -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug)] -pub struct TransferRegion { - pub source_plate: Plate, - pub source_region: Region, // Even if it is just a point, we don't want corners. - pub dest_plate: Plate, - pub dest_region: Region, - pub interleave_source: (i8, i8), - pub interleave_dest: (i8, i8), -} - -impl Default for TransferRegion { - fn default() -> Self { - TransferRegion { - source_plate: Plate::default(), - source_region: Region::default(), - dest_plate: Plate::default(), - dest_region: Region::default(), - interleave_source: (1, 1), - interleave_dest: (1, 1), - } - } -} - -impl TransferRegion { - pub fn get_source_wells(&self) -> Vec<(u8, u8)> { - match &self.source_region { - Region::Rect(c1, c2) => { - let mut wells = Vec::<(u8, u8)>::new(); - let (ul, br) = standardize_rectangle(c1, c2); - let (interleave_i, interleave_j) = self.interleave_source; - // NOTE: This will panic if either is 0! - // We'll reassign these values (still not mutable) just in case. - // This behaviour shouldn't be replicated for destination wells - // because a zero step permits pooling. - let (interleave_i, interleave_j) = - (i8::max(interleave_i, 1), i8::max(interleave_j, 1)); - - for i in (ul.0..=br.0).step_by(i8::abs(interleave_i) as usize) { - for j in (ul.1..=br.1).step_by(i8::abs(interleave_j) as usize) { - // NOTE: It looks like we're ignoring negative interleaves, - // because it wouldn't make a difference here---the same - // wells will still be involved in the transfer. - wells.push((i, j)) - } - } - wells - } - Region::Point(p) => vec![*p], - Region::Custom(c) => c.src.clone(), - } - } - - pub fn get_destination_wells(&self) -> Vec<(u8, u8)> { - let map = self.calculate_map(); - let source_wells = self.get_source_wells(); - - let mut wells = Vec::<(u8, u8)>::new(); - - // log::debug!("GDW:"); - for well in source_wells { - if let Some(mut dest_wells) = map(well) { - // log::debug!("Map {:?} to {:?}", well, dest_wells); - wells.append(&mut dest_wells); - } - } - // log::debug!("GDW END."); - - wells - } - - #[allow(clippy::type_complexity)] // Resolving gives inherent associated type error - pub fn calculate_map(&self) -> Box Option> + '_> { - // By validating first, we have a stronger guarantee that - // this function will not panic. :) - // log::debug!("Validating: {:?}", self.validate()); - if let Err(msg) = self.validate() { - eprintln!("{}", msg); - eprintln!("This transfer will be empty."); - return Box::new(|(_, _)| None); - } - - // log::debug!("What is ild? {:?}", self); - let source_wells = self.get_source_wells(); - let il_dest = self.interleave_dest; - let il_source = self.interleave_source; - - let source_corners: ((u8, u8), (u8, u8)) = match self.source_region { - Region::Point((x, y)) => ((x, y), (x, y)), - Region::Rect(c1, c2) => (c1, c2), - Region::Custom(_) => ((0, 0), (0, 0)), - }; - let (source_ul, _) = standardize_rectangle(&source_corners.0, &source_corners.1); - // This map is not necessarily injective or surjective, - // but we will have these properties in certain cases. - // If the transfer is not a pooling transfer (interleave == 0) - // and simple then we *will* have injectivity. - - // Non-replicate transfers: - match &self.dest_region { - Region::Point((x, y)) => { - Box::new(move |(i, j)| { - if source_wells.contains(&(i, j)) { - // Validity here already checked by self.validate() - Some(vec![( - x + i - .checked_sub(source_ul.0) - .expect("Point cannot have been less than UL") - .checked_div(il_source.0.unsigned_abs()) - .expect("Source interleave cannot be 0") - .mul(il_dest.0.unsigned_abs()), - y + j - .checked_sub(source_ul.1) - .expect("Point cannot have been less than UL") - .checked_div(il_source.1.unsigned_abs()) - .expect("Source interleave cannot be 0") - .mul(il_dest.1.unsigned_abs()), - )]) - } else { - None - } - }) - } - Region::Rect(c1, c2) => { - Box::new(move |(i, j)| { - if source_wells.contains(&(i, j)) { - let possible_destination_wells = create_dense_rectangle(c1, c2); - let (d_ul, d_br) = standardize_rectangle(c1, c2); - let (s_ul, s_br) = - standardize_rectangle(&source_corners.0, &source_corners.1); - let s_dims = ( - s_br.0.checked_sub(s_ul.0).unwrap() + 1, - s_br.1.checked_sub(s_ul.1).unwrap() + 1, - ); - let d_dims = ( - d_br.0.checked_sub(d_ul.0).unwrap() + 1, - d_br.1.checked_sub(d_ul.1).unwrap() + 1, - ); - let N_s = ( - // Number of used source wells - (s_dims.0 + il_source.0.unsigned_abs() - 1) - .div_euclid(il_source.0.unsigned_abs()), - (s_dims.1 + il_source.1.unsigned_abs() - 1) - .div_euclid(il_source.1.unsigned_abs()), - ); - let count = ( - // How many times can we replicate? - (1..) - .position(|n| { - n * N_s.0 * il_dest.0.unsigned_abs() - il_dest.0.unsigned_abs() - + 1 - > d_dims.0 - }) - .unwrap() as u8, - (1..) - .position(|n| { - n * N_s.1 * il_dest.1.unsigned_abs() - il_dest.1.unsigned_abs() - + 1 - > d_dims.1 - }) - .unwrap() as u8, - ); - let i = i - .saturating_sub(s_ul.0) - .saturating_div(il_source.0.unsigned_abs()); - let j = j - .saturating_sub(s_ul.1) - .saturating_div(il_source.1.unsigned_abs()); - - Some( - possible_destination_wells - .into_iter() - .filter(|(x, _)| { - x.checked_sub(d_ul.0).unwrap() - % (N_s.0 * il_dest.0.unsigned_abs()) // Counter along x - == (il_dest.0.unsigned_abs() *i) - % (N_s.0 * il_dest.0.unsigned_abs()) - }) - .filter(|(_, y)| { - y.checked_sub(d_ul.1).unwrap() - % (N_s.1 * il_dest.1.unsigned_abs()) // Counter along u - == (il_dest.1.unsigned_abs() *j) - % (N_s.1 * il_dest.1.unsigned_abs()) - }) - .filter(|(x, y)| { - // How many times have we replicated? < How many are we allowed - // to replicate? - x.checked_sub(d_ul.0) - .unwrap() - .div_euclid(N_s.0 * il_dest.0.unsigned_abs()) - < count.0 - && y.checked_sub(d_ul.1) - .unwrap() - .div_euclid(N_s.1 * il_dest.1.unsigned_abs()) - < count.1 - }) - .collect(), - ) - } else { - None - } - }) - } - Region::Custom(c) => Box::new(move |(i, j)| { - let src = c.src.clone(); - let dest = c.dest.clone(); - - let points: Vec<(u8, u8)> = src - .iter() - .enumerate() - .filter(|(_index, (x, y))| *x == i && *y == j) - .map(|(index, _)| dest[index]) - .collect(); - if points.is_empty() { - None - } else { - Some(points) - } - }), - } - } - - pub fn validate(&self) -> Result<(), &'static str> { - // Checks if the region does anything suspect - // - // If validation fails, we pass a string to show to the user. - // - // We check: - // - Are the wells in the source really there? - // - In a replication region, do the source lengths divide the destination lengths? - // - Are the interleaves valid? - let il_source = self.interleave_source; - let il_dest = self.interleave_dest; - - match self.source_region { - Region::Point(_) => return Ok(()), // Should make sure it's actually in the plate, leave for - // later - Region::Rect(s1, s2) => { - // Check if all source wells exist: - if s1.0 == 0 || s1.1 == 0 || s2.0 == 0 || s2.1 == 0 { - return Err("Source region is out-of-bounds! (Too small)"); - } - // Sufficient to check if the corners are in-bounds - let source_max = self.source_plate.size(); - if s1.0 > source_max.0 || s2.0 > source_max.0 { - return Err("Source region is out-of-bounds! (Too tall)"); - } - if s1.1 > source_max.1 || s2.1 > source_max.1 { - // log::debug!("s1.1: {}, max.1: {}", s1.1, source_max.1); - return Err("Source region is out-of-bounds! (Too wide)"); - } - } - Region::Custom(_) => return Ok(()), - } - - if il_source.0 == 0 || il_dest.1 == 0 { - return Err("Source interleave cannot be zero!"); - } - - // Check if all destination wells exist: - // NOT IMPLEMENTED - // Should *not* happen in this function---otherwise - // we'd get a nasty recursive loop. - - Ok(()) - } -} - -fn create_dense_rectangle(c1: &(u8, u8), c2: &(u8, u8)) -> Vec<(u8, u8)> { - // Creates a vector of every point between two corners - let (c1, c2) = standardize_rectangle(c1, c2); - - let mut points = Vec::<(u8, u8)>::new(); - for i in c1.0..=c2.0 { - for j in c1.1..=c2.1 { - points.push((i, j)); - } - } - - points -} - -fn standardize_rectangle(c1: &(u8, u8), c2: &(u8, u8)) -> ((u8, u8), (u8, u8)) { - let upper_left_i = u8::min(c1.0, c2.0); - let upper_left_j = u8::min(c1.1, c2.1); - let bottom_right_i = u8::max(c1.0, c2.0); - let bottom_right_j = u8::max(c1.1, c2.1); - ( - (upper_left_i, upper_left_j), - (bottom_right_i, bottom_right_j), - ) -} - -#[cfg(debug_assertions)] -use std::fmt; -use std::ops::Mul; - -#[cfg(debug_assertions)] // There should be no reason to print a transfer otherwise -impl fmt::Display for TransferRegion { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - writeln!(f, "Source Plate:")?; - let source_dims = self.source_plate.size(); - let source_wells = self.get_source_wells(); - let mut source_string = String::new(); - for i in 1..=source_dims.0 { - for j in 1..=source_dims.1 { - if source_wells.contains(&(i, j)) { - source_string.push('x') - } else { - source_string.push('.') - } - } - source_string.push('\n'); - } - write!(f, "{}", source_string)?; - - writeln!(f, "Dest Plate:")?; - let dest_dims = self.dest_plate.size(); - let dest_wells = self.get_destination_wells(); - let mut dest_string = String::new(); - for i in 1..=dest_dims.0 { - for j in 1..=dest_dims.1 { - if dest_wells.contains(&(i, j)) { - dest_string.push('x') - } else { - dest_string.push('.') - } - } - dest_string.push('\n'); - } - write!(f, "{}", dest_string) - } -} - -#[cfg(test)] -mod tests { - use wasm_bindgen_test::*; - - use crate::data::plate::*; - use crate::data::transfer_region::*; - - #[test] - #[wasm_bindgen_test] - fn test_simple_transfer() { - let source = Plate::new(PlateType::Source, PlateFormat::W96); - let destination = Plate::new(PlateType::Destination, PlateFormat::W384); - - let transfer1 = TransferRegion { - source_plate: source, - source_region: Region::Rect((1, 1), (3, 3)), - dest_plate: destination, - dest_region: Region::Point((3, 3)), - interleave_source: (1, 1), - interleave_dest: (1, 1), - }; - let transfer1_map = transfer1.calculate_map(); - assert_eq!( - transfer1_map((1, 1)), - Some(vec! {(3,3)}), - "Failed basic shift transfer 1" - ); - assert_eq!( - transfer1_map((1, 2)), - Some(vec! {(3,4)}), - "Failed basic shift transfer 2" - ); - assert_eq!( - transfer1_map((2, 2)), - Some(vec! {(4,4)}), - "Failed basic shift transfer 3" - ); - - let transfer2 = TransferRegion { - source_plate: source, - source_region: Region::Rect((1, 1), (3, 3)), - dest_plate: destination, - dest_region: Region::Point((3, 3)), - interleave_source: (2, 2), - interleave_dest: (1, 1), - }; - let transfer2_map = transfer2.calculate_map(); - assert_eq!( - transfer2_map((1, 1)), - Some(vec! {(3,3)}), - "Failed source interleave, type simple 1" - ); - assert_eq!( - transfer2_map((1, 2)), - None, - "Failed source interleave, type simple 2" - ); - assert_eq!( - transfer2_map((2, 2)), - None, - "Failed source interleave, type simple 3" - ); - assert_eq!( - transfer2_map((3, 3)), - Some(vec! {(4,4)}), - "Failed source interleave, type simple 4" - ); - - let transfer3 = TransferRegion { - source_plate: source, - source_region: Region::Rect((1, 1), (3, 3)), - dest_plate: destination, - dest_region: Region::Point((3, 3)), - interleave_source: (1, 1), - interleave_dest: (2, 3), - }; - let transfer3_map = transfer3.calculate_map(); - assert_eq!( - transfer3_map((1, 1)), - Some(vec! {(3,3)}), - "Failed destination interleave, type simple 1" - ); - assert_eq!( - transfer3_map((2, 1)), - Some(vec! {(5,3)}), - "Failed destination interleave, type simple 2" - ); - assert_eq!( - transfer3_map((1, 2)), - Some(vec! {(3,6)}), - "Failed destination interleave, type simple 3" - ); - assert_eq!( - transfer3_map((2, 2)), - Some(vec! {(5,6)}), - "Failed destination interleave, type simple 4" - ); - } - - #[test] - #[wasm_bindgen_test] - fn test_replicate_transfer() { - let source = Plate::new(PlateType::Source, PlateFormat::W96); - let destination = Plate::new(PlateType::Destination, PlateFormat::W384); - - let transfer1 = TransferRegion { - source_plate: source, - source_region: Region::Rect((1, 1), (2, 2)), - dest_plate: destination, - dest_region: Region::Rect((2, 2), (11, 11)), - interleave_source: (1, 1), - interleave_dest: (3, 3), - }; - let transfer1_map = transfer1.calculate_map(); - assert_eq!( - transfer1_map((1, 1)), - Some(vec! {(2, 2), (2, 8), (8, 2), (8, 8)}), - "Failed type replicate 1" - ); - assert_eq!( - transfer1_map((2, 1)), - Some(vec! {(5, 2), (5, 8), (11, 2), (11, 8)}), - "Failed type replicate 1" - ); - - let transfer2 = TransferRegion { - source_plate: Plate::new(PlateType::Source, PlateFormat::W384), - dest_plate: Plate::new(PlateType::Destination, PlateFormat::W384), - source_region: Region::Rect((1, 1), (2, 3)), - dest_region: Region::Rect((2, 2), (11, 16)), - interleave_source: (1, 1), - interleave_dest: (2, 2), - }; - let transfer2_source = transfer2.get_source_wells(); - let transfer2_dest = transfer2.get_destination_wells(); - assert_eq!( - transfer2_source, - vec![(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)], - "Failed type replicate 2 source" - ); - assert_eq!( - transfer2_dest, - vec![ - (2, 2), - (2, 8), - (6, 2), - (6, 8), - (2, 4), - (2, 10), - (6, 4), - (6, 10), - (2, 6), - (2, 12), - (6, 6), - (6, 12), - (4, 2), - (4, 8), - (8, 2), - (8, 8), - (4, 4), - (4, 10), - (8, 4), - (8, 10), - (4, 6), - (4, 12), - (8, 6), - (8, 12) - ], - "Failed type replicate 2 destination" - ); - } - - #[test] - #[wasm_bindgen_test] - fn test_pooling_transfer() { - let transfer1 = TransferRegion { - source_plate: Plate::new(PlateType::Source, PlateFormat::W384), - dest_plate: Plate::new(PlateType::Destination, PlateFormat::W384), - source_region: Region::Rect((1, 4), (3, 7)), - dest_region: Region::Point((1, 9)), - interleave_source: (1, 1), - interleave_dest: (0, 2), - }; - //let transfer1_source = transfer1.get_source_wells(); - let mut transfer1_dest = transfer1.get_destination_wells(); - transfer1_dest.sort(); - transfer1_dest.dedup(); // Makes our check easier, otherwise we have repeated wells - let transfer1_map = transfer1.calculate_map(); - // Skipping source check---it's just 12 wells. - assert_eq!( - transfer1_dest, - vec![(1, 9), (1, 11), (1, 13), (1, 15)], - "Failed type pool 1 dest" - ); - assert_eq!( - transfer1_map((2, 6)), - Some(vec![(1, 13)]), - "Failed type pool 1 map 1" - ); - assert_eq!( - transfer1_map((3, 7)), - Some(vec![(1, 15)]), - "Failed type pool 1 map 2" - ); - } -} diff --git a/lib/src/util.rs b/lib/src/util.rs deleted file mode 100644 index b8ec34d..0000000 --- a/lib/src/util.rs +++ /dev/null @@ -1,70 +0,0 @@ -pub fn letters_to_num(letters: &str) -> Option { - let mut num: u8 = 0; - for (i, letter) in letters.to_ascii_uppercase().chars().rev().enumerate() { - log::debug!("{}, {}", i, letter); - let n = letter as u8; - if !(65..=90).contains(&n) { - return None; - } - num = num.checked_add((26_i32.pow(i as u32) * (n as i32 - 64)).try_into().ok()?)?; - } - Some(num) -} -pub fn num_to_letters(num: u8) -> Option { - if num == 0 { - return None; - } // Otherwise, we will not return none! - // As another note, we can't represent higher than "IV" anyway; - // thus there's no reason for a loop (26^n with n>1 will NOT occur). - let mut text = "".to_string(); - let mut digit1 = num.div_euclid(26u8); - let mut digit2 = num.rem_euclid(26u8); - if digit1 > 0 && digit2 == 0u8 { - digit1 -= 1; - digit2 = 26; - } - if digit1 != 0 { - text.push((64 + digit1) as char) - } - text.push((64 + digit2) as char); - - Some(text.to_string()) -} - -#[cfg(test)] -mod tests { - use super::{letters_to_num, num_to_letters, RegionDisplay}; - - #[test] - fn test_letters_to_num() { - assert_eq!(letters_to_num("D"), Some(4)); - assert_eq!(letters_to_num("d"), None); - assert_eq!(letters_to_num("AD"), Some(26 + 4)); - assert_eq!(letters_to_num("CG"), Some(3 * 26 + 7)); - } - - #[test] - fn test_num_to_letters() { - println!("27 is {:?}", num_to_letters(27)); - assert_eq!(num_to_letters(1), Some("A".to_string())); - assert_eq!(num_to_letters(26), Some("Z".to_string())); - assert_eq!(num_to_letters(27), Some("AA".to_string())); - assert_eq!(num_to_letters(111), Some("DG".to_string())); - } - - #[test] - fn test_l2n_and_n2l() { - assert_eq!( - num_to_letters(letters_to_num("A").unwrap()), - Some("A".to_string()) - ); - assert_eq!( - num_to_letters(letters_to_num("BJ").unwrap()), - Some("BJ".to_string()) - ); - for i in 1..=255 { - assert_eq!(letters_to_num(&num_to_letters(i).unwrap()), Some(i)); - } - } - -} diff --git a/lib/.gitignore b/plate-tool-lib/.gitignore similarity index 100% rename from lib/.gitignore rename to plate-tool-lib/.gitignore diff --git a/lib/Cargo.lock b/plate-tool-lib/Cargo.lock similarity index 100% rename from lib/Cargo.lock rename to plate-tool-lib/Cargo.lock diff --git a/lib/Cargo.toml b/plate-tool-lib/Cargo.toml similarity index 100% rename from lib/Cargo.toml rename to plate-tool-lib/Cargo.toml diff --git a/plate-tool-lib/src/csv.rs b/plate-tool-lib/src/csv.rs index 02feb01..89d3688 100644 --- a/plate-tool-lib/src/csv.rs +++ b/plate-tool-lib/src/csv.rs @@ -2,7 +2,7 @@ use crate::transfer::Transfer; use crate::util::*; -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; use std::error::Error; #[derive(Serialize, Deserialize, Debug)] @@ -11,18 +11,28 @@ pub struct TransferRecord { pub source_plate: String, #[serde(rename = "Source Well", alias = "source well", alias = "src well")] pub source_well: String, - #[serde(rename = "Dest Plate", alias = "dest plate", alias = "destination plate")] + #[serde( + rename = "Dest Plate", + alias = "dest plate", + alias = "destination plate" + )] pub destination_plate: String, - #[serde(rename = "Destination Well", alias = "destination well", alias = "dest well")] + #[serde( + rename = "Destination Well", + alias = "destination well", + alias = "dest well" + )] pub destination_well: String, #[serde(rename = "Transfer Volume", alias = "transfer volume")] + #[serde(default = "volume_default")] pub volume: f32, #[serde(rename = "Concentration", alias = "concentration")] pub concentration: Option, } -/* -*/ +pub fn volume_default() -> f32 { + 1f32 +} pub fn transfer_to_records( tr: &Transfer, @@ -60,3 +70,23 @@ pub fn records_to_csv(trs: Vec) -> Result let data = String::from_utf8(wtr.into_inner()?)?; Ok(data) } + +pub fn read_csv(data: &str) -> Vec { + let (header, data) = data.split_at(data.find('\n').unwrap()); + let modified: String = header.to_lowercase() + data; + + let mut rdr = csv::Reader::from_reader(modified.as_bytes()); + let mut records: Vec = Vec::new(); + for record in rdr.deserialize::() { + match record { + Ok(r) => { + //log::debug!("{:?}", r); + records.push(r); + } + Err(e) => { + log::debug!("{:?}", e); + } + } + } + records +} diff --git a/plate-tool-web/Cargo.toml b/plate-tool-web/Cargo.toml new file mode 100644 index 0000000..19fe496 --- /dev/null +++ b/plate-tool-web/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "plate-tool-web" +version = "0.2.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +plate-tool-lib = { path = "../plate-tool-lib" } +yew = { version = "0.20.0", features = ["csr"] } +yewdux = "0.9" +wasm-bindgen = "0.2" +web-sys = { version = "0.3", features = ["FormData", "HtmlFormElement", + "HtmlDialogElement", "Blob", "Url", "Window", + "HtmlAnchorElement", "ReadableStream", "HtmlSelectElement", "HtmlOptionElement", "HtmlButtonElement", + "FileReader"] } +js-sys = "0.3" +log = "0.4" +wasm-logger = "0.2" +regex = "1" +lazy_static = "1.4" +uuid = { version = "1.6", features = ["v7", "fast-rng", "macro-diagnostics", "js", "serde"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +csv = "1.2" +getrandom = { version = "0.2", features = ["js"] } +rand = { version = "0.8", features = ["small_rng"] } + +[dev-dependencies] +wasm-bindgen-test = "0.3.0" diff --git a/assets/fonts/Inconsolata.ttf b/plate-tool-web/assets/fonts/Inconsolata.ttf similarity index 100% rename from assets/fonts/Inconsolata.ttf rename to plate-tool-web/assets/fonts/Inconsolata.ttf diff --git a/assets/fonts/Jost.ttf b/plate-tool-web/assets/fonts/Jost.ttf similarity index 100% rename from assets/fonts/Jost.ttf rename to plate-tool-web/assets/fonts/Jost.ttf diff --git a/assets/js/html2canvas.js b/plate-tool-web/assets/js/html2canvas.js similarity index 100% rename from assets/js/html2canvas.js rename to plate-tool-web/assets/js/html2canvas.js diff --git a/assets/js/screenshot_utility.js b/plate-tool-web/assets/js/screenshot_utility.js similarity index 100% rename from assets/js/screenshot_utility.js rename to plate-tool-web/assets/js/screenshot_utility.js diff --git a/assets/scss/default_theme/_variables.scss b/plate-tool-web/assets/scss/default_theme/_variables.scss similarity index 100% rename from assets/scss/default_theme/_variables.scss rename to plate-tool-web/assets/scss/default_theme/_variables.scss diff --git a/assets/scss/default_theme/base.scss b/plate-tool-web/assets/scss/default_theme/base.scss similarity index 100% rename from assets/scss/default_theme/base.scss rename to plate-tool-web/assets/scss/default_theme/base.scss diff --git a/assets/scss/default_theme/components/_dialog.scss b/plate-tool-web/assets/scss/default_theme/components/_dialog.scss similarity index 100% rename from assets/scss/default_theme/components/_dialog.scss rename to plate-tool-web/assets/scss/default_theme/components/_dialog.scss diff --git a/assets/scss/default_theme/components/_index.scss b/plate-tool-web/assets/scss/default_theme/components/_index.scss similarity index 100% rename from assets/scss/default_theme/components/_index.scss rename to plate-tool-web/assets/scss/default_theme/components/_index.scss diff --git a/assets/scss/default_theme/components/_main_window.scss b/plate-tool-web/assets/scss/default_theme/components/_main_window.scss similarity index 100% rename from assets/scss/default_theme/components/_main_window.scss rename to plate-tool-web/assets/scss/default_theme/components/_main_window.scss diff --git a/assets/scss/default_theme/components/_plate_container.scss b/plate-tool-web/assets/scss/default_theme/components/_plate_container.scss similarity index 100% rename from assets/scss/default_theme/components/_plate_container.scss rename to plate-tool-web/assets/scss/default_theme/components/_plate_container.scss diff --git a/assets/scss/default_theme/components/_plates.scss b/plate-tool-web/assets/scss/default_theme/components/_plates.scss similarity index 100% rename from assets/scss/default_theme/components/_plates.scss rename to plate-tool-web/assets/scss/default_theme/components/_plates.scss diff --git a/assets/scss/default_theme/components/_transfer_menu.scss b/plate-tool-web/assets/scss/default_theme/components/_transfer_menu.scss similarity index 100% rename from assets/scss/default_theme/components/_transfer_menu.scss rename to plate-tool-web/assets/scss/default_theme/components/_transfer_menu.scss diff --git a/assets/scss/default_theme/components/_tree.scss b/plate-tool-web/assets/scss/default_theme/components/_tree.scss similarity index 100% rename from assets/scss/default_theme/components/_tree.scss rename to plate-tool-web/assets/scss/default_theme/components/_tree.scss diff --git a/assets/scss/default_theme/components/_upper_menu.scss b/plate-tool-web/assets/scss/default_theme/components/_upper_menu.scss similarity index 100% rename from assets/scss/default_theme/components/_upper_menu.scss rename to plate-tool-web/assets/scss/default_theme/components/_upper_menu.scss diff --git a/assets/scss/default_theme/main.scss b/plate-tool-web/assets/scss/default_theme/main.scss similarity index 100% rename from assets/scss/default_theme/main.scss rename to plate-tool-web/assets/scss/default_theme/main.scss diff --git a/assets/scss/index.scss b/plate-tool-web/assets/scss/index.scss similarity index 100% rename from assets/scss/index.scss rename to plate-tool-web/assets/scss/index.scss diff --git a/plate-tool-web/dist/fonts/Inconsolata.ttf b/plate-tool-web/dist/fonts/Inconsolata.ttf new file mode 100644 index 0000000000000000000000000000000000000000..34848cadd8925948b552ee5f5cf78a617d7f1776 GIT binary patch literal 338540 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�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 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory()); +}(this, (function () { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + } + + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || from); + } + + var Bounds = /** @class */ (function () { + function Bounds(left, top, width, height) { + this.left = left; + this.top = top; + this.width = width; + this.height = height; + } + Bounds.prototype.add = function (x, y, w, h) { + return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h); + }; + Bounds.fromClientRect = function (context, clientRect) { + return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height); + }; + Bounds.fromDOMRectList = function (context, domRectList) { + var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; }); + return domRect + ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) + : Bounds.EMPTY; + }; + Bounds.EMPTY = new Bounds(0, 0, 0, 0); + return Bounds; + }()); + var parseBounds = function (context, node) { + return Bounds.fromClientRect(context, node.getBoundingClientRect()); + }; + var parseDocumentSize = function (document) { + var body = document.body; + var documentElement = document.documentElement; + if (!body || !documentElement) { + throw new Error("Unable to get document size"); + } + var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth)); + var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight)); + return new Bounds(0, 0, width, height); + }; + + /* + * css-line-break 2.1.0 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var toCodePoints$1 = function (str) { + var codePoints = []; + var i = 0; + var length = str.length; + while (i < length) { + var value = str.charCodeAt(i++); + if (value >= 0xd800 && value <= 0xdbff && i < length) { + var extra = str.charCodeAt(i++); + if ((extra & 0xfc00) === 0xdc00) { + codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000); + } + else { + codePoints.push(value); + i--; + } + } + else { + codePoints.push(value); + } + } + return codePoints; + }; + var fromCodePoint$1 = function () { + var codePoints = []; + for (var _i = 0; _i < arguments.length; _i++) { + codePoints[_i] = arguments[_i]; + } + if (String.fromCodePoint) { + return String.fromCodePoint.apply(String, codePoints); + } + var length = codePoints.length; + if (!length) { + return ''; + } + var codeUnits = []; + var index = -1; + var result = ''; + while (++index < length) { + var codePoint = codePoints[index]; + if (codePoint <= 0xffff) { + codeUnits.push(codePoint); + } + else { + codePoint -= 0x10000; + codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00); + } + if (index + 1 === length || codeUnits.length > 0x4000) { + result += String.fromCharCode.apply(String, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. + var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i$2 = 0; i$2 < chars$2.length; i$2++) { + lookup$2[chars$2.charCodeAt(i$2)] = i$2; + } + + /* + * utrie 1.0.2 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. + var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) { + lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1; + } + var decode$1 = function (base64) { + var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4; + if (base64[base64.length - 1] === '=') { + bufferLength--; + if (base64[base64.length - 2] === '=') { + bufferLength--; + } + } + var buffer = typeof ArrayBuffer !== 'undefined' && + typeof Uint8Array !== 'undefined' && + typeof Uint8Array.prototype.slice !== 'undefined' + ? new ArrayBuffer(bufferLength) + : new Array(bufferLength); + var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); + for (i = 0; i < len; i += 4) { + encoded1 = lookup$1$1[base64.charCodeAt(i)]; + encoded2 = lookup$1$1[base64.charCodeAt(i + 1)]; + encoded3 = lookup$1$1[base64.charCodeAt(i + 2)]; + encoded4 = lookup$1$1[base64.charCodeAt(i + 3)]; + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + return buffer; + }; + var polyUint16Array$1 = function (buffer) { + var length = buffer.length; + var bytes = []; + for (var i = 0; i < length; i += 2) { + bytes.push((buffer[i + 1] << 8) | buffer[i]); + } + return bytes; + }; + var polyUint32Array$1 = function (buffer) { + var length = buffer.length; + var bytes = []; + for (var i = 0; i < length; i += 4) { + bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]); + } + return bytes; + }; + + /** Shift size for getting the index-2 table offset. */ + var UTRIE2_SHIFT_2$1 = 5; + /** Shift size for getting the index-1 table offset. */ + var UTRIE2_SHIFT_1$1 = 6 + 5; + /** + * Shift size for shifting left the index array values. + * Increases possible data size with 16-bit index values at the cost + * of compactability. + * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY. + */ + var UTRIE2_INDEX_SHIFT$1 = 2; + /** + * Difference between the two shift sizes, + * for getting an index-1 offset from an index-2 offset. 6=11-5 + */ + var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1; + /** + * The part of the index-2 table for U+D800..U+DBFF stores values for + * lead surrogate code _units_ not code _points_. + * Values for lead surrogate code _points_ are indexed with this portion of the table. + * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.) + */ + var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1; + /** Number of entries in a data block. 32=0x20 */ + var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1; + /** Mask for getting the lower bits for the in-data-block offset. */ + var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1; + var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1; + /** Count the lengths of both BMP pieces. 2080=0x820 */ + var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1; + /** + * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820. + * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2. + */ + var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1; + var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */ + /** + * The index-1 table, only used for supplementary code points, at offset 2112=0x840. + * Variable length, for code points up to highStart, where the last single-value range starts. + * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1. + * (For 0x100000 supplementary code points U+10000..U+10ffff.) + * + * The part of the index-2 table for supplementary code points starts + * after this index-1 table. + * + * Both the index-1 table and the following part of the index-2 table + * are omitted completely if there is only BMP data. + */ + var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1; + /** + * Number of index-1 entries for the BMP. 32=0x20 + * This part of the index-1 table is omitted from the serialized form. + */ + var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1; + /** Number of entries in an index-2 block. 64=0x40 */ + var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1; + /** Mask for getting the lower bits for the in-index-2-block offset. */ + var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1; + var slice16$1 = function (view, start, end) { + if (view.slice) { + return view.slice(start, end); + } + return new Uint16Array(Array.prototype.slice.call(view, start, end)); + }; + var slice32$1 = function (view, start, end) { + if (view.slice) { + return view.slice(start, end); + } + return new Uint32Array(Array.prototype.slice.call(view, start, end)); + }; + var createTrieFromBase64$1 = function (base64, _byteLength) { + var buffer = decode$1(base64); + var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer); + var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer); + var headerLength = 24; + var index = slice16$1(view16, headerLength / 2, view32[4] / 2); + var data = view32[5] === 2 + ? slice16$1(view16, (headerLength + view32[4]) / 2) + : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4)); + return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data); + }; + var Trie$1 = /** @class */ (function () { + function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) { + this.initialValue = initialValue; + this.errorValue = errorValue; + this.highStart = highStart; + this.highValueIndex = highValueIndex; + this.index = index; + this.data = data; + } + /** + * Get the value for a code point as stored in the Trie. + * + * @param codePoint the code point + * @return the value + */ + Trie.prototype.get = function (codePoint) { + var ix; + if (codePoint >= 0) { + if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) { + // Ordinary BMP code point, excluding leading surrogates. + // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index. + // 16 bit data is stored in the index array itself. + ix = this.index[codePoint >> UTRIE2_SHIFT_2$1]; + ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); + return this.data[ix]; + } + if (codePoint <= 0xffff) { + // Lead Surrogate Code Point. A Separate index section is stored for + // lead surrogate code units and code points. + // The main index has the code unit data. + // For this function, we need the code point data. + // Note: this expression could be refactored for slightly improved efficiency, but + // surrogate code points will be so rare in practice that it's not worth it. + ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)]; + ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); + return this.data[ix]; + } + if (codePoint < this.highStart) { + // Supplemental code point, use two-level lookup. + ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1); + ix = this.index[ix]; + ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1; + ix = this.index[ix]; + ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); + return this.data[ix]; + } + if (codePoint <= 0x10ffff) { + return this.data[this.highValueIndex]; + } + } + // Fall through. The code point is outside of the legal range of 0..0x10ffff. + return this.errorValue; + }; + return Trie; + }()); + + /* + * base64-arraybuffer 1.0.2 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. + var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i$3 = 0; i$3 < chars$3.length; i$3++) { + lookup$3[chars$3.charCodeAt(i$3)] = i$3; + } + + var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=='; + + var LETTER_NUMBER_MODIFIER = 50; + // Non-tailorable Line Breaking Classes + var BK = 1; // Cause a line break (after) + var CR$1 = 2; // Cause a line break (after), except between CR and LF + var LF$1 = 3; // Cause a line break (after) + var CM = 4; // Prohibit a line break between the character and the preceding character + var NL = 5; // Cause a line break (after) + var WJ = 7; // Prohibit line breaks before and after + var ZW = 8; // Provide a break opportunity + var GL = 9; // Prohibit line breaks before and after + var SP = 10; // Enable indirect line breaks + var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences + // Break Opportunities + var B2 = 12; // Provide a line break opportunity before and after the character + var BA = 13; // Generally provide a line break opportunity after the character + var BB = 14; // Generally provide a line break opportunity before the character + var HY = 15; // Provide a line break opportunity after the character, except in numeric context + var CB = 16; // Provide a line break opportunity contingent on additional information + // Characters Prohibiting Certain Breaks + var CL = 17; // Prohibit line breaks before + var CP = 18; // Prohibit line breaks before + var EX = 19; // Prohibit line breaks before + var IN = 20; // Allow only indirect line breaks between pairs + var NS = 21; // Allow only indirect line breaks before + var OP = 22; // Prohibit line breaks after + var QU = 23; // Act like they are both opening and closing + // Numeric Context + var IS = 24; // Prevent breaks after any and before numeric + var NU = 25; // Form numeric expressions for line breaking purposes + var PO = 26; // Do not break following a numeric expression + var PR = 27; // Do not break in front of a numeric expression + var SY = 28; // Prevent a break before; and allow a break after + // Other Characters + var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID + var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters + var CJ = 31; // Treat as NS or ID for strict or normal breaking. + var EB = 32; // Do not break from following Emoji Modifier + var EM = 33; // Do not break from preceding Emoji Base + var H2 = 34; // Form Korean syllable blocks + var H3 = 35; // Form Korean syllable blocks + var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic + var ID = 37; // Break before or after; except in some numeric context + var JL = 38; // Form Korean syllable blocks + var JV = 39; // Form Korean syllable blocks + var JT = 40; // Form Korean syllable blocks + var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes + var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis + var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions + var ea_OP = [0x2329, 0xff08]; + var BREAK_MANDATORY = '!'; + var BREAK_NOT_ALLOWED$1 = '×'; + var BREAK_ALLOWED$1 = '÷'; + var UnicodeTrie$1 = createTrieFromBase64$1(base64$1); + var ALPHABETICS = [AL, HL]; + var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL]; + var SPACE$1 = [SP, ZW]; + var PREFIX_POSTFIX = [PR, PO]; + var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1); + var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3]; + var HYPHEN = [HY, BA]; + var codePointsToCharacterClasses = function (codePoints, lineBreak) { + if (lineBreak === void 0) { lineBreak = 'strict'; } + var types = []; + var indices = []; + var categories = []; + codePoints.forEach(function (codePoint, index) { + var classType = UnicodeTrie$1.get(codePoint); + if (classType > LETTER_NUMBER_MODIFIER) { + categories.push(true); + classType -= LETTER_NUMBER_MODIFIER; + } + else { + categories.push(false); + } + if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) { + // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0 + if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) { + indices.push(index); + return types.push(CB); + } + } + if (classType === CM || classType === ZWJ$1) { + // LB10 Treat any remaining combining mark or ZWJ as AL. + if (index === 0) { + indices.push(index); + return types.push(AL); + } + // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of + // the base character in all of the following rules. Treat ZWJ as if it were CM. + var prev = types[index - 1]; + if (LINE_BREAKS.indexOf(prev) === -1) { + indices.push(indices[index - 1]); + return types.push(prev); + } + indices.push(index); + return types.push(AL); + } + indices.push(index); + if (classType === CJ) { + return types.push(lineBreak === 'strict' ? NS : ID); + } + if (classType === SA) { + return types.push(AL); + } + if (classType === AI) { + return types.push(AL); + } + // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL + // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised + // to take into account the actual line breaking properties for these characters. + if (classType === XX) { + if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) { + return types.push(ID); + } + else { + return types.push(AL); + } + } + types.push(classType); + }); + return [indices, types, categories]; + }; + var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) { + var current = classTypes[currentIndex]; + if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) { + var i = currentIndex; + while (i <= classTypes.length) { + i++; + var next = classTypes[i]; + if (next === b) { + return true; + } + if (next !== SP) { + break; + } + } + } + if (current === SP) { + var i = currentIndex; + while (i > 0) { + i--; + var prev = classTypes[i]; + if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) { + var n = currentIndex; + while (n <= classTypes.length) { + n++; + var next = classTypes[n]; + if (next === b) { + return true; + } + if (next !== SP) { + break; + } + } + } + if (prev !== SP) { + break; + } + } + } + return false; + }; + var previousNonSpaceClassType = function (currentIndex, classTypes) { + var i = currentIndex; + while (i >= 0) { + var type = classTypes[i]; + if (type === SP) { + i--; + } + else { + return type; + } + } + return 0; + }; + var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) { + if (indicies[index] === 0) { + return BREAK_NOT_ALLOWED$1; + } + var currentIndex = index - 1; + if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) { + return BREAK_NOT_ALLOWED$1; + } + var beforeIndex = currentIndex - 1; + var afterIndex = currentIndex + 1; + var current = classTypes[currentIndex]; + // LB4 Always break after hard line breaks. + // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks. + var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0; + var next = classTypes[afterIndex]; + if (current === CR$1 && next === LF$1) { + return BREAK_NOT_ALLOWED$1; + } + if (HARD_LINE_BREAKS.indexOf(current) !== -1) { + return BREAK_MANDATORY; + } + // LB6 Do not break before hard line breaks. + if (HARD_LINE_BREAKS.indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB7 Do not break before spaces or zero width space. + if (SPACE$1.indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB8 Break before any character following a zero-width space, even if one or more spaces intervene. + if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) { + return BREAK_ALLOWED$1; + } + // LB8a Do not break after a zero width joiner. + if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) { + return BREAK_NOT_ALLOWED$1; + } + // zwj emojis + if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) { + return BREAK_NOT_ALLOWED$1; + } + // LB11 Do not break before or after Word joiner and related characters. + if (current === WJ || next === WJ) { + return BREAK_NOT_ALLOWED$1; + } + // LB12 Do not break after NBSP and related characters. + if (current === GL) { + return BREAK_NOT_ALLOWED$1; + } + // LB12a Do not break before NBSP and related characters, except after spaces and hyphens. + if ([SP, BA, HY].indexOf(current) === -1 && next === GL) { + return BREAK_NOT_ALLOWED$1; + } + // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces. + if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB14 Do not break after ‘[’, even after spaces. + if (previousNonSpaceClassType(currentIndex, classTypes) === OP) { + return BREAK_NOT_ALLOWED$1; + } + // LB15 Do not break within ‘”[’, even with intervening spaces. + if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) { + return BREAK_NOT_ALLOWED$1; + } + // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces. + if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) { + return BREAK_NOT_ALLOWED$1; + } + // LB17 Do not break within ‘——’, even with intervening spaces. + if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) { + return BREAK_NOT_ALLOWED$1; + } + // LB18 Break after spaces. + if (current === SP) { + return BREAK_ALLOWED$1; + } + // LB19 Do not break before or after quotation marks, such as ‘ ” ’. + if (current === QU || next === QU) { + return BREAK_NOT_ALLOWED$1; + } + // LB20 Break before and after unresolved CB. + if (next === CB || current === CB) { + return BREAK_ALLOWED$1; + } + // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents. + if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) { + return BREAK_NOT_ALLOWED$1; + } + // LB21a Don't break after Hebrew + Hyphen. + if (before === HL && HYPHEN.indexOf(current) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB21b Don’t break between Solidus and Hebrew letters. + if (current === SY && next === HL) { + return BREAK_NOT_ALLOWED$1; + } + // LB22 Do not break before ellipsis. + if (next === IN) { + return BREAK_NOT_ALLOWED$1; + } + // LB23 Do not break between digits and letters. + if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) { + return BREAK_NOT_ALLOWED$1; + } + // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes. + if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) || + ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) { + return BREAK_NOT_ALLOWED$1; + } + // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix. + if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) || + (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) { + return BREAK_NOT_ALLOWED$1; + } + // LB25 Do not break between the following pairs of classes relevant to numbers: + if ( + // (PR | PO) × ( OP | HY )? NU + ([PR, PO].indexOf(current) !== -1 && + (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) || + // ( OP | HY ) × NU + ([OP, HY].indexOf(current) !== -1 && next === NU) || + // NU × (NU | SY | IS) + (current === NU && [NU, SY, IS].indexOf(next) !== -1)) { + return BREAK_NOT_ALLOWED$1; + } + // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP) + if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) { + var prevIndex = currentIndex; + while (prevIndex >= 0) { + var type = classTypes[prevIndex]; + if (type === NU) { + return BREAK_NOT_ALLOWED$1; + } + else if ([SY, IS].indexOf(type) !== -1) { + prevIndex--; + } + else { + break; + } + } + } + // NU (NU | SY | IS)* (CL | CP)? × (PO | PR)) + if ([PR, PO].indexOf(next) !== -1) { + var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex; + while (prevIndex >= 0) { + var type = classTypes[prevIndex]; + if (type === NU) { + return BREAK_NOT_ALLOWED$1; + } + else if ([SY, IS].indexOf(type) !== -1) { + prevIndex--; + } + else { + break; + } + } + } + // LB26 Do not break a Korean syllable. + if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) || + ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) || + ([JT, H3].indexOf(current) !== -1 && next === JT)) { + return BREAK_NOT_ALLOWED$1; + } + // LB27 Treat a Korean Syllable Block the same as ID. + if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) || + (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) { + return BREAK_NOT_ALLOWED$1; + } + // LB28 Do not break between alphabetics (“at”). + if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”). + if (current === IS && ALPHABETICS.indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED$1; + } + // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses. + if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 && + next === OP && + ea_OP.indexOf(codePoints[afterIndex]) === -1) || + (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) { + return BREAK_NOT_ALLOWED$1; + } + // LB30a Break between two regional indicator symbols if and only if there are an even number of regional + // indicators preceding the position of the break. + if (current === RI$1 && next === RI$1) { + var i = indicies[currentIndex]; + var count = 1; + while (i > 0) { + i--; + if (classTypes[i] === RI$1) { + count++; + } + else { + break; + } + } + if (count % 2 !== 0) { + return BREAK_NOT_ALLOWED$1; + } + } + // LB30b Do not break between an emoji base and an emoji modifier. + if (current === EB && next === EM) { + return BREAK_NOT_ALLOWED$1; + } + return BREAK_ALLOWED$1; + }; + var cssFormattedClasses = function (codePoints, options) { + if (!options) { + options = { lineBreak: 'normal', wordBreak: 'normal' }; + } + var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2]; + if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') { + classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); }); + } + var forbiddenBreakpoints = options.wordBreak === 'keep-all' + ? isLetterNumber.map(function (letterNumber, i) { + return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff; + }) + : undefined; + return [indicies, classTypes, forbiddenBreakpoints]; + }; + var Break = /** @class */ (function () { + function Break(codePoints, lineBreak, start, end) { + this.codePoints = codePoints; + this.required = lineBreak === BREAK_MANDATORY; + this.start = start; + this.end = end; + } + Break.prototype.slice = function () { + return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end)); + }; + return Break; + }()); + var LineBreaker = function (str, options) { + var codePoints = toCodePoints$1(str); + var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2]; + var length = codePoints.length; + var lastEnd = 0; + var nextIndex = 0; + return { + next: function () { + if (nextIndex >= length) { + return { done: true, value: null }; + } + var lineBreak = BREAK_NOT_ALLOWED$1; + while (nextIndex < length && + (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === + BREAK_NOT_ALLOWED$1) { } + if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) { + var value = new Break(codePoints, lineBreak, lastEnd, nextIndex); + lastEnd = nextIndex; + return { value: value, done: false }; + } + return { done: true, value: null }; + }, + }; + }; + + // https://www.w3.org/TR/css-syntax-3 + var FLAG_UNRESTRICTED = 1 << 0; + var FLAG_ID = 1 << 1; + var FLAG_INTEGER = 1 << 2; + var FLAG_NUMBER = 1 << 3; + var LINE_FEED = 0x000a; + var SOLIDUS = 0x002f; + var REVERSE_SOLIDUS = 0x005c; + var CHARACTER_TABULATION = 0x0009; + var SPACE = 0x0020; + var QUOTATION_MARK = 0x0022; + var EQUALS_SIGN = 0x003d; + var NUMBER_SIGN = 0x0023; + var DOLLAR_SIGN = 0x0024; + var PERCENTAGE_SIGN = 0x0025; + var APOSTROPHE = 0x0027; + var LEFT_PARENTHESIS = 0x0028; + var RIGHT_PARENTHESIS = 0x0029; + var LOW_LINE = 0x005f; + var HYPHEN_MINUS = 0x002d; + var EXCLAMATION_MARK = 0x0021; + var LESS_THAN_SIGN = 0x003c; + var GREATER_THAN_SIGN = 0x003e; + var COMMERCIAL_AT = 0x0040; + var LEFT_SQUARE_BRACKET = 0x005b; + var RIGHT_SQUARE_BRACKET = 0x005d; + var CIRCUMFLEX_ACCENT = 0x003d; + var LEFT_CURLY_BRACKET = 0x007b; + var QUESTION_MARK = 0x003f; + var RIGHT_CURLY_BRACKET = 0x007d; + var VERTICAL_LINE = 0x007c; + var TILDE = 0x007e; + var CONTROL = 0x0080; + var REPLACEMENT_CHARACTER = 0xfffd; + var ASTERISK = 0x002a; + var PLUS_SIGN = 0x002b; + var COMMA = 0x002c; + var COLON = 0x003a; + var SEMICOLON = 0x003b; + var FULL_STOP = 0x002e; + var NULL = 0x0000; + var BACKSPACE = 0x0008; + var LINE_TABULATION = 0x000b; + var SHIFT_OUT = 0x000e; + var INFORMATION_SEPARATOR_ONE = 0x001f; + var DELETE = 0x007f; + var EOF = -1; + var ZERO = 0x0030; + var a = 0x0061; + var e = 0x0065; + var f = 0x0066; + var u = 0x0075; + var z = 0x007a; + var A = 0x0041; + var E = 0x0045; + var F = 0x0046; + var U = 0x0055; + var Z = 0x005a; + var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; }; + var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; }; + var isHex = function (codePoint) { + return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f); + }; + var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; }; + var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; }; + var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); }; + var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; }; + var isWhiteSpace = function (codePoint) { + return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE; + }; + var isNameStartCodePoint = function (codePoint) { + return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE; + }; + var isNameCodePoint = function (codePoint) { + return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS; + }; + var isNonPrintableCodePoint = function (codePoint) { + return ((codePoint >= NULL && codePoint <= BACKSPACE) || + codePoint === LINE_TABULATION || + (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) || + codePoint === DELETE); + }; + var isValidEscape = function (c1, c2) { + if (c1 !== REVERSE_SOLIDUS) { + return false; + } + return c2 !== LINE_FEED; + }; + var isIdentifierStart = function (c1, c2, c3) { + if (c1 === HYPHEN_MINUS) { + return isNameStartCodePoint(c2) || isValidEscape(c2, c3); + } + else if (isNameStartCodePoint(c1)) { + return true; + } + else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) { + return true; + } + return false; + }; + var isNumberStart = function (c1, c2, c3) { + if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { + if (isDigit(c2)) { + return true; + } + return c2 === FULL_STOP && isDigit(c3); + } + if (c1 === FULL_STOP) { + return isDigit(c2); + } + return isDigit(c1); + }; + var stringToNumber = function (codePoints) { + var c = 0; + var sign = 1; + if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) { + if (codePoints[c] === HYPHEN_MINUS) { + sign = -1; + } + c++; + } + var integers = []; + while (isDigit(codePoints[c])) { + integers.push(codePoints[c++]); + } + var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0; + if (codePoints[c] === FULL_STOP) { + c++; + } + var fraction = []; + while (isDigit(codePoints[c])) { + fraction.push(codePoints[c++]); + } + var fracd = fraction.length; + var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0; + if (codePoints[c] === E || codePoints[c] === e) { + c++; + } + var expsign = 1; + if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) { + if (codePoints[c] === HYPHEN_MINUS) { + expsign = -1; + } + c++; + } + var exponent = []; + while (isDigit(codePoints[c])) { + exponent.push(codePoints[c++]); + } + var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0; + return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp); + }; + var LEFT_PARENTHESIS_TOKEN = { + type: 2 /* LEFT_PARENTHESIS_TOKEN */ + }; + var RIGHT_PARENTHESIS_TOKEN = { + type: 3 /* RIGHT_PARENTHESIS_TOKEN */ + }; + var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ }; + var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ }; + var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ }; + var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ }; + var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ }; + var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ }; + var LEFT_CURLY_BRACKET_TOKEN = { + type: 11 /* LEFT_CURLY_BRACKET_TOKEN */ + }; + var RIGHT_CURLY_BRACKET_TOKEN = { + type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */ + }; + var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ }; + var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ }; + var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ }; + var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ }; + var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ }; + var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ }; + var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ }; + var LEFT_SQUARE_BRACKET_TOKEN = { + type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */ + }; + var RIGHT_SQUARE_BRACKET_TOKEN = { + type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */ + }; + var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ }; + var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ }; + var Tokenizer = /** @class */ (function () { + function Tokenizer() { + this._value = []; + } + Tokenizer.prototype.write = function (chunk) { + this._value = this._value.concat(toCodePoints$1(chunk)); + }; + Tokenizer.prototype.read = function () { + var tokens = []; + var token = this.consumeToken(); + while (token !== EOF_TOKEN) { + tokens.push(token); + token = this.consumeToken(); + } + return tokens; + }; + Tokenizer.prototype.consumeToken = function () { + var codePoint = this.consumeCodePoint(); + switch (codePoint) { + case QUOTATION_MARK: + return this.consumeStringToken(QUOTATION_MARK); + case NUMBER_SIGN: + var c1 = this.peekCodePoint(0); + var c2 = this.peekCodePoint(1); + var c3 = this.peekCodePoint(2); + if (isNameCodePoint(c1) || isValidEscape(c2, c3)) { + var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED; + var value = this.consumeName(); + return { type: 5 /* HASH_TOKEN */, value: value, flags: flags }; + } + break; + case DOLLAR_SIGN: + if (this.peekCodePoint(0) === EQUALS_SIGN) { + this.consumeCodePoint(); + return SUFFIX_MATCH_TOKEN; + } + break; + case APOSTROPHE: + return this.consumeStringToken(APOSTROPHE); + case LEFT_PARENTHESIS: + return LEFT_PARENTHESIS_TOKEN; + case RIGHT_PARENTHESIS: + return RIGHT_PARENTHESIS_TOKEN; + case ASTERISK: + if (this.peekCodePoint(0) === EQUALS_SIGN) { + this.consumeCodePoint(); + return SUBSTRING_MATCH_TOKEN; + } + break; + case PLUS_SIGN: + if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { + this.reconsumeCodePoint(codePoint); + return this.consumeNumericToken(); + } + break; + case COMMA: + return COMMA_TOKEN; + case HYPHEN_MINUS: + var e1 = codePoint; + var e2 = this.peekCodePoint(0); + var e3 = this.peekCodePoint(1); + if (isNumberStart(e1, e2, e3)) { + this.reconsumeCodePoint(codePoint); + return this.consumeNumericToken(); + } + if (isIdentifierStart(e1, e2, e3)) { + this.reconsumeCodePoint(codePoint); + return this.consumeIdentLikeToken(); + } + if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) { + this.consumeCodePoint(); + this.consumeCodePoint(); + return CDC_TOKEN; + } + break; + case FULL_STOP: + if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { + this.reconsumeCodePoint(codePoint); + return this.consumeNumericToken(); + } + break; + case SOLIDUS: + if (this.peekCodePoint(0) === ASTERISK) { + this.consumeCodePoint(); + while (true) { + var c = this.consumeCodePoint(); + if (c === ASTERISK) { + c = this.consumeCodePoint(); + if (c === SOLIDUS) { + return this.consumeToken(); + } + } + if (c === EOF) { + return this.consumeToken(); + } + } + } + break; + case COLON: + return COLON_TOKEN; + case SEMICOLON: + return SEMICOLON_TOKEN; + case LESS_THAN_SIGN: + if (this.peekCodePoint(0) === EXCLAMATION_MARK && + this.peekCodePoint(1) === HYPHEN_MINUS && + this.peekCodePoint(2) === HYPHEN_MINUS) { + this.consumeCodePoint(); + this.consumeCodePoint(); + return CDO_TOKEN; + } + break; + case COMMERCIAL_AT: + var a1 = this.peekCodePoint(0); + var a2 = this.peekCodePoint(1); + var a3 = this.peekCodePoint(2); + if (isIdentifierStart(a1, a2, a3)) { + var value = this.consumeName(); + return { type: 7 /* AT_KEYWORD_TOKEN */, value: value }; + } + break; + case LEFT_SQUARE_BRACKET: + return LEFT_SQUARE_BRACKET_TOKEN; + case REVERSE_SOLIDUS: + if (isValidEscape(codePoint, this.peekCodePoint(0))) { + this.reconsumeCodePoint(codePoint); + return this.consumeIdentLikeToken(); + } + break; + case RIGHT_SQUARE_BRACKET: + return RIGHT_SQUARE_BRACKET_TOKEN; + case CIRCUMFLEX_ACCENT: + if (this.peekCodePoint(0) === EQUALS_SIGN) { + this.consumeCodePoint(); + return PREFIX_MATCH_TOKEN; + } + break; + case LEFT_CURLY_BRACKET: + return LEFT_CURLY_BRACKET_TOKEN; + case RIGHT_CURLY_BRACKET: + return RIGHT_CURLY_BRACKET_TOKEN; + case u: + case U: + var u1 = this.peekCodePoint(0); + var u2 = this.peekCodePoint(1); + if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) { + this.consumeCodePoint(); + this.consumeUnicodeRangeToken(); + } + this.reconsumeCodePoint(codePoint); + return this.consumeIdentLikeToken(); + case VERTICAL_LINE: + if (this.peekCodePoint(0) === EQUALS_SIGN) { + this.consumeCodePoint(); + return DASH_MATCH_TOKEN; + } + if (this.peekCodePoint(0) === VERTICAL_LINE) { + this.consumeCodePoint(); + return COLUMN_TOKEN; + } + break; + case TILDE: + if (this.peekCodePoint(0) === EQUALS_SIGN) { + this.consumeCodePoint(); + return INCLUDE_MATCH_TOKEN; + } + break; + case EOF: + return EOF_TOKEN; + } + if (isWhiteSpace(codePoint)) { + this.consumeWhiteSpace(); + return WHITESPACE_TOKEN; + } + if (isDigit(codePoint)) { + this.reconsumeCodePoint(codePoint); + return this.consumeNumericToken(); + } + if (isNameStartCodePoint(codePoint)) { + this.reconsumeCodePoint(codePoint); + return this.consumeIdentLikeToken(); + } + return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) }; + }; + Tokenizer.prototype.consumeCodePoint = function () { + var value = this._value.shift(); + return typeof value === 'undefined' ? -1 : value; + }; + Tokenizer.prototype.reconsumeCodePoint = function (codePoint) { + this._value.unshift(codePoint); + }; + Tokenizer.prototype.peekCodePoint = function (delta) { + if (delta >= this._value.length) { + return -1; + } + return this._value[delta]; + }; + Tokenizer.prototype.consumeUnicodeRangeToken = function () { + var digits = []; + var codePoint = this.consumeCodePoint(); + while (isHex(codePoint) && digits.length < 6) { + digits.push(codePoint); + codePoint = this.consumeCodePoint(); + } + var questionMarks = false; + while (codePoint === QUESTION_MARK && digits.length < 6) { + digits.push(codePoint); + codePoint = this.consumeCodePoint(); + questionMarks = true; + } + if (questionMarks) { + var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16); + var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16); + return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end }; + } + var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16); + if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) { + this.consumeCodePoint(); + codePoint = this.consumeCodePoint(); + var endDigits = []; + while (isHex(codePoint) && endDigits.length < 6) { + endDigits.push(codePoint); + codePoint = this.consumeCodePoint(); + } + var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16); + return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end }; + } + else { + return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start }; + } + }; + Tokenizer.prototype.consumeIdentLikeToken = function () { + var value = this.consumeName(); + if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) { + this.consumeCodePoint(); + return this.consumeUrlToken(); + } + else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) { + this.consumeCodePoint(); + return { type: 19 /* FUNCTION_TOKEN */, value: value }; + } + return { type: 20 /* IDENT_TOKEN */, value: value }; + }; + Tokenizer.prototype.consumeUrlToken = function () { + var value = []; + this.consumeWhiteSpace(); + if (this.peekCodePoint(0) === EOF) { + return { type: 22 /* URL_TOKEN */, value: '' }; + } + var next = this.peekCodePoint(0); + if (next === APOSTROPHE || next === QUOTATION_MARK) { + var stringToken = this.consumeStringToken(this.consumeCodePoint()); + if (stringToken.type === 0 /* STRING_TOKEN */) { + this.consumeWhiteSpace(); + if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { + this.consumeCodePoint(); + return { type: 22 /* URL_TOKEN */, value: stringToken.value }; + } + } + this.consumeBadUrlRemnants(); + return BAD_URL_TOKEN; + } + while (true) { + var codePoint = this.consumeCodePoint(); + if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) { + return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) }; + } + else if (isWhiteSpace(codePoint)) { + this.consumeWhiteSpace(); + if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { + this.consumeCodePoint(); + return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) }; + } + this.consumeBadUrlRemnants(); + return BAD_URL_TOKEN; + } + else if (codePoint === QUOTATION_MARK || + codePoint === APOSTROPHE || + codePoint === LEFT_PARENTHESIS || + isNonPrintableCodePoint(codePoint)) { + this.consumeBadUrlRemnants(); + return BAD_URL_TOKEN; + } + else if (codePoint === REVERSE_SOLIDUS) { + if (isValidEscape(codePoint, this.peekCodePoint(0))) { + value.push(this.consumeEscapedCodePoint()); + } + else { + this.consumeBadUrlRemnants(); + return BAD_URL_TOKEN; + } + } + else { + value.push(codePoint); + } + } + }; + Tokenizer.prototype.consumeWhiteSpace = function () { + while (isWhiteSpace(this.peekCodePoint(0))) { + this.consumeCodePoint(); + } + }; + Tokenizer.prototype.consumeBadUrlRemnants = function () { + while (true) { + var codePoint = this.consumeCodePoint(); + if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) { + return; + } + if (isValidEscape(codePoint, this.peekCodePoint(0))) { + this.consumeEscapedCodePoint(); + } + } + }; + Tokenizer.prototype.consumeStringSlice = function (count) { + var SLICE_STACK_SIZE = 50000; + var value = ''; + while (count > 0) { + var amount = Math.min(SLICE_STACK_SIZE, count); + value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount)); + count -= amount; + } + this._value.shift(); + return value; + }; + Tokenizer.prototype.consumeStringToken = function (endingCodePoint) { + var value = ''; + var i = 0; + do { + var codePoint = this._value[i]; + if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) { + value += this.consumeStringSlice(i); + return { type: 0 /* STRING_TOKEN */, value: value }; + } + if (codePoint === LINE_FEED) { + this._value.splice(0, i); + return BAD_STRING_TOKEN; + } + if (codePoint === REVERSE_SOLIDUS) { + var next = this._value[i + 1]; + if (next !== EOF && next !== undefined) { + if (next === LINE_FEED) { + value += this.consumeStringSlice(i); + i = -1; + this._value.shift(); + } + else if (isValidEscape(codePoint, next)) { + value += this.consumeStringSlice(i); + value += fromCodePoint$1(this.consumeEscapedCodePoint()); + i = -1; + } + } + } + i++; + } while (true); + }; + Tokenizer.prototype.consumeNumber = function () { + var repr = []; + var type = FLAG_INTEGER; + var c1 = this.peekCodePoint(0); + if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { + repr.push(this.consumeCodePoint()); + } + while (isDigit(this.peekCodePoint(0))) { + repr.push(this.consumeCodePoint()); + } + c1 = this.peekCodePoint(0); + var c2 = this.peekCodePoint(1); + if (c1 === FULL_STOP && isDigit(c2)) { + repr.push(this.consumeCodePoint(), this.consumeCodePoint()); + type = FLAG_NUMBER; + while (isDigit(this.peekCodePoint(0))) { + repr.push(this.consumeCodePoint()); + } + } + c1 = this.peekCodePoint(0); + c2 = this.peekCodePoint(1); + var c3 = this.peekCodePoint(2); + if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) { + repr.push(this.consumeCodePoint(), this.consumeCodePoint()); + type = FLAG_NUMBER; + while (isDigit(this.peekCodePoint(0))) { + repr.push(this.consumeCodePoint()); + } + } + return [stringToNumber(repr), type]; + }; + Tokenizer.prototype.consumeNumericToken = function () { + var _a = this.consumeNumber(), number = _a[0], flags = _a[1]; + var c1 = this.peekCodePoint(0); + var c2 = this.peekCodePoint(1); + var c3 = this.peekCodePoint(2); + if (isIdentifierStart(c1, c2, c3)) { + var unit = this.consumeName(); + return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit }; + } + if (c1 === PERCENTAGE_SIGN) { + this.consumeCodePoint(); + return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags }; + } + return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags }; + }; + Tokenizer.prototype.consumeEscapedCodePoint = function () { + var codePoint = this.consumeCodePoint(); + if (isHex(codePoint)) { + var hex = fromCodePoint$1(codePoint); + while (isHex(this.peekCodePoint(0)) && hex.length < 6) { + hex += fromCodePoint$1(this.consumeCodePoint()); + } + if (isWhiteSpace(this.peekCodePoint(0))) { + this.consumeCodePoint(); + } + var hexCodePoint = parseInt(hex, 16); + if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) { + return REPLACEMENT_CHARACTER; + } + return hexCodePoint; + } + if (codePoint === EOF) { + return REPLACEMENT_CHARACTER; + } + return codePoint; + }; + Tokenizer.prototype.consumeName = function () { + var result = ''; + while (true) { + var codePoint = this.consumeCodePoint(); + if (isNameCodePoint(codePoint)) { + result += fromCodePoint$1(codePoint); + } + else if (isValidEscape(codePoint, this.peekCodePoint(0))) { + result += fromCodePoint$1(this.consumeEscapedCodePoint()); + } + else { + this.reconsumeCodePoint(codePoint); + return result; + } + } + }; + return Tokenizer; + }()); + + var Parser = /** @class */ (function () { + function Parser(tokens) { + this._tokens = tokens; + } + Parser.create = function (value) { + var tokenizer = new Tokenizer(); + tokenizer.write(value); + return new Parser(tokenizer.read()); + }; + Parser.parseValue = function (value) { + return Parser.create(value).parseComponentValue(); + }; + Parser.parseValues = function (value) { + return Parser.create(value).parseComponentValues(); + }; + Parser.prototype.parseComponentValue = function () { + var token = this.consumeToken(); + while (token.type === 31 /* WHITESPACE_TOKEN */) { + token = this.consumeToken(); + } + if (token.type === 32 /* EOF_TOKEN */) { + throw new SyntaxError("Error parsing CSS component value, unexpected EOF"); + } + this.reconsumeToken(token); + var value = this.consumeComponentValue(); + do { + token = this.consumeToken(); + } while (token.type === 31 /* WHITESPACE_TOKEN */); + if (token.type === 32 /* EOF_TOKEN */) { + return value; + } + throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one"); + }; + Parser.prototype.parseComponentValues = function () { + var values = []; + while (true) { + var value = this.consumeComponentValue(); + if (value.type === 32 /* EOF_TOKEN */) { + return values; + } + values.push(value); + values.push(); + } + }; + Parser.prototype.consumeComponentValue = function () { + var token = this.consumeToken(); + switch (token.type) { + case 11 /* LEFT_CURLY_BRACKET_TOKEN */: + case 28 /* LEFT_SQUARE_BRACKET_TOKEN */: + case 2 /* LEFT_PARENTHESIS_TOKEN */: + return this.consumeSimpleBlock(token.type); + case 19 /* FUNCTION_TOKEN */: + return this.consumeFunction(token); + } + return token; + }; + Parser.prototype.consumeSimpleBlock = function (type) { + var block = { type: type, values: [] }; + var token = this.consumeToken(); + while (true) { + if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) { + return block; + } + this.reconsumeToken(token); + block.values.push(this.consumeComponentValue()); + token = this.consumeToken(); + } + }; + Parser.prototype.consumeFunction = function (functionToken) { + var cssFunction = { + name: functionToken.value, + values: [], + type: 18 /* FUNCTION */ + }; + while (true) { + var token = this.consumeToken(); + if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) { + return cssFunction; + } + this.reconsumeToken(token); + cssFunction.values.push(this.consumeComponentValue()); + } + }; + Parser.prototype.consumeToken = function () { + var token = this._tokens.shift(); + return typeof token === 'undefined' ? EOF_TOKEN : token; + }; + Parser.prototype.reconsumeToken = function (token) { + this._tokens.unshift(token); + }; + return Parser; + }()); + var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; }; + var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; }; + var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; }; + var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; }; + var isIdentWithValue = function (token, value) { + return isIdentToken(token) && token.value === value; + }; + var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; }; + var nonFunctionArgSeparator = function (token) { + return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */; + }; + var parseFunctionArgs = function (tokens) { + var args = []; + var arg = []; + tokens.forEach(function (token) { + if (token.type === 4 /* COMMA_TOKEN */) { + if (arg.length === 0) { + throw new Error("Error parsing function args, zero tokens for arg"); + } + args.push(arg); + arg = []; + return; + } + if (token.type !== 31 /* WHITESPACE_TOKEN */) { + arg.push(token); + } + }); + if (arg.length) { + args.push(arg); + } + return args; + }; + var isEndingTokenFor = function (token, type) { + if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) { + return true; + } + if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) { + return true; + } + return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */; + }; + + var isLength = function (token) { + return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */; + }; + + var isLengthPercentage = function (token) { + return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token); + }; + var parseLengthPercentageTuple = function (tokens) { + return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]]; + }; + var ZERO_LENGTH = { + type: 17 /* NUMBER_TOKEN */, + number: 0, + flags: FLAG_INTEGER + }; + var FIFTY_PERCENT = { + type: 16 /* PERCENTAGE_TOKEN */, + number: 50, + flags: FLAG_INTEGER + }; + var HUNDRED_PERCENT = { + type: 16 /* PERCENTAGE_TOKEN */, + number: 100, + flags: FLAG_INTEGER + }; + var getAbsoluteValueForTuple = function (tuple, width, height) { + var x = tuple[0], y = tuple[1]; + return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)]; + }; + var getAbsoluteValue = function (token, parent) { + if (token.type === 16 /* PERCENTAGE_TOKEN */) { + return (token.number / 100) * parent; + } + if (isDimensionToken(token)) { + switch (token.unit) { + case 'rem': + case 'em': + return 16 * token.number; // TODO use correct font-size + case 'px': + default: + return token.number; + } + } + return token.number; + }; + + var DEG = 'deg'; + var GRAD = 'grad'; + var RAD = 'rad'; + var TURN = 'turn'; + var angle = { + name: 'angle', + parse: function (_context, value) { + if (value.type === 15 /* DIMENSION_TOKEN */) { + switch (value.unit) { + case DEG: + return (Math.PI * value.number) / 180; + case GRAD: + return (Math.PI / 200) * value.number; + case RAD: + return value.number; + case TURN: + return Math.PI * 2 * value.number; + } + } + throw new Error("Unsupported angle type"); + } + }; + var isAngle = function (value) { + if (value.type === 15 /* DIMENSION_TOKEN */) { + if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) { + return true; + } + } + return false; + }; + var parseNamedSide = function (tokens) { + var sideOrCorner = tokens + .filter(isIdentToken) + .map(function (ident) { return ident.value; }) + .join(' '); + switch (sideOrCorner) { + case 'to bottom right': + case 'to right bottom': + case 'left top': + case 'top left': + return [ZERO_LENGTH, ZERO_LENGTH]; + case 'to top': + case 'bottom': + return deg(0); + case 'to bottom left': + case 'to left bottom': + case 'right top': + case 'top right': + return [ZERO_LENGTH, HUNDRED_PERCENT]; + case 'to right': + case 'left': + return deg(90); + case 'to top left': + case 'to left top': + case 'right bottom': + case 'bottom right': + return [HUNDRED_PERCENT, HUNDRED_PERCENT]; + case 'to bottom': + case 'top': + return deg(180); + case 'to top right': + case 'to right top': + case 'left bottom': + case 'bottom left': + return [HUNDRED_PERCENT, ZERO_LENGTH]; + case 'to left': + case 'right': + return deg(270); + } + return 0; + }; + var deg = function (deg) { return (Math.PI * deg) / 180; }; + + var color$1 = { + name: 'color', + parse: function (context, value) { + if (value.type === 18 /* FUNCTION */) { + var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name]; + if (typeof colorFunction === 'undefined') { + throw new Error("Attempting to parse an unsupported color function \"" + value.name + "\""); + } + return colorFunction(context, value.values); + } + if (value.type === 5 /* HASH_TOKEN */) { + if (value.value.length === 3) { + var r = value.value.substring(0, 1); + var g = value.value.substring(1, 2); + var b = value.value.substring(2, 3); + return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1); + } + if (value.value.length === 4) { + var r = value.value.substring(0, 1); + var g = value.value.substring(1, 2); + var b = value.value.substring(2, 3); + var a = value.value.substring(3, 4); + return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255); + } + if (value.value.length === 6) { + var r = value.value.substring(0, 2); + var g = value.value.substring(2, 4); + var b = value.value.substring(4, 6); + return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1); + } + if (value.value.length === 8) { + var r = value.value.substring(0, 2); + var g = value.value.substring(2, 4); + var b = value.value.substring(4, 6); + var a = value.value.substring(6, 8); + return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255); + } + } + if (value.type === 20 /* IDENT_TOKEN */) { + var namedColor = COLORS[value.value.toUpperCase()]; + if (typeof namedColor !== 'undefined') { + return namedColor; + } + } + return COLORS.TRANSPARENT; + } + }; + var isTransparent = function (color) { return (0xff & color) === 0; }; + var asString = function (color) { + var alpha = 0xff & color; + var blue = 0xff & (color >> 8); + var green = 0xff & (color >> 16); + var red = 0xff & (color >> 24); + return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")"; + }; + var pack = function (r, g, b, a) { + return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0; + }; + var getTokenColorValue = function (token, i) { + if (token.type === 17 /* NUMBER_TOKEN */) { + return token.number; + } + if (token.type === 16 /* PERCENTAGE_TOKEN */) { + var max = i === 3 ? 1 : 255; + return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max); + } + return 0; + }; + var rgb = function (_context, args) { + var tokens = args.filter(nonFunctionArgSeparator); + if (tokens.length === 3) { + var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2]; + return pack(r, g, b, 1); + } + if (tokens.length === 4) { + var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3]; + return pack(r, g, b, a); + } + return 0; + }; + function hue2rgb(t1, t2, hue) { + if (hue < 0) { + hue += 1; + } + if (hue >= 1) { + hue -= 1; + } + if (hue < 1 / 6) { + return (t2 - t1) * hue * 6 + t1; + } + else if (hue < 1 / 2) { + return t2; + } + else if (hue < 2 / 3) { + return (t2 - t1) * 6 * (2 / 3 - hue) + t1; + } + else { + return t1; + } + } + var hsl = function (context, args) { + var tokens = args.filter(nonFunctionArgSeparator); + var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3]; + var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2); + var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0; + var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0; + var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1; + if (s === 0) { + return pack(l * 255, l * 255, l * 255, 1); + } + var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var t1 = l * 2 - t2; + var r = hue2rgb(t1, t2, h + 1 / 3); + var g = hue2rgb(t1, t2, h); + var b = hue2rgb(t1, t2, h - 1 / 3); + return pack(r * 255, g * 255, b * 255, a); + }; + var SUPPORTED_COLOR_FUNCTIONS = { + hsl: hsl, + hsla: hsl, + rgb: rgb, + rgba: rgb + }; + var parseColor = function (context, value) { + return color$1.parse(context, Parser.create(value).parseComponentValue()); + }; + var COLORS = { + ALICEBLUE: 0xf0f8ffff, + ANTIQUEWHITE: 0xfaebd7ff, + AQUA: 0x00ffffff, + AQUAMARINE: 0x7fffd4ff, + AZURE: 0xf0ffffff, + BEIGE: 0xf5f5dcff, + BISQUE: 0xffe4c4ff, + BLACK: 0x000000ff, + BLANCHEDALMOND: 0xffebcdff, + BLUE: 0x0000ffff, + BLUEVIOLET: 0x8a2be2ff, + BROWN: 0xa52a2aff, + BURLYWOOD: 0xdeb887ff, + CADETBLUE: 0x5f9ea0ff, + CHARTREUSE: 0x7fff00ff, + CHOCOLATE: 0xd2691eff, + CORAL: 0xff7f50ff, + CORNFLOWERBLUE: 0x6495edff, + CORNSILK: 0xfff8dcff, + CRIMSON: 0xdc143cff, + CYAN: 0x00ffffff, + DARKBLUE: 0x00008bff, + DARKCYAN: 0x008b8bff, + DARKGOLDENROD: 0xb886bbff, + DARKGRAY: 0xa9a9a9ff, + DARKGREEN: 0x006400ff, + DARKGREY: 0xa9a9a9ff, + DARKKHAKI: 0xbdb76bff, + DARKMAGENTA: 0x8b008bff, + DARKOLIVEGREEN: 0x556b2fff, + DARKORANGE: 0xff8c00ff, + DARKORCHID: 0x9932ccff, + DARKRED: 0x8b0000ff, + DARKSALMON: 0xe9967aff, + DARKSEAGREEN: 0x8fbc8fff, + DARKSLATEBLUE: 0x483d8bff, + DARKSLATEGRAY: 0x2f4f4fff, + DARKSLATEGREY: 0x2f4f4fff, + DARKTURQUOISE: 0x00ced1ff, + DARKVIOLET: 0x9400d3ff, + DEEPPINK: 0xff1493ff, + DEEPSKYBLUE: 0x00bfffff, + DIMGRAY: 0x696969ff, + DIMGREY: 0x696969ff, + DODGERBLUE: 0x1e90ffff, + FIREBRICK: 0xb22222ff, + FLORALWHITE: 0xfffaf0ff, + FORESTGREEN: 0x228b22ff, + FUCHSIA: 0xff00ffff, + GAINSBORO: 0xdcdcdcff, + GHOSTWHITE: 0xf8f8ffff, + GOLD: 0xffd700ff, + GOLDENROD: 0xdaa520ff, + GRAY: 0x808080ff, + GREEN: 0x008000ff, + GREENYELLOW: 0xadff2fff, + GREY: 0x808080ff, + HONEYDEW: 0xf0fff0ff, + HOTPINK: 0xff69b4ff, + INDIANRED: 0xcd5c5cff, + INDIGO: 0x4b0082ff, + IVORY: 0xfffff0ff, + KHAKI: 0xf0e68cff, + LAVENDER: 0xe6e6faff, + LAVENDERBLUSH: 0xfff0f5ff, + LAWNGREEN: 0x7cfc00ff, + LEMONCHIFFON: 0xfffacdff, + LIGHTBLUE: 0xadd8e6ff, + LIGHTCORAL: 0xf08080ff, + LIGHTCYAN: 0xe0ffffff, + LIGHTGOLDENRODYELLOW: 0xfafad2ff, + LIGHTGRAY: 0xd3d3d3ff, + LIGHTGREEN: 0x90ee90ff, + LIGHTGREY: 0xd3d3d3ff, + LIGHTPINK: 0xffb6c1ff, + LIGHTSALMON: 0xffa07aff, + LIGHTSEAGREEN: 0x20b2aaff, + LIGHTSKYBLUE: 0x87cefaff, + LIGHTSLATEGRAY: 0x778899ff, + LIGHTSLATEGREY: 0x778899ff, + LIGHTSTEELBLUE: 0xb0c4deff, + LIGHTYELLOW: 0xffffe0ff, + LIME: 0x00ff00ff, + LIMEGREEN: 0x32cd32ff, + LINEN: 0xfaf0e6ff, + MAGENTA: 0xff00ffff, + MAROON: 0x800000ff, + MEDIUMAQUAMARINE: 0x66cdaaff, + MEDIUMBLUE: 0x0000cdff, + MEDIUMORCHID: 0xba55d3ff, + MEDIUMPURPLE: 0x9370dbff, + MEDIUMSEAGREEN: 0x3cb371ff, + MEDIUMSLATEBLUE: 0x7b68eeff, + MEDIUMSPRINGGREEN: 0x00fa9aff, + MEDIUMTURQUOISE: 0x48d1ccff, + MEDIUMVIOLETRED: 0xc71585ff, + MIDNIGHTBLUE: 0x191970ff, + MINTCREAM: 0xf5fffaff, + MISTYROSE: 0xffe4e1ff, + MOCCASIN: 0xffe4b5ff, + NAVAJOWHITE: 0xffdeadff, + NAVY: 0x000080ff, + OLDLACE: 0xfdf5e6ff, + OLIVE: 0x808000ff, + OLIVEDRAB: 0x6b8e23ff, + ORANGE: 0xffa500ff, + ORANGERED: 0xff4500ff, + ORCHID: 0xda70d6ff, + PALEGOLDENROD: 0xeee8aaff, + PALEGREEN: 0x98fb98ff, + PALETURQUOISE: 0xafeeeeff, + PALEVIOLETRED: 0xdb7093ff, + PAPAYAWHIP: 0xffefd5ff, + PEACHPUFF: 0xffdab9ff, + PERU: 0xcd853fff, + PINK: 0xffc0cbff, + PLUM: 0xdda0ddff, + POWDERBLUE: 0xb0e0e6ff, + PURPLE: 0x800080ff, + REBECCAPURPLE: 0x663399ff, + RED: 0xff0000ff, + ROSYBROWN: 0xbc8f8fff, + ROYALBLUE: 0x4169e1ff, + SADDLEBROWN: 0x8b4513ff, + SALMON: 0xfa8072ff, + SANDYBROWN: 0xf4a460ff, + SEAGREEN: 0x2e8b57ff, + SEASHELL: 0xfff5eeff, + SIENNA: 0xa0522dff, + SILVER: 0xc0c0c0ff, + SKYBLUE: 0x87ceebff, + SLATEBLUE: 0x6a5acdff, + SLATEGRAY: 0x708090ff, + SLATEGREY: 0x708090ff, + SNOW: 0xfffafaff, + SPRINGGREEN: 0x00ff7fff, + STEELBLUE: 0x4682b4ff, + TAN: 0xd2b48cff, + TEAL: 0x008080ff, + THISTLE: 0xd8bfd8ff, + TOMATO: 0xff6347ff, + TRANSPARENT: 0x00000000, + TURQUOISE: 0x40e0d0ff, + VIOLET: 0xee82eeff, + WHEAT: 0xf5deb3ff, + WHITE: 0xffffffff, + WHITESMOKE: 0xf5f5f5ff, + YELLOW: 0xffff00ff, + YELLOWGREEN: 0x9acd32ff + }; + + var backgroundClip = { + name: 'background-clip', + initialValue: 'border-box', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return tokens.map(function (token) { + if (isIdentToken(token)) { + switch (token.value) { + case 'padding-box': + return 1 /* PADDING_BOX */; + case 'content-box': + return 2 /* CONTENT_BOX */; + } + } + return 0 /* BORDER_BOX */; + }); + } + }; + + var backgroundColor = { + name: "background-color", + initialValue: 'transparent', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'color' + }; + + var parseColorStop = function (context, args) { + var color = color$1.parse(context, args[0]); + var stop = args[1]; + return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null }; + }; + var processColorStops = function (stops, lineLength) { + var first = stops[0]; + var last = stops[stops.length - 1]; + if (first.stop === null) { + first.stop = ZERO_LENGTH; + } + if (last.stop === null) { + last.stop = HUNDRED_PERCENT; + } + var processStops = []; + var previous = 0; + for (var i = 0; i < stops.length; i++) { + var stop_1 = stops[i].stop; + if (stop_1 !== null) { + var absoluteValue = getAbsoluteValue(stop_1, lineLength); + if (absoluteValue > previous) { + processStops.push(absoluteValue); + } + else { + processStops.push(previous); + } + previous = absoluteValue; + } + else { + processStops.push(null); + } + } + var gapBegin = null; + for (var i = 0; i < processStops.length; i++) { + var stop_2 = processStops[i]; + if (stop_2 === null) { + if (gapBegin === null) { + gapBegin = i; + } + } + else if (gapBegin !== null) { + var gapLength = i - gapBegin; + var beforeGap = processStops[gapBegin - 1]; + var gapValue = (stop_2 - beforeGap) / (gapLength + 1); + for (var g = 1; g <= gapLength; g++) { + processStops[gapBegin + g - 1] = gapValue * g; + } + gapBegin = null; + } + } + return stops.map(function (_a, i) { + var color = _a.color; + return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) }; + }); + }; + var getAngleFromCorner = function (corner, width, height) { + var centerX = width / 2; + var centerY = height / 2; + var x = getAbsoluteValue(corner[0], width) - centerX; + var y = centerY - getAbsoluteValue(corner[1], height); + return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2); + }; + var calculateGradientDirection = function (angle, width, height) { + var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height); + var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian)); + var halfWidth = width / 2; + var halfHeight = height / 2; + var halfLineLength = lineLength / 2; + var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength; + var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength; + return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff]; + }; + var distance = function (a, b) { return Math.sqrt(a * a + b * b); }; + var findCorner = function (width, height, x, y, closest) { + var corners = [ + [0, 0], + [0, height], + [width, 0], + [width, height] + ]; + return corners.reduce(function (stat, corner) { + var cx = corner[0], cy = corner[1]; + var d = distance(x - cx, y - cy); + if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) { + return { + optimumCorner: corner, + optimumDistance: d + }; + } + return stat; + }, { + optimumDistance: closest ? Infinity : -Infinity, + optimumCorner: null + }).optimumCorner; + }; + var calculateRadius = function (gradient, x, y, width, height) { + var rx = 0; + var ry = 0; + switch (gradient.size) { + case 0 /* CLOSEST_SIDE */: + // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center. + // If the shape is an ellipse, it exactly meets the closest side in each dimension. + if (gradient.shape === 0 /* CIRCLE */) { + rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height)); + } + else if (gradient.shape === 1 /* ELLIPSE */) { + rx = Math.min(Math.abs(x), Math.abs(x - width)); + ry = Math.min(Math.abs(y), Math.abs(y - height)); + } + break; + case 2 /* CLOSEST_CORNER */: + // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center. + // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified. + if (gradient.shape === 0 /* CIRCLE */) { + rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height)); + } + else if (gradient.shape === 1 /* ELLIPSE */) { + // Compute the ratio ry/rx (which is to be the same as for "closest-side") + var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width)); + var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1]; + rx = distance(cx - x, (cy - y) / c); + ry = c * rx; + } + break; + case 1 /* FARTHEST_SIDE */: + // Same as closest-side, except the ending shape is sized based on the farthest side(s) + if (gradient.shape === 0 /* CIRCLE */) { + rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height)); + } + else if (gradient.shape === 1 /* ELLIPSE */) { + rx = Math.max(Math.abs(x), Math.abs(x - width)); + ry = Math.max(Math.abs(y), Math.abs(y - height)); + } + break; + case 3 /* FARTHEST_CORNER */: + // Same as closest-corner, except the ending shape is sized based on the farthest corner. + // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified. + if (gradient.shape === 0 /* CIRCLE */) { + rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height)); + } + else if (gradient.shape === 1 /* ELLIPSE */) { + // Compute the ratio ry/rx (which is to be the same as for "farthest-side") + var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width)); + var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1]; + rx = distance(cx - x, (cy - y) / c); + ry = c * rx; + } + break; + } + if (Array.isArray(gradient.size)) { + rx = getAbsoluteValue(gradient.size[0], width); + ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx; + } + return [rx, ry]; + }; + + var linearGradient = function (context, tokens) { + var angle$1 = deg(180); + var stops = []; + parseFunctionArgs(tokens).forEach(function (arg, i) { + if (i === 0) { + var firstToken = arg[0]; + if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') { + angle$1 = parseNamedSide(arg); + return; + } + else if (isAngle(firstToken)) { + angle$1 = angle.parse(context, firstToken); + return; + } + } + var colorStop = parseColorStop(context, arg); + stops.push(colorStop); + }); + return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ }; + }; + + var prefixLinearGradient = function (context, tokens) { + var angle$1 = deg(180); + var stops = []; + parseFunctionArgs(tokens).forEach(function (arg, i) { + if (i === 0) { + var firstToken = arg[0]; + if (firstToken.type === 20 /* IDENT_TOKEN */ && + ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) { + angle$1 = parseNamedSide(arg); + return; + } + else if (isAngle(firstToken)) { + angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360); + return; + } + } + var colorStop = parseColorStop(context, arg); + stops.push(colorStop); + }); + return { + angle: angle$1, + stops: stops, + type: 1 /* LINEAR_GRADIENT */ + }; + }; + + var webkitGradient = function (context, tokens) { + var angle = deg(180); + var stops = []; + var type = 1 /* LINEAR_GRADIENT */; + var shape = 0 /* CIRCLE */; + var size = 3 /* FARTHEST_CORNER */; + var position = []; + parseFunctionArgs(tokens).forEach(function (arg, i) { + var firstToken = arg[0]; + if (i === 0) { + if (isIdentToken(firstToken) && firstToken.value === 'linear') { + type = 1 /* LINEAR_GRADIENT */; + return; + } + else if (isIdentToken(firstToken) && firstToken.value === 'radial') { + type = 2 /* RADIAL_GRADIENT */; + return; + } + } + if (firstToken.type === 18 /* FUNCTION */) { + if (firstToken.name === 'from') { + var color = color$1.parse(context, firstToken.values[0]); + stops.push({ stop: ZERO_LENGTH, color: color }); + } + else if (firstToken.name === 'to') { + var color = color$1.parse(context, firstToken.values[0]); + stops.push({ stop: HUNDRED_PERCENT, color: color }); + } + else if (firstToken.name === 'color-stop') { + var values = firstToken.values.filter(nonFunctionArgSeparator); + if (values.length === 2) { + var color = color$1.parse(context, values[1]); + var stop_1 = values[0]; + if (isNumberToken(stop_1)) { + stops.push({ + stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags }, + color: color + }); + } + } + } + } + }); + return type === 1 /* LINEAR_GRADIENT */ + ? { + angle: (angle + deg(180)) % deg(360), + stops: stops, + type: type + } + : { size: size, shape: shape, stops: stops, position: position, type: type }; + }; + + var CLOSEST_SIDE = 'closest-side'; + var FARTHEST_SIDE = 'farthest-side'; + var CLOSEST_CORNER = 'closest-corner'; + var FARTHEST_CORNER = 'farthest-corner'; + var CIRCLE = 'circle'; + var ELLIPSE = 'ellipse'; + var COVER = 'cover'; + var CONTAIN = 'contain'; + var radialGradient = function (context, tokens) { + var shape = 0 /* CIRCLE */; + var size = 3 /* FARTHEST_CORNER */; + var stops = []; + var position = []; + parseFunctionArgs(tokens).forEach(function (arg, i) { + var isColorStop = true; + if (i === 0) { + var isAtPosition_1 = false; + isColorStop = arg.reduce(function (acc, token) { + if (isAtPosition_1) { + if (isIdentToken(token)) { + switch (token.value) { + case 'center': + position.push(FIFTY_PERCENT); + return acc; + case 'top': + case 'left': + position.push(ZERO_LENGTH); + return acc; + case 'right': + case 'bottom': + position.push(HUNDRED_PERCENT); + return acc; + } + } + else if (isLengthPercentage(token) || isLength(token)) { + position.push(token); + } + } + else if (isIdentToken(token)) { + switch (token.value) { + case CIRCLE: + shape = 0 /* CIRCLE */; + return false; + case ELLIPSE: + shape = 1 /* ELLIPSE */; + return false; + case 'at': + isAtPosition_1 = true; + return false; + case CLOSEST_SIDE: + size = 0 /* CLOSEST_SIDE */; + return false; + case COVER: + case FARTHEST_SIDE: + size = 1 /* FARTHEST_SIDE */; + return false; + case CONTAIN: + case CLOSEST_CORNER: + size = 2 /* CLOSEST_CORNER */; + return false; + case FARTHEST_CORNER: + size = 3 /* FARTHEST_CORNER */; + return false; + } + } + else if (isLength(token) || isLengthPercentage(token)) { + if (!Array.isArray(size)) { + size = []; + } + size.push(token); + return false; + } + return acc; + }, isColorStop); + } + if (isColorStop) { + var colorStop = parseColorStop(context, arg); + stops.push(colorStop); + } + }); + return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ }; + }; + + var prefixRadialGradient = function (context, tokens) { + var shape = 0 /* CIRCLE */; + var size = 3 /* FARTHEST_CORNER */; + var stops = []; + var position = []; + parseFunctionArgs(tokens).forEach(function (arg, i) { + var isColorStop = true; + if (i === 0) { + isColorStop = arg.reduce(function (acc, token) { + if (isIdentToken(token)) { + switch (token.value) { + case 'center': + position.push(FIFTY_PERCENT); + return false; + case 'top': + case 'left': + position.push(ZERO_LENGTH); + return false; + case 'right': + case 'bottom': + position.push(HUNDRED_PERCENT); + return false; + } + } + else if (isLengthPercentage(token) || isLength(token)) { + position.push(token); + return false; + } + return acc; + }, isColorStop); + } + else if (i === 1) { + isColorStop = arg.reduce(function (acc, token) { + if (isIdentToken(token)) { + switch (token.value) { + case CIRCLE: + shape = 0 /* CIRCLE */; + return false; + case ELLIPSE: + shape = 1 /* ELLIPSE */; + return false; + case CONTAIN: + case CLOSEST_SIDE: + size = 0 /* CLOSEST_SIDE */; + return false; + case FARTHEST_SIDE: + size = 1 /* FARTHEST_SIDE */; + return false; + case CLOSEST_CORNER: + size = 2 /* CLOSEST_CORNER */; + return false; + case COVER: + case FARTHEST_CORNER: + size = 3 /* FARTHEST_CORNER */; + return false; + } + } + else if (isLength(token) || isLengthPercentage(token)) { + if (!Array.isArray(size)) { + size = []; + } + size.push(token); + return false; + } + return acc; + }, isColorStop); + } + if (isColorStop) { + var colorStop = parseColorStop(context, arg); + stops.push(colorStop); + } + }); + return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ }; + }; + + var isLinearGradient = function (background) { + return background.type === 1 /* LINEAR_GRADIENT */; + }; + var isRadialGradient = function (background) { + return background.type === 2 /* RADIAL_GRADIENT */; + }; + var image = { + name: 'image', + parse: function (context, value) { + if (value.type === 22 /* URL_TOKEN */) { + var image_1 = { url: value.value, type: 0 /* URL */ }; + context.cache.addImage(value.value); + return image_1; + } + if (value.type === 18 /* FUNCTION */) { + var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name]; + if (typeof imageFunction === 'undefined') { + throw new Error("Attempting to parse an unsupported image function \"" + value.name + "\""); + } + return imageFunction(context, value.values); + } + throw new Error("Unsupported image type " + value.type); + } + }; + function isSupportedImage(value) { + return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') && + (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])); + } + var SUPPORTED_IMAGE_FUNCTIONS = { + 'linear-gradient': linearGradient, + '-moz-linear-gradient': prefixLinearGradient, + '-ms-linear-gradient': prefixLinearGradient, + '-o-linear-gradient': prefixLinearGradient, + '-webkit-linear-gradient': prefixLinearGradient, + 'radial-gradient': radialGradient, + '-moz-radial-gradient': prefixRadialGradient, + '-ms-radial-gradient': prefixRadialGradient, + '-o-radial-gradient': prefixRadialGradient, + '-webkit-radial-gradient': prefixRadialGradient, + '-webkit-gradient': webkitGradient + }; + + var backgroundImage = { + name: 'background-image', + initialValue: 'none', + type: 1 /* LIST */, + prefix: false, + parse: function (context, tokens) { + if (tokens.length === 0) { + return []; + } + var first = tokens[0]; + if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') { + return []; + } + return tokens + .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }) + .map(function (value) { return image.parse(context, value); }); + } + }; + + var backgroundOrigin = { + name: 'background-origin', + initialValue: 'border-box', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return tokens.map(function (token) { + if (isIdentToken(token)) { + switch (token.value) { + case 'padding-box': + return 1 /* PADDING_BOX */; + case 'content-box': + return 2 /* CONTENT_BOX */; + } + } + return 0 /* BORDER_BOX */; + }); + } + }; + + var backgroundPosition = { + name: 'background-position', + initialValue: '0% 0%', + type: 1 /* LIST */, + prefix: false, + parse: function (_context, tokens) { + return parseFunctionArgs(tokens) + .map(function (values) { return values.filter(isLengthPercentage); }) + .map(parseLengthPercentageTuple); + } + }; + + var backgroundRepeat = { + name: 'background-repeat', + initialValue: 'repeat', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return parseFunctionArgs(tokens) + .map(function (values) { + return values + .filter(isIdentToken) + .map(function (token) { return token.value; }) + .join(' '); + }) + .map(parseBackgroundRepeat); + } + }; + var parseBackgroundRepeat = function (value) { + switch (value) { + case 'no-repeat': + return 1 /* NO_REPEAT */; + case 'repeat-x': + case 'repeat no-repeat': + return 2 /* REPEAT_X */; + case 'repeat-y': + case 'no-repeat repeat': + return 3 /* REPEAT_Y */; + case 'repeat': + default: + return 0 /* REPEAT */; + } + }; + + var BACKGROUND_SIZE; + (function (BACKGROUND_SIZE) { + BACKGROUND_SIZE["AUTO"] = "auto"; + BACKGROUND_SIZE["CONTAIN"] = "contain"; + BACKGROUND_SIZE["COVER"] = "cover"; + })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {})); + var backgroundSize = { + name: 'background-size', + initialValue: '0', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); }); + } + }; + var isBackgroundSizeInfoToken = function (value) { + return isIdentToken(value) || isLengthPercentage(value); + }; + + var borderColorForSide = function (side) { return ({ + name: "border-" + side + "-color", + initialValue: 'transparent', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'color' + }); }; + var borderTopColor = borderColorForSide('top'); + var borderRightColor = borderColorForSide('right'); + var borderBottomColor = borderColorForSide('bottom'); + var borderLeftColor = borderColorForSide('left'); + + var borderRadiusForSide = function (side) { return ({ + name: "border-radius-" + side, + initialValue: '0 0', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return parseLengthPercentageTuple(tokens.filter(isLengthPercentage)); + } + }); }; + var borderTopLeftRadius = borderRadiusForSide('top-left'); + var borderTopRightRadius = borderRadiusForSide('top-right'); + var borderBottomRightRadius = borderRadiusForSide('bottom-right'); + var borderBottomLeftRadius = borderRadiusForSide('bottom-left'); + + var borderStyleForSide = function (side) { return ({ + name: "border-" + side + "-style", + initialValue: 'solid', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, style) { + switch (style) { + case 'none': + return 0 /* NONE */; + case 'dashed': + return 2 /* DASHED */; + case 'dotted': + return 3 /* DOTTED */; + case 'double': + return 4 /* DOUBLE */; + } + return 1 /* SOLID */; + } + }); }; + var borderTopStyle = borderStyleForSide('top'); + var borderRightStyle = borderStyleForSide('right'); + var borderBottomStyle = borderStyleForSide('bottom'); + var borderLeftStyle = borderStyleForSide('left'); + + var borderWidthForSide = function (side) { return ({ + name: "border-" + side + "-width", + initialValue: '0', + type: 0 /* VALUE */, + prefix: false, + parse: function (_context, token) { + if (isDimensionToken(token)) { + return token.number; + } + return 0; + } + }); }; + var borderTopWidth = borderWidthForSide('top'); + var borderRightWidth = borderWidthForSide('right'); + var borderBottomWidth = borderWidthForSide('bottom'); + var borderLeftWidth = borderWidthForSide('left'); + + var color = { + name: "color", + initialValue: 'transparent', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'color' + }; + + var direction = { + name: 'direction', + initialValue: 'ltr', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, direction) { + switch (direction) { + case 'rtl': + return 1 /* RTL */; + case 'ltr': + default: + return 0 /* LTR */; + } + } + }; + + var display = { + name: 'display', + initialValue: 'inline-block', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return tokens.filter(isIdentToken).reduce(function (bit, token) { + return bit | parseDisplayValue(token.value); + }, 0 /* NONE */); + } + }; + var parseDisplayValue = function (display) { + switch (display) { + case 'block': + case '-webkit-box': + return 2 /* BLOCK */; + case 'inline': + return 4 /* INLINE */; + case 'run-in': + return 8 /* RUN_IN */; + case 'flow': + return 16 /* FLOW */; + case 'flow-root': + return 32 /* FLOW_ROOT */; + case 'table': + return 64 /* TABLE */; + case 'flex': + case '-webkit-flex': + return 128 /* FLEX */; + case 'grid': + case '-ms-grid': + return 256 /* GRID */; + case 'ruby': + return 512 /* RUBY */; + case 'subgrid': + return 1024 /* SUBGRID */; + case 'list-item': + return 2048 /* LIST_ITEM */; + case 'table-row-group': + return 4096 /* TABLE_ROW_GROUP */; + case 'table-header-group': + return 8192 /* TABLE_HEADER_GROUP */; + case 'table-footer-group': + return 16384 /* TABLE_FOOTER_GROUP */; + case 'table-row': + return 32768 /* TABLE_ROW */; + case 'table-cell': + return 65536 /* TABLE_CELL */; + case 'table-column-group': + return 131072 /* TABLE_COLUMN_GROUP */; + case 'table-column': + return 262144 /* TABLE_COLUMN */; + case 'table-caption': + return 524288 /* TABLE_CAPTION */; + case 'ruby-base': + return 1048576 /* RUBY_BASE */; + case 'ruby-text': + return 2097152 /* RUBY_TEXT */; + case 'ruby-base-container': + return 4194304 /* RUBY_BASE_CONTAINER */; + case 'ruby-text-container': + return 8388608 /* RUBY_TEXT_CONTAINER */; + case 'contents': + return 16777216 /* CONTENTS */; + case 'inline-block': + return 33554432 /* INLINE_BLOCK */; + case 'inline-list-item': + return 67108864 /* INLINE_LIST_ITEM */; + case 'inline-table': + return 134217728 /* INLINE_TABLE */; + case 'inline-flex': + return 268435456 /* INLINE_FLEX */; + case 'inline-grid': + return 536870912 /* INLINE_GRID */; + } + return 0 /* NONE */; + }; + + var float = { + name: 'float', + initialValue: 'none', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, float) { + switch (float) { + case 'left': + return 1 /* LEFT */; + case 'right': + return 2 /* RIGHT */; + case 'inline-start': + return 3 /* INLINE_START */; + case 'inline-end': + return 4 /* INLINE_END */; + } + return 0 /* NONE */; + } + }; + + var letterSpacing = { + name: 'letter-spacing', + initialValue: '0', + prefix: false, + type: 0 /* VALUE */, + parse: function (_context, token) { + if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') { + return 0; + } + if (token.type === 17 /* NUMBER_TOKEN */) { + return token.number; + } + if (token.type === 15 /* DIMENSION_TOKEN */) { + return token.number; + } + return 0; + } + }; + + var LINE_BREAK; + (function (LINE_BREAK) { + LINE_BREAK["NORMAL"] = "normal"; + LINE_BREAK["STRICT"] = "strict"; + })(LINE_BREAK || (LINE_BREAK = {})); + var lineBreak = { + name: 'line-break', + initialValue: 'normal', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, lineBreak) { + switch (lineBreak) { + case 'strict': + return LINE_BREAK.STRICT; + case 'normal': + default: + return LINE_BREAK.NORMAL; + } + } + }; + + var lineHeight = { + name: 'line-height', + initialValue: 'normal', + prefix: false, + type: 4 /* TOKEN_VALUE */ + }; + var computeLineHeight = function (token, fontSize) { + if (isIdentToken(token) && token.value === 'normal') { + return 1.2 * fontSize; + } + else if (token.type === 17 /* NUMBER_TOKEN */) { + return fontSize * token.number; + } + else if (isLengthPercentage(token)) { + return getAbsoluteValue(token, fontSize); + } + return fontSize; + }; + + var listStyleImage = { + name: 'list-style-image', + initialValue: 'none', + type: 0 /* VALUE */, + prefix: false, + parse: function (context, token) { + if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') { + return null; + } + return image.parse(context, token); + } + }; + + var listStylePosition = { + name: 'list-style-position', + initialValue: 'outside', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, position) { + switch (position) { + case 'inside': + return 0 /* INSIDE */; + case 'outside': + default: + return 1 /* OUTSIDE */; + } + } + }; + + var listStyleType = { + name: 'list-style-type', + initialValue: 'none', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, type) { + switch (type) { + case 'disc': + return 0 /* DISC */; + case 'circle': + return 1 /* CIRCLE */; + case 'square': + return 2 /* SQUARE */; + case 'decimal': + return 3 /* DECIMAL */; + case 'cjk-decimal': + return 4 /* CJK_DECIMAL */; + case 'decimal-leading-zero': + return 5 /* DECIMAL_LEADING_ZERO */; + case 'lower-roman': + return 6 /* LOWER_ROMAN */; + case 'upper-roman': + return 7 /* UPPER_ROMAN */; + case 'lower-greek': + return 8 /* LOWER_GREEK */; + case 'lower-alpha': + return 9 /* LOWER_ALPHA */; + case 'upper-alpha': + return 10 /* UPPER_ALPHA */; + case 'arabic-indic': + return 11 /* ARABIC_INDIC */; + case 'armenian': + return 12 /* ARMENIAN */; + case 'bengali': + return 13 /* BENGALI */; + case 'cambodian': + return 14 /* CAMBODIAN */; + case 'cjk-earthly-branch': + return 15 /* CJK_EARTHLY_BRANCH */; + case 'cjk-heavenly-stem': + return 16 /* CJK_HEAVENLY_STEM */; + case 'cjk-ideographic': + return 17 /* CJK_IDEOGRAPHIC */; + case 'devanagari': + return 18 /* DEVANAGARI */; + case 'ethiopic-numeric': + return 19 /* ETHIOPIC_NUMERIC */; + case 'georgian': + return 20 /* GEORGIAN */; + case 'gujarati': + return 21 /* GUJARATI */; + case 'gurmukhi': + return 22 /* GURMUKHI */; + case 'hebrew': + return 22 /* HEBREW */; + case 'hiragana': + return 23 /* HIRAGANA */; + case 'hiragana-iroha': + return 24 /* HIRAGANA_IROHA */; + case 'japanese-formal': + return 25 /* JAPANESE_FORMAL */; + case 'japanese-informal': + return 26 /* JAPANESE_INFORMAL */; + case 'kannada': + return 27 /* KANNADA */; + case 'katakana': + return 28 /* KATAKANA */; + case 'katakana-iroha': + return 29 /* KATAKANA_IROHA */; + case 'khmer': + return 30 /* KHMER */; + case 'korean-hangul-formal': + return 31 /* KOREAN_HANGUL_FORMAL */; + case 'korean-hanja-formal': + return 32 /* KOREAN_HANJA_FORMAL */; + case 'korean-hanja-informal': + return 33 /* KOREAN_HANJA_INFORMAL */; + case 'lao': + return 34 /* LAO */; + case 'lower-armenian': + return 35 /* LOWER_ARMENIAN */; + case 'malayalam': + return 36 /* MALAYALAM */; + case 'mongolian': + return 37 /* MONGOLIAN */; + case 'myanmar': + return 38 /* MYANMAR */; + case 'oriya': + return 39 /* ORIYA */; + case 'persian': + return 40 /* PERSIAN */; + case 'simp-chinese-formal': + return 41 /* SIMP_CHINESE_FORMAL */; + case 'simp-chinese-informal': + return 42 /* SIMP_CHINESE_INFORMAL */; + case 'tamil': + return 43 /* TAMIL */; + case 'telugu': + return 44 /* TELUGU */; + case 'thai': + return 45 /* THAI */; + case 'tibetan': + return 46 /* TIBETAN */; + case 'trad-chinese-formal': + return 47 /* TRAD_CHINESE_FORMAL */; + case 'trad-chinese-informal': + return 48 /* TRAD_CHINESE_INFORMAL */; + case 'upper-armenian': + return 49 /* UPPER_ARMENIAN */; + case 'disclosure-open': + return 50 /* DISCLOSURE_OPEN */; + case 'disclosure-closed': + return 51 /* DISCLOSURE_CLOSED */; + case 'none': + default: + return -1 /* NONE */; + } + } + }; + + var marginForSide = function (side) { return ({ + name: "margin-" + side, + initialValue: '0', + prefix: false, + type: 4 /* TOKEN_VALUE */ + }); }; + var marginTop = marginForSide('top'); + var marginRight = marginForSide('right'); + var marginBottom = marginForSide('bottom'); + var marginLeft = marginForSide('left'); + + var overflow = { + name: 'overflow', + initialValue: 'visible', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return tokens.filter(isIdentToken).map(function (overflow) { + switch (overflow.value) { + case 'hidden': + return 1 /* HIDDEN */; + case 'scroll': + return 2 /* SCROLL */; + case 'clip': + return 3 /* CLIP */; + case 'auto': + return 4 /* AUTO */; + case 'visible': + default: + return 0 /* VISIBLE */; + } + }); + } + }; + + var overflowWrap = { + name: 'overflow-wrap', + initialValue: 'normal', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, overflow) { + switch (overflow) { + case 'break-word': + return "break-word" /* BREAK_WORD */; + case 'normal': + default: + return "normal" /* NORMAL */; + } + } + }; + + var paddingForSide = function (side) { return ({ + name: "padding-" + side, + initialValue: '0', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'length-percentage' + }); }; + var paddingTop = paddingForSide('top'); + var paddingRight = paddingForSide('right'); + var paddingBottom = paddingForSide('bottom'); + var paddingLeft = paddingForSide('left'); + + var textAlign = { + name: 'text-align', + initialValue: 'left', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, textAlign) { + switch (textAlign) { + case 'right': + return 2 /* RIGHT */; + case 'center': + case 'justify': + return 1 /* CENTER */; + case 'left': + default: + return 0 /* LEFT */; + } + } + }; + + var position = { + name: 'position', + initialValue: 'static', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, position) { + switch (position) { + case 'relative': + return 1 /* RELATIVE */; + case 'absolute': + return 2 /* ABSOLUTE */; + case 'fixed': + return 3 /* FIXED */; + case 'sticky': + return 4 /* STICKY */; + } + return 0 /* STATIC */; + } + }; + + var textShadow = { + name: 'text-shadow', + initialValue: 'none', + type: 1 /* LIST */, + prefix: false, + parse: function (context, tokens) { + if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) { + return []; + } + return parseFunctionArgs(tokens).map(function (values) { + var shadow = { + color: COLORS.TRANSPARENT, + offsetX: ZERO_LENGTH, + offsetY: ZERO_LENGTH, + blur: ZERO_LENGTH + }; + var c = 0; + for (var i = 0; i < values.length; i++) { + var token = values[i]; + if (isLength(token)) { + if (c === 0) { + shadow.offsetX = token; + } + else if (c === 1) { + shadow.offsetY = token; + } + else { + shadow.blur = token; + } + c++; + } + else { + shadow.color = color$1.parse(context, token); + } + } + return shadow; + }); + } + }; + + var textTransform = { + name: 'text-transform', + initialValue: 'none', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, textTransform) { + switch (textTransform) { + case 'uppercase': + return 2 /* UPPERCASE */; + case 'lowercase': + return 1 /* LOWERCASE */; + case 'capitalize': + return 3 /* CAPITALIZE */; + } + return 0 /* NONE */; + } + }; + + var transform$1 = { + name: 'transform', + initialValue: 'none', + prefix: true, + type: 0 /* VALUE */, + parse: function (_context, token) { + if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') { + return null; + } + if (token.type === 18 /* FUNCTION */) { + var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name]; + if (typeof transformFunction === 'undefined') { + throw new Error("Attempting to parse an unsupported transform function \"" + token.name + "\""); + } + return transformFunction(token.values); + } + return null; + } + }; + var matrix = function (args) { + var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; }); + return values.length === 6 ? values : null; + }; + // doesn't support 3D transforms at the moment + var matrix3d = function (args) { + var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; }); + var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15]; + return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null; + }; + var SUPPORTED_TRANSFORM_FUNCTIONS = { + matrix: matrix, + matrix3d: matrix3d + }; + + var DEFAULT_VALUE = { + type: 16 /* PERCENTAGE_TOKEN */, + number: 50, + flags: FLAG_INTEGER + }; + var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE]; + var transformOrigin = { + name: 'transform-origin', + initialValue: '50% 50%', + prefix: true, + type: 1 /* LIST */, + parse: function (_context, tokens) { + var origins = tokens.filter(isLengthPercentage); + if (origins.length !== 2) { + return DEFAULT; + } + return [origins[0], origins[1]]; + } + }; + + var visibility = { + name: 'visible', + initialValue: 'none', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, visibility) { + switch (visibility) { + case 'hidden': + return 1 /* HIDDEN */; + case 'collapse': + return 2 /* COLLAPSE */; + case 'visible': + default: + return 0 /* VISIBLE */; + } + } + }; + + var WORD_BREAK; + (function (WORD_BREAK) { + WORD_BREAK["NORMAL"] = "normal"; + WORD_BREAK["BREAK_ALL"] = "break-all"; + WORD_BREAK["KEEP_ALL"] = "keep-all"; + })(WORD_BREAK || (WORD_BREAK = {})); + var wordBreak = { + name: 'word-break', + initialValue: 'normal', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, wordBreak) { + switch (wordBreak) { + case 'break-all': + return WORD_BREAK.BREAK_ALL; + case 'keep-all': + return WORD_BREAK.KEEP_ALL; + case 'normal': + default: + return WORD_BREAK.NORMAL; + } + } + }; + + var zIndex = { + name: 'z-index', + initialValue: 'auto', + prefix: false, + type: 0 /* VALUE */, + parse: function (_context, token) { + if (token.type === 20 /* IDENT_TOKEN */) { + return { auto: true, order: 0 }; + } + if (isNumberToken(token)) { + return { auto: false, order: token.number }; + } + throw new Error("Invalid z-index number parsed"); + } + }; + + var time = { + name: 'time', + parse: function (_context, value) { + if (value.type === 15 /* DIMENSION_TOKEN */) { + switch (value.unit.toLowerCase()) { + case 's': + return 1000 * value.number; + case 'ms': + return value.number; + } + } + throw new Error("Unsupported time type"); + } + }; + + var opacity = { + name: 'opacity', + initialValue: '1', + type: 0 /* VALUE */, + prefix: false, + parse: function (_context, token) { + if (isNumberToken(token)) { + return token.number; + } + return 1; + } + }; + + var textDecorationColor = { + name: "text-decoration-color", + initialValue: 'transparent', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'color' + }; + + var textDecorationLine = { + name: 'text-decoration-line', + initialValue: 'none', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + return tokens + .filter(isIdentToken) + .map(function (token) { + switch (token.value) { + case 'underline': + return 1 /* UNDERLINE */; + case 'overline': + return 2 /* OVERLINE */; + case 'line-through': + return 3 /* LINE_THROUGH */; + case 'none': + return 4 /* BLINK */; + } + return 0 /* NONE */; + }) + .filter(function (line) { return line !== 0 /* NONE */; }); + } + }; + + var fontFamily = { + name: "font-family", + initialValue: '', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + var accumulator = []; + var results = []; + tokens.forEach(function (token) { + switch (token.type) { + case 20 /* IDENT_TOKEN */: + case 0 /* STRING_TOKEN */: + accumulator.push(token.value); + break; + case 17 /* NUMBER_TOKEN */: + accumulator.push(token.number.toString()); + break; + case 4 /* COMMA_TOKEN */: + results.push(accumulator.join(' ')); + accumulator.length = 0; + break; + } + }); + if (accumulator.length) { + results.push(accumulator.join(' ')); + } + return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : "'" + result + "'"); }); + } + }; + + var fontSize = { + name: "font-size", + initialValue: '0', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'length' + }; + + var fontWeight = { + name: 'font-weight', + initialValue: 'normal', + type: 0 /* VALUE */, + prefix: false, + parse: function (_context, token) { + if (isNumberToken(token)) { + return token.number; + } + if (isIdentToken(token)) { + switch (token.value) { + case 'bold': + return 700; + case 'normal': + default: + return 400; + } + } + return 400; + } + }; + + var fontVariant = { + name: 'font-variant', + initialValue: 'none', + type: 1 /* LIST */, + prefix: false, + parse: function (_context, tokens) { + return tokens.filter(isIdentToken).map(function (token) { return token.value; }); + } + }; + + var fontStyle = { + name: 'font-style', + initialValue: 'normal', + prefix: false, + type: 2 /* IDENT_VALUE */, + parse: function (_context, overflow) { + switch (overflow) { + case 'oblique': + return "oblique" /* OBLIQUE */; + case 'italic': + return "italic" /* ITALIC */; + case 'normal': + default: + return "normal" /* NORMAL */; + } + } + }; + + var contains = function (bit, value) { return (bit & value) !== 0; }; + + var content = { + name: 'content', + initialValue: 'none', + type: 1 /* LIST */, + prefix: false, + parse: function (_context, tokens) { + if (tokens.length === 0) { + return []; + } + var first = tokens[0]; + if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') { + return []; + } + return tokens; + } + }; + + var counterIncrement = { + name: 'counter-increment', + initialValue: 'none', + prefix: true, + type: 1 /* LIST */, + parse: function (_context, tokens) { + if (tokens.length === 0) { + return null; + } + var first = tokens[0]; + if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') { + return null; + } + var increments = []; + var filtered = tokens.filter(nonWhiteSpace); + for (var i = 0; i < filtered.length; i++) { + var counter = filtered[i]; + var next = filtered[i + 1]; + if (counter.type === 20 /* IDENT_TOKEN */) { + var increment = next && isNumberToken(next) ? next.number : 1; + increments.push({ counter: counter.value, increment: increment }); + } + } + return increments; + } + }; + + var counterReset = { + name: 'counter-reset', + initialValue: 'none', + prefix: true, + type: 1 /* LIST */, + parse: function (_context, tokens) { + if (tokens.length === 0) { + return []; + } + var resets = []; + var filtered = tokens.filter(nonWhiteSpace); + for (var i = 0; i < filtered.length; i++) { + var counter = filtered[i]; + var next = filtered[i + 1]; + if (isIdentToken(counter) && counter.value !== 'none') { + var reset = next && isNumberToken(next) ? next.number : 0; + resets.push({ counter: counter.value, reset: reset }); + } + } + return resets; + } + }; + + var duration = { + name: 'duration', + initialValue: '0s', + prefix: false, + type: 1 /* LIST */, + parse: function (context, tokens) { + return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); }); + } + }; + + var quotes = { + name: 'quotes', + initialValue: 'none', + prefix: true, + type: 1 /* LIST */, + parse: function (_context, tokens) { + if (tokens.length === 0) { + return null; + } + var first = tokens[0]; + if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') { + return null; + } + var quotes = []; + var filtered = tokens.filter(isStringToken); + if (filtered.length % 2 !== 0) { + return null; + } + for (var i = 0; i < filtered.length; i += 2) { + var open_1 = filtered[i].value; + var close_1 = filtered[i + 1].value; + quotes.push({ open: open_1, close: close_1 }); + } + return quotes; + } + }; + var getQuote = function (quotes, depth, open) { + if (!quotes) { + return ''; + } + var quote = quotes[Math.min(depth, quotes.length - 1)]; + if (!quote) { + return ''; + } + return open ? quote.open : quote.close; + }; + + var boxShadow = { + name: 'box-shadow', + initialValue: 'none', + type: 1 /* LIST */, + prefix: false, + parse: function (context, tokens) { + if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) { + return []; + } + return parseFunctionArgs(tokens).map(function (values) { + var shadow = { + color: 0x000000ff, + offsetX: ZERO_LENGTH, + offsetY: ZERO_LENGTH, + blur: ZERO_LENGTH, + spread: ZERO_LENGTH, + inset: false + }; + var c = 0; + for (var i = 0; i < values.length; i++) { + var token = values[i]; + if (isIdentWithValue(token, 'inset')) { + shadow.inset = true; + } + else if (isLength(token)) { + if (c === 0) { + shadow.offsetX = token; + } + else if (c === 1) { + shadow.offsetY = token; + } + else if (c === 2) { + shadow.blur = token; + } + else { + shadow.spread = token; + } + c++; + } + else { + shadow.color = color$1.parse(context, token); + } + } + return shadow; + }); + } + }; + + var paintOrder = { + name: 'paint-order', + initialValue: 'normal', + prefix: false, + type: 1 /* LIST */, + parse: function (_context, tokens) { + var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */]; + var layers = []; + tokens.filter(isIdentToken).forEach(function (token) { + switch (token.value) { + case 'stroke': + layers.push(1 /* STROKE */); + break; + case 'fill': + layers.push(0 /* FILL */); + break; + case 'markers': + layers.push(2 /* MARKERS */); + break; + } + }); + DEFAULT_VALUE.forEach(function (value) { + if (layers.indexOf(value) === -1) { + layers.push(value); + } + }); + return layers; + } + }; + + var webkitTextStrokeColor = { + name: "-webkit-text-stroke-color", + initialValue: 'currentcolor', + prefix: false, + type: 3 /* TYPE_VALUE */, + format: 'color' + }; + + var webkitTextStrokeWidth = { + name: "-webkit-text-stroke-width", + initialValue: '0', + type: 0 /* VALUE */, + prefix: false, + parse: function (_context, token) { + if (isDimensionToken(token)) { + return token.number; + } + return 0; + } + }; + + var CSSParsedDeclaration = /** @class */ (function () { + function CSSParsedDeclaration(context, declaration) { + var _a, _b; + this.animationDuration = parse(context, duration, declaration.animationDuration); + this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip); + this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor); + this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage); + this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin); + this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition); + this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat); + this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize); + this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor); + this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor); + this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor); + this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor); + this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius); + this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius); + this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius); + this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius); + this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle); + this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle); + this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle); + this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle); + this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth); + this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth); + this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth); + this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth); + this.boxShadow = parse(context, boxShadow, declaration.boxShadow); + this.color = parse(context, color, declaration.color); + this.direction = parse(context, direction, declaration.direction); + this.display = parse(context, display, declaration.display); + this.float = parse(context, float, declaration.cssFloat); + this.fontFamily = parse(context, fontFamily, declaration.fontFamily); + this.fontSize = parse(context, fontSize, declaration.fontSize); + this.fontStyle = parse(context, fontStyle, declaration.fontStyle); + this.fontVariant = parse(context, fontVariant, declaration.fontVariant); + this.fontWeight = parse(context, fontWeight, declaration.fontWeight); + this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing); + this.lineBreak = parse(context, lineBreak, declaration.lineBreak); + this.lineHeight = parse(context, lineHeight, declaration.lineHeight); + this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage); + this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition); + this.listStyleType = parse(context, listStyleType, declaration.listStyleType); + this.marginTop = parse(context, marginTop, declaration.marginTop); + this.marginRight = parse(context, marginRight, declaration.marginRight); + this.marginBottom = parse(context, marginBottom, declaration.marginBottom); + this.marginLeft = parse(context, marginLeft, declaration.marginLeft); + this.opacity = parse(context, opacity, declaration.opacity); + var overflowTuple = parse(context, overflow, declaration.overflow); + this.overflowX = overflowTuple[0]; + this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]; + this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap); + this.paddingTop = parse(context, paddingTop, declaration.paddingTop); + this.paddingRight = parse(context, paddingRight, declaration.paddingRight); + this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom); + this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft); + this.paintOrder = parse(context, paintOrder, declaration.paintOrder); + this.position = parse(context, position, declaration.position); + this.textAlign = parse(context, textAlign, declaration.textAlign); + this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color); + this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration); + this.textShadow = parse(context, textShadow, declaration.textShadow); + this.textTransform = parse(context, textTransform, declaration.textTransform); + this.transform = parse(context, transform$1, declaration.transform); + this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); + this.visibility = parse(context, visibility, declaration.visibility); + this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); + this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); + this.wordBreak = parse(context, wordBreak, declaration.wordBreak); + this.zIndex = parse(context, zIndex, declaration.zIndex); + } + CSSParsedDeclaration.prototype.isVisible = function () { + return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */; + }; + CSSParsedDeclaration.prototype.isTransparent = function () { + return isTransparent(this.backgroundColor); + }; + CSSParsedDeclaration.prototype.isTransformed = function () { + return this.transform !== null; + }; + CSSParsedDeclaration.prototype.isPositioned = function () { + return this.position !== 0 /* STATIC */; + }; + CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () { + return this.isPositioned() && !this.zIndex.auto; + }; + CSSParsedDeclaration.prototype.isFloating = function () { + return this.float !== 0 /* NONE */; + }; + CSSParsedDeclaration.prototype.isInlineLevel = function () { + return (contains(this.display, 4 /* INLINE */) || + contains(this.display, 33554432 /* INLINE_BLOCK */) || + contains(this.display, 268435456 /* INLINE_FLEX */) || + contains(this.display, 536870912 /* INLINE_GRID */) || + contains(this.display, 67108864 /* INLINE_LIST_ITEM */) || + contains(this.display, 134217728 /* INLINE_TABLE */)); + }; + return CSSParsedDeclaration; + }()); + var CSSParsedPseudoDeclaration = /** @class */ (function () { + function CSSParsedPseudoDeclaration(context, declaration) { + this.content = parse(context, content, declaration.content); + this.quotes = parse(context, quotes, declaration.quotes); + } + return CSSParsedPseudoDeclaration; + }()); + var CSSParsedCounterDeclaration = /** @class */ (function () { + function CSSParsedCounterDeclaration(context, declaration) { + this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement); + this.counterReset = parse(context, counterReset, declaration.counterReset); + } + return CSSParsedCounterDeclaration; + }()); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + var parse = function (context, descriptor, style) { + var tokenizer = new Tokenizer(); + var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue; + tokenizer.write(value); + var parser = new Parser(tokenizer.read()); + switch (descriptor.type) { + case 2 /* IDENT_VALUE */: + var token = parser.parseComponentValue(); + return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue); + case 0 /* VALUE */: + return descriptor.parse(context, parser.parseComponentValue()); + case 1 /* LIST */: + return descriptor.parse(context, parser.parseComponentValues()); + case 4 /* TOKEN_VALUE */: + return parser.parseComponentValue(); + case 3 /* TYPE_VALUE */: + switch (descriptor.format) { + case 'angle': + return angle.parse(context, parser.parseComponentValue()); + case 'color': + return color$1.parse(context, parser.parseComponentValue()); + case 'image': + return image.parse(context, parser.parseComponentValue()); + case 'length': + var length_1 = parser.parseComponentValue(); + return isLength(length_1) ? length_1 : ZERO_LENGTH; + case 'length-percentage': + var value_1 = parser.parseComponentValue(); + return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH; + case 'time': + return time.parse(context, parser.parseComponentValue()); + } + break; + } + }; + + var elementDebuggerAttribute = 'data-html2canvas-debug'; + var getElementDebugType = function (element) { + var attribute = element.getAttribute(elementDebuggerAttribute); + switch (attribute) { + case 'all': + return 1 /* ALL */; + case 'clone': + return 2 /* CLONE */; + case 'parse': + return 3 /* PARSE */; + case 'render': + return 4 /* RENDER */; + default: + return 0 /* NONE */; + } + }; + var isDebugging = function (element, type) { + var elementType = getElementDebugType(element); + return elementType === 1 /* ALL */ || type === elementType; + }; + + var ElementContainer = /** @class */ (function () { + function ElementContainer(context, element) { + this.context = context; + this.textNodes = []; + this.elements = []; + this.flags = 0; + if (isDebugging(element, 3 /* PARSE */)) { + debugger; + } + this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); + if (isHTMLElementNode(element)) { + if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) { + element.style.animationDuration = '0s'; + } + if (this.styles.transform !== null) { + // getBoundingClientRect takes transforms into account + element.style.transform = 'none'; + } + } + this.bounds = parseBounds(this.context, element); + if (isDebugging(element, 4 /* RENDER */)) { + this.flags |= 16 /* DEBUG_RENDER */; + } + } + return ElementContainer; + }()); + + /* + * text-segmentation 1.0.3 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA='; + + /* + * utrie 1.0.2 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. + var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i$1 = 0; i$1 < chars$1.length; i$1++) { + lookup$1[chars$1.charCodeAt(i$1)] = i$1; + } + var decode = function (base64) { + var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4; + if (base64[base64.length - 1] === '=') { + bufferLength--; + if (base64[base64.length - 2] === '=') { + bufferLength--; + } + } + var buffer = typeof ArrayBuffer !== 'undefined' && + typeof Uint8Array !== 'undefined' && + typeof Uint8Array.prototype.slice !== 'undefined' + ? new ArrayBuffer(bufferLength) + : new Array(bufferLength); + var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); + for (i = 0; i < len; i += 4) { + encoded1 = lookup$1[base64.charCodeAt(i)]; + encoded2 = lookup$1[base64.charCodeAt(i + 1)]; + encoded3 = lookup$1[base64.charCodeAt(i + 2)]; + encoded4 = lookup$1[base64.charCodeAt(i + 3)]; + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + return buffer; + }; + var polyUint16Array = function (buffer) { + var length = buffer.length; + var bytes = []; + for (var i = 0; i < length; i += 2) { + bytes.push((buffer[i + 1] << 8) | buffer[i]); + } + return bytes; + }; + var polyUint32Array = function (buffer) { + var length = buffer.length; + var bytes = []; + for (var i = 0; i < length; i += 4) { + bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]); + } + return bytes; + }; + + /** Shift size for getting the index-2 table offset. */ + var UTRIE2_SHIFT_2 = 5; + /** Shift size for getting the index-1 table offset. */ + var UTRIE2_SHIFT_1 = 6 + 5; + /** + * Shift size for shifting left the index array values. + * Increases possible data size with 16-bit index values at the cost + * of compactability. + * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY. + */ + var UTRIE2_INDEX_SHIFT = 2; + /** + * Difference between the two shift sizes, + * for getting an index-1 offset from an index-2 offset. 6=11-5 + */ + var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2; + /** + * The part of the index-2 table for U+D800..U+DBFF stores values for + * lead surrogate code _units_ not code _points_. + * Values for lead surrogate code _points_ are indexed with this portion of the table. + * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.) + */ + var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2; + /** Number of entries in a data block. 32=0x20 */ + var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2; + /** Mask for getting the lower bits for the in-data-block offset. */ + var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1; + var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2; + /** Count the lengths of both BMP pieces. 2080=0x820 */ + var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH; + /** + * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820. + * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2. + */ + var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH; + var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */ + /** + * The index-1 table, only used for supplementary code points, at offset 2112=0x840. + * Variable length, for code points up to highStart, where the last single-value range starts. + * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1. + * (For 0x100000 supplementary code points U+10000..U+10ffff.) + * + * The part of the index-2 table for supplementary code points starts + * after this index-1 table. + * + * Both the index-1 table and the following part of the index-2 table + * are omitted completely if there is only BMP data. + */ + var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH; + /** + * Number of index-1 entries for the BMP. 32=0x20 + * This part of the index-1 table is omitted from the serialized form. + */ + var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1; + /** Number of entries in an index-2 block. 64=0x40 */ + var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2; + /** Mask for getting the lower bits for the in-index-2-block offset. */ + var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1; + var slice16 = function (view, start, end) { + if (view.slice) { + return view.slice(start, end); + } + return new Uint16Array(Array.prototype.slice.call(view, start, end)); + }; + var slice32 = function (view, start, end) { + if (view.slice) { + return view.slice(start, end); + } + return new Uint32Array(Array.prototype.slice.call(view, start, end)); + }; + var createTrieFromBase64 = function (base64, _byteLength) { + var buffer = decode(base64); + var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer); + var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer); + var headerLength = 24; + var index = slice16(view16, headerLength / 2, view32[4] / 2); + var data = view32[5] === 2 + ? slice16(view16, (headerLength + view32[4]) / 2) + : slice32(view32, Math.ceil((headerLength + view32[4]) / 4)); + return new Trie(view32[0], view32[1], view32[2], view32[3], index, data); + }; + var Trie = /** @class */ (function () { + function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) { + this.initialValue = initialValue; + this.errorValue = errorValue; + this.highStart = highStart; + this.highValueIndex = highValueIndex; + this.index = index; + this.data = data; + } + /** + * Get the value for a code point as stored in the Trie. + * + * @param codePoint the code point + * @return the value + */ + Trie.prototype.get = function (codePoint) { + var ix; + if (codePoint >= 0) { + if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) { + // Ordinary BMP code point, excluding leading surrogates. + // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index. + // 16 bit data is stored in the index array itself. + ix = this.index[codePoint >> UTRIE2_SHIFT_2]; + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); + return this.data[ix]; + } + if (codePoint <= 0xffff) { + // Lead Surrogate Code Point. A Separate index section is stored for + // lead surrogate code units and code points. + // The main index has the code unit data. + // For this function, we need the code point data. + // Note: this expression could be refactored for slightly improved efficiency, but + // surrogate code points will be so rare in practice that it's not worth it. + ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)]; + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); + return this.data[ix]; + } + if (codePoint < this.highStart) { + // Supplemental code point, use two-level lookup. + ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1); + ix = this.index[ix]; + ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK; + ix = this.index[ix]; + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); + return this.data[ix]; + } + if (codePoint <= 0x10ffff) { + return this.data[this.highValueIndex]; + } + } + // Fall through. The code point is outside of the legal range of 0..0x10ffff. + return this.errorValue; + }; + return Trie; + }()); + + /* + * base64-arraybuffer 1.0.2 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. + var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i = 0; i < chars.length; i++) { + lookup[chars.charCodeAt(i)] = i; + } + + var Prepend = 1; + var CR = 2; + var LF = 3; + var Control = 4; + var Extend = 5; + var SpacingMark = 7; + var L = 8; + var V = 9; + var T = 10; + var LV = 11; + var LVT = 12; + var ZWJ = 13; + var Extended_Pictographic = 14; + var RI = 15; + var toCodePoints = function (str) { + var codePoints = []; + var i = 0; + var length = str.length; + while (i < length) { + var value = str.charCodeAt(i++); + if (value >= 0xd800 && value <= 0xdbff && i < length) { + var extra = str.charCodeAt(i++); + if ((extra & 0xfc00) === 0xdc00) { + codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000); + } + else { + codePoints.push(value); + i--; + } + } + else { + codePoints.push(value); + } + } + return codePoints; + }; + var fromCodePoint = function () { + var codePoints = []; + for (var _i = 0; _i < arguments.length; _i++) { + codePoints[_i] = arguments[_i]; + } + if (String.fromCodePoint) { + return String.fromCodePoint.apply(String, codePoints); + } + var length = codePoints.length; + if (!length) { + return ''; + } + var codeUnits = []; + var index = -1; + var result = ''; + while (++index < length) { + var codePoint = codePoints[index]; + if (codePoint <= 0xffff) { + codeUnits.push(codePoint); + } + else { + codePoint -= 0x10000; + codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00); + } + if (index + 1 === length || codeUnits.length > 0x4000) { + result += String.fromCharCode.apply(String, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + var UnicodeTrie = createTrieFromBase64(base64); + var BREAK_NOT_ALLOWED = '×'; + var BREAK_ALLOWED = '÷'; + var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); }; + var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) { + var prevIndex = index - 2; + var prev = classTypes[prevIndex]; + var current = classTypes[index - 1]; + var next = classTypes[index]; + // GB3 Do not break between a CR and LF + if (current === CR && next === LF) { + return BREAK_NOT_ALLOWED; + } + // GB4 Otherwise, break before and after controls. + if (current === CR || current === LF || current === Control) { + return BREAK_ALLOWED; + } + // GB5 + if (next === CR || next === LF || next === Control) { + return BREAK_ALLOWED; + } + // Do not break Hangul syllable sequences. + // GB6 + if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) { + return BREAK_NOT_ALLOWED; + } + // GB7 + if ((current === LV || current === V) && (next === V || next === T)) { + return BREAK_NOT_ALLOWED; + } + // GB8 + if ((current === LVT || current === T) && next === T) { + return BREAK_NOT_ALLOWED; + } + // GB9 Do not break before extending characters or ZWJ. + if (next === ZWJ || next === Extend) { + return BREAK_NOT_ALLOWED; + } + // Do not break before SpacingMarks, or after Prepend characters. + // GB9a + if (next === SpacingMark) { + return BREAK_NOT_ALLOWED; + } + // GB9a + if (current === Prepend) { + return BREAK_NOT_ALLOWED; + } + // GB11 Do not break within emoji modifier sequences or emoji zwj sequences. + if (current === ZWJ && next === Extended_Pictographic) { + while (prev === Extend) { + prev = classTypes[--prevIndex]; + } + if (prev === Extended_Pictographic) { + return BREAK_NOT_ALLOWED; + } + } + // GB12 Do not break within emoji flag sequences. + // That is, do not break between regional indicator (RI) symbols + // if there is an odd number of RI characters before the break point. + if (current === RI && next === RI) { + var countRI = 0; + while (prev === RI) { + countRI++; + prev = classTypes[--prevIndex]; + } + if (countRI % 2 === 0) { + return BREAK_NOT_ALLOWED; + } + } + return BREAK_ALLOWED; + }; + var GraphemeBreaker = function (str) { + var codePoints = toCodePoints(str); + var length = codePoints.length; + var index = 0; + var lastEnd = 0; + var classTypes = codePoints.map(codePointToClass); + return { + next: function () { + if (index >= length) { + return { done: true, value: null }; + } + var graphemeBreak = BREAK_NOT_ALLOWED; + while (index < length && + (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { } + if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) { + var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index)); + lastEnd = index; + return { value: value, done: false }; + } + return { done: true, value: null }; + }, + }; + }; + var splitGraphemes = function (str) { + var breaker = GraphemeBreaker(str); + var graphemes = []; + var bk; + while (!(bk = breaker.next()).done) { + if (bk.value) { + graphemes.push(bk.value.slice()); + } + } + return graphemes; + }; + + var testRangeBounds = function (document) { + var TEST_HEIGHT = 123; + if (document.createRange) { + var range = document.createRange(); + if (range.getBoundingClientRect) { + var testElement = document.createElement('boundtest'); + testElement.style.height = TEST_HEIGHT + "px"; + testElement.style.display = 'block'; + document.body.appendChild(testElement); + range.selectNode(testElement); + var rangeBounds = range.getBoundingClientRect(); + var rangeHeight = Math.round(rangeBounds.height); + document.body.removeChild(testElement); + if (rangeHeight === TEST_HEIGHT) { + return true; + } + } + } + return false; + }; + var testIOSLineBreak = function (document) { + var testElement = document.createElement('boundtest'); + testElement.style.width = '50px'; + testElement.style.display = 'block'; + testElement.style.fontSize = '12px'; + testElement.style.letterSpacing = '0px'; + testElement.style.wordSpacing = '0px'; + document.body.appendChild(testElement); + var range = document.createRange(); + testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : ''; + var node = testElement.firstChild; + var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); }); + var offset = 0; + var prev = {}; + // ios 13 does not handle range getBoundingClientRect line changes correctly #2177 + var supports = textList.every(function (text, i) { + range.setStart(node, offset); + range.setEnd(node, offset + text.length); + var rect = range.getBoundingClientRect(); + offset += text.length; + var boundAhead = rect.x > prev.x || rect.y > prev.y; + prev = rect; + if (i === 0) { + return true; + } + return boundAhead; + }); + document.body.removeChild(testElement); + return supports; + }; + var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; }; + var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; }; + var testSVG = function (document) { + var img = new Image(); + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + if (!ctx) { + return false; + } + img.src = "data:image/svg+xml,"; + try { + ctx.drawImage(img, 0, 0); + canvas.toDataURL(); + } + catch (e) { + return false; + } + return true; + }; + var isGreenPixel = function (data) { + return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255; + }; + var testForeignObject = function (document) { + var canvas = document.createElement('canvas'); + var size = 100; + canvas.width = size; + canvas.height = size; + var ctx = canvas.getContext('2d'); + if (!ctx) { + return Promise.reject(false); + } + ctx.fillStyle = 'rgb(0, 255, 0)'; + ctx.fillRect(0, 0, size, size); + var img = new Image(); + var greenImageSrc = canvas.toDataURL(); + img.src = greenImageSrc; + var svg = createForeignObjectSVG(size, size, 0, 0, img); + ctx.fillStyle = 'red'; + ctx.fillRect(0, 0, size, size); + return loadSerializedSVG$1(svg) + .then(function (img) { + ctx.drawImage(img, 0, 0); + var data = ctx.getImageData(0, 0, size, size).data; + ctx.fillStyle = 'red'; + ctx.fillRect(0, 0, size, size); + var node = document.createElement('div'); + node.style.backgroundImage = "url(" + greenImageSrc + ")"; + node.style.height = size + "px"; + // Firefox 55 does not render inline tags + return isGreenPixel(data) + ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) + : Promise.reject(false); + }) + .then(function (img) { + ctx.drawImage(img, 0, 0); + // Edge does not render background-images + return isGreenPixel(ctx.getImageData(0, 0, size, size).data); + }) + .catch(function () { return false; }); + }; + var createForeignObjectSVG = function (width, height, x, y, node) { + var xmlns = 'http://www.w3.org/2000/svg'; + var svg = document.createElementNS(xmlns, 'svg'); + var foreignObject = document.createElementNS(xmlns, 'foreignObject'); + svg.setAttributeNS(null, 'width', width.toString()); + svg.setAttributeNS(null, 'height', height.toString()); + foreignObject.setAttributeNS(null, 'width', '100%'); + foreignObject.setAttributeNS(null, 'height', '100%'); + foreignObject.setAttributeNS(null, 'x', x.toString()); + foreignObject.setAttributeNS(null, 'y', y.toString()); + foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true'); + svg.appendChild(foreignObject); + foreignObject.appendChild(node); + return svg; + }; + var loadSerializedSVG$1 = function (svg) { + return new Promise(function (resolve, reject) { + var img = new Image(); + img.onload = function () { return resolve(img); }; + img.onerror = reject; + img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)); + }); + }; + var FEATURES = { + get SUPPORT_RANGE_BOUNDS() { + var value = testRangeBounds(document); + Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value }); + return value; + }, + get SUPPORT_WORD_BREAKING() { + var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document); + Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value }); + return value; + }, + get SUPPORT_SVG_DRAWING() { + var value = testSVG(document); + Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value }); + return value; + }, + get SUPPORT_FOREIGNOBJECT_DRAWING() { + var value = typeof Array.from === 'function' && typeof window.fetch === 'function' + ? testForeignObject(document) + : Promise.resolve(false); + Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value }); + return value; + }, + get SUPPORT_CORS_IMAGES() { + var value = testCORS(); + Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value }); + return value; + }, + get SUPPORT_RESPONSE_TYPE() { + var value = testResponseType(); + Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value }); + return value; + }, + get SUPPORT_CORS_XHR() { + var value = 'withCredentials' in new XMLHttpRequest(); + Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value }); + return value; + }, + get SUPPORT_NATIVE_TEXT_SEGMENTATION() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter); + Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value }); + return value; + } + }; + + var TextBounds = /** @class */ (function () { + function TextBounds(text, bounds) { + this.text = text; + this.bounds = bounds; + } + return TextBounds; + }()); + var parseTextBounds = function (context, value, styles, node) { + var textList = breakText(value, styles); + var textBounds = []; + var offset = 0; + textList.forEach(function (text) { + if (styles.textDecorationLine.length || text.trim().length > 0) { + if (FEATURES.SUPPORT_RANGE_BOUNDS) { + var clientRects = createRange(node, offset, text.length).getClientRects(); + if (clientRects.length > 1) { + var subSegments = segmentGraphemes(text); + var subOffset_1 = 0; + subSegments.forEach(function (subSegment) { + textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects()))); + subOffset_1 += subSegment.length; + }); + } + else { + textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects))); + } + } + else { + var replacementNode = node.splitText(text.length); + textBounds.push(new TextBounds(text, getWrapperBounds(context, node))); + node = replacementNode; + } + } + else if (!FEATURES.SUPPORT_RANGE_BOUNDS) { + node = node.splitText(text.length); + } + offset += text.length; + }); + return textBounds; + }; + var getWrapperBounds = function (context, node) { + var ownerDocument = node.ownerDocument; + if (ownerDocument) { + var wrapper = ownerDocument.createElement('html2canvaswrapper'); + wrapper.appendChild(node.cloneNode(true)); + var parentNode = node.parentNode; + if (parentNode) { + parentNode.replaceChild(wrapper, node); + var bounds = parseBounds(context, wrapper); + if (wrapper.firstChild) { + parentNode.replaceChild(wrapper.firstChild, wrapper); + } + return bounds; + } + } + return Bounds.EMPTY; + }; + var createRange = function (node, offset, length) { + var ownerDocument = node.ownerDocument; + if (!ownerDocument) { + throw new Error('Node has no owner document'); + } + var range = ownerDocument.createRange(); + range.setStart(node, offset); + range.setEnd(node, offset + length); + return range; + }; + var segmentGraphemes = function (value) { + if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; }); + } + return splitGraphemes(value); + }; + var segmentWords = function (value, styles) { + if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + var segmenter = new Intl.Segmenter(void 0, { + granularity: 'word' + }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; }); + } + return breakWords(value, styles); + }; + var breakText = function (value, styles) { + return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles); + }; + // https://drafts.csswg.org/css-text/#word-separator + var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091]; + var breakWords = function (str, styles) { + var breaker = LineBreaker(str, { + lineBreak: styles.lineBreak, + wordBreak: styles.overflowWrap === "break-word" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak + }); + var words = []; + var bk; + var _loop_1 = function () { + if (bk.value) { + var value = bk.value.slice(); + var codePoints = toCodePoints$1(value); + var word_1 = ''; + codePoints.forEach(function (codePoint) { + if (wordSeparators.indexOf(codePoint) === -1) { + word_1 += fromCodePoint$1(codePoint); + } + else { + if (word_1.length) { + words.push(word_1); + } + words.push(fromCodePoint$1(codePoint)); + word_1 = ''; + } + }); + if (word_1.length) { + words.push(word_1); + } + } + }; + while (!(bk = breaker.next()).done) { + _loop_1(); + } + return words; + }; + + var TextContainer = /** @class */ (function () { + function TextContainer(context, node, styles) { + this.text = transform(node.data, styles.textTransform); + this.textBounds = parseTextBounds(context, this.text, styles, node); + } + return TextContainer; + }()); + var transform = function (text, transform) { + switch (transform) { + case 1 /* LOWERCASE */: + return text.toLowerCase(); + case 3 /* CAPITALIZE */: + return text.replace(CAPITALIZE, capitalize); + case 2 /* UPPERCASE */: + return text.toUpperCase(); + default: + return text; + } + }; + var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g; + var capitalize = function (m, p1, p2) { + if (m.length > 0) { + return p1 + p2.toUpperCase(); + } + return m; + }; + + var ImageElementContainer = /** @class */ (function (_super) { + __extends(ImageElementContainer, _super); + function ImageElementContainer(context, img) { + var _this = _super.call(this, context, img) || this; + _this.src = img.currentSrc || img.src; + _this.intrinsicWidth = img.naturalWidth; + _this.intrinsicHeight = img.naturalHeight; + _this.context.cache.addImage(_this.src); + return _this; + } + return ImageElementContainer; + }(ElementContainer)); + + var CanvasElementContainer = /** @class */ (function (_super) { + __extends(CanvasElementContainer, _super); + function CanvasElementContainer(context, canvas) { + var _this = _super.call(this, context, canvas) || this; + _this.canvas = canvas; + _this.intrinsicWidth = canvas.width; + _this.intrinsicHeight = canvas.height; + return _this; + } + return CanvasElementContainer; + }(ElementContainer)); + + var SVGElementContainer = /** @class */ (function (_super) { + __extends(SVGElementContainer, _super); + function SVGElementContainer(context, img) { + var _this = _super.call(this, context, img) || this; + var s = new XMLSerializer(); + var bounds = parseBounds(context, img); + img.setAttribute('width', bounds.width + "px"); + img.setAttribute('height', bounds.height + "px"); + _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img)); + _this.intrinsicWidth = img.width.baseVal.value; + _this.intrinsicHeight = img.height.baseVal.value; + _this.context.cache.addImage(_this.svg); + return _this; + } + return SVGElementContainer; + }(ElementContainer)); + + var LIElementContainer = /** @class */ (function (_super) { + __extends(LIElementContainer, _super); + function LIElementContainer(context, element) { + var _this = _super.call(this, context, element) || this; + _this.value = element.value; + return _this; + } + return LIElementContainer; + }(ElementContainer)); + + var OLElementContainer = /** @class */ (function (_super) { + __extends(OLElementContainer, _super); + function OLElementContainer(context, element) { + var _this = _super.call(this, context, element) || this; + _this.start = element.start; + _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true; + return _this; + } + return OLElementContainer; + }(ElementContainer)); + + var CHECKBOX_BORDER_RADIUS = [ + { + type: 15 /* DIMENSION_TOKEN */, + flags: 0, + unit: 'px', + number: 3 + } + ]; + var RADIO_BORDER_RADIUS = [ + { + type: 16 /* PERCENTAGE_TOKEN */, + flags: 0, + number: 50 + } + ]; + var reformatInputBounds = function (bounds) { + if (bounds.width > bounds.height) { + return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height); + } + else if (bounds.width < bounds.height) { + return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width); + } + return bounds; + }; + var getInputValue = function (node) { + var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\u2022') : node.value; + return value.length === 0 ? node.placeholder || '' : value; + }; + var CHECKBOX = 'checkbox'; + var RADIO = 'radio'; + var PASSWORD = 'password'; + var INPUT_COLOR = 0x2a2a2aff; + var InputElementContainer = /** @class */ (function (_super) { + __extends(InputElementContainer, _super); + function InputElementContainer(context, input) { + var _this = _super.call(this, context, input) || this; + _this.type = input.type.toLowerCase(); + _this.checked = input.checked; + _this.value = getInputValue(input); + if (_this.type === CHECKBOX || _this.type === RADIO) { + _this.styles.backgroundColor = 0xdededeff; + _this.styles.borderTopColor = + _this.styles.borderRightColor = + _this.styles.borderBottomColor = + _this.styles.borderLeftColor = + 0xa5a5a5ff; + _this.styles.borderTopWidth = + _this.styles.borderRightWidth = + _this.styles.borderBottomWidth = + _this.styles.borderLeftWidth = + 1; + _this.styles.borderTopStyle = + _this.styles.borderRightStyle = + _this.styles.borderBottomStyle = + _this.styles.borderLeftStyle = + 1 /* SOLID */; + _this.styles.backgroundClip = [0 /* BORDER_BOX */]; + _this.styles.backgroundOrigin = [0 /* BORDER_BOX */]; + _this.bounds = reformatInputBounds(_this.bounds); + } + switch (_this.type) { + case CHECKBOX: + _this.styles.borderTopRightRadius = + _this.styles.borderTopLeftRadius = + _this.styles.borderBottomRightRadius = + _this.styles.borderBottomLeftRadius = + CHECKBOX_BORDER_RADIUS; + break; + case RADIO: + _this.styles.borderTopRightRadius = + _this.styles.borderTopLeftRadius = + _this.styles.borderBottomRightRadius = + _this.styles.borderBottomLeftRadius = + RADIO_BORDER_RADIUS; + break; + } + return _this; + } + return InputElementContainer; + }(ElementContainer)); + + var SelectElementContainer = /** @class */ (function (_super) { + __extends(SelectElementContainer, _super); + function SelectElementContainer(context, element) { + var _this = _super.call(this, context, element) || this; + var option = element.options[element.selectedIndex || 0]; + _this.value = option ? option.text || '' : ''; + return _this; + } + return SelectElementContainer; + }(ElementContainer)); + + var TextareaElementContainer = /** @class */ (function (_super) { + __extends(TextareaElementContainer, _super); + function TextareaElementContainer(context, element) { + var _this = _super.call(this, context, element) || this; + _this.value = element.value; + return _this; + } + return TextareaElementContainer; + }(ElementContainer)); + + var IFrameElementContainer = /** @class */ (function (_super) { + __extends(IFrameElementContainer, _super); + function IFrameElementContainer(context, iframe) { + var _this = _super.call(this, context, iframe) || this; + _this.src = iframe.src; + _this.width = parseInt(iframe.width, 10) || 0; + _this.height = parseInt(iframe.height, 10) || 0; + _this.backgroundColor = _this.styles.backgroundColor; + try { + if (iframe.contentWindow && + iframe.contentWindow.document && + iframe.contentWindow.document.documentElement) { + _this.tree = parseTree(context, iframe.contentWindow.document.documentElement); + // http://www.w3.org/TR/css3-background/#special-backgrounds + var documentBackgroundColor = iframe.contentWindow.document.documentElement + ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) + : COLORS.TRANSPARENT; + var bodyBackgroundColor = iframe.contentWindow.document.body + ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) + : COLORS.TRANSPARENT; + _this.backgroundColor = isTransparent(documentBackgroundColor) + ? isTransparent(bodyBackgroundColor) + ? _this.styles.backgroundColor + : bodyBackgroundColor + : documentBackgroundColor; + } + } + catch (e) { } + return _this; + } + return IFrameElementContainer; + }(ElementContainer)); + + var LIST_OWNERS = ['OL', 'UL', 'MENU']; + var parseNodeTree = function (context, node, parent, root) { + for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) { + nextNode = childNode.nextSibling; + if (isTextNode(childNode) && childNode.data.trim().length > 0) { + parent.textNodes.push(new TextContainer(context, childNode, parent.styles)); + } + else if (isElementNode(childNode)) { + if (isSlotElement(childNode) && childNode.assignedNodes) { + childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); }); + } + else { + var container = createContainer(context, childNode); + if (container.styles.isVisible()) { + if (createsRealStackingContext(childNode, container, root)) { + container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */; + } + else if (createsStackingContext(container.styles)) { + container.flags |= 2 /* CREATES_STACKING_CONTEXT */; + } + if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { + container.flags |= 8 /* IS_LIST_OWNER */; + } + parent.elements.push(container); + childNode.slot; + if (childNode.shadowRoot) { + parseNodeTree(context, childNode.shadowRoot, container, root); + } + else if (!isTextareaElement(childNode) && + !isSVGElement(childNode) && + !isSelectElement(childNode)) { + parseNodeTree(context, childNode, container, root); + } + } + } + } + } + }; + var createContainer = function (context, element) { + if (isImageElement(element)) { + return new ImageElementContainer(context, element); + } + if (isCanvasElement(element)) { + return new CanvasElementContainer(context, element); + } + if (isSVGElement(element)) { + return new SVGElementContainer(context, element); + } + if (isLIElement(element)) { + return new LIElementContainer(context, element); + } + if (isOLElement(element)) { + return new OLElementContainer(context, element); + } + if (isInputElement(element)) { + return new InputElementContainer(context, element); + } + if (isSelectElement(element)) { + return new SelectElementContainer(context, element); + } + if (isTextareaElement(element)) { + return new TextareaElementContainer(context, element); + } + if (isIFrameElement(element)) { + return new IFrameElementContainer(context, element); + } + return new ElementContainer(context, element); + }; + var parseTree = function (context, element) { + var container = createContainer(context, element); + container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */; + parseNodeTree(context, element, container, container); + return container; + }; + var createsRealStackingContext = function (node, container, root) { + return (container.styles.isPositionedWithZIndex() || + container.styles.opacity < 1 || + container.styles.isTransformed() || + (isBodyElement(node) && root.styles.isTransparent())); + }; + var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); }; + var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; }; + var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; }; + var isHTMLElementNode = function (node) { + return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node); + }; + var isSVGElementNode = function (element) { + return typeof element.className === 'object'; + }; + var isLIElement = function (node) { return node.tagName === 'LI'; }; + var isOLElement = function (node) { return node.tagName === 'OL'; }; + var isInputElement = function (node) { return node.tagName === 'INPUT'; }; + var isHTMLElement = function (node) { return node.tagName === 'HTML'; }; + var isSVGElement = function (node) { return node.tagName === 'svg'; }; + var isBodyElement = function (node) { return node.tagName === 'BODY'; }; + var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; }; + var isVideoElement = function (node) { return node.tagName === 'VIDEO'; }; + var isImageElement = function (node) { return node.tagName === 'IMG'; }; + var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; }; + var isStyleElement = function (node) { return node.tagName === 'STYLE'; }; + var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; }; + var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; }; + var isSelectElement = function (node) { return node.tagName === 'SELECT'; }; + var isSlotElement = function (node) { return node.tagName === 'SLOT'; }; + // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name + var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; }; + + var CounterState = /** @class */ (function () { + function CounterState() { + this.counters = {}; + } + CounterState.prototype.getCounterValue = function (name) { + var counter = this.counters[name]; + if (counter && counter.length) { + return counter[counter.length - 1]; + } + return 1; + }; + CounterState.prototype.getCounterValues = function (name) { + var counter = this.counters[name]; + return counter ? counter : []; + }; + CounterState.prototype.pop = function (counters) { + var _this = this; + counters.forEach(function (counter) { return _this.counters[counter].pop(); }); + }; + CounterState.prototype.parse = function (style) { + var _this = this; + var counterIncrement = style.counterIncrement; + var counterReset = style.counterReset; + var canReset = true; + if (counterIncrement !== null) { + counterIncrement.forEach(function (entry) { + var counter = _this.counters[entry.counter]; + if (counter && entry.increment !== 0) { + canReset = false; + if (!counter.length) { + counter.push(1); + } + counter[Math.max(0, counter.length - 1)] += entry.increment; + } + }); + } + var counterNames = []; + if (canReset) { + counterReset.forEach(function (entry) { + var counter = _this.counters[entry.counter]; + counterNames.push(entry.counter); + if (!counter) { + counter = _this.counters[entry.counter] = []; + } + counter.push(entry.reset); + }); + } + return counterNames; + }; + return CounterState; + }()); + var ROMAN_UPPER = { + integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], + values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] + }; + var ARMENIAN = { + integers: [ + 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, + 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 + ], + values: [ + 'Ք', + 'Փ', + 'Ւ', + 'Ց', + 'Ր', + 'Տ', + 'Վ', + 'Ս', + 'Ռ', + 'Ջ', + 'Պ', + 'Չ', + 'Ո', + 'Շ', + 'Ն', + 'Յ', + 'Մ', + 'Ճ', + 'Ղ', + 'Ձ', + 'Հ', + 'Կ', + 'Ծ', + 'Խ', + 'Լ', + 'Ի', + 'Ժ', + 'Թ', + 'Ը', + 'Է', + 'Զ', + 'Ե', + 'Դ', + 'Գ', + 'Բ', + 'Ա' + ] + }; + var HEBREW = { + integers: [ + 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, + 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 + ], + values: [ + 'י׳', + 'ט׳', + 'ח׳', + 'ז׳', + 'ו׳', + 'ה׳', + 'ד׳', + 'ג׳', + 'ב׳', + 'א׳', + 'ת', + 'ש', + 'ר', + 'ק', + 'צ', + 'פ', + 'ע', + 'ס', + 'נ', + 'מ', + 'ל', + 'כ', + 'יט', + 'יח', + 'יז', + 'טז', + 'טו', + 'י', + 'ט', + 'ח', + 'ז', + 'ו', + 'ה', + 'ד', + 'ג', + 'ב', + 'א' + ] + }; + var GEORGIAN = { + integers: [ + 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, + 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 + ], + values: [ + 'ჵ', + 'ჰ', + 'ჯ', + 'ჴ', + 'ხ', + 'ჭ', + 'წ', + 'ძ', + 'ც', + 'ჩ', + 'შ', + 'ყ', + 'ღ', + 'ქ', + 'ფ', + 'ჳ', + 'ტ', + 'ს', + 'რ', + 'ჟ', + 'პ', + 'ო', + 'ჲ', + 'ნ', + 'მ', + 'ლ', + 'კ', + 'ი', + 'თ', + 'ჱ', + 'ზ', + 'ვ', + 'ე', + 'დ', + 'გ', + 'ბ', + 'ა' + ] + }; + var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) { + if (value < min || value > max) { + return createCounterText(value, fallback, suffix.length > 0); + } + return (symbols.integers.reduce(function (string, integer, index) { + while (value >= integer) { + value -= integer; + string += symbols.values[index]; + } + return string; + }, '') + suffix); + }; + var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) { + var string = ''; + do { + if (!isNumeric) { + value--; + } + string = resolver(value) + string; + value /= codePointRangeLength; + } while (value * codePointRangeLength >= codePointRangeLength); + return string; + }; + var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) { + var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1; + return ((value < 0 ? '-' : '') + + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) { + return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart); + }) + + suffix)); + }; + var createCounterStyleFromSymbols = function (value, symbols, suffix) { + if (suffix === void 0) { suffix = '. '; } + var codePointRangeLength = symbols.length; + return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix); + }; + var CJK_ZEROS = 1 << 0; + var CJK_TEN_COEFFICIENTS = 1 << 1; + var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2; + var CJK_HUNDRED_COEFFICIENTS = 1 << 3; + var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) { + if (value < -9999 || value > 9999) { + return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0); + } + var tmp = Math.abs(value); + var string = suffix; + if (tmp === 0) { + return numbers[0] + string; + } + for (var digit = 0; tmp > 0 && digit <= 4; digit++) { + var coefficient = tmp % 10; + if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') { + string = numbers[coefficient] + string; + } + else if (coefficient > 1 || + (coefficient === 1 && digit === 0) || + (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) || + (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) || + (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) { + string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string; + } + else if (coefficient === 1 && digit > 0) { + string = multipliers[digit - 1] + string; + } + tmp = Math.floor(tmp / 10); + } + return (value < 0 ? negativeSign : '') + string; + }; + var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬'; + var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬'; + var JAPANESE_NEGATIVE = 'マイナス'; + var KOREAN_NEGATIVE = '마이너스'; + var createCounterText = function (value, type, appendSuffix) { + var defaultSuffix = appendSuffix ? '. ' : ''; + var cjkSuffix = appendSuffix ? '、' : ''; + var koreanSuffix = appendSuffix ? ', ' : ''; + var spaceSuffix = appendSuffix ? ' ' : ''; + switch (type) { + case 0 /* DISC */: + return '•' + spaceSuffix; + case 1 /* CIRCLE */: + return '◦' + spaceSuffix; + case 2 /* SQUARE */: + return '◾' + spaceSuffix; + case 5 /* DECIMAL_LEADING_ZERO */: + var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); + return string.length < 4 ? "0" + string : string; + case 4 /* CJK_DECIMAL */: + return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix); + case 6 /* LOWER_ROMAN */: + return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase(); + case 7 /* UPPER_ROMAN */: + return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix); + case 8 /* LOWER_GREEK */: + return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix); + case 9 /* LOWER_ALPHA */: + return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix); + case 10 /* UPPER_ALPHA */: + return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix); + case 11 /* ARABIC_INDIC */: + return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix); + case 12 /* ARMENIAN */: + case 49 /* UPPER_ARMENIAN */: + return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix); + case 35 /* LOWER_ARMENIAN */: + return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase(); + case 13 /* BENGALI */: + return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix); + case 14 /* CAMBODIAN */: + case 30 /* KHMER */: + return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix); + case 15 /* CJK_EARTHLY_BRANCH */: + return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix); + case 16 /* CJK_HEAVENLY_STEM */: + return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix); + case 17 /* CJK_IDEOGRAPHIC */: + case 48 /* TRAD_CHINESE_INFORMAL */: + return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); + case 47 /* TRAD_CHINESE_FORMAL */: + return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); + case 42 /* SIMP_CHINESE_INFORMAL */: + return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); + case 41 /* SIMP_CHINESE_FORMAL */: + return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); + case 26 /* JAPANESE_INFORMAL */: + return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0); + case 25 /* JAPANESE_FORMAL */: + return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); + case 31 /* KOREAN_HANGUL_FORMAL */: + return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); + case 33 /* KOREAN_HANJA_INFORMAL */: + return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0); + case 32 /* KOREAN_HANJA_FORMAL */: + return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); + case 18 /* DEVANAGARI */: + return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix); + case 20 /* GEORGIAN */: + return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix); + case 21 /* GUJARATI */: + return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix); + case 22 /* GURMUKHI */: + return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix); + case 22 /* HEBREW */: + return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix); + case 23 /* HIRAGANA */: + return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'); + case 24 /* HIRAGANA_IROHA */: + return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'); + case 27 /* KANNADA */: + return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix); + case 28 /* KATAKANA */: + return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix); + case 29 /* KATAKANA_IROHA */: + return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix); + case 34 /* LAO */: + return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix); + case 37 /* MONGOLIAN */: + return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix); + case 38 /* MYANMAR */: + return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix); + case 39 /* ORIYA */: + return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix); + case 40 /* PERSIAN */: + return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix); + case 43 /* TAMIL */: + return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix); + case 44 /* TELUGU */: + return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix); + case 45 /* THAI */: + return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix); + case 46 /* TIBETAN */: + return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix); + case 3 /* DECIMAL */: + default: + return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); + } + }; + + var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'; + var DocumentCloner = /** @class */ (function () { + function DocumentCloner(context, element, options) { + this.context = context; + this.options = options; + this.scrolledElements = []; + this.referenceElement = element; + this.counters = new CounterState(); + this.quoteDepth = 0; + if (!element.ownerDocument) { + throw new Error('Cloned element does not have an owner document'); + } + this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false); + } + DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) { + var _this = this; + var iframe = createIFrameContainer(ownerDocument, windowSize); + if (!iframe.contentWindow) { + return Promise.reject("Unable to find iframe window"); + } + var scrollX = ownerDocument.defaultView.pageXOffset; + var scrollY = ownerDocument.defaultView.pageYOffset; + var cloneWindow = iframe.contentWindow; + var documentClone = cloneWindow.document; + /* Chrome doesn't detect relative background-images assigned in inline