commit 5f425167a60589e1625c442e42c983351f89d378
Author: MTRNord <mtrnord1@gmail.com>
Date: Tue, 2 Apr 2024 11:08:12 +0200
Initial commit
Diffstat:
26 files changed, 8877 insertions(+), 0 deletions(-)
diff --git a/.cargo/config.toml b/.cargo/config.toml
@@ -0,0 +1,11 @@
+[target.wasm32-unknown-unknown]
+runner = "wasm-server-runner"
+
+[target.x86_64-pc-windows-msvc]
+rustflags = ["-C", "link-arg=-fuse-ld=lld"]
+
+[target.x86_64-pc-windows-gnu]
+rustflags = ["-C", "link-arg=-fuse-ld=lld"]
+
+[target.x86_64-unknown-linux-gnu]
+rustflags = ["-C", "linker=clang", "-C", "link-arg=-fuse-ld=lld"]
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/Cargo.lock b/Cargo.lock
@@ -0,0 +1,7849 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ab_glyph"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225"
+dependencies = [
+ "ab_glyph_rasterizer",
+ "owned_ttf_parser",
+]
+
+[[package]]
+name = "ab_glyph_rasterizer"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
+
+[[package]]
+name = "accesskit"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b"
+
+[[package]]
+name = "accesskit_consumer"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6"
+dependencies = [
+ "accesskit",
+]
+
+[[package]]
+name = "accesskit_macos"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7"
+dependencies = [
+ "accesskit",
+ "accesskit_consumer",
+ "objc2 0.3.0-beta.3.patch-leaks.3",
+ "once_cell",
+]
+
+[[package]]
+name = "accesskit_windows"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b"
+dependencies = [
+ "accesskit",
+ "accesskit_consumer",
+ "once_cell",
+ "paste",
+ "static_assertions",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "accesskit_winit"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45f8f7c9f66d454d5fd8e344c8c8c7324b57194e1041b955519fc58a01e77a25"
+dependencies = [
+ "accesskit",
+ "accesskit_macos",
+ "accesskit_windows",
+ "raw-window-handle",
+ "winit",
+]
+
+[[package]]
+name = "accessory"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "850bb534b9dc04744fbbb71d30ad6d25a7e4cf6dc33e223c81ef3a92ebab4e0b"
+dependencies = [
+ "macroific",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+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 = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "getrandom",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
+name = "alsa"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce"
+dependencies = [
+ "alsa-sys",
+ "bitflags 2.5.0",
+ "libc",
+]
+
+[[package]]
+name = "alsa-sys"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "android-activity"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289"
+dependencies = [
+ "android-properties",
+ "bitflags 2.5.0",
+ "cc",
+ "cesu8",
+ "jni",
+ "jni-sys",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-context",
+ "ndk-sys",
+ "num_enum",
+ "thiserror",
+]
+
+[[package]]
+name = "android-properties"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_log-sys"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+
+[[package]]
+name = "anymap2"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
+
+[[package]]
+name = "approx"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "aquamarine"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e"
+dependencies = [
+ "include_dir",
+ "itertools 0.10.5",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "arrayref"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "as-raw-xcb-connection"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b"
+
+[[package]]
+name = "as_variant"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38fa22307249f86fb7fad906fcae77f2564caeb56d7209103c551cd1cf4798f"
+
+[[package]]
+name = "ash"
+version = "0.37.3+1.3.251"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a"
+dependencies = [
+ "libloading 0.7.4",
+]
+
+[[package]]
+name = "assign"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002"
+
+[[package]]
+name = "async-broadcast"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b"
+dependencies = [
+ "event-listener 2.5.3",
+ "futures-core",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.1",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-compat"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f68a707c1feb095d8c07f8a65b9f506b117d30af431cab89374357de7c11461b"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "once_cell",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316"
+dependencies = [
+ "async-lock",
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-fs"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1"
+dependencies = [
+ "async-lock",
+ "blocking",
+ "futures-lite",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+dependencies = [
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-stream"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+dependencies = [
+ "async-stream-impl",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-stream-impl"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
+
+[[package]]
+name = "async-trait"
+version = "0.1.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "futures-core",
+ "getrandom",
+ "instant",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.71"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
+name = "bevy"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea370412c322af887c9115442d8f2ec991b652f163a1d8920ecaf08cae63f2bc"
+dependencies = [
+ "bevy_internal",
+]
+
+[[package]]
+name = "bevy_a11y"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6192db480a04d4a0ad5d89a2fbd78ccca5ce902829a49ec2d1dbc213222ed8b1"
+dependencies = [
+ "accesskit",
+ "bevy_app",
+ "bevy_derive",
+ "bevy_ecs",
+]
+
+[[package]]
+name = "bevy_animation"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef3bbaf9233c428d8dd4b66a41b5381e41c67da860d9dc2118a8e6610ec874c"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_time",
+ "bevy_transform",
+ "bevy_utils",
+]
+
+[[package]]
+name = "bevy_app"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b508824497f3a3a2fab8398dc3944a4d4adddcc30ee25cd6d45b0a57336549ce"
+dependencies = [
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_reflect",
+ "bevy_tasks",
+ "bevy_utils",
+ "downcast-rs",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "bevy_asset"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf224b57fb65e1cde921afe0b343c2d595531dbf882c41abad01bbc665a05c4"
+dependencies = [
+ "async-broadcast",
+ "async-fs",
+ "async-lock",
+ "bevy_app",
+ "bevy_asset_macros",
+ "bevy_ecs",
+ "bevy_log",
+ "bevy_reflect",
+ "bevy_tasks",
+ "bevy_utils",
+ "bevy_winit",
+ "blake3",
+ "crossbeam-channel",
+ "downcast-rs",
+ "futures-io",
+ "futures-lite",
+ "js-sys",
+ "parking_lot",
+ "ron",
+ "serde",
+ "thiserror",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "bevy_asset_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "684c855651e7734740b76ada0e7daed116c46d393f9031cc45c4fe9ad5829548"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_audio"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0af1796b7e56c2f49de5be72fb2aadb8f9310d6173d70040fd2eff1c7cb29009"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_transform",
+ "bevy_utils",
+ "cpal",
+ "rodio",
+]
+
+[[package]]
+name = "bevy_core"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1a8f4722fb978d308b6311f3dd61f6885165055ad05ce3dfc1b2fd001bb017e"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_tasks",
+ "bevy_utils",
+ "bytemuck",
+]
+
+[[package]]
+name = "bevy_core_pipeline"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "568659c43c8f1805f434b5fc0f8e700c263391403f899312bb0e4bc8d8b9ca70"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_log",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_utils",
+ "bitflags 2.5.0",
+ "radsort",
+ "serde",
+]
+
+[[package]]
+name = "bevy_derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7de77523d154e220a740e568a89f52fac7de481374bdecbbbeb283a37580ba34"
+dependencies = [
+ "bevy_macro_utils",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_diagnostic"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b5b031eeafc17bed997313ca15c8e4ed8b97fe2e9ef48e980833e4bf5cfa0e7"
+dependencies = [
+ "bevy_app",
+ "bevy_core",
+ "bevy_ecs",
+ "bevy_log",
+ "bevy_time",
+ "bevy_utils",
+ "const-fnv1a-hash",
+ "sysinfo",
+]
+
+[[package]]
+name = "bevy_ecs"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a027175613f630a51273c0f8ae909dd54ea3ce72eb573f456056553f79918ac"
+dependencies = [
+ "async-channel",
+ "bevy_ecs_macros",
+ "bevy_ptr",
+ "bevy_reflect",
+ "bevy_tasks",
+ "bevy_utils",
+ "downcast-rs",
+ "fixedbitset",
+ "rustc-hash",
+ "serde",
+ "thiserror",
+ "thread_local",
+]
+
+[[package]]
+name = "bevy_ecs_ldtk"
+version = "0.9.0"
+source = "git+https://github.com/theshortcut/bevy_ecs_ldtk?rev=ef84e85e958c988e35bcd5e700d33f8cdb8015d1#ef84e85e958c988e35bcd5e700d33f8cdb8015d1"
+dependencies = [
+ "bevy",
+ "bevy_ecs_ldtk_macros",
+ "bevy_ecs_tilemap",
+ "derive-getters",
+ "derive_more",
+ "hex",
+ "paste",
+ "path-clean",
+ "regex",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_ecs_ldtk_macros"
+version = "0.9.0"
+source = "git+https://github.com/theshortcut/bevy_ecs_ldtk?rev=ef84e85e958c988e35bcd5e700d33f8cdb8015d1#ef84e85e958c988e35bcd5e700d33f8cdb8015d1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bevy_ecs_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55dbbb6300f08cef5983497970db8545d3cbda6ee4f410a6c6742b7b6bbfd3af"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_ecs_tilemap"
+version = "0.12.0"
+source = "git+https://github.com/StarArawn/bevy_ecs_tilemap#25def41e029626bb5e84fe7aca1f16a1d6beccdc"
+dependencies = [
+ "bevy",
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "bevy_encase_derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df72ac1273fcdb8105736c42815442ae1291f1f577e34cb7e9d18f732103e2f0"
+dependencies = [
+ "bevy_macro_utils",
+ "encase_derive_impl",
+]
+
+[[package]]
+name = "bevy_gilrs"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02146d8a92ac322717185005a17b488e74b2ec08ca3f9eb8a7cadb7f0486cb70"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_input",
+ "bevy_log",
+ "bevy_time",
+ "bevy_utils",
+ "gilrs",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_gizmos"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66e9965860d505e2ea4144850904cefd8b528f59477061df8563194dc954ad58"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core",
+ "bevy_core_pipeline",
+ "bevy_ecs",
+ "bevy_gizmos_macros",
+ "bevy_log",
+ "bevy_math",
+ "bevy_pbr",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_sprite",
+ "bevy_transform",
+ "bevy_utils",
+]
+
+[[package]]
+name = "bevy_gizmos_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e689be764256a5a0d1f01c5f1dbaa3439e98a1338bf88b496db184d28e00c9"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_gltf"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0cd8fd1c1ce3a57ca96eaee05f406ad65865efd02606e5f288b5f7767d8c6f"
+dependencies = [
+ "base64",
+ "bevy_animation",
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core",
+ "bevy_core_pipeline",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_log",
+ "bevy_math",
+ "bevy_pbr",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_scene",
+ "bevy_tasks",
+ "bevy_transform",
+ "bevy_utils",
+ "gltf",
+ "percent-encoding",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_hierarchy"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b2999d1e5bb877b475c9b2d17643d5fb47fc4cc49ea48ba3ab5a6b00ed850a6"
+dependencies = [
+ "bevy_app",
+ "bevy_core",
+ "bevy_ecs",
+ "bevy_log",
+ "bevy_reflect",
+ "bevy_utils",
+]
+
+[[package]]
+name = "bevy_input"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c22481e4290e2eca68b0c1f5f0a826f185d8f5e40e05c86bb6044dcfe3a04b3"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_utils",
+ "smol_str",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_internal"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ac9275cc7f4bce41dff1e62b853933e242f9e5c076d89f06156cf743097d6a0"
+dependencies = [
+ "bevy_a11y",
+ "bevy_animation",
+ "bevy_app",
+ "bevy_asset",
+ "bevy_audio",
+ "bevy_core",
+ "bevy_core_pipeline",
+ "bevy_derive",
+ "bevy_diagnostic",
+ "bevy_ecs",
+ "bevy_gilrs",
+ "bevy_gizmos",
+ "bevy_gltf",
+ "bevy_hierarchy",
+ "bevy_input",
+ "bevy_log",
+ "bevy_math",
+ "bevy_pbr",
+ "bevy_ptr",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_scene",
+ "bevy_sprite",
+ "bevy_tasks",
+ "bevy_text",
+ "bevy_time",
+ "bevy_transform",
+ "bevy_ui",
+ "bevy_utils",
+ "bevy_window",
+ "bevy_winit",
+]
+
+[[package]]
+name = "bevy_log"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20c7b4e2443654d68b6f8c54e5f1ce3a16c8a9af10f4832390dcae36c1323307"
+dependencies = [
+ "android_log-sys",
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_utils",
+ "console_error_panic_hook",
+ "tracing-log 0.1.4",
+ "tracing-subscriber",
+ "tracing-wasm",
+]
+
+[[package]]
+name = "bevy_macro_utils"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bbbf88fc577a21ee9994feed2253ee9838b63fb976783b7a549edfbe07c6764"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc-hash",
+ "syn 2.0.57",
+ "toml_edit 0.21.1",
+]
+
+[[package]]
+name = "bevy_math"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d30721f36a0b5f9ad39deb140c50b85cbbaefebab8d10bd20d9de1c9572f968"
+dependencies = [
+ "glam",
+ "serde",
+]
+
+[[package]]
+name = "bevy_mikktspace"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc081a695c3513f09fdc640bf7f66cd73c47eb479da50312bf9710ee6927729d"
+dependencies = [
+ "glam",
+]
+
+[[package]]
+name = "bevy_pbr"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d90401eb58acb1c9627f11f75b076bfdeab2af9a4aea4540cb525efc5782b613"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core_pipeline",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_utils",
+ "bevy_window",
+ "bitflags 2.5.0",
+ "bytemuck",
+ "fixedbitset",
+ "radsort",
+ "smallvec",
+ "thread_local",
+]
+
+[[package]]
+name = "bevy_ptr"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea003584000ef02b73800cc7cb62ee74792fff431e6a8df36863c43bf56fb491"
+
+[[package]]
+name = "bevy_rapier2d"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc1f2ef2ae7fcf68ccb33f95c1dfc7c679bbc0e33b7f2e461353073065ff6e1e"
+dependencies = [
+ "bevy",
+ "bitflags 2.5.0",
+ "log",
+ "nalgebra",
+ "rapier2d",
+]
+
+[[package]]
+name = "bevy_reflect"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1101dbd44ae35e5c66802e46cfba1182e49f6163c824bee380d4acab5b2f640"
+dependencies = [
+ "bevy_math",
+ "bevy_ptr",
+ "bevy_reflect_derive",
+ "bevy_utils",
+ "downcast-rs",
+ "erased-serde",
+ "glam",
+ "serde",
+ "smol_str",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_reflect_derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2a8791d5841a6db862571f709d7ee70c2a5eb1634c3a4329817d04f0e307c2d"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+ "uuid",
+]
+
+[[package]]
+name = "bevy_render"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75bbb48471f8cd06f5253e271f9b793695f5b821fc9d39a875497905578d9867"
+dependencies = [
+ "async-channel",
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_encase_derive",
+ "bevy_hierarchy",
+ "bevy_log",
+ "bevy_math",
+ "bevy_mikktspace",
+ "bevy_reflect",
+ "bevy_render_macros",
+ "bevy_tasks",
+ "bevy_time",
+ "bevy_transform",
+ "bevy_utils",
+ "bevy_window",
+ "bitflags 2.5.0",
+ "bytemuck",
+ "codespan-reporting",
+ "downcast-rs",
+ "encase",
+ "futures-lite",
+ "hexasphere",
+ "image",
+ "js-sys",
+ "ktx2",
+ "naga",
+ "naga_oil",
+ "ruzstd",
+ "serde",
+ "thiserror",
+ "thread_local",
+ "wasm-bindgen",
+ "web-sys",
+ "wgpu",
+]
+
+[[package]]
+name = "bevy_render_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffd61a89e7a1b55c78a0aef1fcadd0247fe74a101c00f831791db73d63465051"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_scene"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368b989251241efb590976e309e4778ed9d04eb896c37ea6b874a374432a0b3e"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_utils",
+ "serde",
+ "thiserror",
+ "uuid",
+]
+
+[[package]]
+name = "bevy_sprite"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f52d807086d2c92bc37ee770aa6dbb442b62cdc5665b9c6dd32629b8fae05e4"
+dependencies = [
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core_pipeline",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_log",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_transform",
+ "bevy_utils",
+ "bitflags 2.5.0",
+ "bytemuck",
+ "fixedbitset",
+ "guillotiere",
+ "radsort",
+ "rectangle-pack",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_tasks"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40be36aeec06b8f0eb87894922c6a7fbd8f2a5c8e77dcb9dcbf77641046988c0"
+dependencies = [
+ "async-channel",
+ "async-executor",
+ "async-task",
+ "concurrent-queue",
+ "futures-lite",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "bevy_text"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48f0e51919e13c0c39ecdffcf843e8a8d95fd8861023b02b3ee486d3fa4b6003"
+dependencies = [
+ "ab_glyph",
+ "bevy_app",
+ "bevy_asset",
+ "bevy_ecs",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_sprite",
+ "bevy_transform",
+ "bevy_utils",
+ "bevy_window",
+ "glyph_brush_layout",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_time"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06fc48cf59acd2b1c52e61787b5bb3db1a0f923cc6ccc68c0d8ab2b5894cfd28"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_reflect",
+ "bevy_utils",
+ "crossbeam-channel",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_transform"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b962ae4253f5413b64a839ab8e8d63bc3e3db45f41d06b6ddc7886acdcb5d0f5"
+dependencies = [
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_math",
+ "bevy_reflect",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_ui"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3449b963573a56b484cf4f8883f1b5b8eaccaaeda8f28a70c006e3291450f77"
+dependencies = [
+ "bevy_a11y",
+ "bevy_app",
+ "bevy_asset",
+ "bevy_core_pipeline",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_input",
+ "bevy_log",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_render",
+ "bevy_sprite",
+ "bevy_text",
+ "bevy_transform",
+ "bevy_utils",
+ "bevy_window",
+ "bytemuck",
+ "taffy",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_utils"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac758c2e8509a4a260b7a91f920be3beee6ab9e76e388494240ac5d672779159"
+dependencies = [
+ "ahash",
+ "bevy_utils_proc_macros",
+ "getrandom",
+ "hashbrown",
+ "nonmax",
+ "petgraph",
+ "smallvec",
+ "thiserror",
+ "tracing",
+ "uuid",
+ "web-time 0.2.4",
+]
+
+[[package]]
+name = "bevy_utils_proc_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "014c80f466ed01821a2e602d63cd5076915c1af5de5fa3c074cc4a9ca898ada7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bevy_window"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa0c2a1e580b3b0ad0c928a5e250c8375c6a8a70d8b0f483b23d3bf5b670cc1a"
+dependencies = [
+ "bevy_a11y",
+ "bevy_app",
+ "bevy_ecs",
+ "bevy_input",
+ "bevy_math",
+ "bevy_reflect",
+ "bevy_utils",
+ "raw-window-handle",
+ "smol_str",
+]
+
+[[package]]
+name = "bevy_winit"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2c408d459172758a4cfa37e3452d4ea0898101ec2b6d92aa3eb698511bef389"
+dependencies = [
+ "accesskit_winit",
+ "approx",
+ "bevy_a11y",
+ "bevy_app",
+ "bevy_derive",
+ "bevy_ecs",
+ "bevy_hierarchy",
+ "bevy_input",
+ "bevy_math",
+ "bevy_tasks",
+ "bevy_utils",
+ "bevy_window",
+ "crossbeam-channel",
+ "raw-window-handle",
+ "wasm-bindgen",
+ "web-sys",
+ "winit",
+]
+
+[[package]]
+name = "bindgen"
+version = "0.69.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
+dependencies = [
+ "bitflags 2.5.0",
+ "cexpr",
+ "clang-sys",
+ "itertools 0.12.1",
+ "lazy_static",
+ "lazycell",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitcode_derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2ab471e684e2f6f3c3071361e2c30e41d7543f505658daae3ceb89c202d933e"
+dependencies = [
+ "packagemerge",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "bitcode_lightyear_patch"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c82d186a0148ef9a83a4c8129acf71485a273a5650fcb47cbf66d361615dc660"
+dependencies = [
+ "bitcode_derive",
+ "bytemuck",
+ "from_bytes_or_zeroed",
+ "residua-zigzag",
+ "serde",
+ "simdutf8",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitmaps"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6"
+
+[[package]]
+name = "blake3"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq 0.3.0",
+]
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-padding"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-sys"
+version = "0.1.0-beta.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146"
+dependencies = [
+ "objc-sys 0.2.0-beta.2",
+]
+
+[[package]]
+name = "block-sys"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
+dependencies = [
+ "objc-sys 0.3.2",
+]
+
+[[package]]
+name = "block2"
+version = "0.2.0-alpha.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42"
+dependencies = [
+ "block-sys 0.1.0-beta.1",
+ "objc2-encode 2.0.0-pre.2",
+]
+
+[[package]]
+name = "block2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68"
+dependencies = [
+ "block-sys 0.2.1",
+ "objc2 0.4.1",
+]
+
+[[package]]
+name = "blocking"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
+dependencies = [
+ "async-channel",
+ "async-lock",
+ "async-task",
+ "fastrand",
+ "futures-io",
+ "futures-lite",
+ "piper",
+ "tracing",
+]
+
+[[package]]
+name = "bs58"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+
+[[package]]
+name = "bytemuck"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bytesize"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
+
+[[package]]
+name = "bzip2"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
+dependencies = [
+ "bzip2-sys",
+ "libc",
+]
+
+[[package]]
+name = "bzip2-sys"
+version = "0.1.11+1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "calloop"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
+dependencies = [
+ "bitflags 2.5.0",
+ "log",
+ "polling",
+ "rustix",
+ "slab",
+ "thiserror",
+]
+
+[[package]]
+name = "calloop-wayland-source"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
+dependencies = [
+ "calloop",
+ "rustix",
+ "wayland-backend",
+ "wayland-client",
+]
+
+[[package]]
+name = "cbc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+dependencies = [
+ "jobserver",
+ "libc",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cfg-vis"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3a2c3bf5fc10fe2ca157564fbe08a4cb2b0a7d2ff3fe2f9683e65d5e7c7859c"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
+[[package]]
+name = "chacha20"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "chacha20poly1305"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"
+dependencies = [
+ "aead",
+ "chacha20",
+ "cipher",
+ "poly1305",
+ "zeroize",
+]
+
+[[package]]
+name = "chrono"
+version = "0.4.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+ "zeroize",
+]
+
+[[package]]
+name = "clang-sys"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading 0.8.3",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim 0.11.0",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "com"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6"
+dependencies = [
+ "com_macros",
+]
+
+[[package]]
+name = "com_macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5"
+dependencies = [
+ "com_macros_support",
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "com_macros_support"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "const-fnv1a-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca"
+
+[[package]]
+name = "const-oid"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+
+[[package]]
+name = "const_panic"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6051f239ecec86fde3410901ab7860d458d160371533842974fc61f96d15879b"
+
+[[package]]
+name = "const_soft_float"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff"
+
+[[package]]
+name = "constant_time_eq"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
+
+[[package]]
+name = "constgebra"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc"
+dependencies = [
+ "const_soft_float",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "core-graphics"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types 0.5.0",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "libc",
+]
+
+[[package]]
+name = "coreaudio-rs"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation-sys",
+ "coreaudio-sys",
+]
+
+[[package]]
+name = "coreaudio-sys"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9"
+dependencies = [
+ "bindgen",
+]
+
+[[package]]
+name = "cpal"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779"
+dependencies = [
+ "alsa",
+ "core-foundation-sys",
+ "coreaudio-rs",
+ "dasp_sample",
+ "jni",
+ "js-sys",
+ "libc",
+ "mach2",
+ "ndk",
+ "ndk-context",
+ "oboe",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows 0.54.0",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "rand_core",
+ "typenum",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "cursor-icon"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+
+[[package]]
+name = "curve25519-dalek"
+version = "4.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "curve25519-dalek-derive",
+ "digest",
+ "fiat-crypto",
+ "platforms",
+ "rustc_version",
+ "serde",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "cxx"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff4dc7287237dd438b926a81a1a5605dad33d286870e5eee2db17bf2bcd9e92a"
+dependencies = [
+ "cc",
+ "cxxbridge-flags",
+ "cxxbridge-macro",
+ "link-cplusplus",
+]
+
+[[package]]
+name = "cxx-build"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f47c6c8ad7c1a10d3ef0fe3ff6733f4db0d78f08ef0b13121543163ef327058b"
+dependencies = [
+ "cc",
+ "codespan-reporting",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "scratch",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "cxxbridge-flags"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "701a1ac7a697e249cdd8dc026d7a7dafbfd0dbcd8bd24ec55889f2bc13dd6287"
+
+[[package]]
+name = "cxxbridge-macro"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b404f596046b0bb2d903a9c786b875a126261b52b7c3a64bbb66382c41c771df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "d3d12"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307"
+dependencies = [
+ "bitflags 2.5.0",
+ "libloading 0.8.3",
+ "winapi",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "dasp_sample"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
+
+[[package]]
+name = "data-encoding"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "deadpool"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490"
+dependencies = [
+ "async-trait",
+ "deadpool-runtime",
+ "num_cpus",
+ "tokio",
+]
+
+[[package]]
+name = "deadpool-runtime"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49"
+dependencies = [
+ "tokio",
+]
+
+[[package]]
+name = "deadpool-sqlite"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8010e36e12f3be22543a5e478b4af20aeead9a700dd69581a5e050a070fc22c"
+dependencies = [
+ "deadpool",
+ "deadpool-sync",
+ "rusqlite",
+]
+
+[[package]]
+name = "deadpool-sync"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8db70494c13cae4ce67b4b4dafdaf828cf0df7237ab5b9e2fcabee4965d0a0a"
+dependencies = [
+ "deadpool-runtime",
+]
+
+[[package]]
+name = "delegate-display"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98a85201f233142ac819bbf6226e36d0b5e129a47bd325084674261c82d4cd66"
+dependencies = [
+ "macroific",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "der"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+dependencies = [
+ "const-oid",
+ "der_derive",
+ "flagset",
+ "zeroize",
+]
+
+[[package]]
+name = "der_derive"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "derive-getters"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2c35ab6e03642397cdda1dd58abbc05d418aef8e36297f336d5aba060fe8df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.3",
+]
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+
+[[package]]
+name = "ed25519"
+version = "2.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
+dependencies = [
+ "pkcs8",
+ "serde",
+ "signature",
+]
+
+[[package]]
+name = "ed25519-dalek"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
+dependencies = [
+ "curve25519-dalek",
+ "ed25519",
+ "rand_core",
+ "serde",
+ "sha2",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "either"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+
+[[package]]
+name = "encase"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95ed933078d2e659745df651f4c180511cd582e5b9414ff896e7d50d207e3103"
+dependencies = [
+ "const_panic",
+ "encase_derive",
+ "glam",
+ "thiserror",
+]
+
+[[package]]
+name = "encase_derive"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4ce1449c7d19eba6cc0abd231150ad81620a8dce29601d7f8d236e5d431d72a"
+dependencies = [
+ "encase_derive_impl",
+]
+
+[[package]]
+name = "encase_derive_impl"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "enum_delegate"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8ea75f31022cba043afe037940d73684327e915f88f62478e778c3de914cd0a"
+dependencies = [
+ "enum_delegate_lib",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "enum_delegate_lib"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e1f6c3800b304a6be0012039e2a45a322a093539c45ab818d9e6895a39c90fe"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rand",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "enum_dispatch"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd"
+dependencies = [
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "erased-serde"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "euclid"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
+dependencies = [
+ "event-listener 5.2.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "eyeball"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42482893d982111055ce4b24234d6250396d3785767c6b04cedd84612a0b80fb"
+dependencies = [
+ "futures-core",
+ "readlock",
+ "tracing",
+]
+
+[[package]]
+name = "eyeball-im"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "021fab29d9670be5867b16d56a95c29a12c3c1bb654e7d589010a028716d625d"
+dependencies = [
+ "futures-core",
+ "imbl",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
+[[package]]
+name = "fancy_constructor"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f71f317e4af73b2f8f608fac190c52eac4b1879d2145df1db2fe48881ca69435"
+dependencies = [
+ "macroific",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
+
+[[package]]
+name = "fdeflate"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "fiat-crypto"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f"
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flagset"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdeb3aa5e95cf9aabc17f060cfa0ced7b83f042390760ca53bf09df9968acaa1"
+
+[[package]]
+name = "flate2"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared 0.1.1",
+]
+
+[[package]]
+name = "foreign-types"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
+dependencies = [
+ "foreign-types-macros",
+ "foreign-types-shared 0.3.1",
+]
+
+[[package]]
+name = "foreign-types-macros"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "from_bytes_or_zeroed"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d25934a78435889223e575c7b0fc36a290c5a312e7a7ae901f10587792e142a"
+
+[[package]]
+name = "fs2"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-timer"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "gethostname"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+dependencies = [
+ "libc",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gilrs"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "499067aa54af19f88732dc418f61f23d5912de1518665bb0eca034ca0d07574c"
+dependencies = [
+ "fnv",
+ "gilrs-core",
+ "log",
+ "uuid",
+ "vec_map",
+]
+
+[[package]]
+name = "gilrs-core"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c132270a155f2548e67d66e731075c336c39098afc555752f3df8f882c720e"
+dependencies = [
+ "core-foundation",
+ "inotify",
+ "io-kit-sys",
+ "js-sys",
+ "libc",
+ "libudev-sys",
+ "log",
+ "nix",
+ "uuid",
+ "vec_map",
+ "wasm-bindgen",
+ "web-sys",
+ "windows 0.54.0",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+
+[[package]]
+name = "gl_generator"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
+dependencies = [
+ "khronos_api",
+ "log",
+ "xml-rs",
+]
+
+[[package]]
+name = "glam"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3"
+dependencies = [
+ "bytemuck",
+ "serde",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "gloo-timers"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gloo-utils"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
+dependencies = [
+ "js-sys",
+ "serde",
+ "serde_json",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "glow"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1"
+dependencies = [
+ "js-sys",
+ "slotmap",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gltf"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b78f069cf941075835822953c345b9e1edd67ae347b81ace3aea9de38c2ef33"
+dependencies = [
+ "byteorder",
+ "gltf-json",
+ "lazy_static",
+ "serde_json",
+]
+
+[[package]]
+name = "gltf-derive"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "438ffe1a5540d75403feaf23636b164e816e93f6f03131674722b3886ce32a57"
+dependencies = [
+ "inflections",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "gltf-json"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "655951ba557f2bc69ea4b0799446bae281fa78efae6319968bdd2c3e9a06d8e1"
+dependencies = [
+ "gltf-derive",
+ "serde",
+ "serde_derive",
+ "serde_json",
+]
+
+[[package]]
+name = "glutin_wgl_sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead"
+dependencies = [
+ "gl_generator",
+]
+
+[[package]]
+name = "glyph_brush_layout"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38"
+dependencies = [
+ "ab_glyph",
+ "approx",
+ "xi-unicode",
+]
+
+[[package]]
+name = "governor"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b"
+dependencies = [
+ "cfg-if",
+ "dashmap",
+ "futures",
+ "futures-timer",
+ "no-std-compat",
+ "nonzero_ext",
+ "parking_lot",
+ "portable-atomic",
+ "quanta",
+ "rand",
+ "smallvec",
+ "spinning_top",
+]
+
+[[package]]
+name = "gpu-alloc"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
+dependencies = [
+ "bitflags 2.5.0",
+ "gpu-alloc-types",
+]
+
+[[package]]
+name = "gpu-alloc-types"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "gpu-allocator"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884"
+dependencies = [
+ "log",
+ "presser",
+ "thiserror",
+ "winapi",
+ "windows 0.52.0",
+]
+
+[[package]]
+name = "gpu-descriptor"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c"
+dependencies = [
+ "bitflags 2.5.0",
+ "gpu-descriptor-types",
+ "hashbrown",
+]
+
+[[package]]
+name = "gpu-descriptor-types"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "grid"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c"
+
+[[package]]
+name = "guillotiere"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782"
+dependencies = [
+ "euclid",
+ "svg_fmt",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.12",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+ "serde",
+]
+
+[[package]]
+name = "hashlink"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
+dependencies = [
+ "hashbrown",
+]
+
+[[package]]
+name = "hassle-rs"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890"
+dependencies = [
+ "bitflags 2.5.0",
+ "com",
+ "libc",
+ "libloading 0.8.3",
+ "thiserror",
+ "widestring",
+ "winapi",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hexasphere"
+version = "10.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f33ddb7f7143d9e703c072e88b98cd8b9719f174137a671429351bd2ee43c02a"
+dependencies = [
+ "constgebra",
+ "glam",
+]
+
+[[package]]
+name = "hexf-parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
+
+[[package]]
+name = "hkdf"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
+dependencies = [
+ "hmac",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http 0.2.12",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "hyper"
+version = "0.14.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http 0.2.12",
+ "hyper",
+ "rustls",
+ "tokio",
+ "tokio-rustls",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core 0.52.0",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "icrate"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319"
+dependencies = [
+ "block2 0.3.0",
+ "dispatch",
+ "objc2 0.4.1",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "image"
+version = "0.24.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "num-traits",
+ "png",
+]
+
+[[package]]
+name = "imbl"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978d142c8028edf52095703af2fad11d6f611af1246685725d6b850634647085"
+dependencies = [
+ "bitmaps",
+ "imbl-sized-chunks",
+ "rand_core",
+ "rand_xoshiro",
+ "serde",
+ "version_check",
+]
+
+[[package]]
+name = "imbl-sized-chunks"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63"
+dependencies = [
+ "bitmaps",
+]
+
+[[package]]
+name = "include_dir"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e"
+dependencies = [
+ "include_dir_macros",
+]
+
+[[package]]
+name = "include_dir_macros"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "indexed_db_futures"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6cc2083760572ee02385ab8b7c02c20925d2dd1f97a1a25a8737a238608f1152"
+dependencies = [
+ "accessory",
+ "cfg-if",
+ "delegate-display",
+ "fancy_constructor",
+ "js-sys",
+ "uuid",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+ "serde",
+]
+
+[[package]]
+name = "inflections"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a"
+
+[[package]]
+name = "inotify"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc"
+dependencies = [
+ "bitflags 1.3.2",
+ "inotify-sys",
+ "libc",
+]
+
+[[package]]
+name = "inotify-sys"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "block-padding",
+ "generic-array",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "io-kit-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b"
+dependencies = [
+ "core-foundation-sys",
+ "mach2",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
+name = "itertools"
+version = "0.4.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a9b56eb56058f43dc66e58f40a214b2ccbc9f3df51861b63d51dec7b65bc3f"
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "iyes_perf_ui"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a49f5aa5866dadfdd274c45eddc0a94c84ad1ce0c02c27bcb33c34a20b961f9e"
+dependencies = [
+ "bevy",
+]
+
+[[package]]
+name = "jni"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+dependencies = [
+ "cesu8",
+ "cfg-if",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "jobserver"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "js_int"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d937f95470b270ce8b8950207715d71aa8e153c0d44c6684d59397ed4949160a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "js_option"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68421373957a1593a767013698dbf206e2b221eefe97a44d98d18672ff38423c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "khronos-egl"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76"
+dependencies = [
+ "libc",
+ "libloading 0.8.3",
+ "pkg-config",
+]
+
+[[package]]
+name = "khronos_api"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
+
+[[package]]
+name = "konst"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d712a8c49d4274f8d8a5cf61368cb5f3c143d149882b1a2918129e53395fdb0"
+dependencies = [
+ "const_panic",
+ "konst_kernel",
+ "typewit",
+]
+
+[[package]]
+name = "konst_kernel"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dac6ea8c376b6e208a81cf39b8e82bebf49652454d98a4829e907dac16ef1790"
+dependencies = [
+ "typewit",
+]
+
+[[package]]
+name = "ktx2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+
+[[package]]
+name = "lewton"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030"
+dependencies = [
+ "byteorder",
+ "ogg",
+ "tinyvec",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "libredox"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+ "redox_syscall 0.4.1",
+]
+
+[[package]]
+name = "libsqlite3-sys"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
+dependencies = [
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "libudev-sys"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "libwebrtc"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdf058ddf2b9aa82a7453cb9a7060db9c89d2942f86c5d3cd8637a213346ae4d"
+dependencies = [
+ "cxx",
+ "jni",
+ "js-sys",
+ "lazy_static",
+ "livekit-protocol",
+ "log",
+ "parking_lot",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "webrtc-sys",
+]
+
+[[package]]
+name = "lightyear"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "410945fe163a11eee759ffbe8beff893d259e276ce1823ff63ec5b18b8e249ba"
+dependencies = [
+ "anyhow",
+ "async-compat",
+ "base64",
+ "bevy",
+ "bitcode_lightyear_patch",
+ "byteorder",
+ "bytes",
+ "cfg-if",
+ "chacha20poly1305",
+ "chrono",
+ "console_error_panic_hook",
+ "crossbeam-channel",
+ "derive_more",
+ "enum_delegate",
+ "enum_dispatch",
+ "futures-util",
+ "getrandom",
+ "governor",
+ "hashbrown",
+ "instant",
+ "lightyear_macros",
+ "nonzero_ext",
+ "paste",
+ "rand",
+ "ringbuffer",
+ "seahash",
+ "self_cell",
+ "serde",
+ "thiserror",
+ "tokio",
+ "tokio-tungstenite 0.21.0",
+ "tracing",
+ "tracing-log 0.2.0",
+ "tracing-subscriber",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "lightyear_macros"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acc977b2d3f117608514cc692340599953f7666235c878f02f44e58f51bd9ad0"
+dependencies = [
+ "anyhow",
+ "darling",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.57",
+ "uuid",
+]
+
+[[package]]
+name = "link-cplusplus"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+
+[[package]]
+name = "livekit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212ed7272bbe3fddcc5b3a5e7137bd5c8df53670dc54cdb01e82ae065746e3a3"
+dependencies = [
+ "futures-util",
+ "lazy_static",
+ "libwebrtc",
+ "livekit-api",
+ "livekit-protocol",
+ "log",
+ "parking_lot",
+ "prost",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "livekit-api"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e20c3fc3de5944ce6b5c8da4084cf828bbae7216671e32e83b767ce61feeb7e0"
+dependencies = [
+ "futures-util",
+ "livekit-protocol",
+ "log",
+ "parking_lot",
+ "prost",
+ "reqwest",
+ "scopeguard",
+ "serde",
+ "sha2",
+ "thiserror",
+ "tokio",
+ "tokio-tungstenite 0.20.1",
+ "url",
+]
+
+[[package]]
+name = "livekit-protocol"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a1bd23257110be29d024d8d816adff70df18ea1d22ceb1aab6f3ad4aab0d523"
+dependencies = [
+ "futures-util",
+ "parking_lot",
+ "pbjson",
+ "pbjson-types",
+ "prost",
+ "prost-types",
+ "serde",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "mach2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "macroific"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f05c00ac596022625d01047c421a0d97d7f09a18e429187b341c201cb631b9dd"
+dependencies = [
+ "macroific_attr_parse",
+ "macroific_core",
+ "macroific_macro",
+]
+
+[[package]]
+name = "macroific_attr_parse"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd94d5da95b30ae6e10621ad02340909346ad91661f3f8c0f2b62345e46a2f67"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "macroific_core"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13198c120864097a565ccb3ff947672d969932b7975ebd4085732c9f09435e55"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "macroific_macro"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0c9853143cbed7f1e41dc39fee95f9b361bec65c8dc2a01bf609be01b61f5ae"
+dependencies = [
+ "macroific_attr_parse",
+ "macroific_core",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "maplit"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "matrix-pickle"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7fd26463ce5d86b8d9bb9c4142d453198ba22fb91bd46d3c9f144ae699d821d"
+dependencies = [
+ "matrix-pickle-derive",
+ "thiserror",
+]
+
+[[package]]
+name = "matrix-pickle-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93779aa78d39c2fe34746287b10a866192cf8af1b81767fff76bd64099acc0f5"
+dependencies = [
+ "proc-macro-crate 2.0.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "matrix-rpg-rs"
+version = "0.1.0"
+dependencies = [
+ "async-compat",
+ "bevy",
+ "bevy_ecs_ldtk",
+ "bevy_rapier2d",
+ "cfg-if",
+ "clap",
+ "crossbeam-channel",
+ "derive_more",
+ "iyes_perf_ui",
+ "lightyear",
+ "livekit",
+ "matrix-sdk",
+ "rand",
+ "serde",
+]
+
+[[package]]
+name = "matrix-sdk"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "336687e5fc8b33661a31681e988a67e9a3090c7fb1a8323a7f71eeaabad642ec"
+dependencies = [
+ "anymap2",
+ "aquamarine",
+ "as_variant",
+ "async-channel",
+ "async-stream",
+ "async-trait",
+ "backoff",
+ "bytes",
+ "bytesize",
+ "cfg-vis",
+ "event-listener 4.0.3",
+ "eyeball",
+ "eyeball-im",
+ "futures-core",
+ "futures-util",
+ "gloo-timers",
+ "http 0.2.12",
+ "imbl",
+ "indexmap",
+ "matrix-sdk-base",
+ "matrix-sdk-common",
+ "matrix-sdk-indexeddb",
+ "matrix-sdk-sqlite",
+ "mime",
+ "mime2ext",
+ "reqwest",
+ "ruma",
+ "serde",
+ "serde_html_form",
+ "serde_json",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+ "url",
+ "urlencoding",
+ "zeroize",
+]
+
+[[package]]
+name = "matrix-sdk-base"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00891954d0826a94f1d130f46cbca64176003a234c1be5d9d282970d31cf0c87"
+dependencies = [
+ "as_variant",
+ "async-trait",
+ "bitflags 2.5.0",
+ "eyeball",
+ "eyeball-im",
+ "futures-util",
+ "matrix-sdk-common",
+ "matrix-sdk-crypto",
+ "matrix-sdk-store-encryption",
+ "once_cell",
+ "ruma",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "matrix-sdk-common"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb365a626ab6f6c6a2422cfe2565522f19accb06706c6d04bca8f0f71df29c9f"
+dependencies = [
+ "async-trait",
+ "futures-core",
+ "futures-util",
+ "gloo-timers",
+ "instant",
+ "ruma",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "matrix-sdk-crypto"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72aaeca3deb1387a63cd8c689270bd499b9eac3a594c2aaec72d7441ff00cd09"
+dependencies = [
+ "aes",
+ "as_variant",
+ "async-trait",
+ "bs58",
+ "byteorder",
+ "cbc",
+ "cfg-if",
+ "ctr",
+ "eyeball",
+ "futures-core",
+ "futures-util",
+ "hkdf",
+ "hmac",
+ "itertools 0.12.1",
+ "matrix-sdk-common",
+ "pbkdf2 0.12.2",
+ "rand",
+ "rmp-serde",
+ "ruma",
+ "serde",
+ "serde_json",
+ "sha2",
+ "subtle",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tracing",
+ "ulid",
+ "vodozemac",
+ "zeroize",
+]
+
+[[package]]
+name = "matrix-sdk-indexeddb"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad388005c5d4ed2ff38f405d52aa7fa606f4e1ab51baf5f2504721124ed4a58b"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "base64",
+ "getrandom",
+ "gloo-utils",
+ "indexed_db_futures",
+ "js-sys",
+ "matrix-sdk-base",
+ "matrix-sdk-crypto",
+ "matrix-sdk-store-encryption",
+ "ruma",
+ "serde",
+ "serde-wasm-bindgen",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "matrix-sdk-sqlite"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20bd36bc5fa7ecd93516b242ba27466196d52b4a8743d85dd883a67bd6db11dc"
+dependencies = [
+ "async-trait",
+ "deadpool-sqlite",
+ "itertools 0.12.1",
+ "matrix-sdk-base",
+ "matrix-sdk-crypto",
+ "matrix-sdk-store-encryption",
+ "rmp-serde",
+ "ruma",
+ "rusqlite",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "vodozemac",
+]
+
+[[package]]
+name = "matrix-sdk-store-encryption"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a7e3162e9f982a4c57ab46df01a4775f697dec8899738bf62d7e97b63faa61c"
+dependencies = [
+ "blake3",
+ "chacha20poly1305",
+ "displaydoc",
+ "getrandom",
+ "hmac",
+ "pbkdf2 0.12.2",
+ "rand",
+ "rmp-serde",
+ "serde",
+ "serde_json",
+ "sha2",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "matrixmultiply"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
+dependencies = [
+ "autocfg",
+ "rawpointer",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "metal"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25"
+dependencies = [
+ "bitflags 2.5.0",
+ "block",
+ "core-graphics-types",
+ "foreign-types 0.5.0",
+ "log",
+ "objc",
+ "paste",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime2ext"
+version = "0.1.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a85a5069ebd40e64b1985773cc81addbe9d90d7ecf60e7b5475a57ad584c70"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+dependencies = [
+ "adler",
+ "simd-adler32",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "multimap"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+
+[[package]]
+name = "naga"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843"
+dependencies = [
+ "bit-set",
+ "bitflags 2.5.0",
+ "codespan-reporting",
+ "hexf-parse",
+ "indexmap",
+ "log",
+ "num-traits",
+ "pp-rs",
+ "rustc-hash",
+ "spirv",
+ "termcolor",
+ "thiserror",
+ "unicode-xid",
+]
+
+[[package]]
+name = "naga_oil"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ea62ae0f2787456afca7209ca180522b41f00cbe159ee369eba1e07d365cd1"
+dependencies = [
+ "bit-set",
+ "codespan-reporting",
+ "data-encoding",
+ "indexmap",
+ "naga",
+ "once_cell",
+ "regex",
+ "regex-syntax 0.8.3",
+ "rustc-hash",
+ "thiserror",
+ "tracing",
+ "unicode-ident",
+]
+
+[[package]]
+name = "nalgebra"
+version = "0.32.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef"
+dependencies = [
+ "approx",
+ "glam",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "simba",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra-macros"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndk"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
+dependencies = [
+ "bitflags 2.5.0",
+ "jni-sys",
+ "log",
+ "ndk-sys",
+ "num_enum",
+ "raw-window-handle",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-sys"
+version = "0.5.0+25.2.9519653"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+]
+
+[[package]]
+name = "no-std-compat"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nonmax"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51"
+
+[[package]]
+name = "nonzero_ext"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
+
+[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+ "objc_exception",
+]
+
+[[package]]
+name = "objc-sys"
+version = "0.2.0-beta.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7"
+
+[[package]]
+name = "objc-sys"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459"
+
+[[package]]
+name = "objc2"
+version = "0.3.0-beta.3.patch-leaks.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468"
+dependencies = [
+ "block2 0.2.0-alpha.6",
+ "objc-sys 0.2.0-beta.2",
+ "objc2-encode 2.0.0-pre.2",
+]
+
+[[package]]
+name = "objc2"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
+dependencies = [
+ "objc-sys 0.3.2",
+ "objc2-encode 3.0.0",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "2.0.0-pre.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512"
+dependencies = [
+ "objc-sys 0.2.0-beta.2",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666"
+
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "oboe"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb"
+dependencies = [
+ "jni",
+ "ndk",
+ "ndk-context",
+ "num-derive",
+ "num-traits",
+ "oboe-sys",
+]
+
+[[package]]
+name = "oboe-sys"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ogg"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
+
+[[package]]
+name = "openssl"
+version = "0.10.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "foreign-types 0.3.2",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "orbclient"
+version = "0.3.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166"
+dependencies = [
+ "libredox",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "owned_ttf_parser"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7"
+dependencies = [
+ "ttf-parser",
+]
+
+[[package]]
+name = "packagemerge"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0efcf6ee55f8f7a24333bc8d1dd0e541a6cedf903dbc07ae6479d7f8ff32ed08"
+dependencies = [
+ "itertools 0.4.19",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.4.1",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "parry2d"
+version = "0.13.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a996b83a7a12522b395c54f4ba59593b782e8004794c0212a2f487ed7ac6e419"
+dependencies = [
+ "approx",
+ "arrayvec",
+ "bitflags 1.3.2",
+ "downcast-rs",
+ "either",
+ "nalgebra",
+ "num-derive",
+ "num-traits",
+ "rustc-hash",
+ "simba",
+ "slab",
+ "smallvec",
+ "spade",
+]
+
+[[package]]
+name = "password-hash"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
+dependencies = [
+ "base64ct",
+ "rand_core",
+ "subtle",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "path-clean"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef"
+
+[[package]]
+name = "pbjson"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90"
+dependencies = [
+ "base64",
+ "serde",
+]
+
+[[package]]
+name = "pbjson-build"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735"
+dependencies = [
+ "heck 0.4.1",
+ "itertools 0.11.0",
+ "prost",
+ "prost-types",
+]
+
+[[package]]
+name = "pbjson-types"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12"
+dependencies = [
+ "bytes",
+ "chrono",
+ "pbjson",
+ "pbjson-build",
+ "prost",
+ "prost-build",
+ "serde",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest",
+ "hmac",
+ "password-hash",
+ "sha2",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
+dependencies = [
+ "digest",
+ "hmac",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+dependencies = [
+ "fixedbitset",
+ "indexmap",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "pkcs7"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d79178be066405e0602bf3035946edef6b11b3f9dde46dfe5f8bfd7dea4b77e7"
+dependencies = [
+ "der",
+ "spki",
+ "x509-cert",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der",
+ "spki",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "platforms"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7"
+
+[[package]]
+name = "png"
+version = "0.17.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "polling"
+version = "3.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "poly1305"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
+dependencies = [
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "pp-rs"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee"
+dependencies = [
+ "unicode-xid",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "presser"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
+
+[[package]]
+name = "prettyplease"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
+dependencies = [
+ "toml_edit 0.20.7",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.1",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "profiling"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
+
+[[package]]
+name = "prost"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
+dependencies = [
+ "bytes",
+ "heck 0.4.1",
+ "itertools 0.11.0",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn 2.0.57",
+ "tempfile",
+ "which",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+dependencies = [
+ "anyhow",
+ "itertools 0.11.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
+dependencies = [
+ "prost",
+]
+
+[[package]]
+name = "quanta"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5"
+dependencies = [
+ "crossbeam-utils",
+ "libc",
+ "once_cell",
+ "raw-cpuid",
+ "wasi",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radsort"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_xoshiro"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "range-alloc"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab"
+
+[[package]]
+name = "rapier2d"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48a3ec4ae89e0837c0ff6f29af32a8e5d78dfabe2273dcd945cfaf3f5d2b1501"
+dependencies = [
+ "approx",
+ "arrayvec",
+ "bit-vec",
+ "bitflags 1.3.2",
+ "crossbeam",
+ "downcast-rs",
+ "nalgebra",
+ "num-derive",
+ "num-traits",
+ "parry2d",
+ "rustc-hash",
+ "simba",
+]
+
+[[package]]
+name = "raw-cpuid"
+version = "11.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "raw-window-handle"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
+
+[[package]]
+name = "rawpointer"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+
+[[package]]
+name = "readlock"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7b323e7196daa571c8584de958be19e92941c41f845776fe06babfe8fa280a2"
+
+[[package]]
+name = "rectangle-pack"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb"
+
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.6",
+ "regex-syntax 0.8.3",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.3",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+
+[[package]]
+name = "renderdoc-sys"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
+
+[[package]]
+name = "reqwest"
+version = "0.11.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body",
+ "hyper",
+ "hyper-rustls",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls",
+ "rustls-native-certs",
+ "rustls-pemfile",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tokio-rustls",
+ "tokio-util",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "residua-zigzag"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b37805477eee599a61753230f511ae94d737f69b536e468e294723ad5f1b75f"
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "ringbuffer"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53"
+
+[[package]]
+name = "rmp"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20"
+dependencies = [
+ "byteorder",
+ "num-traits",
+ "paste",
+]
+
+[[package]]
+name = "rmp-serde"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a"
+dependencies = [
+ "byteorder",
+ "rmp",
+ "serde",
+]
+
+[[package]]
+name = "robust"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
+
+[[package]]
+name = "rodio"
+version = "0.17.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611"
+dependencies = [
+ "cpal",
+ "lewton",
+]
+
+[[package]]
+name = "ron"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
+dependencies = [
+ "base64",
+ "bitflags 2.5.0",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "ruma"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2779c38df072964c63476259d9300efb07d0d1a7178c6469893636ce0c547a36"
+dependencies = [
+ "assign",
+ "js_int",
+ "js_option",
+ "ruma-client-api",
+ "ruma-common",
+ "ruma-events",
+ "ruma-federation-api",
+]
+
+[[package]]
+name = "ruma-client-api"
+version = "0.17.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "641837258fa214a70823477514954ef0f5d3bc6ae8e1d5d85081856a33103386"
+dependencies = [
+ "assign",
+ "bytes",
+ "http 0.2.12",
+ "js_int",
+ "js_option",
+ "maplit",
+ "ruma-common",
+ "ruma-events",
+ "serde",
+ "serde_html_form",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-common"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bca4c33c50e47b4cdceeac71bdef0c04153b0e29aa992d9030ec14a62323e85"
+dependencies = [
+ "as_variant",
+ "base64",
+ "bytes",
+ "form_urlencoded",
+ "getrandom",
+ "http 0.2.12",
+ "indexmap",
+ "js-sys",
+ "js_int",
+ "konst",
+ "percent-encoding",
+ "rand",
+ "regex",
+ "ruma-identifiers-validation",
+ "ruma-macros",
+ "serde",
+ "serde_html_form",
+ "serde_json",
+ "thiserror",
+ "tracing",
+ "url",
+ "uuid",
+ "wildmatch",
+]
+
+[[package]]
+name = "ruma-events"
+version = "0.27.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d20a52770e5a9fb30b7a1c14ba8b3dcf76dadc01674e58e40094f78e6bd5e3f1"
+dependencies = [
+ "as_variant",
+ "indexmap",
+ "js_int",
+ "js_option",
+ "percent-encoding",
+ "regex",
+ "ruma-common",
+ "ruma-identifiers-validation",
+ "ruma-macros",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tracing",
+ "url",
+ "wildmatch",
+]
+
+[[package]]
+name = "ruma-federation-api"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1901c1f27bc327652d58af2a130c73acef3198abeccd24cee97f7267fdf3fe7"
+dependencies = [
+ "js_int",
+ "ruma-common",
+ "ruma-events",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ruma-identifiers-validation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf8ad1259274f2f57c20901bd1cc5e4a8f23169d1c1d887b6338b02f058e9b41"
+dependencies = [
+ "js_int",
+ "thiserror",
+]
+
+[[package]]
+name = "ruma-macros"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0280534a4b3e34416f883285fac4f9c408cd0b737890ae66f3e7a7056d14be80"
+dependencies = [
+ "once_cell",
+ "proc-macro-crate 2.0.0",
+ "proc-macro2",
+ "quote",
+ "ruma-identifiers-validation",
+ "serde",
+ "syn 2.0.57",
+ "toml",
+]
+
+[[package]]
+name = "rusqlite"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d"
+dependencies = [
+ "bitflags 2.5.0",
+ "fallible-iterator",
+ "fallible-streaming-iterator",
+ "hashlink",
+ "libsqlite3-sys",
+ "smallvec",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+dependencies = [
+ "bitflags 2.5.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki",
+ "sct",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "ruzstd"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d"
+dependencies = [
+ "byteorder",
+ "derive_more",
+ "twox-hash",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "safe_arch"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "scratch"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "sctk-adwaita"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550"
+dependencies = [
+ "ab_glyph",
+ "log",
+ "memmap2",
+ "smithay-client-toolkit",
+ "tiny-skia",
+]
+
+[[package]]
+name = "seahash"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
+
+[[package]]
+name = "security-framework"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "self_cell"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde-wasm-bindgen"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
+dependencies = [
+ "js-sys",
+ "serde",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "serde_html_form"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de514ef58196f1fc96dcaef80fe6170a1ce6215df9687a93fe8300e773fefc5"
+dependencies = [
+ "form_urlencoded",
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.115"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "signature"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "simba"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae"
+dependencies = [
+ "approx",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "wide",
+]
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
+[[package]]
+name = "simdutf8"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "slotmap"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "smithay-client-toolkit"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
+dependencies = [
+ "bitflags 2.5.0",
+ "calloop",
+ "calloop-wayland-source",
+ "cursor-icon",
+ "libc",
+ "log",
+ "memmap2",
+ "rustix",
+ "thiserror",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-csd-frame",
+ "wayland-cursor",
+ "wayland-protocols",
+ "wayland-protocols-wlr",
+ "wayland-scanner",
+ "xkeysym",
+]
+
+[[package]]
+name = "smol_str"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "socket2"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "spade"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61addf9117b11d1f5b4bf6fe94242ba25f59d2d4b2080544b771bd647024fd00"
+dependencies = [
+ "hashbrown",
+ "num-traits",
+ "robust",
+ "smallvec",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "spinning_top"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "spirv"
+version = "0.3.0+sdk-1.3.268.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "spki"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
+dependencies = [
+ "base64ct",
+ "der",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strict-num"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strsim"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+
+[[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
+name = "svg_fmt"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.57"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "sysinfo"
+version = "0.30.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "windows 0.52.0",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "taffy"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c2287b6d7f721ada4cddf61ade5e760b2c6207df041cac9bfaa192897362fd3"
+dependencies = [
+ "arrayvec",
+ "grid",
+ "num-traits",
+ "slotmap",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+dependencies = [
+ "deranged",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "tiny-skia"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "bytemuck",
+ "cfg-if",
+ "log",
+ "tiny-skia-path",
+]
+
+[[package]]
+name = "tiny-skia-path"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "strict-num",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c"
+dependencies = [
+ "futures-util",
+ "log",
+ "tokio",
+ "tungstenite 0.20.1",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38"
+dependencies = [
+ "futures-util",
+ "log",
+ "tokio",
+ "tungstenite 0.21.0",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.9",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.20.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.5",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log 0.2.0",
+]
+
+[[package]]
+name = "tracing-wasm"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07"
+dependencies = [
+ "tracing",
+ "tracing-subscriber",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "ttf-parser"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4"
+
+[[package]]
+name = "tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http 0.2.12",
+ "httparse",
+ "log",
+ "rand",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
+[[package]]
+name = "tungstenite"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http 1.1.0",
+ "httparse",
+ "log",
+ "rand",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
+[[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "typewit"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6fb9ae6a3cafaf0a5d14c2302ca525f9ae8e07a0f0e6949de88d882c37a6e24"
+dependencies = [
+ "typewit_proc_macros",
+]
+
+[[package]]
+name = "typewit_proc_macros"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e36a83ea2b3c704935a01b4642946aadd445cea40b10935e3f8bd8052b8193d6"
+
+[[package]]
+name = "ulid"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34778c17965aa2a08913b57e1f34db9b4a63f5de31768b55bf20d2795f921259"
+dependencies = [
+ "getrandom",
+ "rand",
+ "web-time 1.1.0",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "uuid"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+dependencies = [
+ "getrandom",
+ "serde",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "vodozemac"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2790dffeecc522299d72d9a855c43adb0c23ba1dc1112d79a651fdf3beb2a356"
+dependencies = [
+ "aes",
+ "arrayvec",
+ "base64",
+ "cbc",
+ "curve25519-dalek",
+ "ed25519-dalek",
+ "getrandom",
+ "hkdf",
+ "hmac",
+ "matrix-pickle",
+ "pkcs7",
+ "prost",
+ "rand",
+ "serde",
+ "serde_bytes",
+ "serde_json",
+ "sha2",
+ "subtle",
+ "thiserror",
+ "x25519-dalek",
+ "zeroize",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "wayland-backend"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "rustix",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
+dependencies = [
+ "bitflags 2.5.0",
+ "rustix",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-csd-frame"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
+dependencies = [
+ "bitflags 2.5.0",
+ "cursor-icon",
+ "wayland-backend",
+]
+
+[[package]]
+name = "wayland-cursor"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba"
+dependencies = [
+ "rustix",
+ "wayland-client",
+ "xcursor",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
+dependencies = [
+ "bitflags 2.5.0",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-plasma"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
+dependencies = [
+ "bitflags 2.5.0",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-wlr"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
+dependencies = [
+ "bitflags 2.5.0",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283"
+dependencies = [
+ "proc-macro2",
+ "quick-xml",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af"
+dependencies = [
+ "dlib",
+ "log",
+ "pkg-config",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web-time"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webrtc-sys"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a44db03f1ad32e8bcc8ba603d45910cb24465b9c8bca134de3829bb51ea5ace"
+dependencies = [
+ "cc",
+ "cxx",
+ "cxx-build",
+ "glob",
+ "log",
+ "webrtc-sys-build",
+]
+
+[[package]]
+name = "webrtc-sys-build"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f2ff5b6905670641bb9661d8eebe7318e0b775092fe2f96771fa88b92d45b62"
+dependencies = [
+ "fs2",
+ "regex",
+ "reqwest",
+ "scratch",
+ "semver",
+ "zip",
+]
+
+[[package]]
+name = "wgpu"
+version = "0.19.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb"
+dependencies = [
+ "arrayvec",
+ "cfg-if",
+ "cfg_aliases",
+ "js-sys",
+ "log",
+ "naga",
+ "parking_lot",
+ "profiling",
+ "raw-window-handle",
+ "smallvec",
+ "static_assertions",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "wgpu-core",
+ "wgpu-hal",
+ "wgpu-types",
+]
+
+[[package]]
+name = "wgpu-core"
+version = "0.19.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78"
+dependencies = [
+ "arrayvec",
+ "bit-vec",
+ "bitflags 2.5.0",
+ "cfg_aliases",
+ "codespan-reporting",
+ "indexmap",
+ "log",
+ "naga",
+ "once_cell",
+ "parking_lot",
+ "profiling",
+ "raw-window-handle",
+ "rustc-hash",
+ "smallvec",
+ "thiserror",
+ "web-sys",
+ "wgpu-hal",
+ "wgpu-types",
+]
+
+[[package]]
+name = "wgpu-hal"
+version = "0.19.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e"
+dependencies = [
+ "android_system_properties",
+ "arrayvec",
+ "ash",
+ "bit-set",
+ "bitflags 2.5.0",
+ "block",
+ "cfg_aliases",
+ "core-graphics-types",
+ "d3d12",
+ "glow",
+ "glutin_wgl_sys",
+ "gpu-alloc",
+ "gpu-allocator",
+ "gpu-descriptor",
+ "hassle-rs",
+ "js-sys",
+ "khronos-egl",
+ "libc",
+ "libloading 0.8.3",
+ "log",
+ "metal",
+ "naga",
+ "ndk-sys",
+ "objc",
+ "once_cell",
+ "parking_lot",
+ "profiling",
+ "range-alloc",
+ "raw-window-handle",
+ "renderdoc-sys",
+ "rustc-hash",
+ "smallvec",
+ "thiserror",
+ "wasm-bindgen",
+ "web-sys",
+ "wgpu-types",
+ "winapi",
+]
+
+[[package]]
+name = "wgpu-types"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805"
+dependencies = [
+ "bitflags 2.5.0",
+ "js-sys",
+ "web-sys",
+]
+
+[[package]]
+name = "which"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix",
+]
+
+[[package]]
+name = "wide"
+version = "0.7.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c"
+dependencies = [
+ "bytemuck",
+ "safe_arch",
+]
+
+[[package]]
+name = "widestring"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
+
+[[package]]
+name = "wildmatch"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "939e59c1bc731542357fdaad98b209ef78c8743d652bb61439d16b16a79eb025"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core 0.52.0",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows"
+version = "0.54.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
+dependencies = [
+ "windows-core 0.54.0",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.54.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winit"
+version = "0.29.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca"
+dependencies = [
+ "ahash",
+ "android-activity",
+ "atomic-waker",
+ "bitflags 2.5.0",
+ "bytemuck",
+ "calloop",
+ "cfg_aliases",
+ "core-foundation",
+ "core-graphics",
+ "cursor-icon",
+ "icrate",
+ "js-sys",
+ "libc",
+ "log",
+ "memmap2",
+ "ndk",
+ "ndk-sys",
+ "objc2 0.4.1",
+ "once_cell",
+ "orbclient",
+ "percent-encoding",
+ "raw-window-handle",
+ "redox_syscall 0.3.5",
+ "rustix",
+ "sctk-adwaita",
+ "smithay-client-toolkit",
+ "smol_str",
+ "unicode-segmentation",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-protocols-plasma",
+ "web-sys",
+ "web-time 0.2.4",
+ "windows-sys 0.48.0",
+ "x11-dl",
+ "x11rb",
+ "xkbcommon-dl",
+]
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "x11-dl"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
+dependencies = [
+ "libc",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11rb"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+dependencies = [
+ "as-raw-xcb-connection",
+ "gethostname",
+ "libc",
+ "libloading 0.8.3",
+ "once_cell",
+ "rustix",
+ "x11rb-protocol",
+]
+
+[[package]]
+name = "x11rb-protocol"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+
+[[package]]
+name = "x25519-dalek"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
+dependencies = [
+ "curve25519-dalek",
+ "rand_core",
+ "serde",
+ "zeroize",
+]
+
+[[package]]
+name = "x509-cert"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94"
+dependencies = [
+ "const-oid",
+ "der",
+ "spki",
+]
+
+[[package]]
+name = "xcursor"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
+
+[[package]]
+name = "xi-unicode"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a"
+
+[[package]]
+name = "xkbcommon-dl"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
+dependencies = [
+ "bitflags 2.5.0",
+ "dlib",
+ "log",
+ "once_cell",
+ "xkeysym",
+]
+
+[[package]]
+name = "xkeysym"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
+
+[[package]]
+name = "xml-rs"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.57",
+]
+
+[[package]]
+name = "zip"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
+dependencies = [
+ "aes",
+ "byteorder",
+ "bzip2",
+ "constant_time_eq 0.1.5",
+ "crc32fast",
+ "crossbeam-utils",
+ "flate2",
+ "hmac",
+ "pbkdf2 0.11.0",
+ "sha1",
+ "time",
+ "zstd",
+]
+
+[[package]]
+name = "zstd"
+version = "0.11.2+zstd.1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "5.0.2+zstd.1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
+dependencies = [
+ "libc",
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.10+zstd.1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
diff --git a/Cargo.toml b/Cargo.toml
@@ -0,0 +1,38 @@
+[package]
+name = "matrix-rpg-rs"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+async-compat = "0.2.3"
+bevy = { version = "0.13", features = ["wayland"] }
+bevy_ecs_ldtk = { git = "https://github.com/theshortcut/bevy_ecs_ldtk", rev = "ef84e85e958c988e35bcd5e700d33f8cdb8015d1", version = "0.9.0" }
+bevy_rapier2d = "0.25.0"
+cfg-if = "1.0.0"
+clap = { version = "4.5.4", features = ["derive"] }
+crossbeam-channel = "0.5.12"
+derive_more = "0.99.17"
+iyes_perf_ui = "0.2.3"
+lightyear = { version = "0.12.0", features = [ "websocket", "render"] }
+livekit = "0.3.2"
+matrix-sdk = "0.7.1"
+rand = "0.8.5"
+serde = "1.0.197"
+
+[patch.crates-io]
+bevy_ecs_tilemap = { git = "https://github.com/StarArawn/bevy_ecs_tilemap" }
+
+# Enable a small amount of optimization in debug mode
+[profile.dev]
+opt-level = 1
+
+# Enable high optimizations for dependencies (incl. Bevy), but not for our code:
+[profile.dev.package."*"]
+opt-level = 3
+
+[profile.release]
+opt-level = 'z'
+lto = true
+codegen-units = 1
diff --git a/assets/matrix_office.ldtk b/assets/matrix_office.ldtk
@@ -0,0 +1 @@
+{"__header__":{"fileType":"LDtk Project JSON","app":"LDtk","doc":"https://ldtk.io/json","schema":"https://ldtk.io/files/JSON_SCHEMA.json","appAuthor":"Sebastien 'deepnight' Benard","appVersion":"1.5.3","url":"https://ldtk.io"},"iid":"13e86260-d7b0-11ee-8fc4-0dbc43328c50","jsonVersion":"1.5.3","appBuildId":473703,"nextUid":79,"identifierStyle":"Lowercase","toc":[],"worldLayout":"Free","worldGridWidth":256,"worldGridHeight":256,"defaultLevelWidth":256,"defaultLevelHeight":256,"defaultPivotX":0,"defaultPivotY":0,"defaultGridSize":32,"defaultEntityWidth":32,"defaultEntityHeight":32,"bgColor":"#40465B","defaultLevelBgColor":"#696A79","minifyJson":true,"externalLevels":false,"exportTiled":false,"simplifiedExport":false,"imageExportMode":"None","exportLevelBg":true,"pngFilePattern":null,"backupOnSave":false,"backupLimit":10,"backupRelPath":null,"levelNamePattern":"Level_%idx","tutorialDesc":null,"customCommands":[],"flags":[],"defs":{"layers":[{"__type":"Entities","identifier":"entities","type":"Entities","uid":77,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":0.6,"hideInList":false,"hideFieldsWhenInactive":true,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Entities","identifier":"floorlayer","type":"Entities","uid":3,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":0.6,"hideInList":false,"hideFieldsWhenInactive":true,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"on_table","type":"Tiles","uid":21,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":20,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"tables","type":"Tiles","uid":17,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":16,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"seats_behind","type":"Tiles","uid":19,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":18,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"furniture","type":"Tiles","uid":13,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":12,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"outdoor_decoration","type":"Tiles","uid":25,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":24,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"wall_decoration","type":"Tiles","uid":27,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"walls_visuals","type":"Tiles","uid":1,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"ui","type":"Tiles","uid":29,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":30,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"floor","type":"Tiles","uid":14,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"outdoorfloor","type":"Tiles","uid":23,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":24,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"element_teleport_layer","type":"Tiles","uid":31,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"matrix_teleport_layer","type":"Tiles","uid":32,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"Tiles","identifier":"start","type":"Tiles","uid":22,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":11,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"IntGrid","identifier":"walls","type":"IntGrid","uid":76,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[{"value":1,"identifier":"Wall","color":"#000000","tile":null,"groupUid":0}],"intGridValuesGroups":[],"autoRuleGroups":[],"autoSourceLayerDefUid":null,"tilesetDefUid":null,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null},{"__type":"IntGrid","identifier":"test_room_autolayer","type":"IntGrid","uid":35,"doc":null,"uiColor":null,"gridSize":32,"guideGridWid":0,"guideGridHei":0,"displayOpacity":1,"inactiveOpacity":1,"hideInList":false,"hideFieldsWhenInactive":false,"canSelectWhenInactive":true,"renderInWorldView":true,"pxOffsetX":0,"pxOffsetY":0,"parallaxFactorX":0,"parallaxFactorY":0,"parallaxScaling":true,"requiredTags":[],"excludedTags":[],"autoTilesKilledByOtherLayerUid":null,"uiFilterTags":[],"useAsyncRender":false,"intGridValues":[{"value":2,"identifier":"floor","color":"#BE4A2F","tile":null,"groupUid":0},{"value":3,"identifier":"walls","color":"#D77643","tile":null,"groupUid":0},{"value":1,"identifier":"wall_top","color":"#000000","tile":null,"groupUid":1}],"intGridValuesGroups":[{"uid":1,"identifier":"Walls_top","color":null}],"autoRuleGroups":[{"uid":60,"name":"Walls","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":61,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,1,1,0,3,1,0,3,1],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":70,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,3,3,0,3,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":71,"active":true,"size":3,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[1,1,0,1,3,0,1,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":73,"active":true,"size":5,"tileRectsIds":[[200],[201]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,1,0,0,0,0,1,1,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":4124523,"perlinScale":0.2,"perlinOctaves":2},{"uid":62,"active":true,"size":5,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,1,1,0,0,0,3,1,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":67,"active":true,"size":3,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[3,3,0,3,3,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":69,"active":true,"size":5,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,1,1,0,0,0,1,3,0,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2},{"uid":72,"active":true,"size":7,"tileRectsIds":[[225],[226]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5899866,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0},{"uid":44,"name":"Floor","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":41,"active":true,"size":1,"tileRectsIds":[[350],[352],[353],[355],[356],[358],[360],[362],[375],[377],[378],[380],[383],[385],[387]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[2],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":306639,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0},{"uid":38,"name":"Walls Top","color":null,"icon":null,"active":true,"isOptional":false,"rules":[{"uid":42,"active":true,"size":5,"tileRectsIds":[[29]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,3,1,0,0,0,3,0,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":2965774,"perlinScale":0.2,"perlinOctaves":2},{"uid":40,"active":true,"size":5,"tileRectsIds":[[28]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,3,0,0,0,0,3,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":7036573,"perlinScale":0.2,"perlinOctaves":2},{"uid":63,"active":true,"size":5,"tileRectsIds":[[53]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,3,0,0,0,0,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":5594401,"perlinScale":0.2,"perlinOctaves":2},{"uid":65,"active":true,"size":5,"tileRectsIds":[[54]],"alpha":1,"chance":1,"breakOnMatch":true,"pattern":[0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,3,3,0,0,0,3,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":2659362,"perlinScale":0.2,"perlinOctaves":2},{"uid":56,"active":true,"size":5,"tileRectsIds":[[104]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,3,0,0,0,0,3,0,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":6718359,"perlinScale":0.2,"perlinOctaves":2},{"uid":57,"active":true,"size":3,"tileRectsIds":[[102]],"alpha":1,"chance":1,"breakOnMatch":false,"pattern":[0,0,0,0,1,0,0,1,0],"flipX":false,"flipY":false,"xModulo":1,"yModulo":1,"xOffset":0,"yOffset":0,"tileXOffset":0,"tileYOffset":0,"tileRandomXMin":0,"tileRandomXMax":0,"tileRandomYMin":0,"tileRandomYMax":0,"checker":"None","tileMode":"Single","pivotX":0,"pivotY":0,"outOfBoundsValue":null,"invalidated":false,"perlinActive":false,"perlinSeed":788014,"perlinScale":0.2,"perlinOctaves":2}],"usesWizard":false,"requiredBiomeValues":[],"biomeRequirementMode":0}],"autoSourceLayerDefUid":null,"tilesetDefUid":2,"tilePivotX":0,"tilePivotY":0,"biomeFieldUid":null}],"entities":[{"identifier":"area","uid":4,"tags":[],"exportToToc":false,"allowOutOfBounds":false,"doc":null,"width":32,"height":32,"resizableX":true,"resizableY":true,"minWidth":32,"maxWidth":null,"minHeight":32,"maxHeight":null,"keepAspectRatio":false,"tileOpacity":1,"fillOpacity":0.25,"lineOpacity":1,"hollow":false,"color":"#BE4A2F","renderMode":"Rectangle","showName":false,"tilesetId":null,"tileRenderMode":"FitInside","tileRect":null,"uiTileRect":null,"nineSliceBorders":[],"maxCount":0,"limitScope":"PerLevel","limitBehavior":"PreventAdding","pivotX":0,"pivotY":0,"fieldDefs":[{"identifier":"focusable","doc":null,"__type":"Bool","uid":5,"type":"F_Bool","isArray":false,"canBeNull":false,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":{"id":"V_Bool","params":[true]},"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"jitsiRoom","doc":null,"__type":"String","uid":6,"type":"F_String","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"jitsiTrigger","doc":null,"__type":"String","uid":7,"type":"F_String","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":"/onaction/g","acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"zoom_margin","doc":null,"__type":"Float","uid":8,"type":"F_Float","isArray":false,"canBeNull":true,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":0,"max":1,"regex":null,"acceptFileTypes":null,"defaultOverride":{"id":"V_Float","params":[1]},"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null},{"identifier":"entity_id","doc":"Mandatory id to match the entity when postprocessing","__type":"Int","uid":9,"type":"F_Int","isArray":false,"canBeNull":false,"arrayMinLength":null,"arrayMaxLength":null,"editorDisplayMode":"Hidden","editorDisplayScale":1,"editorDisplayPos":"Above","editorLinkStyle":"StraightArrow","editorDisplayColor":null,"editorAlwaysShow":false,"editorShowInWorld":true,"editorCutLongValues":true,"editorTextSuffix":null,"editorTextPrefix":null,"useForSmartColor":false,"exportToToc":false,"searchable":false,"min":null,"max":null,"regex":null,"acceptFileTypes":null,"defaultOverride":null,"textLanguageMode":null,"symmetricalRef":false,"autoChainRef":true,"allowOutOfLevelRef":true,"allowedRefs":"OnlySame","allowedRefsEntityUid":null,"allowedRefTags":[],"tilesetUid":null}]},{"identifier":"player","uid":78,"tags":[],"exportToToc":false,"allowOutOfBounds":false,"doc":null,"width":32,"height":32,"resizableX":false,"resizableY":false,"minWidth":null,"maxWidth":null,"minHeight":null,"maxHeight":null,"keepAspectRatio":false,"tileOpacity":1,"fillOpacity":0.08,"lineOpacity":0,"hollow":false,"color":"#D77643","renderMode":"Tile","showName":true,"tilesetId":75,"tileRenderMode":"FitInside","tileRect":{"tilesetUid":75,"x":64,"y":0,"w":16,"h":16},"uiTileRect":null,"nineSliceBorders":[],"maxCount":1,"limitScope":"PerLevel","limitBehavior":"MoveLastOne","pivotX":0,"pivotY":0,"fieldDefs":[]}],"tilesets":[{"__cWid":25,"__cHei":40,"identifier":"wa_room_builder","uid":2,"relPath":"tilesets/WA_Room_Builder.png","embedAtlas":null,"pxWid":800,"pxHei":1280,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000010000000000000110110100000000000000000011011010110101010000000000000000000000000001111111101010101010000000111111100000000000010000011111111010101010100000001111111000000000000000000111111111010110110000000011111111101011011000000001111111000000000000000000111111101000100101000000011111110000010010100000001111111000000000000000000111111110010010101010000011111110011000010101000001111111000000000000000000111111100000000000000000000000000011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000110000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","averageColors":"00000000000000000000000000000000000000000000f5440000000000000000000000000000000000000000000000000000f544f5440000f544f5440000f655000000000000000076540000000000000000000000000000000000000000000000000000f544f5440000f544f5440000f6550000f655f6550000f5440000f5449665f544000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f544f544f544f544f544f544f544f3330000f5440000f5440000f6550000f4440000f4440000000000000000000000000000f544feeefeeefeeefeeefeeef544000000000000000000000000000000000000000000000000f33300000000000000000000f544feeefeeefeeefeeefeeef544f4440000f4440000f4440000f4440000f4440000f4440000000000000000000000000000f544fdb7fdb7fdb7fdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544fdb7fdb7fdb7fdb7fdb7f544ffd4ffd40000feee0000feeefeee0000feeefeee00000000000000000000000000000000f444f544f544f544fdb7fdb7f544ffd7ffd70000feee0000feeefeee0000feeefeee00000000000000000000000000000000f544ffd4ffd4f544fdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544ffd7ffd7f655fdb7fdb7f5440000feee0000adde0000feee00000000feee0000f8310000000000000000000000000000f544f989f989feeefdb7fdb7f544000000000000adee0000feee00000000feee0000fcbb0000000000000000000000000000f544f989f989feeefdb7fdb7f544000000000000000000000000000000000000000000000000000000000000000000000000f544f989f989f989fdb7fdb7f544fdb70000f852fa840000fa84fa840000fddd0000f5670000f22400000000000000000000f544f544f544f544fa86f544f544fa740000f751fda50000fa8400000000f9890000f6570000f71100000000000000000000fcbbfcbbfcbbfcbbfdb7fcbbfcbb000000000000000000000000000000000000000000000000000000000000000000000000fcbbfcbbfcbbfcbbfdb7fcbbfcbb00000000000000000000000000000000000000005c845c8400000000000000000000000000000000000000000000000000008c950000fb84fb84fb8400007642764276420000aa64aa640000000000000000000000000000000000000000000000000000cc840000cb84bb84cb840000ca64c963ca640000ab74ab7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c8500003c850000000000000d959c85000000009c850d9500000000000000000000000000000000000000000000000000003c8500003c85000000000d959c857c85000000007c859c850d95000000000000000000000000000000000000000000000000000000000000000000001c857c851a630a630a631a637c851c850000000000000000000000000000000000000000000000000000000000000000000000001a63bc840a630a63bc841a630000000000000000000000000000000000000000000000000000000000000000000000000a74bc847b84000000007b84bc840a74000000000000000000000000000000000000000000000000000000000000000000001c847b7400000000000000007b741c84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ccc2cdd2dcb2dcb2dcb2dcb0000000000000000000000000000000000000000000000000000000000000000000000000000addd9eee6edc6edc3edc3edc0000fdddfddd0000edddeddd0000eeeeedee000000002dcb2dcb0000000000000000000000000000000000000000000000000000feeefeee0000eeeeeeee0000eeeeeeee00000000aedc9edd0000000000000000000000008ddd7dee8edc7edc5dcb5edb0000bdddbddd000000000000000000000000000000002dcb2dcb0000000000000000000000004ddd4ddd0ccb0dcb0ba900000000feeefeee00000000000000000000000000000000addd9edd0000000000000000000000000bcc0bcc000000000000000000004ddd4ddd00000000000000000000000000000000000000000000000000000000000000009a745a634a634a63396319634963396300000000996400000000000000000000000000000000000000000000000000000000da747a633a634a63596339636963296300000000da64000000000000000000000000000000000000000000000000000000009ca65da64da64da63ca61ca64ca63c96000000009ca800000000000000000000000000000000000000000000000000000000dda67da63da64da65ca63ca66ca62b9600000000dcb8000000000000000000000000000000000000000000000000000000009dcb5eee4eee4eee3ddd1ddd4ddd3ccd000000009ccb00000000000000000000000000000000000000000000000000000000dedb7eee3eee4eee5ddd3ddd6ddd2ccc00000000ddcb00000000000000000000000000000000000000000000000000000000"}},{"__cWid":6,"__cHei":2,"identifier":"special_tiles","uid":11,"relPath":"tilesets/WA_Special_Zones.png","embedAtlas":null,"pxWid":192,"pxHei":64,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[{"tileId":2,"data":"{\n \"collides\": true\n}"}],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"100000100000","averageColors":"ffff7ed67e666ea77e6d6e68f000766e686c65c676ee6a76"}},{"__cWid":12,"__cHei":13,"identifier":"other_furniture","uid":12,"relPath":"tilesets/WA_Other_Furniture.png","embedAtlas":null,"pxWid":384,"pxHei":416,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011100000001011100000000000000000000000000000000000000000000010000000","averageColors":"5c855c850000000000000000000000000000000000000000f964f964fa74fa740000bb84cc854d954d950000fb84fb85e964e963f963f96300006b746b74ea74db740000fa75f875000000005a635a63000000000000000000000000e874e8648abb8abb00002ccd1bbc2bcc000000000000000000000000000000000000fcbb7bcc7bcc1abb1cab1b9b000000000000000000000000000000000000000000000000000000000000f852f852f8520000fa84fa84fa8400000000000000000000f852f852f8525742fa84fa84fa845973ba730000000000008642a752864200008863a9638863000000000000000000000a9b2cab24364642364206410000000000000000000000002cbbfcbbfdbcf642f64226426642464216425642000000002cbbfbab2bab0000f6422642686348531853596300000000"}},{"__cWid":10,"__cHei":27,"identifier":"tables","uid":16,"relPath":"tilesets/WA_Tables.png","embedAtlas":null,"pxWid":320,"pxHei":864,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000011010111010000000000000000000000000000000000000000000000000000000000010000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100110000111011100000000000000000000000110001000011101110000000000000","averageColors":"6d956d955d956c9500006bcc6bcc6bccebcc6bccfc95fc95ec95fc950000fbccfbccfbccebccfbcc7b857b858b857c8500007aab7bbb7aab7aab7bbb00000000000000000000000000000000000000008edc8edc8edc000000004edc4edc0000000000007cba7cba9ba900000000bdcbbdcbbdcb000000000000000000000000000000000000000000000000eedcadca0000000000000000000000009dcafedceedc2a9800008edc00000000000000002a98eedceedc00000000eedc00005edc8edc5edc0000eedceedc2edc0000ecb900009cb9fcb99cb92edceedcecb9acb90000000000000000000000009cb9fcb900000000000000000000000000000000000000005eee8eee000000000000000000000000000000005ea78ea70000bc940000bc94ceee000000000000543384330000000000000000000000000000000000000000000000000000000000000000000000008da58da5fda5fda50000fda50000accbaccb00003a743a745a745a7400004a8400008aa98baa00000000000000000000000000000000000000000000fd95fda4fd940000fdbbfdcefdbb000000000000fda5fda5fda40000fdbbfdcefdbb000000000000bb84ac94bb840000cbaacbacbbaa0000000000000000000000000000000000000000000000000000fedcfffffedc0000ffffffffffff000000000000fedcfffffedc0000ffffffffffff000000000000cdcbceeebdcb0000eeeeeeeeeeee000000000000"}},{"__cWid":13,"__cHei":14,"identifier":"seats","uid":18,"relPath":"tilesets/WA_Seats.png","embedAtlas":null,"pxWid":416,"pxHei":448,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"00000000000000100100010010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000","averageColors":"4ddb4dcb4ddb458a458a458a0000000000000000000000000000fdcbfdcbfdcbf579f579f5790000fdcbfdcbfdcbf579f579f5794ddb1edc2edc0edc2edc2edc0000000000001edc1edc00000000fdcb3dcbfcba3cbafdcbfdcb0000fdcbfcbafdcbfdcb000000003ba93ba93ba93fc53fc53fc500001fd51bb900003e631e630000baa8eaa8baa8ceb4feb4ceb40000dec4caa80000bd53dd6300001aab1aab000000005baa5baa00001aab00000aaa0aaa00000000b999b999aa879a87aa99aa990000ca98ba879a999a99000000000000000000000000000000000000000000000000000000000000799968884a994a9929992999288828884999388800000000000000000000000000001a981a98198719872a982987000000000000ea73ea7300006b846b840000fccb7bba5c950000000000000000185208520852a973a9730000fccb76797dba7bac7eb5000000007b846b846b840000000000003766000000000000000000000000"}},{"__cWid":10,"__cHei":11,"identifier":"misc","uid":20,"relPath":"tilesets/WA_Miscellaneous.png","embedAtlas":null,"pxWid":320,"pxHei":352,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"00000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000","averageColors":"9bcc679a4aaa4aaa1546154517772545254517779cdd6445154525451545254525562445244525561bbb1bbb0000a999655665561ddd6eee0fff00006aaa6aaa00001cba2cba1cba1ccdfccd0ccc0000879b979b879bcedcffec6edc4557000000000000479a579a479a6dcb7ddb3cba365676561cca1cba5777277748772678277826775545000000000000000028880000266837782667377900004ca9000000000000000000000000000000000000000000007cca6ba96a647db84a7329872ba70000000000008cca8ccb7dcb7c964a812cb83eed000000000000"}},{"__cWid":25,"__cHei":34,"identifier":"exterior","uid":24,"relPath":"tilesets/WA_Exterior.png","embedAtlas":null,"pxWid":800,"pxHei":1088,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010010010010000000000000000000000000000000000000000000000000000000000000111101111000000000000000011110111100000000000000001111011110000000000000000101001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111110000000011111111111111000000000001111111111111111000000000111111111111000000000000011111111111100000000100001111111111110000000000000111111111111000000000000011111111111100000000100001111111111110000000000000111111111111","averageColors":"b7a3b6920000b9c3b8b30000bbb3baa30000b8a3b7920000b7a4b79300000000000000000000000000000000000000000000e681e4610000e8b2e6910000e9a2e7810000e681e5610000e683e4620000000000000000000000000000000000000000000065426442000065626562000066526552000065526542000065526442000000000000000000000000000000000000000000004682e8a3446148b2eac346914aa2ecc448814681e8a345614682e8a4446200000000000000000000000000000000000000007571f581735077a2f8b275817991f9a276717671f68174507583f683745300000000000000000000000000000000000000001231b54212311351b56213411441b65213411231b54213311242b542123100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f792f692f793f6930000f472f472f372f3720000000000000000000000000000000000000000000000000000000000000000f692f792f693f7930000f582f472f273f2720000000000000000000000000000000000000000000000000000000000000000f792f692f793f6930000f472f472f372f3720000000000000000000000000000000000000000000000000000000000000000f681f461f683f4620000f582f472f273f26300000000000000000000000000000000000000000000000000000000000000003472335200003592347200003183316300000000000000000000000000000000000000000000000000000000000000000000b472c3620000b582c4720000b183c17300000000000000000000000000000000000000000000000000000000000000000000b462b4520000b572b4720000b273b26300007472736288a48572000000000000000000000000000000000000000000000000036264620000047165820251016261730000a462a352979395620000000000000000000000000000000000000000000000004462f46243524582f58244624173f173416300000000000000000000000000000000000000000000000000000000000000005362d45243524471d57244615173d36341620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013830000000015920000000000000000000000000000000000000000000000000000000096a29581c691c591559145811372f37313721472f4721472000000000000000000000000000000000000000000000000000058975796899868865998499800003251000000003351000000000000000000000000000000000000000000000000000000000dc51dc50dc61eed1eed1dec56941361147114710000000000000000000000000000000000000000000000000000000000002cc54dc52cc52eed3eed2eed1d781d783a723a7200000000000000000000000000000000000000000000000000000000000000001cc500001eed2eed0ddc1d781d783a723a720000000000000000000000000000000000000000000000000000000000002ca12ba11da02eed1ddc00001d78196516683a720000000000000000000000000000000000000000000000000000000000001db239901ca21eec1add169a28752975196a0000000000000000000000000000000000000000000000000000000000000000f6a3f6a0fac3f9b5f9b50000b5918591747084702edd00000000faa9faa9faa9f999f48bf48bf48bf8b5f8b4f8b4f8b5f8a5faa9f2330000000000004ddc5591859135913ec51c7700000000faa9faa9faa9faa9f343f333f343f8b5f9b5f9b5f9b5f9b5f37df2aff799fade00008bbaa591859025910000000000000000f9aaf9aafaa9f998f38bf38bf38bf8a4f9b5f9b5f9b5f9b50000000000000000000000000000043215320432000000000000f9aaf9aafaa9faa9f2aff3aef2aff9b5f9b5f9b5f9b5f9b5c963d753a963a9645643153256436753f9646753000000000000faa9faa9faa9faa9f2aff2aff2aff9b5f9a6f896f8a5f9b5c974e764c753c754544400000000143235321432000000000000faa9f988faa9f2aff2aff7adf2aff2aff79cf998f898f7990000000015551555755575552555032158530321000000000000f39ff964f39ff7aef3aef2aff6abf2aff9c6f9a6f8a5f79948643754556655654555455515651321f9641321000000000000f9b5f884f9b5fab8f2aff877f765f9b5fac6fac7fac7f798a864976335653565846784564444032288530322000000000000f9b5f9b5f9b5f9b5f9b5f9b5f9b5f9b5f9c6fac6f9b5f799"}},{"__cWid":3,"__cHei":1,"identifier":"matrixlogo","uid":26,"relPath":"tilesets/matrix-logo.png","embedAtlas":null,"pxWid":96,"pxHei":32,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000","averageColors":"300030003000"}},{"__cWid":13,"__cHei":21,"identifier":"user_interface","uid":30,"relPath":"tilesets/WA_User_Interface.png","embedAtlas":null,"pxWid":416,"pxHei":672,"tileGridSize":32,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000001000000000000000000000000000000000000011100000000000000000000000","averageColors":"2112dfffd0e7d35fdfe2df450000000000000000000000000000633443346aaa33336445433400000000f2a600001777adee177753343434322363342112222300000000f35c00002777fdde277742232334733433345435433400000000fbb300004458c333445842233334666733344445433300000000fb350000224b124b224b43343445322333343324854500000000f2b6000000000000000053342223000000000000000000000000fb450000000000000000000000000000000000000000000000000000000000000000000055ad5ec75c55000072233223322332233223222322232223222304be0ed70d43000032232223222322232223122312231223122356ad5ec75c5500007aaa3aaa3aaa3aaa3aaa2aaa2aaa2aaa2aaa2555a333255500003aaa2aaa2aaa2aaa2aaa1aaa1aaa1aaa1aaa099928880999000071a531a531a531a531a521a521a521a521a52777ffff2777000031a521a521a521a521a511a511a511a511a50887122208870000724b324b324b324b324b224b224b224b224b1777aeee17770000324b224b224b224b224b124b124b124b124b2777ffff277700007aa23aa23aa23aa23aa22aa22aa22aa22aa208871222088700003aa22aa22aa22aa22aa21aa21aa21aa21aa2adddaeeeaddd00007b343b343b343b343b342b342b342b342b34feeefffffeee00003b342b342b342b342b341b341b341b341b341333122213330000000000000000000000000000000000000000"}},{"__cWid":8,"__cHei":8,"identifier":"user","uid":75,"relPath":"tilesets/user.png","embedAtlas":null,"pxWid":128,"pxHei":128,"tileGridSize":16,"spacing":0,"padding":0,"tags":[],"tagsSourceEnumUid":null,"enumTags":[],"customData":[],"savedSelections":[],"cachedPixelData":{"opaqueTiles":"0000000000000000000000000001000100000000000000000000000000010001","averageColors":"5da75da85da75da84b774a774b774a776c965c966c965c9669555955695559556ca86ca86ca86ca86a775a776a775a776ca86ca85ca8f9f55a885a885a88f9f55eba5eca5eba5eca4a8a4a8a4a8a4a8a6dc95dc96dc95dc967695769676957696dbb6dbb6dbb6dbb697a598a697a598a6dba6dba5dbaf9f55a895a895a89f9f5"}}],"enums":[],"externalEnums":[],"levelFields":[]},"levels":[{"identifier":"level_0","iid":"13e88970-d7b0-11ee-8fc4-1506233b34d6","uid":0,"worldX":-512,"worldY":-320,"worldDepth":0,"pxWid":1056,"pxHei":672,"__bgColor":"#696A79","bgColor":null,"useAutoIdentifier":true,"bgRelPath":null,"bgPos":null,"bgPivotX":0.5,"bgPivotY":0.5,"__smartColor":"#ADADB5","__bgPos":null,"externalRelPath":null,"fieldInstances":[],"layerInstances":[{"__identifier":"entities","__type":"Entities","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"de515780-d7b0-11ee-9c16-036cc1399f27","levelId":0,"layerDefUid":77,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":4959938,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"floorlayer","__type":"Entities","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"f41b7c80-d7b0-11ee-92be-cff17510b118","levelId":0,"layerDefUid":3,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3971335,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"on_table","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":20,"__tilesetRelPath":"tilesets/WA_Miscellaneous.png","iid":"d9047d50-d7b0-11ee-bac6-2b677c1af41d","levelId":0,"layerDefUid":21,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":8097068,"overrideTilesetUid":null,"gridTiles":[{"px":[192,160],"src":[0,32],"f":0,"t":10,"d":[171],"a":1}],"entityInstances":[]},{"__identifier":"tables","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":16,"__tilesetRelPath":"tilesets/WA_Tables.png","iid":"8acdc100-d7b0-11ee-bac6-ef97ebc36f86","levelId":0,"layerDefUid":17,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":5312860,"overrideTilesetUid":null,"gridTiles":[{"px":[160,160],"src":[0,128],"f":0,"t":40,"d":[170],"a":1},{"px":[192,160],"src":[32,128],"f":0,"t":41,"d":[171],"a":1},{"px":[160,192],"src":[0,160],"f":0,"t":50,"d":[203],"a":1},{"px":[192,192],"src":[32,160],"f":0,"t":51,"d":[204],"a":1}],"entityInstances":[]},{"__identifier":"seats_behind","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":18,"__tilesetRelPath":"tilesets/WA_Seats.png","iid":"a75a68a0-d7b0-11ee-bac6-930ebfb6473b","levelId":0,"layerDefUid":19,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2817471,"overrideTilesetUid":null,"gridTiles":[{"px":[192,160],"src":[224,96],"f":0,"t":46,"d":[171],"a":1}],"entityInstances":[]},{"__identifier":"furniture","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":12,"__tilesetRelPath":"tilesets/WA_Other_Furniture.png","iid":"d61e1bb0-d7b0-11ee-bac6-cb01099be1a4","levelId":0,"layerDefUid":13,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1632038,"overrideTilesetUid":null,"gridTiles":[{"px":[96,64],"src":[320,32],"f":0,"t":22,"d":[69],"a":1},{"px":[128,64],"src":[352,32],"f":0,"t":23,"d":[70],"a":1},{"px":[160,64],"src":[320,32],"f":0,"t":22,"d":[71],"a":1},{"px":[192,64],"src":[352,32],"f":0,"t":23,"d":[72],"a":1},{"px":[224,64],"src":[320,32],"f":0,"t":22,"d":[73],"a":1},{"px":[256,64],"src":[352,32],"f":0,"t":23,"d":[74],"a":1},{"px":[96,96],"src":[320,64],"f":0,"t":34,"d":[102],"a":1},{"px":[128,96],"src":[352,64],"f":0,"t":35,"d":[103],"a":1},{"px":[160,96],"src":[320,64],"f":0,"t":34,"d":[104],"a":1},{"px":[192,96],"src":[352,64],"f":0,"t":35,"d":[105],"a":1},{"px":[224,96],"src":[320,64],"f":0,"t":34,"d":[106],"a":1},{"px":[256,96],"src":[352,64],"f":0,"t":35,"d":[107],"a":1},{"px":[96,128],"src":[320,96],"f":0,"t":46,"d":[135],"a":1},{"px":[128,128],"src":[352,96],"f":0,"t":47,"d":[136],"a":1},{"px":[160,128],"src":[320,96],"f":0,"t":46,"d":[137],"a":1},{"px":[192,128],"src":[352,96],"f":0,"t":47,"d":[138],"a":1},{"px":[224,128],"src":[320,96],"f":0,"t":46,"d":[139],"a":1},{"px":[256,128],"src":[352,96],"f":0,"t":47,"d":[140],"a":1}],"entityInstances":[]},{"__identifier":"outdoor_decoration","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"fcb59380-d7b0-11ee-bac6-71ef2915912a","levelId":0,"layerDefUid":25,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3937992,"overrideTilesetUid":null,"gridTiles":[{"px":[64,384],"src":[0,448],"f":0,"t":350,"d":[398],"a":1},{"px":[96,384],"src":[32,448],"f":0,"t":351,"d":[399],"a":1},{"px":[128,384],"src":[64,448],"f":0,"t":352,"d":[400],"a":1},{"px":[64,416],"src":[0,480],"f":0,"t":375,"d":[431],"a":1},{"px":[96,416],"src":[32,480],"f":0,"t":376,"d":[432],"a":1},{"px":[128,416],"src":[64,480],"f":0,"t":377,"d":[433],"a":1},{"px":[320,416],"src":[0,448],"f":0,"t":350,"d":[439],"a":1},{"px":[352,416],"src":[32,448],"f":0,"t":351,"d":[440],"a":1},{"px":[384,416],"src":[64,448],"f":0,"t":352,"d":[441],"a":1},{"px":[576,416],"src":[0,448],"f":0,"t":350,"d":[447],"a":1},{"px":[608,416],"src":[32,448],"f":0,"t":351,"d":[448],"a":1},{"px":[640,416],"src":[64,448],"f":0,"t":352,"d":[449],"a":1},{"px":[64,448],"src":[0,512],"f":0,"t":400,"d":[464],"a":1},{"px":[96,448],"src":[32,512],"f":0,"t":401,"d":[465],"a":1},{"px":[128,448],"src":[64,512],"f":0,"t":402,"d":[466],"a":1},{"px":[128,448],"src":[352,416],"f":0,"t":336,"d":[466],"a":1},{"px":[160,448],"src":[384,416],"f":0,"t":337,"d":[467],"a":1},{"px":[320,448],"src":[0,480],"f":0,"t":375,"d":[472],"a":1},{"px":[352,448],"src":[32,480],"f":0,"t":376,"d":[473],"a":1},{"px":[384,448],"src":[0,608],"f":0,"t":475,"d":[474],"a":1},{"px":[384,448],"src":[64,480],"f":0,"t":377,"d":[474],"a":1},{"px":[416,448],"src":[32,608],"f":0,"t":476,"d":[475],"a":1},{"px":[512,448],"src":[0,640],"f":0,"t":500,"d":[478],"a":1},{"px":[544,448],"src":[32,640],"f":0,"t":501,"d":[479],"a":1},{"px":[576,448],"src":[64,640],"f":0,"t":502,"d":[480],"a":1},{"px":[576,448],"src":[0,480],"f":0,"t":375,"d":[480],"a":1},{"px":[608,448],"src":[32,480],"f":0,"t":376,"d":[481],"a":1},{"px":[640,448],"src":[64,480],"f":0,"t":377,"d":[482],"a":1},{"px":[768,448],"src":[96,640],"f":0,"t":503,"d":[486],"a":1},{"px":[800,448],"src":[128,640],"f":0,"t":504,"d":[487],"a":1},{"px":[832,448],"src":[160,640],"f":0,"t":505,"d":[488],"a":1},{"px":[832,448],"src":[64,992],"f":0,"t":777,"d":[488],"a":1},{"px":[864,448],"src":[0,832],"f":0,"t":650,"d":[489],"a":1},{"px":[896,448],"src":[0,832],"f":0,"t":650,"d":[490],"a":1},{"px":[928,448],"src":[96,992],"f":0,"t":778,"d":[491],"a":1},{"px":[128,480],"src":[0,640],"f":0,"t":500,"d":[499],"a":1},{"px":[128,480],"src":[352,448],"f":0,"t":361,"d":[499],"a":1},{"px":[160,480],"src":[32,640],"f":0,"t":501,"d":[500],"a":1},{"px":[160,480],"src":[384,448],"f":0,"t":362,"d":[500],"a":1},{"px":[192,480],"src":[64,640],"f":0,"t":502,"d":[501],"a":1},{"px":[224,480],"src":[0,736],"f":0,"t":575,"d":[502],"a":1},{"px":[224,480],"src":[0,448],"f":0,"t":350,"d":[502],"a":1},{"px":[256,480],"src":[32,736],"f":0,"t":576,"d":[503],"a":1},{"px":[256,480],"src":[32,448],"f":0,"t":351,"d":[503],"a":1},{"px":[288,480],"src":[64,448],"f":0,"t":352,"d":[504],"a":1},{"px":[288,480],"src":[352,416],"f":0,"t":336,"d":[504],"a":1},{"px":[320,480],"src":[0,512],"f":0,"t":400,"d":[505],"a":1},{"px":[320,480],"src":[384,416],"f":0,"t":337,"d":[505],"a":1},{"px":[352,480],"src":[32,512],"f":0,"t":401,"d":[506],"a":1},{"px":[384,480],"src":[64,512],"f":0,"t":402,"d":[507],"a":1},{"px":[384,480],"src":[352,416],"f":0,"t":336,"d":[507],"a":1},{"px":[416,480],"src":[384,416],"f":0,"t":337,"d":[508],"a":1},{"px":[448,480],"src":[0,736],"f":0,"t":575,"d":[509],"a":1},{"px":[480,480],"src":[32,736],"f":0,"t":576,"d":[510],"a":1},{"px":[512,480],"src":[0,672],"f":0,"t":525,"d":[511],"a":1},{"px":[544,480],"src":[32,672],"f":0,"t":526,"d":[512],"a":1},{"px":[576,480],"src":[64,672],"f":0,"t":527,"d":[513],"a":1},{"px":[576,480],"src":[0,512],"f":0,"t":400,"d":[513],"a":1},{"px":[608,480],"src":[32,512],"f":0,"t":401,"d":[514],"a":1},{"px":[640,480],"src":[0,448],"f":0,"t":350,"d":[515],"a":1},{"px":[640,480],"src":[64,512],"f":0,"t":402,"d":[515],"a":1},{"px":[672,480],"src":[32,448],"f":0,"t":351,"d":[516],"a":1},{"px":[704,480],"src":[0,736],"f":0,"t":575,"d":[517],"a":1},{"px":[704,480],"src":[64,448],"f":0,"t":352,"d":[517],"a":1},{"px":[736,480],"src":[32,736],"f":0,"t":576,"d":[518],"a":1},{"px":[768,480],"src":[96,672],"f":0,"t":528,"d":[519],"a":1},{"px":[800,480],"src":[128,672],"f":0,"t":529,"d":[520],"a":1},{"px":[832,480],"src":[160,672],"f":0,"t":530,"d":[521],"a":1},{"px":[832,480],"src":[64,1024],"f":0,"t":802,"d":[521],"a":1},{"px":[832,480],"src":[64,992],"f":0,"t":777,"d":[521],"a":1},{"px":[864,480],"src":[0,832],"f":0,"t":650,"d":[522],"a":1},{"px":[896,480],"src":[0,832],"f":0,"t":650,"d":[523],"a":1},{"px":[928,480],"src":[96,1024],"f":0,"t":803,"d":[524],"a":1},{"px":[928,480],"src":[96,992],"f":0,"t":778,"d":[524],"a":1},{"px":[128,512],"src":[0,672],"f":0,"t":525,"d":[532],"a":1},{"px":[160,512],"src":[32,672],"f":0,"t":526,"d":[533],"a":1},{"px":[192,512],"src":[64,672],"f":0,"t":527,"d":[534],"a":1},{"px":[224,512],"src":[0,480],"f":0,"t":375,"d":[535],"a":1},{"px":[256,512],"src":[32,480],"f":0,"t":376,"d":[536],"a":1},{"px":[288,512],"src":[64,480],"f":0,"t":377,"d":[537],"a":1},{"px":[288,512],"src":[352,448],"f":0,"t":361,"d":[537],"a":1},{"px":[320,512],"src":[96,640],"f":0,"t":503,"d":[538],"a":1},{"px":[320,512],"src":[384,448],"f":0,"t":362,"d":[538],"a":1},{"px":[352,512],"src":[128,640],"f":0,"t":504,"d":[539],"a":1},{"px":[384,512],"src":[160,640],"f":0,"t":505,"d":[540],"a":1},{"px":[384,512],"src":[352,448],"f":0,"t":361,"d":[540],"a":1},{"px":[416,512],"src":[384,448],"f":0,"t":362,"d":[541],"a":1},{"px":[512,512],"src":[0,704],"f":0,"t":550,"d":[544],"a":1},{"px":[544,512],"src":[32,704],"f":0,"t":551,"d":[545],"a":1},{"px":[576,512],"src":[64,704],"f":0,"t":552,"d":[546],"a":1},{"px":[640,512],"src":[0,480],"f":0,"t":375,"d":[548],"a":1},{"px":[672,512],"src":[32,480],"f":0,"t":376,"d":[549],"a":1},{"px":[704,512],"src":[64,480],"f":0,"t":377,"d":[550],"a":1},{"px":[768,512],"src":[96,704],"f":0,"t":553,"d":[552],"a":1},{"px":[800,512],"src":[128,704],"f":0,"t":554,"d":[553],"a":1},{"px":[832,512],"src":[160,704],"f":0,"t":555,"d":[554],"a":1},{"px":[832,512],"src":[64,1056],"f":0,"t":827,"d":[554],"a":1},{"px":[832,512],"src":[64,1024],"f":0,"t":802,"d":[554],"a":1},{"px":[832,512],"src":[64,992],"f":0,"t":777,"d":[554],"a":1},{"px":[864,512],"src":[0,832],"f":0,"t":650,"d":[555],"a":1},{"px":[896,512],"src":[0,832],"f":0,"t":650,"d":[556],"a":1},{"px":[928,512],"src":[96,1056],"f":0,"t":828,"d":[557],"a":1},{"px":[928,512],"src":[96,1024],"f":0,"t":803,"d":[557],"a":1},{"px":[928,512],"src":[96,992],"f":0,"t":778,"d":[557],"a":1},{"px":[128,544],"src":[0,704],"f":0,"t":550,"d":[565],"a":1},{"px":[160,544],"src":[32,704],"f":0,"t":551,"d":[566],"a":1},{"px":[160,544],"src":[0,736],"f":0,"t":575,"d":[566],"a":1},{"px":[192,544],"src":[64,704],"f":0,"t":552,"d":[567],"a":1},{"px":[192,544],"src":[32,736],"f":0,"t":576,"d":[567],"a":1},{"px":[224,544],"src":[0,512],"f":0,"t":400,"d":[568],"a":1},{"px":[256,544],"src":[32,512],"f":0,"t":401,"d":[569],"a":1},{"px":[288,544],"src":[64,512],"f":0,"t":402,"d":[570],"a":1},{"px":[320,544],"src":[96,672],"f":0,"t":528,"d":[571],"a":1},{"px":[352,544],"src":[128,672],"f":0,"t":529,"d":[572],"a":1},{"px":[384,544],"src":[160,672],"f":0,"t":530,"d":[573],"a":1},{"px":[480,544],"src":[0,608],"f":0,"t":475,"d":[576],"a":1},{"px":[512,544],"src":[32,608],"f":0,"t":476,"d":[577],"a":1},{"px":[608,544],"src":[0,736],"f":0,"t":575,"d":[580],"a":1},{"px":[640,544],"src":[32,736],"f":0,"t":576,"d":[581],"a":1},{"px":[640,544],"src":[0,512],"f":0,"t":400,"d":[581],"a":1},{"px":[672,544],"src":[32,512],"f":0,"t":401,"d":[582],"a":1},{"px":[704,544],"src":[64,512],"f":0,"t":402,"d":[583],"a":1},{"px":[736,544],"src":[0,608],"f":0,"t":475,"d":[584],"a":1},{"px":[768,544],"src":[32,608],"f":0,"t":476,"d":[585],"a":1},{"px":[832,544],"src":[64,1056],"f":0,"t":827,"d":[587],"a":1},{"px":[832,544],"src":[64,1024],"f":0,"t":802,"d":[587],"a":1},{"px":[864,544],"src":[0,832],"f":0,"t":650,"d":[588],"a":1},{"px":[896,544],"src":[0,832],"f":0,"t":650,"d":[589],"a":1},{"px":[928,544],"src":[96,1056],"f":0,"t":828,"d":[590],"a":1},{"px":[928,544],"src":[96,1024],"f":0,"t":803,"d":[590],"a":1},{"px":[320,576],"src":[96,704],"f":0,"t":553,"d":[604],"a":1},{"px":[352,576],"src":[128,704],"f":0,"t":554,"d":[605],"a":1},{"px":[384,576],"src":[160,704],"f":0,"t":555,"d":[606],"a":1},{"px":[832,576],"src":[64,1056],"f":0,"t":827,"d":[620],"a":1},{"px":[864,576],"src":[0,832],"f":0,"t":650,"d":[621],"a":1},{"px":[896,576],"src":[0,832],"f":0,"t":650,"d":[622],"a":1},{"px":[928,576],"src":[96,1056],"f":0,"t":828,"d":[623],"a":1}],"entityInstances":[]},{"__identifier":"wall_decoration","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":26,"__tilesetRelPath":"tilesets/matrix-logo.png","iid":"c9ff6930-d7b0-11ee-bac6-3914f694b92f","levelId":0,"layerDefUid":27,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":895449,"overrideTilesetUid":26,"gridTiles":[{"px":[768,384],"src":[0,0],"f":0,"t":0,"d":[420],"a":1},{"px":[800,384],"src":[32,0],"f":0,"t":1,"d":[421],"a":1},{"px":[832,384],"src":[64,0],"f":0,"t":2,"d":[422],"a":1}],"entityInstances":[]},{"__identifier":"walls_visuals","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"626ba620-d7b0-11ee-92be-11c3dc3566b0","levelId":0,"layerDefUid":1,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9760451,"overrideTilesetUid":2,"gridTiles":[{"px":[64,64],"src":[96,32],"f":0,"t":28,"d":[68],"a":1},{"px":[96,64],"src":[128,128],"f":0,"t":104,"d":[69],"a":1},{"px":[128,64],"src":[128,128],"f":0,"t":104,"d":[70],"a":1},{"px":[160,64],"src":[128,128],"f":0,"t":104,"d":[71],"a":1},{"px":[192,64],"src":[128,128],"f":0,"t":104,"d":[72],"a":1},{"px":[224,64],"src":[128,128],"f":0,"t":104,"d":[73],"a":1},{"px":[256,64],"src":[128,128],"f":0,"t":104,"d":[74],"a":1},{"px":[288,64],"src":[320,192],"f":0,"t":160,"d":[75],"a":1},{"px":[320,64],"src":[128,128],"f":0,"t":104,"d":[76],"a":1},{"px":[352,64],"src":[128,128],"f":0,"t":104,"d":[77],"a":1},{"px":[384,64],"src":[128,128],"f":0,"t":104,"d":[78],"a":1},{"px":[416,64],"src":[128,128],"f":0,"t":104,"d":[79],"a":1},{"px":[448,64],"src":[128,128],"f":0,"t":104,"d":[80],"a":1},{"px":[480,64],"src":[128,128],"f":0,"t":104,"d":[81],"a":1},{"px":[512,64],"src":[128,128],"f":0,"t":104,"d":[82],"a":1},{"px":[544,64],"src":[128,128],"f":0,"t":104,"d":[83],"a":1},{"px":[576,64],"src":[128,128],"f":0,"t":104,"d":[84],"a":1},{"px":[608,64],"src":[128,128],"f":0,"t":104,"d":[85],"a":1},{"px":[640,64],"src":[128,128],"f":0,"t":104,"d":[86],"a":1},{"px":[672,64],"src":[128,128],"f":0,"t":104,"d":[87],"a":1},{"px":[704,64],"src":[128,128],"f":0,"t":104,"d":[88],"a":1},{"px":[736,64],"src":[128,128],"f":0,"t":104,"d":[89],"a":1},{"px":[768,64],"src":[128,128],"f":0,"t":104,"d":[90],"a":1},{"px":[800,64],"src":[128,128],"f":0,"t":104,"d":[91],"a":1},{"px":[832,64],"src":[128,128],"f":0,"t":104,"d":[92],"a":1},{"px":[864,64],"src":[128,128],"f":0,"t":104,"d":[93],"a":1},{"px":[896,64],"src":[128,128],"f":0,"t":104,"d":[94],"a":1},{"px":[928,64],"src":[128,128],"f":0,"t":104,"d":[95],"a":1},{"px":[960,64],"src":[128,32],"f":0,"t":29,"d":[96],"a":1},{"px":[64,96],"src":[64,128],"f":0,"t":102,"d":[101],"a":1},{"px":[96,96],"src":[0,256],"f":0,"t":200,"d":[102],"a":1},{"px":[128,96],"src":[32,256],"f":0,"t":201,"d":[103],"a":1},{"px":[160,96],"src":[0,256],"f":0,"t":200,"d":[104],"a":1},{"px":[192,96],"src":[32,256],"f":0,"t":201,"d":[105],"a":1},{"px":[224,96],"src":[0,256],"f":0,"t":200,"d":[106],"a":1},{"px":[256,96],"src":[32,256],"f":0,"t":201,"d":[107],"a":1},{"px":[288,96],"src":[64,128],"f":0,"t":102,"d":[108],"a":1},{"px":[320,96],"src":[96,256],"f":0,"t":203,"d":[109],"a":1},{"px":[352,96],"src":[96,256],"f":0,"t":203,"d":[110],"a":1},{"px":[384,96],"src":[96,256],"f":0,"t":203,"d":[111],"a":1},{"px":[416,96],"src":[96,256],"f":0,"t":203,"d":[112],"a":1},{"px":[448,96],"src":[96,256],"f":0,"t":203,"d":[113],"a":1},{"px":[480,96],"src":[96,256],"f":0,"t":203,"d":[114],"a":1},{"px":[512,96],"src":[96,256],"f":0,"t":203,"d":[115],"a":1},{"px":[544,96],"src":[96,256],"f":0,"t":203,"d":[116],"a":1},{"px":[576,96],"src":[96,256],"f":0,"t":203,"d":[117],"a":1},{"px":[608,96],"src":[96,256],"f":0,"t":203,"d":[118],"a":1},{"px":[640,96],"src":[96,256],"f":0,"t":203,"d":[119],"a":1},{"px":[672,96],"src":[96,256],"f":0,"t":203,"d":[120],"a":1},{"px":[704,96],"src":[96,256],"f":0,"t":203,"d":[121],"a":1},{"px":[736,96],"src":[96,256],"f":0,"t":203,"d":[122],"a":1},{"px":[768,96],"src":[96,256],"f":0,"t":203,"d":[123],"a":1},{"px":[800,96],"src":[96,256],"f":0,"t":203,"d":[124],"a":1},{"px":[832,96],"src":[96,256],"f":0,"t":203,"d":[125],"a":1},{"px":[864,96],"src":[96,256],"f":0,"t":203,"d":[126],"a":1},{"px":[896,96],"src":[96,256],"f":0,"t":203,"d":[127],"a":1},{"px":[928,96],"src":[96,256],"f":0,"t":203,"d":[128],"a":1},{"px":[960,96],"src":[64,128],"f":0,"t":102,"d":[129],"a":1},{"px":[64,128],"src":[64,128],"f":0,"t":102,"d":[134],"a":1},{"px":[96,128],"src":[0,288],"f":0,"t":225,"d":[135],"a":1},{"px":[128,128],"src":[32,288],"f":0,"t":226,"d":[136],"a":1},{"px":[160,128],"src":[0,288],"f":0,"t":225,"d":[137],"a":1},{"px":[192,128],"src":[32,288],"f":0,"t":226,"d":[138],"a":1},{"px":[224,128],"src":[0,288],"f":0,"t":225,"d":[139],"a":1},{"px":[256,128],"src":[32,288],"f":0,"t":226,"d":[140],"a":1},{"px":[288,128],"src":[64,128],"f":0,"t":102,"d":[141],"a":1},{"px":[320,128],"src":[96,288],"f":0,"t":228,"d":[142],"a":1},{"px":[352,128],"src":[96,288],"f":0,"t":228,"d":[143],"a":1},{"px":[384,128],"src":[96,288],"f":0,"t":228,"d":[144],"a":1},{"px":[416,128],"src":[96,288],"f":0,"t":228,"d":[145],"a":1},{"px":[448,128],"src":[96,288],"f":0,"t":228,"d":[146],"a":1},{"px":[480,128],"src":[96,288],"f":0,"t":228,"d":[147],"a":1},{"px":[512,128],"src":[96,288],"f":0,"t":228,"d":[148],"a":1},{"px":[544,128],"src":[96,288],"f":0,"t":228,"d":[149],"a":1},{"px":[576,128],"src":[96,288],"f":0,"t":228,"d":[150],"a":1},{"px":[608,128],"src":[96,288],"f":0,"t":228,"d":[151],"a":1},{"px":[640,128],"src":[96,288],"f":0,"t":228,"d":[152],"a":1},{"px":[672,128],"src":[96,288],"f":0,"t":228,"d":[153],"a":1},{"px":[704,128],"src":[96,288],"f":0,"t":228,"d":[154],"a":1},{"px":[736,128],"src":[96,288],"f":0,"t":228,"d":[155],"a":1},{"px":[768,128],"src":[96,288],"f":0,"t":228,"d":[156],"a":1},{"px":[800,128],"src":[96,288],"f":0,"t":228,"d":[157],"a":1},{"px":[832,128],"src":[96,288],"f":0,"t":228,"d":[158],"a":1},{"px":[864,128],"src":[96,288],"f":0,"t":228,"d":[159],"a":1},{"px":[896,128],"src":[96,288],"f":0,"t":228,"d":[160],"a":1},{"px":[928,128],"src":[96,288],"f":0,"t":228,"d":[161],"a":1},{"px":[960,128],"src":[64,128],"f":0,"t":102,"d":[162],"a":1},{"px":[64,160],"src":[64,128],"f":0,"t":102,"d":[167],"a":1},{"px":[288,160],"src":[192,64],"f":0,"t":56,"d":[174],"a":1},{"px":[960,160],"src":[64,128],"f":0,"t":102,"d":[195],"a":1},{"px":[64,192],"src":[64,128],"f":0,"t":102,"d":[200],"a":1},{"px":[288,192],"src":[0,256],"f":0,"t":200,"d":[207],"a":1},{"px":[960,192],"src":[64,128],"f":0,"t":102,"d":[228],"a":1},{"px":[64,224],"src":[64,128],"f":0,"t":102,"d":[233],"a":1},{"px":[288,224],"src":[0,288],"f":0,"t":225,"d":[240],"a":1},{"px":[960,224],"src":[64,128],"f":0,"t":102,"d":[261],"a":1},{"px":[64,256],"src":[64,128],"f":0,"t":102,"d":[266],"a":1},{"px":[288,256],"src":[0,480],"f":0,"t":375,"d":[273],"a":1},{"px":[960,256],"src":[64,128],"f":0,"t":102,"d":[294],"a":1},{"px":[64,288],"src":[64,128],"f":0,"t":102,"d":[299],"a":1},{"px":[288,288],"src":[192,32],"f":0,"t":31,"d":[306],"a":1},{"px":[960,288],"src":[64,128],"f":0,"t":102,"d":[327],"a":1},{"px":[64,320],"src":[64,128],"f":0,"t":102,"d":[332],"a":1},{"px":[288,320],"src":[64,128],"f":0,"t":102,"d":[339],"a":1},{"px":[960,320],"src":[64,128],"f":0,"t":102,"d":[360],"a":1},{"px":[64,352],"src":[96,64],"f":0,"t":53,"d":[365],"a":1},{"px":[96,352],"src":[128,128],"f":0,"t":104,"d":[366],"a":1},{"px":[128,352],"src":[128,128],"f":0,"t":104,"d":[367],"a":1},{"px":[160,352],"src":[128,128],"f":0,"t":104,"d":[368],"a":1},{"px":[192,352],"src":[128,128],"f":0,"t":104,"d":[369],"a":1},{"px":[224,352],"src":[128,128],"f":0,"t":104,"d":[370],"a":1},{"px":[256,352],"src":[128,128],"f":0,"t":104,"d":[371],"a":1},{"px":[288,352],"src":[320,128],"f":0,"t":110,"d":[372],"a":1},{"px":[320,352],"src":[128,128],"f":0,"t":104,"d":[373],"a":1},{"px":[352,352],"src":[128,128],"f":0,"t":104,"d":[374],"a":1},{"px":[384,352],"src":[128,128],"f":0,"t":104,"d":[375],"a":1},{"px":[416,352],"src":[128,128],"f":0,"t":104,"d":[376],"a":1},{"px":[448,352],"src":[128,128],"f":0,"t":104,"d":[377],"a":1},{"px":[480,352],"src":[128,128],"f":0,"t":104,"d":[378],"a":1},{"px":[512,352],"src":[128,128],"f":0,"t":104,"d":[379],"a":1},{"px":[544,352],"src":[128,128],"f":0,"t":104,"d":[380],"a":1},{"px":[576,352],"src":[128,128],"f":0,"t":104,"d":[381],"a":1},{"px":[608,352],"src":[128,128],"f":0,"t":104,"d":[382],"a":1},{"px":[640,352],"src":[128,128],"f":0,"t":104,"d":[383],"a":1},{"px":[672,352],"src":[128,128],"f":0,"t":104,"d":[384],"a":1},{"px":[704,352],"src":[128,128],"f":0,"t":104,"d":[385],"a":1},{"px":[736,352],"src":[128,128],"f":0,"t":104,"d":[386],"a":1},{"px":[768,352],"src":[128,128],"f":0,"t":104,"d":[387],"a":1},{"px":[800,352],"src":[128,128],"f":0,"t":104,"d":[388],"a":1},{"px":[832,352],"src":[416,64],"f":0,"t":63,"d":[389],"a":1},{"px":[864,352],"src":[448,64],"f":0,"t":64,"d":[390],"a":1},{"px":[896,352],"src":[448,64],"f":0,"t":64,"d":[391],"a":1},{"px":[928,352],"src":[480,64],"f":0,"t":65,"d":[392],"a":1},{"px":[960,352],"src":[128,64],"f":0,"t":54,"d":[393],"a":1},{"px":[64,384],"src":[320,352],"f":0,"t":285,"d":[398],"a":1},{"px":[96,384],"src":[320,352],"f":0,"t":285,"d":[399],"a":1},{"px":[128,384],"src":[320,352],"f":0,"t":285,"d":[400],"a":1},{"px":[160,384],"src":[320,352],"f":0,"t":285,"d":[401],"a":1},{"px":[192,384],"src":[320,352],"f":0,"t":285,"d":[402],"a":1},{"px":[224,384],"src":[320,352],"f":0,"t":285,"d":[403],"a":1},{"px":[256,384],"src":[320,352],"f":0,"t":285,"d":[404],"a":1},{"px":[288,384],"src":[320,352],"f":0,"t":285,"d":[405],"a":1},{"px":[320,384],"src":[320,352],"f":0,"t":285,"d":[406],"a":1},{"px":[352,384],"src":[320,352],"f":0,"t":285,"d":[407],"a":1},{"px":[384,384],"src":[320,352],"f":0,"t":285,"d":[408],"a":1},{"px":[416,384],"src":[320,352],"f":0,"t":285,"d":[409],"a":1},{"px":[448,384],"src":[320,352],"f":0,"t":285,"d":[410],"a":1},{"px":[480,384],"src":[320,352],"f":0,"t":285,"d":[411],"a":1},{"px":[512,384],"src":[320,352],"f":0,"t":285,"d":[412],"a":1},{"px":[544,384],"src":[320,352],"f":0,"t":285,"d":[413],"a":1},{"px":[576,384],"src":[320,352],"f":0,"t":285,"d":[414],"a":1},{"px":[608,384],"src":[320,352],"f":0,"t":285,"d":[415],"a":1},{"px":[640,384],"src":[320,352],"f":0,"t":285,"d":[416],"a":1},{"px":[672,384],"src":[320,352],"f":0,"t":285,"d":[417],"a":1},{"px":[704,384],"src":[320,352],"f":0,"t":285,"d":[418],"a":1},{"px":[736,384],"src":[320,352],"f":0,"t":285,"d":[419],"a":1},{"px":[768,384],"src":[320,352],"f":0,"t":285,"d":[420],"a":1},{"px":[800,384],"src":[320,352],"f":0,"t":285,"d":[421],"a":1},{"px":[832,384],"src":[320,352],"f":0,"t":285,"d":[422],"a":1},{"px":[864,384],"src":[320,1216],"f":1,"t":960,"d":[423],"a":1},{"px":[896,384],"src":[320,1216],"f":0,"t":960,"d":[424],"a":1},{"px":[928,384],"src":[320,352],"f":0,"t":285,"d":[425],"a":1},{"px":[960,384],"src":[320,352],"f":0,"t":285,"d":[426],"a":1},{"px":[64,416],"src":[320,352],"f":0,"t":285,"d":[431],"a":1},{"px":[96,416],"src":[320,352],"f":0,"t":285,"d":[432],"a":1},{"px":[128,416],"src":[320,352],"f":0,"t":285,"d":[433],"a":1},{"px":[160,416],"src":[320,352],"f":0,"t":285,"d":[434],"a":1},{"px":[192,416],"src":[320,352],"f":0,"t":285,"d":[435],"a":1},{"px":[224,416],"src":[320,352],"f":0,"t":285,"d":[436],"a":1},{"px":[256,416],"src":[320,352],"f":0,"t":285,"d":[437],"a":1},{"px":[288,416],"src":[320,352],"f":0,"t":285,"d":[438],"a":1},{"px":[320,416],"src":[320,352],"f":0,"t":285,"d":[439],"a":1},{"px":[352,416],"src":[320,352],"f":0,"t":285,"d":[440],"a":1},{"px":[384,416],"src":[320,352],"f":0,"t":285,"d":[441],"a":1},{"px":[416,416],"src":[320,352],"f":0,"t":285,"d":[442],"a":1},{"px":[448,416],"src":[320,352],"f":0,"t":285,"d":[443],"a":1},{"px":[480,416],"src":[320,352],"f":0,"t":285,"d":[444],"a":1},{"px":[512,416],"src":[320,352],"f":0,"t":285,"d":[445],"a":1},{"px":[544,416],"src":[320,352],"f":0,"t":285,"d":[446],"a":1},{"px":[576,416],"src":[320,352],"f":0,"t":285,"d":[447],"a":1},{"px":[608,416],"src":[320,352],"f":0,"t":285,"d":[448],"a":1},{"px":[640,416],"src":[320,352],"f":0,"t":285,"d":[449],"a":1},{"px":[672,416],"src":[320,352],"f":0,"t":285,"d":[450],"a":1},{"px":[704,416],"src":[320,352],"f":0,"t":285,"d":[451],"a":1},{"px":[736,416],"src":[320,352],"f":0,"t":285,"d":[452],"a":1},{"px":[768,416],"src":[320,352],"f":0,"t":285,"d":[453],"a":1},{"px":[800,416],"src":[320,352],"f":0,"t":285,"d":[454],"a":1},{"px":[832,416],"src":[320,352],"f":0,"t":285,"d":[455],"a":1},{"px":[864,416],"src":[320,1248],"f":1,"t":985,"d":[456],"a":1},{"px":[896,416],"src":[320,1248],"f":0,"t":985,"d":[457],"a":1},{"px":[928,416],"src":[320,352],"f":0,"t":285,"d":[458],"a":1},{"px":[960,416],"src":[320,352],"f":0,"t":285,"d":[459],"a":1}],"entityInstances":[]},{"__identifier":"ui","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":30,"__tilesetRelPath":"tilesets/WA_User_Interface.png","iid":"b0c73c60-d7b0-11ee-bac6-f77771722a98","levelId":0,"layerDefUid":29,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2709547,"overrideTilesetUid":null,"gridTiles":[{"px":[352,160],"src":[160,576],"f":0,"t":239,"d":[176],"a":1},{"px":[384,160],"src":[192,576],"f":0,"t":240,"d":[177],"a":1},{"px":[416,160],"src":[256,192],"f":0,"t":86,"d":[178],"a":1},{"px":[352,192],"src":[256,576],"f":0,"t":242,"d":[209],"a":1},{"px":[384,192],"src":[224,576],"f":0,"t":241,"d":[210],"a":1}],"entityInstances":[]},{"__identifier":"floor","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"f71b3cd0-d7b0-11ee-bac6-356daeb081ff","levelId":0,"layerDefUid":14,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":780396,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[0,480],"f":0,"t":375,"d":[168],"a":1},{"px":[128,160],"src":[0,480],"f":0,"t":375,"d":[169],"a":1},{"px":[160,160],"src":[0,480],"f":0,"t":375,"d":[170],"a":1},{"px":[192,160],"src":[0,480],"f":0,"t":375,"d":[171],"a":1},{"px":[224,160],"src":[0,480],"f":0,"t":375,"d":[172],"a":1},{"px":[256,160],"src":[0,480],"f":0,"t":375,"d":[173],"a":1},{"px":[320,160],"src":[160,448],"f":0,"t":355,"d":[175],"a":1},{"px":[352,160],"src":[160,448],"f":0,"t":355,"d":[176],"a":1},{"px":[384,160],"src":[160,448],"f":0,"t":355,"d":[177],"a":1},{"px":[416,160],"src":[160,448],"f":0,"t":355,"d":[178],"a":1},{"px":[448,160],"src":[160,448],"f":0,"t":355,"d":[179],"a":1},{"px":[480,160],"src":[160,448],"f":0,"t":355,"d":[180],"a":1},{"px":[512,160],"src":[160,448],"f":0,"t":355,"d":[181],"a":1},{"px":[544,160],"src":[160,448],"f":0,"t":355,"d":[182],"a":1},{"px":[576,160],"src":[160,448],"f":0,"t":355,"d":[183],"a":1},{"px":[608,160],"src":[160,448],"f":0,"t":355,"d":[184],"a":1},{"px":[640,160],"src":[160,448],"f":0,"t":355,"d":[185],"a":1},{"px":[672,160],"src":[160,448],"f":0,"t":355,"d":[186],"a":1},{"px":[704,160],"src":[160,448],"f":0,"t":355,"d":[187],"a":1},{"px":[736,160],"src":[160,448],"f":0,"t":355,"d":[188],"a":1},{"px":[768,160],"src":[160,448],"f":0,"t":355,"d":[189],"a":1},{"px":[800,160],"src":[160,448],"f":0,"t":355,"d":[190],"a":1},{"px":[832,160],"src":[160,448],"f":0,"t":355,"d":[191],"a":1},{"px":[864,160],"src":[160,448],"f":0,"t":355,"d":[192],"a":1},{"px":[896,160],"src":[160,448],"f":0,"t":355,"d":[193],"a":1},{"px":[928,160],"src":[160,448],"f":0,"t":355,"d":[194],"a":1},{"px":[96,192],"src":[0,480],"f":0,"t":375,"d":[201],"a":1},{"px":[128,192],"src":[0,480],"f":0,"t":375,"d":[202],"a":1},{"px":[160,192],"src":[0,480],"f":0,"t":375,"d":[203],"a":1},{"px":[192,192],"src":[0,480],"f":0,"t":375,"d":[204],"a":1},{"px":[224,192],"src":[0,480],"f":0,"t":375,"d":[205],"a":1},{"px":[256,192],"src":[0,480],"f":0,"t":375,"d":[206],"a":1},{"px":[320,192],"src":[160,448],"f":0,"t":355,"d":[208],"a":1},{"px":[352,192],"src":[160,448],"f":0,"t":355,"d":[209],"a":1},{"px":[384,192],"src":[160,448],"f":0,"t":355,"d":[210],"a":1},{"px":[416,192],"src":[160,448],"f":0,"t":355,"d":[211],"a":1},{"px":[448,192],"src":[160,448],"f":0,"t":355,"d":[212],"a":1},{"px":[480,192],"src":[160,448],"f":0,"t":355,"d":[213],"a":1},{"px":[512,192],"src":[160,448],"f":0,"t":355,"d":[214],"a":1},{"px":[544,192],"src":[160,448],"f":0,"t":355,"d":[215],"a":1},{"px":[576,192],"src":[160,448],"f":0,"t":355,"d":[216],"a":1},{"px":[608,192],"src":[160,448],"f":0,"t":355,"d":[217],"a":1},{"px":[640,192],"src":[160,448],"f":0,"t":355,"d":[218],"a":1},{"px":[672,192],"src":[160,448],"f":0,"t":355,"d":[219],"a":1},{"px":[704,192],"src":[160,448],"f":0,"t":355,"d":[220],"a":1},{"px":[736,192],"src":[160,448],"f":0,"t":355,"d":[221],"a":1},{"px":[768,192],"src":[160,448],"f":0,"t":355,"d":[222],"a":1},{"px":[800,192],"src":[160,448],"f":0,"t":355,"d":[223],"a":1},{"px":[832,192],"src":[160,448],"f":0,"t":355,"d":[224],"a":1},{"px":[864,192],"src":[160,448],"f":0,"t":355,"d":[225],"a":1},{"px":[896,192],"src":[160,448],"f":0,"t":355,"d":[226],"a":1},{"px":[928,192],"src":[160,448],"f":0,"t":355,"d":[227],"a":1},{"px":[96,224],"src":[0,480],"f":0,"t":375,"d":[234],"a":1},{"px":[128,224],"src":[0,480],"f":0,"t":375,"d":[235],"a":1},{"px":[160,224],"src":[0,480],"f":0,"t":375,"d":[236],"a":1},{"px":[192,224],"src":[0,480],"f":0,"t":375,"d":[237],"a":1},{"px":[224,224],"src":[0,480],"f":0,"t":375,"d":[238],"a":1},{"px":[256,224],"src":[0,480],"f":0,"t":375,"d":[239],"a":1},{"px":[320,224],"src":[160,448],"f":0,"t":355,"d":[241],"a":1},{"px":[352,224],"src":[160,448],"f":0,"t":355,"d":[242],"a":1},{"px":[384,224],"src":[160,448],"f":0,"t":355,"d":[243],"a":1},{"px":[416,224],"src":[160,448],"f":0,"t":355,"d":[244],"a":1},{"px":[448,224],"src":[160,448],"f":0,"t":355,"d":[245],"a":1},{"px":[480,224],"src":[160,448],"f":0,"t":355,"d":[246],"a":1},{"px":[512,224],"src":[160,448],"f":0,"t":355,"d":[247],"a":1},{"px":[544,224],"src":[160,448],"f":0,"t":355,"d":[248],"a":1},{"px":[576,224],"src":[160,448],"f":0,"t":355,"d":[249],"a":1},{"px":[608,224],"src":[160,448],"f":0,"t":355,"d":[250],"a":1},{"px":[640,224],"src":[160,448],"f":0,"t":355,"d":[251],"a":1},{"px":[672,224],"src":[160,448],"f":0,"t":355,"d":[252],"a":1},{"px":[704,224],"src":[160,448],"f":0,"t":355,"d":[253],"a":1},{"px":[736,224],"src":[160,448],"f":0,"t":355,"d":[254],"a":1},{"px":[768,224],"src":[160,448],"f":0,"t":355,"d":[255],"a":1},{"px":[800,224],"src":[160,448],"f":0,"t":355,"d":[256],"a":1},{"px":[832,224],"src":[160,448],"f":0,"t":355,"d":[257],"a":1},{"px":[864,224],"src":[160,448],"f":0,"t":355,"d":[258],"a":1},{"px":[896,224],"src":[160,448],"f":0,"t":355,"d":[259],"a":1},{"px":[928,224],"src":[160,448],"f":0,"t":355,"d":[260],"a":1},{"px":[96,256],"src":[0,480],"f":0,"t":375,"d":[267],"a":1},{"px":[128,256],"src":[0,480],"f":0,"t":375,"d":[268],"a":1},{"px":[160,256],"src":[0,480],"f":0,"t":375,"d":[269],"a":1},{"px":[192,256],"src":[0,480],"f":0,"t":375,"d":[270],"a":1},{"px":[224,256],"src":[0,480],"f":0,"t":375,"d":[271],"a":1},{"px":[256,256],"src":[0,480],"f":0,"t":375,"d":[272],"a":1},{"px":[320,256],"src":[160,448],"f":0,"t":355,"d":[274],"a":1},{"px":[352,256],"src":[160,448],"f":0,"t":355,"d":[275],"a":1},{"px":[384,256],"src":[160,448],"f":0,"t":355,"d":[276],"a":1},{"px":[416,256],"src":[160,448],"f":0,"t":355,"d":[277],"a":1},{"px":[448,256],"src":[160,448],"f":0,"t":355,"d":[278],"a":1},{"px":[480,256],"src":[160,448],"f":0,"t":355,"d":[279],"a":1},{"px":[512,256],"src":[160,448],"f":0,"t":355,"d":[280],"a":1},{"px":[544,256],"src":[160,448],"f":0,"t":355,"d":[281],"a":1},{"px":[576,256],"src":[160,448],"f":0,"t":355,"d":[282],"a":1},{"px":[608,256],"src":[160,448],"f":0,"t":355,"d":[283],"a":1},{"px":[640,256],"src":[160,448],"f":0,"t":355,"d":[284],"a":1},{"px":[672,256],"src":[160,448],"f":0,"t":355,"d":[285],"a":1},{"px":[704,256],"src":[160,448],"f":0,"t":355,"d":[286],"a":1},{"px":[736,256],"src":[160,448],"f":0,"t":355,"d":[287],"a":1},{"px":[768,256],"src":[160,448],"f":0,"t":355,"d":[288],"a":1},{"px":[800,256],"src":[160,448],"f":0,"t":355,"d":[289],"a":1},{"px":[832,256],"src":[160,448],"f":0,"t":355,"d":[290],"a":1},{"px":[864,256],"src":[160,448],"f":0,"t":355,"d":[291],"a":1},{"px":[896,256],"src":[160,448],"f":0,"t":355,"d":[292],"a":1},{"px":[928,256],"src":[160,448],"f":0,"t":355,"d":[293],"a":1},{"px":[96,288],"src":[0,480],"f":0,"t":375,"d":[300],"a":1},{"px":[128,288],"src":[0,480],"f":0,"t":375,"d":[301],"a":1},{"px":[160,288],"src":[0,480],"f":0,"t":375,"d":[302],"a":1},{"px":[192,288],"src":[0,480],"f":0,"t":375,"d":[303],"a":1},{"px":[224,288],"src":[0,480],"f":0,"t":375,"d":[304],"a":1},{"px":[256,288],"src":[0,480],"f":0,"t":375,"d":[305],"a":1},{"px":[320,288],"src":[160,448],"f":0,"t":355,"d":[307],"a":1},{"px":[352,288],"src":[160,448],"f":0,"t":355,"d":[308],"a":1},{"px":[384,288],"src":[160,448],"f":0,"t":355,"d":[309],"a":1},{"px":[416,288],"src":[160,448],"f":0,"t":355,"d":[310],"a":1},{"px":[448,288],"src":[160,448],"f":0,"t":355,"d":[311],"a":1},{"px":[480,288],"src":[160,448],"f":0,"t":355,"d":[312],"a":1},{"px":[512,288],"src":[160,448],"f":0,"t":355,"d":[313],"a":1},{"px":[544,288],"src":[160,448],"f":0,"t":355,"d":[314],"a":1},{"px":[576,288],"src":[160,448],"f":0,"t":355,"d":[315],"a":1},{"px":[608,288],"src":[160,448],"f":0,"t":355,"d":[316],"a":1},{"px":[640,288],"src":[160,448],"f":0,"t":355,"d":[317],"a":1},{"px":[672,288],"src":[160,448],"f":0,"t":355,"d":[318],"a":1},{"px":[704,288],"src":[160,448],"f":0,"t":355,"d":[319],"a":1},{"px":[736,288],"src":[160,448],"f":0,"t":355,"d":[320],"a":1},{"px":[768,288],"src":[160,448],"f":0,"t":355,"d":[321],"a":1},{"px":[800,288],"src":[160,448],"f":0,"t":355,"d":[322],"a":1},{"px":[832,288],"src":[160,448],"f":0,"t":355,"d":[323],"a":1},{"px":[864,288],"src":[160,448],"f":0,"t":355,"d":[324],"a":1},{"px":[896,288],"src":[160,448],"f":0,"t":355,"d":[325],"a":1},{"px":[928,288],"src":[160,448],"f":0,"t":355,"d":[326],"a":1},{"px":[96,320],"src":[0,480],"f":0,"t":375,"d":[333],"a":1},{"px":[128,320],"src":[0,480],"f":0,"t":375,"d":[334],"a":1},{"px":[160,320],"src":[0,480],"f":0,"t":375,"d":[335],"a":1},{"px":[192,320],"src":[0,480],"f":0,"t":375,"d":[336],"a":1},{"px":[224,320],"src":[0,480],"f":0,"t":375,"d":[337],"a":1},{"px":[256,320],"src":[0,480],"f":0,"t":375,"d":[338],"a":1},{"px":[320,320],"src":[160,448],"f":0,"t":355,"d":[340],"a":1},{"px":[352,320],"src":[160,448],"f":0,"t":355,"d":[341],"a":1},{"px":[384,320],"src":[160,448],"f":0,"t":355,"d":[342],"a":1},{"px":[416,320],"src":[160,448],"f":0,"t":355,"d":[343],"a":1},{"px":[448,320],"src":[160,448],"f":0,"t":355,"d":[344],"a":1},{"px":[480,320],"src":[160,448],"f":0,"t":355,"d":[345],"a":1},{"px":[512,320],"src":[160,448],"f":0,"t":355,"d":[346],"a":1},{"px":[544,320],"src":[160,448],"f":0,"t":355,"d":[347],"a":1},{"px":[576,320],"src":[160,448],"f":0,"t":355,"d":[348],"a":1},{"px":[608,320],"src":[160,448],"f":0,"t":355,"d":[349],"a":1},{"px":[640,320],"src":[160,448],"f":0,"t":355,"d":[350],"a":1},{"px":[672,320],"src":[160,448],"f":0,"t":355,"d":[351],"a":1},{"px":[704,320],"src":[160,448],"f":0,"t":355,"d":[352],"a":1},{"px":[736,320],"src":[160,448],"f":0,"t":355,"d":[353],"a":1},{"px":[768,320],"src":[160,448],"f":0,"t":355,"d":[354],"a":1},{"px":[800,320],"src":[160,448],"f":0,"t":355,"d":[355],"a":1},{"px":[832,320],"src":[160,448],"f":0,"t":355,"d":[356],"a":1},{"px":[864,320],"src":[160,448],"f":0,"t":355,"d":[357],"a":1},{"px":[896,320],"src":[160,448],"f":0,"t":355,"d":[358],"a":1},{"px":[928,320],"src":[160,448],"f":0,"t":355,"d":[359],"a":1},{"px":[864,352],"src":[160,448],"f":0,"t":355,"d":[390],"a":1},{"px":[896,352],"src":[160,448],"f":0,"t":355,"d":[391],"a":1},{"px":[864,384],"src":[160,448],"f":0,"t":355,"d":[423],"a":1},{"px":[896,384],"src":[160,448],"f":0,"t":355,"d":[424],"a":1},{"px":[864,416],"src":[160,448],"f":0,"t":355,"d":[456],"a":1},{"px":[896,416],"src":[160,448],"f":0,"t":355,"d":[457],"a":1}],"entityInstances":[]},{"__identifier":"outdoorfloor","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d1c43aa0-d7b0-11ee-bac6-79b8dad265bc","levelId":0,"layerDefUid":23,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":2185977,"overrideTilesetUid":null,"gridTiles":[{"px":[64,448],"src":[96,800],"f":0,"t":628,"d":[464],"a":1},{"px":[96,448],"src":[128,800],"f":0,"t":629,"d":[465],"a":1},{"px":[128,448],"src":[128,800],"f":0,"t":629,"d":[466],"a":1},{"px":[160,448],"src":[128,800],"f":0,"t":629,"d":[467],"a":1},{"px":[192,448],"src":[96,800],"f":0,"t":628,"d":[468],"a":1},{"px":[224,448],"src":[128,800],"f":0,"t":629,"d":[469],"a":1},{"px":[256,448],"src":[128,800],"f":0,"t":629,"d":[470],"a":1},{"px":[288,448],"src":[96,800],"f":0,"t":628,"d":[471],"a":1},{"px":[320,448],"src":[128,800],"f":0,"t":629,"d":[472],"a":1},{"px":[352,448],"src":[96,800],"f":0,"t":628,"d":[473],"a":1},{"px":[384,448],"src":[128,800],"f":0,"t":629,"d":[474],"a":1},{"px":[416,448],"src":[128,800],"f":0,"t":629,"d":[475],"a":1},{"px":[448,448],"src":[128,800],"f":0,"t":629,"d":[476],"a":1},{"px":[480,448],"src":[128,800],"f":0,"t":629,"d":[477],"a":1},{"px":[512,448],"src":[128,800],"f":0,"t":629,"d":[478],"a":1},{"px":[544,448],"src":[128,800],"f":0,"t":629,"d":[479],"a":1},{"px":[576,448],"src":[96,800],"f":0,"t":628,"d":[480],"a":1},{"px":[608,448],"src":[128,800],"f":0,"t":629,"d":[481],"a":1},{"px":[640,448],"src":[96,800],"f":0,"t":628,"d":[482],"a":1},{"px":[672,448],"src":[96,800],"f":0,"t":628,"d":[483],"a":1},{"px":[704,448],"src":[96,800],"f":0,"t":628,"d":[484],"a":1},{"px":[736,448],"src":[96,800],"f":0,"t":628,"d":[485],"a":1},{"px":[768,448],"src":[96,800],"f":0,"t":628,"d":[486],"a":1},{"px":[800,448],"src":[96,800],"f":0,"t":628,"d":[487],"a":1},{"px":[832,448],"src":[128,800],"f":0,"t":629,"d":[488],"a":1},{"px":[864,448],"src":[128,800],"f":0,"t":629,"d":[489],"a":1},{"px":[896,448],"src":[96,800],"f":0,"t":628,"d":[490],"a":1},{"px":[928,448],"src":[96,800],"f":0,"t":628,"d":[491],"a":1},{"px":[960,448],"src":[128,800],"f":0,"t":629,"d":[492],"a":1},{"px":[64,480],"src":[96,800],"f":0,"t":628,"d":[497],"a":1},{"px":[96,480],"src":[128,800],"f":0,"t":629,"d":[498],"a":1},{"px":[128,480],"src":[128,800],"f":0,"t":629,"d":[499],"a":1},{"px":[160,480],"src":[96,800],"f":0,"t":628,"d":[500],"a":1},{"px":[192,480],"src":[96,800],"f":0,"t":628,"d":[501],"a":1},{"px":[224,480],"src":[96,800],"f":0,"t":628,"d":[502],"a":1},{"px":[256,480],"src":[96,800],"f":0,"t":628,"d":[503],"a":1},{"px":[288,480],"src":[96,800],"f":0,"t":628,"d":[504],"a":1},{"px":[320,480],"src":[96,800],"f":0,"t":628,"d":[505],"a":1},{"px":[352,480],"src":[128,800],"f":0,"t":629,"d":[506],"a":1},{"px":[384,480],"src":[128,800],"f":0,"t":629,"d":[507],"a":1},{"px":[416,480],"src":[96,800],"f":0,"t":628,"d":[508],"a":1},{"px":[448,480],"src":[128,800],"f":0,"t":629,"d":[509],"a":1},{"px":[480,480],"src":[96,800],"f":0,"t":628,"d":[510],"a":1},{"px":[512,480],"src":[128,800],"f":0,"t":629,"d":[511],"a":1},{"px":[544,480],"src":[96,800],"f":0,"t":628,"d":[512],"a":1},{"px":[576,480],"src":[128,800],"f":0,"t":629,"d":[513],"a":1},{"px":[608,480],"src":[96,800],"f":0,"t":628,"d":[514],"a":1},{"px":[640,480],"src":[96,800],"f":0,"t":628,"d":[515],"a":1},{"px":[672,480],"src":[128,800],"f":0,"t":629,"d":[516],"a":1},{"px":[704,480],"src":[96,800],"f":0,"t":628,"d":[517],"a":1},{"px":[736,480],"src":[128,800],"f":0,"t":629,"d":[518],"a":1},{"px":[768,480],"src":[96,800],"f":0,"t":628,"d":[519],"a":1},{"px":[800,480],"src":[128,800],"f":0,"t":629,"d":[520],"a":1},{"px":[832,480],"src":[128,800],"f":0,"t":629,"d":[521],"a":1},{"px":[864,480],"src":[128,800],"f":0,"t":629,"d":[522],"a":1},{"px":[896,480],"src":[128,800],"f":0,"t":629,"d":[523],"a":1},{"px":[928,480],"src":[128,800],"f":0,"t":629,"d":[524],"a":1},{"px":[960,480],"src":[128,800],"f":0,"t":629,"d":[525],"a":1},{"px":[64,512],"src":[96,800],"f":0,"t":628,"d":[530],"a":1},{"px":[96,512],"src":[128,800],"f":0,"t":629,"d":[531],"a":1},{"px":[128,512],"src":[128,800],"f":0,"t":629,"d":[532],"a":1},{"px":[160,512],"src":[96,800],"f":0,"t":628,"d":[533],"a":1},{"px":[192,512],"src":[96,800],"f":0,"t":628,"d":[534],"a":1},{"px":[224,512],"src":[96,800],"f":0,"t":628,"d":[535],"a":1},{"px":[256,512],"src":[128,800],"f":0,"t":629,"d":[536],"a":1},{"px":[288,512],"src":[128,800],"f":0,"t":629,"d":[537],"a":1},{"px":[320,512],"src":[96,800],"f":0,"t":628,"d":[538],"a":1},{"px":[352,512],"src":[128,800],"f":0,"t":629,"d":[539],"a":1},{"px":[384,512],"src":[96,800],"f":0,"t":628,"d":[540],"a":1},{"px":[416,512],"src":[128,800],"f":0,"t":629,"d":[541],"a":1},{"px":[448,512],"src":[128,800],"f":0,"t":629,"d":[542],"a":1},{"px":[480,512],"src":[96,800],"f":0,"t":628,"d":[543],"a":1},{"px":[512,512],"src":[128,800],"f":0,"t":629,"d":[544],"a":1},{"px":[544,512],"src":[96,800],"f":0,"t":628,"d":[545],"a":1},{"px":[576,512],"src":[96,800],"f":0,"t":628,"d":[546],"a":1},{"px":[608,512],"src":[96,800],"f":0,"t":628,"d":[547],"a":1},{"px":[640,512],"src":[128,800],"f":0,"t":629,"d":[548],"a":1},{"px":[672,512],"src":[128,800],"f":0,"t":629,"d":[549],"a":1},{"px":[704,512],"src":[128,800],"f":0,"t":629,"d":[550],"a":1},{"px":[736,512],"src":[96,800],"f":0,"t":628,"d":[551],"a":1},{"px":[768,512],"src":[128,800],"f":0,"t":629,"d":[552],"a":1},{"px":[800,512],"src":[128,800],"f":0,"t":629,"d":[553],"a":1},{"px":[832,512],"src":[128,800],"f":0,"t":629,"d":[554],"a":1},{"px":[864,512],"src":[128,800],"f":0,"t":629,"d":[555],"a":1},{"px":[896,512],"src":[128,800],"f":0,"t":629,"d":[556],"a":1},{"px":[928,512],"src":[128,800],"f":0,"t":629,"d":[557],"a":1},{"px":[960,512],"src":[96,800],"f":0,"t":628,"d":[558],"a":1},{"px":[64,544],"src":[128,800],"f":0,"t":629,"d":[563],"a":1},{"px":[96,544],"src":[96,800],"f":0,"t":628,"d":[564],"a":1},{"px":[128,544],"src":[128,800],"f":0,"t":629,"d":[565],"a":1},{"px":[160,544],"src":[128,800],"f":0,"t":629,"d":[566],"a":1},{"px":[192,544],"src":[128,800],"f":0,"t":629,"d":[567],"a":1},{"px":[224,544],"src":[128,800],"f":0,"t":629,"d":[568],"a":1},{"px":[256,544],"src":[96,800],"f":0,"t":628,"d":[569],"a":1},{"px":[288,544],"src":[96,800],"f":0,"t":628,"d":[570],"a":1},{"px":[320,544],"src":[96,800],"f":0,"t":628,"d":[571],"a":1},{"px":[352,544],"src":[128,800],"f":0,"t":629,"d":[572],"a":1},{"px":[384,544],"src":[96,800],"f":0,"t":628,"d":[573],"a":1},{"px":[416,544],"src":[96,800],"f":0,"t":628,"d":[574],"a":1},{"px":[448,544],"src":[96,800],"f":0,"t":628,"d":[575],"a":1},{"px":[480,544],"src":[128,800],"f":0,"t":629,"d":[576],"a":1},{"px":[512,544],"src":[96,800],"f":0,"t":628,"d":[577],"a":1},{"px":[544,544],"src":[96,800],"f":0,"t":628,"d":[578],"a":1},{"px":[576,544],"src":[128,800],"f":0,"t":629,"d":[579],"a":1},{"px":[608,544],"src":[96,800],"f":0,"t":628,"d":[580],"a":1},{"px":[640,544],"src":[96,800],"f":0,"t":628,"d":[581],"a":1},{"px":[672,544],"src":[96,800],"f":0,"t":628,"d":[582],"a":1},{"px":[704,544],"src":[96,800],"f":0,"t":628,"d":[583],"a":1},{"px":[736,544],"src":[96,800],"f":0,"t":628,"d":[584],"a":1},{"px":[768,544],"src":[96,800],"f":0,"t":628,"d":[585],"a":1},{"px":[800,544],"src":[128,800],"f":0,"t":629,"d":[586],"a":1},{"px":[832,544],"src":[96,800],"f":0,"t":628,"d":[587],"a":1},{"px":[864,544],"src":[128,800],"f":0,"t":629,"d":[588],"a":1},{"px":[896,544],"src":[96,800],"f":0,"t":628,"d":[589],"a":1},{"px":[928,544],"src":[96,800],"f":0,"t":628,"d":[590],"a":1},{"px":[960,544],"src":[128,800],"f":0,"t":629,"d":[591],"a":1},{"px":[64,576],"src":[96,800],"f":0,"t":628,"d":[596],"a":1},{"px":[96,576],"src":[96,800],"f":0,"t":628,"d":[597],"a":1},{"px":[128,576],"src":[96,800],"f":0,"t":628,"d":[598],"a":1},{"px":[160,576],"src":[96,800],"f":0,"t":628,"d":[599],"a":1},{"px":[192,576],"src":[96,800],"f":0,"t":628,"d":[600],"a":1},{"px":[224,576],"src":[96,800],"f":0,"t":628,"d":[601],"a":1},{"px":[256,576],"src":[96,800],"f":0,"t":628,"d":[602],"a":1},{"px":[288,576],"src":[96,800],"f":0,"t":628,"d":[603],"a":1},{"px":[320,576],"src":[96,800],"f":0,"t":628,"d":[604],"a":1},{"px":[352,576],"src":[128,800],"f":0,"t":629,"d":[605],"a":1},{"px":[384,576],"src":[128,800],"f":0,"t":629,"d":[606],"a":1},{"px":[416,576],"src":[128,800],"f":0,"t":629,"d":[607],"a":1},{"px":[448,576],"src":[96,800],"f":0,"t":628,"d":[608],"a":1},{"px":[480,576],"src":[96,800],"f":0,"t":628,"d":[609],"a":1},{"px":[512,576],"src":[96,800],"f":0,"t":628,"d":[610],"a":1},{"px":[544,576],"src":[96,800],"f":0,"t":628,"d":[611],"a":1},{"px":[576,576],"src":[128,800],"f":0,"t":629,"d":[612],"a":1},{"px":[608,576],"src":[128,800],"f":0,"t":629,"d":[613],"a":1},{"px":[640,576],"src":[128,800],"f":0,"t":629,"d":[614],"a":1},{"px":[672,576],"src":[96,800],"f":0,"t":628,"d":[615],"a":1},{"px":[704,576],"src":[128,800],"f":0,"t":629,"d":[616],"a":1},{"px":[736,576],"src":[96,800],"f":0,"t":628,"d":[617],"a":1},{"px":[768,576],"src":[96,800],"f":0,"t":628,"d":[618],"a":1},{"px":[800,576],"src":[96,800],"f":0,"t":628,"d":[619],"a":1},{"px":[832,576],"src":[128,800],"f":0,"t":629,"d":[620],"a":1},{"px":[864,576],"src":[128,800],"f":0,"t":629,"d":[621],"a":1},{"px":[896,576],"src":[96,800],"f":0,"t":628,"d":[622],"a":1},{"px":[928,576],"src":[96,800],"f":0,"t":628,"d":[623],"a":1},{"px":[960,576],"src":[128,800],"f":0,"t":629,"d":[624],"a":1}],"entityInstances":[]},{"__identifier":"element_teleport_layer","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"42fbfa30-d7b0-11ee-bac6-210db21b03d2","levelId":0,"layerDefUid":31,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9110959,"overrideTilesetUid":null,"gridTiles":[{"px":[352,160],"src":[160,0],"f":0,"t":5,"d":[176],"a":1},{"px":[384,160],"src":[160,0],"f":0,"t":5,"d":[177],"a":1},{"px":[352,192],"src":[160,0],"f":0,"t":5,"d":[209],"a":1},{"px":[384,192],"src":[160,0],"f":0,"t":5,"d":[210],"a":1}],"entityInstances":[]},{"__identifier":"matrix_teleport_layer","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"722ae370-d7b0-11ee-bac6-cbacaa0fe990","levelId":0,"layerDefUid":32,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6438177,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"start","__type":"Tiles","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"b64e2890-d7b0-11ee-bac6-0dc65fe1679b","levelId":0,"layerDefUid":22,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7281494,"overrideTilesetUid":null,"gridTiles":[{"px":[864,448],"src":[32,0],"f":0,"t":1,"d":[489],"a":1},{"px":[896,448],"src":[32,0],"f":0,"t":1,"d":[490],"a":1},{"px":[864,480],"src":[32,0],"f":0,"t":1,"d":[522],"a":1},{"px":[896,480],"src":[32,0],"f":0,"t":1,"d":[523],"a":1},{"px":[864,512],"src":[32,0],"f":0,"t":1,"d":[555],"a":1},{"px":[896,512],"src":[32,0],"f":0,"t":1,"d":[556],"a":1},{"px":[864,544],"src":[32,0],"f":0,"t":1,"d":[588],"a":1},{"px":[896,544],"src":[32,0],"f":0,"t":1,"d":[589],"a":1},{"px":[864,576],"src":[32,0],"f":0,"t":1,"d":[621],"a":1},{"px":[896,576],"src":[32,0],"f":0,"t":1,"d":[622],"a":1}],"entityInstances":[]},{"__identifier":"walls","__type":"IntGrid","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"c1d97060-d7b0-11ee-9c16-eb03fb2b0b86","levelId":0,"layerDefUid":76,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":3697551,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"test_room_autolayer","__type":"IntGrid","__cWid":33,"__cHei":21,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"783f8fb0-d7b0-11ee-bac6-4334377119a6","levelId":0,"layerDefUid":35,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":185189,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]}],"__neighbours":[]},{"identifier":"level_element","iid":"d7e25560-d7b0-11ee-bac6-f36c1fd24d4e","uid":28,"worldX":1184,"worldY":-640,"worldDepth":0,"pxWid":992,"pxHei":640,"__bgColor":"#696A79","bgColor":null,"useAutoIdentifier":false,"bgRelPath":null,"bgPos":null,"bgPivotX":0.5,"bgPivotY":0.5,"__smartColor":"#ADADB5","__bgPos":null,"externalRelPath":null,"fieldInstances":[],"layerInstances":[{"__identifier":"entities","__type":"Entities","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"de51a5a0-d7b0-11ee-9c16-1fab36c3e4b8","levelId":28,"layerDefUid":77,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6474875,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"floorlayer","__type":"Entities","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"d7e27c70-d7b0-11ee-bac6-e52471eda00c","levelId":28,"layerDefUid":3,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7336133,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"on_table","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":20,"__tilesetRelPath":"tilesets/WA_Miscellaneous.png","iid":"d7e27c71-d7b0-11ee-bac6-3d6b60dc9f21","levelId":28,"layerDefUid":21,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3524341,"overrideTilesetUid":null,"gridTiles":[{"px":[192,96],"src":[0,128],"f":0,"t":40,"d":[99],"a":1},{"px":[224,96],"src":[32,128],"f":0,"t":41,"d":[100],"a":1},{"px":[256,96],"src":[64,128],"f":0,"t":42,"d":[101],"a":1},{"px":[192,128],"src":[0,160],"f":0,"t":50,"d":[130],"a":1},{"px":[224,128],"src":[32,160],"f":0,"t":51,"d":[131],"a":1},{"px":[256,128],"src":[64,160],"f":0,"t":52,"d":[132],"a":1}],"entityInstances":[]},{"__identifier":"tables","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":16,"__tilesetRelPath":"tilesets/WA_Tables.png","iid":"d7e27c72-d7b0-11ee-bac6-6762fbdbd676","levelId":28,"layerDefUid":17,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":5867330,"overrideTilesetUid":null,"gridTiles":[{"px":[192,256],"src":[160,0],"f":0,"t":5,"d":[254],"a":1},{"px":[224,256],"src":[192,0],"f":0,"t":6,"d":[255],"a":1},{"px":[256,256],"src":[224,0],"f":0,"t":7,"d":[256],"a":1},{"px":[192,288],"src":[160,32],"f":0,"t":15,"d":[285],"a":1},{"px":[224,288],"src":[192,32],"f":0,"t":16,"d":[286],"a":1},{"px":[256,288],"src":[224,32],"f":0,"t":17,"d":[287],"a":1},{"px":[192,320],"src":[160,32],"f":0,"t":15,"d":[316],"a":1},{"px":[224,320],"src":[192,32],"f":0,"t":16,"d":[317],"a":1},{"px":[256,320],"src":[224,32],"f":0,"t":17,"d":[318],"a":1},{"px":[192,352],"src":[160,32],"f":0,"t":15,"d":[347],"a":1},{"px":[224,352],"src":[192,32],"f":0,"t":16,"d":[348],"a":1},{"px":[256,352],"src":[224,32],"f":0,"t":17,"d":[349],"a":1},{"px":[192,384],"src":[160,64],"f":0,"t":25,"d":[378],"a":1},{"px":[224,384],"src":[192,64],"f":0,"t":26,"d":[379],"a":1},{"px":[256,384],"src":[224,64],"f":0,"t":27,"d":[380],"a":1}],"entityInstances":[]},{"__identifier":"seats_behind","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":18,"__tilesetRelPath":"tilesets/WA_Seats.png","iid":"d7e27c73-d7b0-11ee-bac6-2deb77474758","levelId":28,"layerDefUid":19,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9526857,"overrideTilesetUid":null,"gridTiles":[{"px":[160,288],"src":[96,288],"f":1,"t":120,"d":[284],"a":1},{"px":[288,288],"src":[96,288],"f":0,"t":120,"d":[288],"a":1},{"px":[160,320],"src":[96,288],"f":1,"t":120,"d":[315],"a":1},{"px":[288,320],"src":[96,288],"f":0,"t":120,"d":[319],"a":1},{"px":[160,352],"src":[96,288],"f":1,"t":120,"d":[346],"a":1},{"px":[288,352],"src":[96,288],"f":0,"t":120,"d":[350],"a":1}],"entityInstances":[]},{"__identifier":"furniture","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":12,"__tilesetRelPath":"tilesets/WA_Other_Furniture.png","iid":"d7e27c74-d7b0-11ee-bac6-498f975ff2ac","levelId":28,"layerDefUid":13,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":7823085,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"outdoor_decoration","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d7e2a380-d7b0-11ee-bac6-3f9e357e50f1","levelId":28,"layerDefUid":25,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":8328124,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"wall_decoration","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":26,"__tilesetRelPath":"tilesets/matrix-logo.png","iid":"d7e2a381-d7b0-11ee-bac6-99d06c2d5f2e","levelId":28,"layerDefUid":27,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1698875,"overrideTilesetUid":26,"gridTiles":[{"px":[96,96],"src":[0,0],"f":0,"t":0,"d":[96],"a":1},{"px":[128,96],"src":[32,0],"f":0,"t":1,"d":[97],"a":1},{"px":[160,96],"src":[64,0],"f":0,"t":2,"d":[98],"a":1}],"entityInstances":[]},{"__identifier":"walls_visuals","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"d7e2a382-d7b0-11ee-bac6-053cf6a76790","levelId":28,"layerDefUid":1,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":6095843,"overrideTilesetUid":null,"gridTiles":[{"px":[64,64],"src":[96,32],"f":0,"t":28,"d":[64],"a":1},{"px":[96,64],"src":[128,128],"f":0,"t":104,"d":[65],"a":1},{"px":[128,64],"src":[128,128],"f":0,"t":104,"d":[66],"a":1},{"px":[160,64],"src":[128,128],"f":0,"t":104,"d":[67],"a":1},{"px":[192,64],"src":[128,128],"f":0,"t":104,"d":[68],"a":1},{"px":[224,64],"src":[128,128],"f":0,"t":104,"d":[69],"a":1},{"px":[256,64],"src":[128,128],"f":0,"t":104,"d":[70],"a":1},{"px":[288,64],"src":[128,128],"f":0,"t":104,"d":[71],"a":1},{"px":[320,64],"src":[128,128],"f":0,"t":104,"d":[72],"a":1},{"px":[352,64],"src":[128,32],"f":0,"t":29,"d":[73],"a":1},{"px":[64,96],"src":[64,128],"f":0,"t":102,"d":[95],"a":1},{"px":[96,96],"src":[256,256],"f":0,"t":208,"d":[96],"a":1},{"px":[128,96],"src":[160,256],"f":0,"t":205,"d":[97],"a":1},{"px":[160,96],"src":[192,256],"f":0,"t":206,"d":[98],"a":1},{"px":[192,96],"src":[160,256],"f":0,"t":205,"d":[99],"a":1},{"px":[224,96],"src":[192,256],"f":0,"t":206,"d":[100],"a":1},{"px":[256,96],"src":[160,256],"f":0,"t":205,"d":[101],"a":1},{"px":[288,96],"src":[192,256],"f":0,"t":206,"d":[102],"a":1},{"px":[320,96],"src":[288,256],"f":0,"t":209,"d":[103],"a":1},{"px":[352,96],"src":[64,128],"f":0,"t":102,"d":[104],"a":1},{"px":[64,128],"src":[64,128],"f":0,"t":102,"d":[126],"a":1},{"px":[96,128],"src":[256,288],"f":0,"t":233,"d":[127],"a":1},{"px":[128,128],"src":[160,288],"f":0,"t":230,"d":[128],"a":1},{"px":[160,128],"src":[192,288],"f":0,"t":231,"d":[129],"a":1},{"px":[192,128],"src":[160,288],"f":0,"t":230,"d":[130],"a":1},{"px":[224,128],"src":[192,288],"f":0,"t":231,"d":[131],"a":1},{"px":[256,128],"src":[160,288],"f":0,"t":230,"d":[132],"a":1},{"px":[288,128],"src":[192,288],"f":0,"t":231,"d":[133],"a":1},{"px":[320,128],"src":[288,288],"f":0,"t":234,"d":[134],"a":1},{"px":[352,128],"src":[64,128],"f":0,"t":102,"d":[135],"a":1},{"px":[64,160],"src":[64,128],"f":0,"t":102,"d":[157],"a":1},{"px":[352,160],"src":[64,128],"f":0,"t":102,"d":[166],"a":1},{"px":[64,192],"src":[64,128],"f":0,"t":102,"d":[188],"a":1},{"px":[352,192],"src":[64,128],"f":0,"t":102,"d":[197],"a":1},{"px":[64,224],"src":[64,128],"f":0,"t":102,"d":[219],"a":1},{"px":[352,224],"src":[64,128],"f":0,"t":102,"d":[228],"a":1},{"px":[64,256],"src":[64,128],"f":0,"t":102,"d":[250],"a":1},{"px":[352,256],"src":[64,128],"f":0,"t":102,"d":[259],"a":1},{"px":[64,288],"src":[64,128],"f":0,"t":102,"d":[281],"a":1},{"px":[352,288],"src":[64,128],"f":0,"t":102,"d":[290],"a":1},{"px":[64,320],"src":[64,128],"f":0,"t":102,"d":[312],"a":1},{"px":[352,320],"src":[64,128],"f":0,"t":102,"d":[321],"a":1},{"px":[64,352],"src":[64,128],"f":0,"t":102,"d":[343],"a":1},{"px":[352,352],"src":[64,128],"f":0,"t":102,"d":[352],"a":1},{"px":[64,384],"src":[64,128],"f":0,"t":102,"d":[374],"a":1},{"px":[352,384],"src":[64,128],"f":0,"t":102,"d":[383],"a":1},{"px":[64,416],"src":[64,128],"f":0,"t":102,"d":[405],"a":1},{"px":[352,416],"src":[64,128],"f":0,"t":102,"d":[414],"a":1},{"px":[64,448],"src":[64,128],"f":0,"t":102,"d":[436],"a":1},{"px":[352,448],"src":[64,128],"f":0,"t":102,"d":[445],"a":1},{"px":[64,480],"src":[96,64],"f":0,"t":53,"d":[467],"a":1},{"px":[96,480],"src":[128,128],"f":0,"t":104,"d":[468],"a":1},{"px":[128,480],"src":[128,128],"f":0,"t":104,"d":[469],"a":1},{"px":[160,480],"src":[128,128],"f":0,"t":104,"d":[470],"a":1},{"px":[192,480],"src":[128,128],"f":0,"t":104,"d":[471],"a":1},{"px":[224,480],"src":[128,128],"f":0,"t":104,"d":[472],"a":1},{"px":[256,480],"src":[128,128],"f":0,"t":104,"d":[473],"a":1},{"px":[288,480],"src":[128,128],"f":0,"t":104,"d":[474],"a":1},{"px":[320,480],"src":[128,128],"f":0,"t":104,"d":[475],"a":1},{"px":[352,480],"src":[128,64],"f":0,"t":54,"d":[476],"a":1},{"px":[64,512],"src":[320,384],"f":0,"t":310,"d":[498],"a":1},{"px":[96,512],"src":[320,384],"f":0,"t":310,"d":[499],"a":1},{"px":[128,512],"src":[320,384],"f":0,"t":310,"d":[500],"a":1},{"px":[160,512],"src":[320,384],"f":0,"t":310,"d":[501],"a":1},{"px":[192,512],"src":[320,384],"f":0,"t":310,"d":[502],"a":1},{"px":[224,512],"src":[320,384],"f":0,"t":310,"d":[503],"a":1},{"px":[256,512],"src":[320,384],"f":0,"t":310,"d":[504],"a":1},{"px":[288,512],"src":[320,384],"f":0,"t":310,"d":[505],"a":1},{"px":[320,512],"src":[320,384],"f":0,"t":310,"d":[506],"a":1},{"px":[352,512],"src":[320,384],"f":0,"t":310,"d":[507],"a":1},{"px":[64,544],"src":[320,384],"f":0,"t":310,"d":[529],"a":1},{"px":[96,544],"src":[320,384],"f":0,"t":310,"d":[530],"a":1},{"px":[128,544],"src":[320,384],"f":0,"t":310,"d":[531],"a":1},{"px":[160,544],"src":[320,384],"f":0,"t":310,"d":[532],"a":1},{"px":[192,544],"src":[320,384],"f":0,"t":310,"d":[533],"a":1},{"px":[224,544],"src":[320,384],"f":0,"t":310,"d":[534],"a":1},{"px":[256,544],"src":[320,384],"f":0,"t":310,"d":[535],"a":1},{"px":[288,544],"src":[320,384],"f":0,"t":310,"d":[536],"a":1},{"px":[320,544],"src":[320,384],"f":0,"t":310,"d":[537],"a":1},{"px":[352,544],"src":[320,384],"f":0,"t":310,"d":[538],"a":1}],"entityInstances":[]},{"__identifier":"ui","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":30,"__tilesetRelPath":"tilesets/WA_User_Interface.png","iid":"b0c78a80-d7b0-11ee-bac6-bf503144adbf","levelId":28,"layerDefUid":29,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":1991201,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[160,576],"f":0,"t":239,"d":[158],"a":1},{"px":[128,160],"src":[192,576],"f":0,"t":240,"d":[159],"a":1},{"px":[160,160],"src":[256,192],"f":0,"t":86,"d":[160],"a":1},{"px":[96,192],"src":[256,576],"f":0,"t":242,"d":[189],"a":1},{"px":[128,192],"src":[224,576],"f":0,"t":241,"d":[190],"a":1}],"entityInstances":[]},{"__identifier":"floor","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"d7e2a383-d7b0-11ee-bac6-6f2be83afbf2","levelId":28,"layerDefUid":14,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3071547,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[320,448],"f":0,"t":360,"d":[158],"a":1},{"px":[128,160],"src":[320,448],"f":0,"t":360,"d":[159],"a":1},{"px":[160,160],"src":[320,448],"f":0,"t":360,"d":[160],"a":1},{"px":[192,160],"src":[320,448],"f":0,"t":360,"d":[161],"a":1},{"px":[224,160],"src":[320,448],"f":0,"t":360,"d":[162],"a":1},{"px":[256,160],"src":[320,448],"f":0,"t":360,"d":[163],"a":1},{"px":[288,160],"src":[320,448],"f":0,"t":360,"d":[164],"a":1},{"px":[320,160],"src":[320,448],"f":0,"t":360,"d":[165],"a":1},{"px":[96,192],"src":[320,448],"f":0,"t":360,"d":[189],"a":1},{"px":[128,192],"src":[320,448],"f":0,"t":360,"d":[190],"a":1},{"px":[160,192],"src":[320,448],"f":0,"t":360,"d":[191],"a":1},{"px":[192,192],"src":[320,448],"f":0,"t":360,"d":[192],"a":1},{"px":[224,192],"src":[320,448],"f":0,"t":360,"d":[193],"a":1},{"px":[256,192],"src":[320,448],"f":0,"t":360,"d":[194],"a":1},{"px":[288,192],"src":[320,448],"f":0,"t":360,"d":[195],"a":1},{"px":[320,192],"src":[320,448],"f":0,"t":360,"d":[196],"a":1},{"px":[96,224],"src":[320,448],"f":0,"t":360,"d":[220],"a":1},{"px":[128,224],"src":[320,448],"f":0,"t":360,"d":[221],"a":1},{"px":[160,224],"src":[320,448],"f":0,"t":360,"d":[222],"a":1},{"px":[192,224],"src":[320,448],"f":0,"t":360,"d":[223],"a":1},{"px":[224,224],"src":[320,448],"f":0,"t":360,"d":[224],"a":1},{"px":[256,224],"src":[320,448],"f":0,"t":360,"d":[225],"a":1},{"px":[288,224],"src":[320,448],"f":0,"t":360,"d":[226],"a":1},{"px":[320,224],"src":[320,448],"f":0,"t":360,"d":[227],"a":1},{"px":[96,256],"src":[320,448],"f":0,"t":360,"d":[251],"a":1},{"px":[128,256],"src":[320,448],"f":0,"t":360,"d":[252],"a":1},{"px":[160,256],"src":[320,448],"f":0,"t":360,"d":[253],"a":1},{"px":[192,256],"src":[320,448],"f":0,"t":360,"d":[254],"a":1},{"px":[224,256],"src":[320,448],"f":0,"t":360,"d":[255],"a":1},{"px":[256,256],"src":[320,448],"f":0,"t":360,"d":[256],"a":1},{"px":[288,256],"src":[320,448],"f":0,"t":360,"d":[257],"a":1},{"px":[320,256],"src":[320,448],"f":0,"t":360,"d":[258],"a":1},{"px":[96,288],"src":[320,448],"f":0,"t":360,"d":[282],"a":1},{"px":[128,288],"src":[320,448],"f":0,"t":360,"d":[283],"a":1},{"px":[160,288],"src":[320,448],"f":0,"t":360,"d":[284],"a":1},{"px":[192,288],"src":[320,448],"f":0,"t":360,"d":[285],"a":1},{"px":[224,288],"src":[320,448],"f":0,"t":360,"d":[286],"a":1},{"px":[256,288],"src":[320,448],"f":0,"t":360,"d":[287],"a":1},{"px":[288,288],"src":[320,448],"f":0,"t":360,"d":[288],"a":1},{"px":[320,288],"src":[320,448],"f":0,"t":360,"d":[289],"a":1},{"px":[96,320],"src":[320,448],"f":0,"t":360,"d":[313],"a":1},{"px":[128,320],"src":[320,448],"f":0,"t":360,"d":[314],"a":1},{"px":[160,320],"src":[320,448],"f":0,"t":360,"d":[315],"a":1},{"px":[192,320],"src":[320,448],"f":0,"t":360,"d":[316],"a":1},{"px":[224,320],"src":[320,448],"f":0,"t":360,"d":[317],"a":1},{"px":[256,320],"src":[320,448],"f":0,"t":360,"d":[318],"a":1},{"px":[288,320],"src":[320,448],"f":0,"t":360,"d":[319],"a":1},{"px":[320,320],"src":[320,448],"f":0,"t":360,"d":[320],"a":1},{"px":[96,352],"src":[320,448],"f":0,"t":360,"d":[344],"a":1},{"px":[128,352],"src":[320,448],"f":0,"t":360,"d":[345],"a":1},{"px":[160,352],"src":[320,448],"f":0,"t":360,"d":[346],"a":1},{"px":[192,352],"src":[320,448],"f":0,"t":360,"d":[347],"a":1},{"px":[224,352],"src":[320,448],"f":0,"t":360,"d":[348],"a":1},{"px":[256,352],"src":[320,448],"f":0,"t":360,"d":[349],"a":1},{"px":[288,352],"src":[320,448],"f":0,"t":360,"d":[350],"a":1},{"px":[320,352],"src":[320,448],"f":0,"t":360,"d":[351],"a":1},{"px":[96,384],"src":[320,448],"f":0,"t":360,"d":[375],"a":1},{"px":[128,384],"src":[320,448],"f":0,"t":360,"d":[376],"a":1},{"px":[160,384],"src":[320,448],"f":0,"t":360,"d":[377],"a":1},{"px":[192,384],"src":[320,448],"f":0,"t":360,"d":[378],"a":1},{"px":[224,384],"src":[320,448],"f":0,"t":360,"d":[379],"a":1},{"px":[256,384],"src":[320,448],"f":0,"t":360,"d":[380],"a":1},{"px":[288,384],"src":[320,448],"f":0,"t":360,"d":[381],"a":1},{"px":[320,384],"src":[320,448],"f":0,"t":360,"d":[382],"a":1},{"px":[96,416],"src":[320,448],"f":0,"t":360,"d":[406],"a":1},{"px":[128,416],"src":[320,448],"f":0,"t":360,"d":[407],"a":1},{"px":[160,416],"src":[320,448],"f":0,"t":360,"d":[408],"a":1},{"px":[192,416],"src":[320,448],"f":0,"t":360,"d":[409],"a":1},{"px":[224,416],"src":[320,448],"f":0,"t":360,"d":[410],"a":1},{"px":[256,416],"src":[320,448],"f":0,"t":360,"d":[411],"a":1},{"px":[288,416],"src":[320,448],"f":0,"t":360,"d":[412],"a":1},{"px":[320,416],"src":[320,448],"f":0,"t":360,"d":[413],"a":1},{"px":[96,448],"src":[320,448],"f":0,"t":360,"d":[437],"a":1},{"px":[128,448],"src":[320,448],"f":0,"t":360,"d":[438],"a":1},{"px":[160,448],"src":[320,448],"f":0,"t":360,"d":[439],"a":1},{"px":[192,448],"src":[320,448],"f":0,"t":360,"d":[440],"a":1},{"px":[224,448],"src":[320,448],"f":0,"t":360,"d":[441],"a":1},{"px":[256,448],"src":[320,448],"f":0,"t":360,"d":[442],"a":1},{"px":[288,448],"src":[320,448],"f":0,"t":360,"d":[443],"a":1},{"px":[320,448],"src":[320,448],"f":0,"t":360,"d":[444],"a":1}],"entityInstances":[]},{"__identifier":"outdoorfloor","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":24,"__tilesetRelPath":"tilesets/WA_Exterior.png","iid":"d7e2a384-d7b0-11ee-bac6-bf8b4ea8cb04","levelId":28,"layerDefUid":23,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":9274126,"overrideTilesetUid":null,"gridTiles":[{"px":[384,64],"src":[96,800],"f":0,"t":628,"d":[74],"a":1},{"px":[384,64],"src":[96,352],"f":0,"t":278,"d":[74],"a":1},{"px":[416,64],"src":[128,800],"f":0,"t":629,"d":[75],"a":1},{"px":[416,64],"src":[128,352],"f":0,"t":279,"d":[75],"a":1},{"px":[448,64],"src":[128,800],"f":0,"t":629,"d":[76],"a":1},{"px":[480,64],"src":[96,800],"f":0,"t":628,"d":[77],"a":1},{"px":[512,64],"src":[96,800],"f":0,"t":628,"d":[78],"a":1},{"px":[544,64],"src":[96,800],"f":0,"t":628,"d":[79],"a":1},{"px":[576,64],"src":[96,800],"f":0,"t":628,"d":[80],"a":1},{"px":[608,64],"src":[128,800],"f":0,"t":629,"d":[81],"a":1},{"px":[640,64],"src":[128,800],"f":0,"t":629,"d":[82],"a":1},{"px":[640,64],"src":[0,640],"f":0,"t":500,"d":[82],"a":1},{"px":[672,64],"src":[128,800],"f":0,"t":629,"d":[83],"a":1},{"px":[672,64],"src":[32,640],"f":0,"t":501,"d":[83],"a":1},{"px":[704,64],"src":[128,800],"f":0,"t":629,"d":[84],"a":1},{"px":[704,64],"src":[64,640],"f":0,"t":502,"d":[84],"a":1},{"px":[736,64],"src":[128,800],"f":0,"t":629,"d":[85],"a":1},{"px":[768,64],"src":[96,800],"f":0,"t":628,"d":[86],"a":1},{"px":[800,64],"src":[96,800],"f":0,"t":628,"d":[87],"a":1},{"px":[832,64],"src":[128,800],"f":0,"t":629,"d":[88],"a":1},{"px":[864,64],"src":[96,800],"f":0,"t":628,"d":[89],"a":1},{"px":[896,64],"src":[96,800],"f":0,"t":628,"d":[90],"a":1},{"px":[384,96],"src":[96,800],"f":0,"t":628,"d":[105],"a":1},{"px":[384,96],"src":[0,608],"f":0,"t":475,"d":[105],"a":1},{"px":[384,96],"src":[96,384],"f":0,"t":303,"d":[105],"a":1},{"px":[416,96],"src":[128,800],"f":0,"t":629,"d":[106],"a":1},{"px":[416,96],"src":[0,640],"f":0,"t":500,"d":[106],"a":1},{"px":[416,96],"src":[32,608],"f":0,"t":476,"d":[106],"a":1},{"px":[416,96],"src":[128,384],"f":0,"t":304,"d":[106],"a":1},{"px":[448,96],"src":[128,800],"f":0,"t":629,"d":[107],"a":1},{"px":[448,96],"src":[32,640],"f":0,"t":501,"d":[107],"a":1},{"px":[480,96],"src":[96,800],"f":0,"t":628,"d":[108],"a":1},{"px":[480,96],"src":[64,640],"f":0,"t":502,"d":[108],"a":1},{"px":[480,96],"src":[288,416],"f":0,"t":334,"d":[108],"a":1},{"px":[512,96],"src":[96,800],"f":0,"t":628,"d":[109],"a":1},{"px":[512,96],"src":[320,416],"f":0,"t":335,"d":[109],"a":1},{"px":[544,96],"src":[128,800],"f":0,"t":629,"d":[110],"a":1},{"px":[576,96],"src":[128,800],"f":0,"t":629,"d":[111],"a":1},{"px":[608,96],"src":[128,800],"f":0,"t":629,"d":[112],"a":1},{"px":[608,96],"src":[288,416],"f":0,"t":334,"d":[112],"a":1},{"px":[640,96],"src":[128,800],"f":0,"t":629,"d":[113],"a":1},{"px":[640,96],"src":[0,672],"f":0,"t":525,"d":[113],"a":1},{"px":[640,96],"src":[320,416],"f":0,"t":335,"d":[113],"a":1},{"px":[672,96],"src":[96,800],"f":0,"t":628,"d":[114],"a":1},{"px":[672,96],"src":[32,672],"f":0,"t":526,"d":[114],"a":1},{"px":[672,96],"src":[192,672],"f":0,"t":531,"d":[114],"a":1},{"px":[704,96],"src":[128,800],"f":0,"t":629,"d":[115],"a":1},{"px":[704,96],"src":[64,672],"f":0,"t":527,"d":[115],"a":1},{"px":[704,96],"src":[224,672],"f":0,"t":532,"d":[115],"a":1},{"px":[704,96],"src":[96,352],"f":0,"t":278,"d":[115],"a":1},{"px":[736,96],"src":[96,800],"f":0,"t":628,"d":[116],"a":1},{"px":[736,96],"src":[128,352],"f":0,"t":279,"d":[116],"a":1},{"px":[768,96],"src":[96,800],"f":0,"t":628,"d":[117],"a":1},{"px":[800,96],"src":[128,800],"f":0,"t":629,"d":[118],"a":1},{"px":[832,96],"src":[128,800],"f":0,"t":629,"d":[119],"a":1},{"px":[832,96],"src":[288,96],"f":0,"t":84,"d":[119],"a":1},{"px":[864,96],"src":[128,800],"f":0,"t":629,"d":[120],"a":1},{"px":[864,96],"src":[32,768],"f":0,"t":601,"d":[120],"a":1},{"px":[864,96],"src":[320,96],"f":0,"t":85,"d":[120],"a":1},{"px":[896,96],"src":[128,800],"f":0,"t":629,"d":[121],"a":1},{"px":[896,96],"src":[352,96],"f":0,"t":86,"d":[121],"a":1},{"px":[384,128],"src":[128,800],"f":0,"t":629,"d":[136],"a":1},{"px":[384,128],"src":[0,640],"f":0,"t":500,"d":[136],"a":1},{"px":[384,128],"src":[96,416],"f":0,"t":328,"d":[136],"a":1},{"px":[416,128],"src":[96,800],"f":0,"t":628,"d":[137],"a":1},{"px":[416,128],"src":[32,640],"f":0,"t":501,"d":[137],"a":1},{"px":[416,128],"src":[0,672],"f":0,"t":525,"d":[137],"a":1},{"px":[416,128],"src":[128,416],"f":0,"t":329,"d":[137],"a":1},{"px":[448,128],"src":[128,800],"f":0,"t":629,"d":[138],"a":1},{"px":[448,128],"src":[64,640],"f":0,"t":502,"d":[138],"a":1},{"px":[448,128],"src":[32,672],"f":0,"t":526,"d":[138],"a":1},{"px":[480,128],"src":[96,800],"f":0,"t":628,"d":[139],"a":1},{"px":[480,128],"src":[96,640],"f":0,"t":503,"d":[139],"a":1},{"px":[480,128],"src":[64,672],"f":0,"t":527,"d":[139],"a":1},{"px":[480,128],"src":[288,448],"f":0,"t":359,"d":[139],"a":1},{"px":[512,128],"src":[128,800],"f":0,"t":629,"d":[140],"a":1},{"px":[512,128],"src":[128,640],"f":0,"t":504,"d":[140],"a":1},{"px":[512,128],"src":[320,448],"f":0,"t":360,"d":[140],"a":1},{"px":[544,128],"src":[128,800],"f":0,"t":629,"d":[141],"a":1},{"px":[544,128],"src":[160,640],"f":0,"t":505,"d":[141],"a":1},{"px":[576,128],"src":[96,800],"f":0,"t":628,"d":[142],"a":1},{"px":[608,128],"src":[128,800],"f":0,"t":629,"d":[143],"a":1},{"px":[608,128],"src":[288,448],"f":0,"t":359,"d":[143],"a":1},{"px":[640,128],"src":[96,800],"f":0,"t":628,"d":[144],"a":1},{"px":[640,128],"src":[0,704],"f":0,"t":550,"d":[144],"a":1},{"px":[640,128],"src":[320,448],"f":0,"t":360,"d":[144],"a":1},{"px":[672,128],"src":[96,800],"f":0,"t":628,"d":[145],"a":1},{"px":[672,128],"src":[32,704],"f":0,"t":551,"d":[145],"a":1},{"px":[672,128],"src":[192,704],"f":0,"t":556,"d":[145],"a":1},{"px":[704,128],"src":[96,800],"f":0,"t":628,"d":[146],"a":1},{"px":[704,128],"src":[64,704],"f":0,"t":552,"d":[146],"a":1},{"px":[704,128],"src":[224,704],"f":0,"t":557,"d":[146],"a":1},{"px":[704,128],"src":[96,384],"f":0,"t":303,"d":[146],"a":1},{"px":[736,128],"src":[128,800],"f":0,"t":629,"d":[147],"a":1},{"px":[736,128],"src":[128,384],"f":0,"t":304,"d":[147],"a":1},{"px":[768,128],"src":[96,800],"f":0,"t":628,"d":[148],"a":1},{"px":[800,128],"src":[96,800],"f":0,"t":628,"d":[149],"a":1},{"px":[832,128],"src":[128,800],"f":0,"t":629,"d":[150],"a":1},{"px":[832,128],"src":[288,128],"f":0,"t":109,"d":[150],"a":1},{"px":[864,128],"src":[320,128],"f":0,"t":110,"d":[151],"a":1},{"px":[896,128],"src":[128,800],"f":0,"t":629,"d":[152],"a":1},{"px":[896,128],"src":[352,128],"f":0,"t":111,"d":[152],"a":1},{"px":[384,160],"src":[96,800],"f":0,"t":628,"d":[167],"a":1},{"px":[384,160],"src":[0,672],"f":0,"t":525,"d":[167],"a":1},{"px":[416,160],"src":[128,800],"f":0,"t":629,"d":[168],"a":1},{"px":[416,160],"src":[32,672],"f":0,"t":526,"d":[168],"a":1},{"px":[416,160],"src":[0,704],"f":0,"t":550,"d":[168],"a":1},{"px":[416,160],"src":[288,96],"f":0,"t":84,"d":[168],"a":1},{"px":[448,160],"src":[128,800],"f":0,"t":629,"d":[169],"a":1},{"px":[448,160],"src":[64,672],"f":0,"t":527,"d":[169],"a":1},{"px":[448,160],"src":[32,704],"f":0,"t":551,"d":[169],"a":1},{"px":[448,160],"src":[320,96],"f":0,"t":85,"d":[169],"a":1},{"px":[480,160],"src":[96,800],"f":0,"t":628,"d":[170],"a":1},{"px":[480,160],"src":[96,672],"f":0,"t":528,"d":[170],"a":1},{"px":[480,160],"src":[64,704],"f":0,"t":552,"d":[170],"a":1},{"px":[480,160],"src":[352,96],"f":0,"t":86,"d":[170],"a":1},{"px":[512,160],"src":[96,800],"f":0,"t":628,"d":[171],"a":1},{"px":[512,160],"src":[128,672],"f":0,"t":529,"d":[171],"a":1},{"px":[544,160],"src":[96,800],"f":0,"t":628,"d":[172],"a":1},{"px":[544,160],"src":[160,672],"f":0,"t":530,"d":[172],"a":1},{"px":[576,160],"src":[96,800],"f":0,"t":628,"d":[173],"a":1},{"px":[576,160],"src":[288,96],"f":0,"t":84,"d":[173],"a":1},{"px":[608,160],"src":[128,800],"f":0,"t":629,"d":[174],"a":1},{"px":[608,160],"src":[320,96],"f":0,"t":85,"d":[174],"a":1},{"px":[640,160],"src":[128,800],"f":0,"t":629,"d":[175],"a":1},{"px":[640,160],"src":[352,96],"f":0,"t":86,"d":[175],"a":1},{"px":[672,160],"src":[96,800],"f":0,"t":628,"d":[176],"a":1},{"px":[672,160],"src":[0,640],"f":0,"t":500,"d":[176],"a":1},{"px":[704,160],"src":[96,800],"f":0,"t":628,"d":[177],"a":1},{"px":[704,160],"src":[32,640],"f":0,"t":501,"d":[177],"a":1},{"px":[704,160],"src":[96,416],"f":0,"t":328,"d":[177],"a":1},{"px":[736,160],"src":[128,800],"f":0,"t":629,"d":[178],"a":1},{"px":[736,160],"src":[64,640],"f":0,"t":502,"d":[178],"a":1},{"px":[736,160],"src":[128,416],"f":0,"t":329,"d":[178],"a":1},{"px":[768,160],"src":[128,800],"f":0,"t":629,"d":[179],"a":1},{"px":[768,160],"src":[96,640],"f":0,"t":503,"d":[179],"a":1},{"px":[800,160],"src":[128,800],"f":0,"t":629,"d":[180],"a":1},{"px":[800,160],"src":[128,640],"f":0,"t":504,"d":[180],"a":1},{"px":[832,160],"src":[96,800],"f":0,"t":628,"d":[181],"a":1},{"px":[832,160],"src":[160,640],"f":0,"t":505,"d":[181],"a":1},{"px":[832,160],"src":[288,160],"f":0,"t":134,"d":[181],"a":1},{"px":[864,160],"src":[96,800],"f":0,"t":628,"d":[182],"a":1},{"px":[864,160],"src":[320,160],"f":0,"t":135,"d":[182],"a":1},{"px":[896,160],"src":[96,800],"f":0,"t":628,"d":[183],"a":1},{"px":[896,160],"src":[352,160],"f":0,"t":136,"d":[183],"a":1},{"px":[384,192],"src":[128,800],"f":0,"t":629,"d":[198],"a":1},{"px":[384,192],"src":[0,704],"f":0,"t":550,"d":[198],"a":1},{"px":[416,192],"src":[128,800],"f":0,"t":629,"d":[199],"a":1},{"px":[416,192],"src":[32,704],"f":0,"t":551,"d":[199],"a":1},{"px":[416,192],"src":[288,128],"f":0,"t":109,"d":[199],"a":1},{"px":[448,192],"src":[320,128],"f":0,"t":110,"d":[200],"a":1},{"px":[480,192],"src":[128,800],"f":0,"t":629,"d":[201],"a":1},{"px":[480,192],"src":[96,704],"f":0,"t":553,"d":[201],"a":1},{"px":[480,192],"src":[352,128],"f":0,"t":111,"d":[201],"a":1},{"px":[512,192],"src":[128,800],"f":0,"t":629,"d":[202],"a":1},{"px":[512,192],"src":[128,704],"f":0,"t":554,"d":[202],"a":1},{"px":[512,192],"src":[96,352],"f":0,"t":278,"d":[202],"a":1},{"px":[544,192],"src":[96,800],"f":0,"t":628,"d":[203],"a":1},{"px":[544,192],"src":[160,704],"f":0,"t":555,"d":[203],"a":1},{"px":[544,192],"src":[128,352],"f":0,"t":279,"d":[203],"a":1},{"px":[576,192],"src":[96,800],"f":0,"t":628,"d":[204],"a":1},{"px":[576,192],"src":[288,128],"f":0,"t":109,"d":[204],"a":1},{"px":[608,192],"src":[320,128],"f":0,"t":110,"d":[205],"a":1},{"px":[640,192],"src":[128,800],"f":0,"t":629,"d":[206],"a":1},{"px":[640,192],"src":[352,128],"f":0,"t":111,"d":[206],"a":1},{"px":[672,192],"src":[128,800],"f":0,"t":629,"d":[207],"a":1},{"px":[672,192],"src":[0,672],"f":0,"t":525,"d":[207],"a":1},{"px":[704,192],"src":[128,800],"f":0,"t":629,"d":[208],"a":1},{"px":[704,192],"src":[32,672],"f":0,"t":526,"d":[208],"a":1},{"px":[736,192],"src":[96,800],"f":0,"t":628,"d":[209],"a":1},{"px":[736,192],"src":[64,672],"f":0,"t":527,"d":[209],"a":1},{"px":[736,192],"src":[32,768],"f":0,"t":601,"d":[209],"a":1},{"px":[736,192],"src":[288,416],"f":0,"t":334,"d":[209],"a":1},{"px":[768,192],"src":[96,800],"f":0,"t":628,"d":[210],"a":1},{"px":[768,192],"src":[96,672],"f":0,"t":528,"d":[210],"a":1},{"px":[768,192],"src":[320,416],"f":0,"t":335,"d":[210],"a":1},{"px":[800,192],"src":[96,800],"f":0,"t":628,"d":[211],"a":1},{"px":[800,192],"src":[128,672],"f":0,"t":529,"d":[211],"a":1},{"px":[800,192],"src":[32,768],"f":0,"t":601,"d":[211],"a":1},{"px":[832,192],"src":[128,800],"f":0,"t":629,"d":[212],"a":1},{"px":[832,192],"src":[160,672],"f":0,"t":530,"d":[212],"a":1},{"px":[864,192],"src":[96,800],"f":0,"t":628,"d":[213],"a":1},{"px":[896,192],"src":[96,800],"f":0,"t":628,"d":[214],"a":1},{"px":[384,224],"src":[128,800],"f":0,"t":629,"d":[229],"a":1},{"px":[416,224],"src":[128,800],"f":0,"t":629,"d":[230],"a":1},{"px":[416,224],"src":[288,160],"f":0,"t":134,"d":[230],"a":1},{"px":[448,224],"src":[96,800],"f":0,"t":628,"d":[231],"a":1},{"px":[448,224],"src":[0,608],"f":0,"t":475,"d":[231],"a":1},{"px":[448,224],"src":[320,160],"f":0,"t":135,"d":[231],"a":1},{"px":[480,224],"src":[128,800],"f":0,"t":629,"d":[232],"a":1},{"px":[480,224],"src":[0,640],"f":0,"t":500,"d":[232],"a":1},{"px":[480,224],"src":[192,672],"f":0,"t":531,"d":[232],"a":1},{"px":[480,224],"src":[32,608],"f":0,"t":476,"d":[232],"a":1},{"px":[480,224],"src":[352,160],"f":0,"t":136,"d":[232],"a":1},{"px":[512,224],"src":[96,800],"f":0,"t":628,"d":[233],"a":1},{"px":[512,224],"src":[32,640],"f":0,"t":501,"d":[233],"a":1},{"px":[512,224],"src":[224,672],"f":0,"t":532,"d":[233],"a":1},{"px":[512,224],"src":[96,384],"f":0,"t":303,"d":[233],"a":1},{"px":[544,224],"src":[128,800],"f":0,"t":629,"d":[234],"a":1},{"px":[544,224],"src":[64,640],"f":0,"t":502,"d":[234],"a":1},{"px":[544,224],"src":[128,384],"f":0,"t":304,"d":[234],"a":1},{"px":[576,224],"src":[96,800],"f":0,"t":628,"d":[235],"a":1},{"px":[576,224],"src":[288,160],"f":0,"t":134,"d":[235],"a":1},{"px":[608,224],"src":[128,800],"f":0,"t":629,"d":[236],"a":1},{"px":[608,224],"src":[32,768],"f":0,"t":601,"d":[236],"a":1},{"px":[608,224],"src":[320,160],"f":0,"t":135,"d":[236],"a":1},{"px":[640,224],"src":[128,800],"f":0,"t":629,"d":[237],"a":1},{"px":[640,224],"src":[288,416],"f":0,"t":334,"d":[237],"a":1},{"px":[640,224],"src":[352,160],"f":0,"t":136,"d":[237],"a":1},{"px":[672,224],"src":[96,800],"f":0,"t":628,"d":[238],"a":1},{"px":[672,224],"src":[0,704],"f":0,"t":550,"d":[238],"a":1},{"px":[672,224],"src":[320,416],"f":0,"t":335,"d":[238],"a":1},{"px":[704,224],"src":[128,800],"f":0,"t":629,"d":[239],"a":1},{"px":[704,224],"src":[32,704],"f":0,"t":551,"d":[239],"a":1},{"px":[736,224],"src":[128,800],"f":0,"t":629,"d":[240],"a":1},{"px":[736,224],"src":[64,704],"f":0,"t":552,"d":[240],"a":1},{"px":[736,224],"src":[288,448],"f":0,"t":359,"d":[240],"a":1},{"px":[768,224],"src":[96,800],"f":0,"t":628,"d":[241],"a":1},{"px":[768,224],"src":[96,704],"f":0,"t":553,"d":[241],"a":1},{"px":[768,224],"src":[320,448],"f":0,"t":360,"d":[241],"a":1},{"px":[800,224],"src":[128,800],"f":0,"t":629,"d":[242],"a":1},{"px":[800,224],"src":[128,704],"f":0,"t":554,"d":[242],"a":1},{"px":[832,224],"src":[96,800],"f":0,"t":628,"d":[243],"a":1},{"px":[832,224],"src":[160,704],"f":0,"t":555,"d":[243],"a":1},{"px":[864,224],"src":[96,800],"f":0,"t":628,"d":[244],"a":1},{"px":[896,224],"src":[96,800],"f":0,"t":628,"d":[245],"a":1},{"px":[384,256],"src":[96,800],"f":0,"t":628,"d":[260],"a":1},{"px":[416,256],"src":[96,800],"f":0,"t":628,"d":[261],"a":1},{"px":[448,256],"src":[96,800],"f":0,"t":628,"d":[262],"a":1},{"px":[480,256],"src":[128,800],"f":0,"t":629,"d":[263],"a":1},{"px":[480,256],"src":[0,672],"f":0,"t":525,"d":[263],"a":1},{"px":[480,256],"src":[192,704],"f":0,"t":556,"d":[263],"a":1},{"px":[512,256],"src":[128,800],"f":0,"t":629,"d":[264],"a":1},{"px":[512,256],"src":[32,672],"f":0,"t":526,"d":[264],"a":1},{"px":[512,256],"src":[224,704],"f":0,"t":557,"d":[264],"a":1},{"px":[512,256],"src":[96,416],"f":0,"t":328,"d":[264],"a":1},{"px":[544,256],"src":[96,800],"f":0,"t":628,"d":[265],"a":1},{"px":[544,256],"src":[64,672],"f":0,"t":527,"d":[265],"a":1},{"px":[544,256],"src":[128,416],"f":0,"t":329,"d":[265],"a":1},{"px":[576,256],"src":[128,800],"f":0,"t":629,"d":[266],"a":1},{"px":[608,256],"src":[128,800],"f":0,"t":629,"d":[267],"a":1},{"px":[640,256],"src":[96,800],"f":0,"t":628,"d":[268],"a":1},{"px":[640,256],"src":[288,448],"f":0,"t":359,"d":[268],"a":1},{"px":[672,256],"src":[96,800],"f":0,"t":628,"d":[269],"a":1},{"px":[672,256],"src":[320,448],"f":0,"t":360,"d":[269],"a":1},{"px":[704,256],"src":[128,800],"f":0,"t":629,"d":[270],"a":1},{"px":[736,256],"src":[128,800],"f":0,"t":629,"d":[271],"a":1},{"px":[768,256],"src":[96,800],"f":0,"t":628,"d":[272],"a":1},{"px":[800,256],"src":[128,800],"f":0,"t":629,"d":[273],"a":1},{"px":[832,256],"src":[128,800],"f":0,"t":629,"d":[274],"a":1},{"px":[832,256],"src":[288,96],"f":0,"t":84,"d":[274],"a":1},{"px":[864,256],"src":[128,800],"f":0,"t":629,"d":[275],"a":1},{"px":[864,256],"src":[320,96],"f":0,"t":85,"d":[275],"a":1},{"px":[896,256],"src":[96,800],"f":0,"t":628,"d":[276],"a":1},{"px":[896,256],"src":[352,96],"f":0,"t":86,"d":[276],"a":1},{"px":[384,288],"src":[96,800],"f":0,"t":628,"d":[291],"a":1},{"px":[416,288],"src":[96,800],"f":0,"t":628,"d":[292],"a":1},{"px":[448,288],"src":[128,800],"f":0,"t":629,"d":[293],"a":1},{"px":[480,288],"src":[128,800],"f":0,"t":629,"d":[294],"a":1},{"px":[480,288],"src":[0,704],"f":0,"t":550,"d":[294],"a":1},{"px":[512,288],"src":[128,800],"f":0,"t":629,"d":[295],"a":1},{"px":[512,288],"src":[32,704],"f":0,"t":551,"d":[295],"a":1},{"px":[544,288],"src":[128,800],"f":0,"t":629,"d":[296],"a":1},{"px":[544,288],"src":[64,704],"f":0,"t":552,"d":[296],"a":1},{"px":[544,288],"src":[288,416],"f":0,"t":334,"d":[296],"a":1},{"px":[576,288],"src":[128,800],"f":0,"t":629,"d":[297],"a":1},{"px":[576,288],"src":[320,416],"f":0,"t":335,"d":[297],"a":1},{"px":[608,288],"src":[128,800],"f":0,"t":629,"d":[298],"a":1},{"px":[640,288],"src":[96,800],"f":0,"t":628,"d":[299],"a":1},{"px":[640,288],"src":[96,640],"f":0,"t":503,"d":[299],"a":1},{"px":[672,288],"src":[128,800],"f":0,"t":629,"d":[300],"a":1},{"px":[672,288],"src":[128,640],"f":0,"t":504,"d":[300],"a":1},{"px":[704,288],"src":[96,800],"f":0,"t":628,"d":[301],"a":1},{"px":[704,288],"src":[160,640],"f":0,"t":505,"d":[301],"a":1},{"px":[736,288],"src":[128,800],"f":0,"t":629,"d":[302],"a":1},{"px":[768,288],"src":[128,800],"f":0,"t":629,"d":[303],"a":1},{"px":[768,288],"src":[288,416],"f":0,"t":334,"d":[303],"a":1},{"px":[800,288],"src":[96,800],"f":0,"t":628,"d":[304],"a":1},{"px":[800,288],"src":[320,416],"f":0,"t":335,"d":[304],"a":1},{"px":[832,288],"src":[128,800],"f":0,"t":629,"d":[305],"a":1},{"px":[832,288],"src":[288,128],"f":0,"t":109,"d":[305],"a":1},{"px":[864,288],"src":[320,128],"f":0,"t":110,"d":[306],"a":1},{"px":[896,288],"src":[128,800],"f":0,"t":629,"d":[307],"a":1},{"px":[896,288],"src":[352,128],"f":0,"t":111,"d":[307],"a":1},{"px":[384,320],"src":[96,800],"f":0,"t":628,"d":[322],"a":1},{"px":[416,320],"src":[128,800],"f":0,"t":629,"d":[323],"a":1},{"px":[416,320],"src":[288,96],"f":0,"t":84,"d":[323],"a":1},{"px":[448,320],"src":[96,800],"f":0,"t":628,"d":[324],"a":1},{"px":[448,320],"src":[96,640],"f":0,"t":503,"d":[324],"a":1},{"px":[448,320],"src":[320,96],"f":0,"t":85,"d":[324],"a":1},{"px":[480,320],"src":[128,800],"f":0,"t":629,"d":[325],"a":1},{"px":[480,320],"src":[128,640],"f":0,"t":504,"d":[325],"a":1},{"px":[480,320],"src":[352,96],"f":0,"t":86,"d":[325],"a":1},{"px":[512,320],"src":[96,800],"f":0,"t":628,"d":[326],"a":1},{"px":[512,320],"src":[160,640],"f":0,"t":505,"d":[326],"a":1},{"px":[544,320],"src":[128,800],"f":0,"t":629,"d":[327],"a":1},{"px":[544,320],"src":[288,448],"f":0,"t":359,"d":[327],"a":1},{"px":[576,320],"src":[128,800],"f":0,"t":629,"d":[328],"a":1},{"px":[576,320],"src":[320,448],"f":0,"t":360,"d":[328],"a":1},{"px":[608,320],"src":[128,800],"f":0,"t":629,"d":[329],"a":1},{"px":[640,320],"src":[96,800],"f":0,"t":628,"d":[330],"a":1},{"px":[640,320],"src":[96,672],"f":0,"t":528,"d":[330],"a":1},{"px":[640,320],"src":[192,672],"f":0,"t":531,"d":[330],"a":1},{"px":[672,320],"src":[128,800],"f":0,"t":629,"d":[331],"a":1},{"px":[672,320],"src":[128,672],"f":0,"t":529,"d":[331],"a":1},{"px":[672,320],"src":[224,672],"f":0,"t":532,"d":[331],"a":1},{"px":[704,320],"src":[96,800],"f":0,"t":628,"d":[332],"a":1},{"px":[704,320],"src":[96,640],"f":0,"t":503,"d":[332],"a":1},{"px":[704,320],"src":[160,672],"f":0,"t":530,"d":[332],"a":1},{"px":[736,320],"src":[96,800],"f":0,"t":628,"d":[333],"a":1},{"px":[736,320],"src":[128,640],"f":0,"t":504,"d":[333],"a":1},{"px":[736,320],"src":[0,608],"f":0,"t":475,"d":[333],"a":1},{"px":[768,320],"src":[96,800],"f":0,"t":628,"d":[334],"a":1},{"px":[768,320],"src":[160,640],"f":0,"t":505,"d":[334],"a":1},{"px":[768,320],"src":[32,608],"f":0,"t":476,"d":[334],"a":1},{"px":[768,320],"src":[288,448],"f":0,"t":359,"d":[334],"a":1},{"px":[800,320],"src":[96,800],"f":0,"t":628,"d":[335],"a":1},{"px":[800,320],"src":[320,448],"f":0,"t":360,"d":[335],"a":1},{"px":[832,320],"src":[128,800],"f":0,"t":629,"d":[336],"a":1},{"px":[832,320],"src":[288,160],"f":0,"t":134,"d":[336],"a":1},{"px":[864,320],"src":[128,800],"f":0,"t":629,"d":[337],"a":1},{"px":[864,320],"src":[320,160],"f":0,"t":135,"d":[337],"a":1},{"px":[896,320],"src":[128,800],"f":0,"t":629,"d":[338],"a":1},{"px":[896,320],"src":[352,160],"f":0,"t":136,"d":[338],"a":1},{"px":[384,352],"src":[96,800],"f":0,"t":628,"d":[353],"a":1},{"px":[416,352],"src":[96,800],"f":0,"t":628,"d":[354],"a":1},{"px":[416,352],"src":[288,128],"f":0,"t":109,"d":[354],"a":1},{"px":[448,352],"src":[320,128],"f":0,"t":110,"d":[355],"a":1},{"px":[480,352],"src":[96,800],"f":0,"t":628,"d":[356],"a":1},{"px":[480,352],"src":[128,672],"f":0,"t":529,"d":[356],"a":1},{"px":[480,352],"src":[352,128],"f":0,"t":111,"d":[356],"a":1},{"px":[512,352],"src":[128,800],"f":0,"t":629,"d":[357],"a":1},{"px":[512,352],"src":[160,672],"f":0,"t":530,"d":[357],"a":1},{"px":[544,352],"src":[96,800],"f":0,"t":628,"d":[358],"a":1},{"px":[576,352],"src":[128,800],"f":0,"t":629,"d":[359],"a":1},{"px":[576,352],"src":[288,416],"f":0,"t":334,"d":[359],"a":1},{"px":[608,352],"src":[128,800],"f":0,"t":629,"d":[360],"a":1},{"px":[608,352],"src":[320,416],"f":0,"t":335,"d":[360],"a":1},{"px":[640,352],"src":[96,800],"f":0,"t":628,"d":[361],"a":1},{"px":[640,352],"src":[96,704],"f":0,"t":553,"d":[361],"a":1},{"px":[640,352],"src":[192,704],"f":0,"t":556,"d":[361],"a":1},{"px":[672,352],"src":[96,800],"f":0,"t":628,"d":[362],"a":1},{"px":[672,352],"src":[128,704],"f":0,"t":554,"d":[362],"a":1},{"px":[672,352],"src":[224,704],"f":0,"t":557,"d":[362],"a":1},{"px":[672,352],"src":[288,96],"f":0,"t":84,"d":[362],"a":1},{"px":[704,352],"src":[96,800],"f":0,"t":628,"d":[363],"a":1},{"px":[704,352],"src":[96,672],"f":0,"t":528,"d":[363],"a":1},{"px":[704,352],"src":[160,704],"f":0,"t":555,"d":[363],"a":1},{"px":[704,352],"src":[320,96],"f":0,"t":85,"d":[363],"a":1},{"px":[736,352],"src":[96,800],"f":0,"t":628,"d":[364],"a":1},{"px":[736,352],"src":[128,672],"f":0,"t":529,"d":[364],"a":1},{"px":[736,352],"src":[32,768],"f":0,"t":601,"d":[364],"a":1},{"px":[736,352],"src":[352,96],"f":0,"t":86,"d":[364],"a":1},{"px":[768,352],"src":[128,800],"f":0,"t":629,"d":[365],"a":1},{"px":[768,352],"src":[160,672],"f":0,"t":530,"d":[365],"a":1},{"px":[800,352],"src":[128,800],"f":0,"t":629,"d":[366],"a":1},{"px":[832,352],"src":[128,800],"f":0,"t":629,"d":[367],"a":1},{"px":[864,352],"src":[96,800],"f":0,"t":628,"d":[368],"a":1},{"px":[896,352],"src":[128,800],"f":0,"t":629,"d":[369],"a":1},{"px":[384,384],"src":[128,800],"f":0,"t":629,"d":[384],"a":1},{"px":[416,384],"src":[128,800],"f":0,"t":629,"d":[385],"a":1},{"px":[416,384],"src":[288,160],"f":0,"t":134,"d":[385],"a":1},{"px":[448,384],"src":[128,800],"f":0,"t":629,"d":[386],"a":1},{"px":[448,384],"src":[96,704],"f":0,"t":553,"d":[386],"a":1},{"px":[448,384],"src":[0,640],"f":0,"t":500,"d":[386],"a":1},{"px":[448,384],"src":[320,160],"f":0,"t":135,"d":[386],"a":1},{"px":[480,384],"src":[128,800],"f":0,"t":629,"d":[387],"a":1},{"px":[480,384],"src":[128,704],"f":0,"t":554,"d":[387],"a":1},{"px":[480,384],"src":[32,640],"f":0,"t":501,"d":[387],"a":1},{"px":[480,384],"src":[352,160],"f":0,"t":136,"d":[387],"a":1},{"px":[512,384],"src":[128,800],"f":0,"t":629,"d":[388],"a":1},{"px":[512,384],"src":[160,704],"f":0,"t":555,"d":[388],"a":1},{"px":[512,384],"src":[64,640],"f":0,"t":502,"d":[388],"a":1},{"px":[544,384],"src":[128,800],"f":0,"t":629,"d":[389],"a":1},{"px":[576,384],"src":[128,800],"f":0,"t":629,"d":[390],"a":1},{"px":[576,384],"src":[288,448],"f":0,"t":359,"d":[390],"a":1},{"px":[608,384],"src":[96,800],"f":0,"t":628,"d":[391],"a":1},{"px":[608,384],"src":[320,448],"f":0,"t":360,"d":[391],"a":1},{"px":[640,384],"src":[128,800],"f":0,"t":629,"d":[392],"a":1},{"px":[672,384],"src":[96,800],"f":0,"t":628,"d":[393],"a":1},{"px":[672,384],"src":[288,128],"f":0,"t":109,"d":[393],"a":1},{"px":[704,384],"src":[320,128],"f":0,"t":110,"d":[394],"a":1},{"px":[736,384],"src":[128,800],"f":0,"t":629,"d":[395],"a":1},{"px":[736,384],"src":[128,704],"f":0,"t":554,"d":[395],"a":1},{"px":[736,384],"src":[352,128],"f":0,"t":111,"d":[395],"a":1},{"px":[768,384],"src":[96,800],"f":0,"t":628,"d":[396],"a":1},{"px":[768,384],"src":[160,704],"f":0,"t":555,"d":[396],"a":1},{"px":[800,384],"src":[96,800],"f":0,"t":628,"d":[397],"a":1},{"px":[800,384],"src":[0,640],"f":0,"t":500,"d":[397],"a":1},{"px":[832,384],"src":[96,800],"f":0,"t":628,"d":[398],"a":1},{"px":[832,384],"src":[32,640],"f":0,"t":501,"d":[398],"a":1},{"px":[864,384],"src":[128,800],"f":0,"t":629,"d":[399],"a":1},{"px":[864,384],"src":[64,640],"f":0,"t":502,"d":[399],"a":1},{"px":[896,384],"src":[96,800],"f":0,"t":628,"d":[400],"a":1},{"px":[384,416],"src":[96,800],"f":0,"t":628,"d":[415],"a":1},{"px":[384,416],"src":[0,640],"f":0,"t":500,"d":[415],"a":1},{"px":[416,416],"src":[96,800],"f":0,"t":628,"d":[416],"a":1},{"px":[416,416],"src":[0,640],"f":0,"t":500,"d":[416],"a":1},{"px":[416,416],"src":[32,640],"f":0,"t":501,"d":[416],"a":1},{"px":[448,416],"src":[96,800],"f":0,"t":628,"d":[417],"a":1},{"px":[448,416],"src":[32,640],"f":0,"t":501,"d":[417],"a":1},{"px":[448,416],"src":[64,640],"f":0,"t":502,"d":[417],"a":1},{"px":[448,416],"src":[0,672],"f":0,"t":525,"d":[417],"a":1},{"px":[480,416],"src":[96,800],"f":0,"t":628,"d":[418],"a":1},{"px":[480,416],"src":[64,640],"f":0,"t":502,"d":[418],"a":1},{"px":[480,416],"src":[32,672],"f":0,"t":526,"d":[418],"a":1},{"px":[512,416],"src":[128,800],"f":0,"t":629,"d":[419],"a":1},{"px":[512,416],"src":[64,672],"f":0,"t":527,"d":[419],"a":1},{"px":[512,416],"src":[288,416],"f":0,"t":334,"d":[419],"a":1},{"px":[544,416],"src":[128,800],"f":0,"t":629,"d":[420],"a":1},{"px":[544,416],"src":[320,416],"f":0,"t":335,"d":[420],"a":1},{"px":[576,416],"src":[128,800],"f":0,"t":629,"d":[421],"a":1},{"px":[608,416],"src":[128,800],"f":0,"t":629,"d":[422],"a":1},{"px":[640,416],"src":[96,800],"f":0,"t":628,"d":[423],"a":1},{"px":[672,416],"src":[128,800],"f":0,"t":629,"d":[424],"a":1},{"px":[672,416],"src":[288,160],"f":0,"t":134,"d":[424],"a":1},{"px":[704,416],"src":[128,800],"f":0,"t":629,"d":[425],"a":1},{"px":[704,416],"src":[320,160],"f":0,"t":135,"d":[425],"a":1},{"px":[736,416],"src":[128,800],"f":0,"t":629,"d":[426],"a":1},{"px":[736,416],"src":[352,160],"f":0,"t":136,"d":[426],"a":1},{"px":[768,416],"src":[128,800],"f":0,"t":629,"d":[427],"a":1},{"px":[800,416],"src":[128,800],"f":0,"t":629,"d":[428],"a":1},{"px":[800,416],"src":[0,672],"f":0,"t":525,"d":[428],"a":1},{"px":[832,416],"src":[96,800],"f":0,"t":628,"d":[429],"a":1},{"px":[832,416],"src":[32,672],"f":0,"t":526,"d":[429],"a":1},{"px":[832,416],"src":[288,96],"f":0,"t":84,"d":[429],"a":1},{"px":[864,416],"src":[96,800],"f":0,"t":628,"d":[430],"a":1},{"px":[864,416],"src":[64,672],"f":0,"t":527,"d":[430],"a":1},{"px":[864,416],"src":[320,96],"f":0,"t":85,"d":[430],"a":1},{"px":[896,416],"src":[128,800],"f":0,"t":629,"d":[431],"a":1},{"px":[896,416],"src":[352,96],"f":0,"t":86,"d":[431],"a":1},{"px":[384,448],"src":[96,800],"f":0,"t":628,"d":[446],"a":1},{"px":[384,448],"src":[0,672],"f":0,"t":525,"d":[446],"a":1},{"px":[416,448],"src":[96,800],"f":0,"t":628,"d":[447],"a":1},{"px":[416,448],"src":[0,672],"f":0,"t":525,"d":[447],"a":1},{"px":[416,448],"src":[0,640],"f":0,"t":500,"d":[447],"a":1},{"px":[416,448],"src":[32,672],"f":0,"t":526,"d":[447],"a":1},{"px":[448,448],"src":[128,800],"f":0,"t":629,"d":[448],"a":1},{"px":[448,448],"src":[32,672],"f":0,"t":526,"d":[448],"a":1},{"px":[448,448],"src":[32,640],"f":0,"t":501,"d":[448],"a":1},{"px":[448,448],"src":[64,672],"f":0,"t":527,"d":[448],"a":1},{"px":[448,448],"src":[0,704],"f":0,"t":550,"d":[448],"a":1},{"px":[480,448],"src":[96,800],"f":0,"t":628,"d":[449],"a":1},{"px":[480,448],"src":[64,672],"f":0,"t":527,"d":[449],"a":1},{"px":[480,448],"src":[64,640],"f":0,"t":502,"d":[449],"a":1},{"px":[480,448],"src":[32,704],"f":0,"t":551,"d":[449],"a":1},{"px":[512,448],"src":[128,800],"f":0,"t":629,"d":[450],"a":1},{"px":[512,448],"src":[96,640],"f":0,"t":503,"d":[450],"a":1},{"px":[512,448],"src":[64,704],"f":0,"t":552,"d":[450],"a":1},{"px":[512,448],"src":[288,448],"f":0,"t":359,"d":[450],"a":1},{"px":[544,448],"src":[128,800],"f":0,"t":629,"d":[451],"a":1},{"px":[544,448],"src":[128,640],"f":0,"t":504,"d":[451],"a":1},{"px":[544,448],"src":[320,448],"f":0,"t":360,"d":[451],"a":1},{"px":[576,448],"src":[128,800],"f":0,"t":629,"d":[452],"a":1},{"px":[576,448],"src":[160,640],"f":0,"t":505,"d":[452],"a":1},{"px":[608,448],"src":[128,800],"f":0,"t":629,"d":[453],"a":1},{"px":[608,448],"src":[96,352],"f":0,"t":278,"d":[453],"a":1},{"px":[640,448],"src":[96,800],"f":0,"t":628,"d":[454],"a":1},{"px":[640,448],"src":[128,352],"f":0,"t":279,"d":[454],"a":1},{"px":[672,448],"src":[96,800],"f":0,"t":628,"d":[455],"a":1},{"px":[672,448],"src":[288,96],"f":0,"t":84,"d":[455],"a":1},{"px":[704,448],"src":[128,800],"f":0,"t":629,"d":[456],"a":1},{"px":[704,448],"src":[0,640],"f":0,"t":500,"d":[456],"a":1},{"px":[704,448],"src":[320,96],"f":0,"t":85,"d":[456],"a":1},{"px":[736,448],"src":[128,800],"f":0,"t":629,"d":[457],"a":1},{"px":[736,448],"src":[32,640],"f":0,"t":501,"d":[457],"a":1},{"px":[736,448],"src":[192,672],"f":0,"t":531,"d":[457],"a":1},{"px":[736,448],"src":[352,96],"f":0,"t":86,"d":[457],"a":1},{"px":[768,448],"src":[128,800],"f":0,"t":629,"d":[458],"a":1},{"px":[768,448],"src":[64,640],"f":0,"t":502,"d":[458],"a":1},{"px":[768,448],"src":[224,672],"f":0,"t":532,"d":[458],"a":1},{"px":[800,448],"src":[128,800],"f":0,"t":629,"d":[459],"a":1},{"px":[800,448],"src":[0,704],"f":0,"t":550,"d":[459],"a":1},{"px":[832,448],"src":[96,800],"f":0,"t":628,"d":[460],"a":1},{"px":[832,448],"src":[32,704],"f":0,"t":551,"d":[460],"a":1},{"px":[832,448],"src":[0,640],"f":0,"t":500,"d":[460],"a":1},{"px":[832,448],"src":[288,128],"f":0,"t":109,"d":[460],"a":1},{"px":[864,448],"src":[320,128],"f":0,"t":110,"d":[461],"a":1},{"px":[896,448],"src":[128,800],"f":0,"t":629,"d":[462],"a":1},{"px":[896,448],"src":[64,640],"f":0,"t":502,"d":[462],"a":1},{"px":[896,448],"src":[352,128],"f":0,"t":111,"d":[462],"a":1},{"px":[384,480],"src":[96,800],"f":0,"t":628,"d":[477],"a":1},{"px":[384,480],"src":[0,704],"f":0,"t":550,"d":[477],"a":1},{"px":[416,480],"src":[128,800],"f":0,"t":629,"d":[478],"a":1},{"px":[416,480],"src":[0,704],"f":0,"t":550,"d":[478],"a":1},{"px":[416,480],"src":[0,640],"f":0,"t":500,"d":[478],"a":1},{"px":[416,480],"src":[0,672],"f":0,"t":525,"d":[478],"a":1},{"px":[416,480],"src":[32,704],"f":0,"t":551,"d":[478],"a":1},{"px":[448,480],"src":[128,800],"f":0,"t":629,"d":[479],"a":1},{"px":[448,480],"src":[32,704],"f":0,"t":551,"d":[479],"a":1},{"px":[448,480],"src":[32,640],"f":0,"t":501,"d":[479],"a":1},{"px":[448,480],"src":[32,672],"f":0,"t":526,"d":[479],"a":1},{"px":[448,480],"src":[64,704],"f":0,"t":552,"d":[479],"a":1},{"px":[480,480],"src":[128,800],"f":0,"t":629,"d":[480],"a":1},{"px":[480,480],"src":[64,704],"f":0,"t":552,"d":[480],"a":1},{"px":[480,480],"src":[64,640],"f":0,"t":502,"d":[480],"a":1},{"px":[480,480],"src":[64,672],"f":0,"t":527,"d":[480],"a":1},{"px":[512,480],"src":[128,800],"f":0,"t":629,"d":[481],"a":1},{"px":[512,480],"src":[96,672],"f":0,"t":528,"d":[481],"a":1},{"px":[544,480],"src":[96,800],"f":0,"t":628,"d":[482],"a":1},{"px":[544,480],"src":[128,672],"f":0,"t":529,"d":[482],"a":1},{"px":[576,480],"src":[96,800],"f":0,"t":628,"d":[483],"a":1},{"px":[576,480],"src":[160,672],"f":0,"t":530,"d":[483],"a":1},{"px":[608,480],"src":[96,800],"f":0,"t":628,"d":[484],"a":1},{"px":[608,480],"src":[96,384],"f":0,"t":303,"d":[484],"a":1},{"px":[640,480],"src":[128,800],"f":0,"t":629,"d":[485],"a":1},{"px":[640,480],"src":[128,384],"f":0,"t":304,"d":[485],"a":1},{"px":[672,480],"src":[96,800],"f":0,"t":628,"d":[486],"a":1},{"px":[672,480],"src":[288,128],"f":0,"t":109,"d":[486],"a":1},{"px":[704,480],"src":[320,128],"f":0,"t":110,"d":[487],"a":1},{"px":[736,480],"src":[128,800],"f":0,"t":629,"d":[488],"a":1},{"px":[736,480],"src":[32,672],"f":0,"t":526,"d":[488],"a":1},{"px":[736,480],"src":[192,704],"f":0,"t":556,"d":[488],"a":1},{"px":[736,480],"src":[352,128],"f":0,"t":111,"d":[488],"a":1},{"px":[768,480],"src":[96,800],"f":0,"t":628,"d":[489],"a":1},{"px":[768,480],"src":[64,672],"f":0,"t":527,"d":[489],"a":1},{"px":[768,480],"src":[224,704],"f":0,"t":557,"d":[489],"a":1},{"px":[800,480],"src":[96,800],"f":0,"t":628,"d":[490],"a":1},{"px":[800,480],"src":[0,608],"f":0,"t":475,"d":[490],"a":1},{"px":[832,480],"src":[96,800],"f":0,"t":628,"d":[491],"a":1},{"px":[832,480],"src":[0,672],"f":0,"t":525,"d":[491],"a":1},{"px":[832,480],"src":[32,608],"f":0,"t":476,"d":[491],"a":1},{"px":[832,480],"src":[288,160],"f":0,"t":134,"d":[491],"a":1},{"px":[864,480],"src":[96,800],"f":0,"t":628,"d":[492],"a":1},{"px":[864,480],"src":[32,672],"f":0,"t":526,"d":[492],"a":1},{"px":[864,480],"src":[320,160],"f":0,"t":135,"d":[492],"a":1},{"px":[896,480],"src":[96,800],"f":0,"t":628,"d":[493],"a":1},{"px":[896,480],"src":[64,672],"f":0,"t":527,"d":[493],"a":1},{"px":[896,480],"src":[352,160],"f":0,"t":136,"d":[493],"a":1},{"px":[384,512],"src":[96,800],"f":0,"t":628,"d":[508],"a":1},{"px":[416,512],"src":[96,800],"f":0,"t":628,"d":[509],"a":1},{"px":[416,512],"src":[0,672],"f":0,"t":525,"d":[509],"a":1},{"px":[416,512],"src":[0,704],"f":0,"t":550,"d":[509],"a":1},{"px":[448,512],"src":[128,800],"f":0,"t":629,"d":[510],"a":1},{"px":[448,512],"src":[32,672],"f":0,"t":526,"d":[510],"a":1},{"px":[448,512],"src":[32,704],"f":0,"t":551,"d":[510],"a":1},{"px":[480,512],"src":[128,800],"f":0,"t":629,"d":[511],"a":1},{"px":[480,512],"src":[64,672],"f":0,"t":527,"d":[511],"a":1},{"px":[480,512],"src":[64,704],"f":0,"t":552,"d":[511],"a":1},{"px":[512,512],"src":[96,800],"f":0,"t":628,"d":[512],"a":1},{"px":[512,512],"src":[96,704],"f":0,"t":553,"d":[512],"a":1},{"px":[544,512],"src":[96,800],"f":0,"t":628,"d":[513],"a":1},{"px":[544,512],"src":[128,704],"f":0,"t":554,"d":[513],"a":1},{"px":[576,512],"src":[96,800],"f":0,"t":628,"d":[514],"a":1},{"px":[576,512],"src":[160,704],"f":0,"t":555,"d":[514],"a":1},{"px":[608,512],"src":[96,800],"f":0,"t":628,"d":[515],"a":1},{"px":[608,512],"src":[96,416],"f":0,"t":328,"d":[515],"a":1},{"px":[640,512],"src":[128,800],"f":0,"t":629,"d":[516],"a":1},{"px":[640,512],"src":[128,416],"f":0,"t":329,"d":[516],"a":1},{"px":[672,512],"src":[128,800],"f":0,"t":629,"d":[517],"a":1},{"px":[672,512],"src":[288,160],"f":0,"t":134,"d":[517],"a":1},{"px":[704,512],"src":[128,800],"f":0,"t":629,"d":[518],"a":1},{"px":[704,512],"src":[0,704],"f":0,"t":550,"d":[518],"a":1},{"px":[704,512],"src":[320,160],"f":0,"t":135,"d":[518],"a":1},{"px":[736,512],"src":[96,800],"f":0,"t":628,"d":[519],"a":1},{"px":[736,512],"src":[32,704],"f":0,"t":551,"d":[519],"a":1},{"px":[736,512],"src":[352,160],"f":0,"t":136,"d":[519],"a":1},{"px":[768,512],"src":[96,800],"f":0,"t":628,"d":[520],"a":1},{"px":[768,512],"src":[64,704],"f":0,"t":552,"d":[520],"a":1},{"px":[800,512],"src":[128,800],"f":0,"t":629,"d":[521],"a":1},{"px":[832,512],"src":[96,800],"f":0,"t":628,"d":[522],"a":1},{"px":[832,512],"src":[0,704],"f":0,"t":550,"d":[522],"a":1},{"px":[864,512],"src":[128,800],"f":0,"t":629,"d":[523],"a":1},{"px":[864,512],"src":[32,704],"f":0,"t":551,"d":[523],"a":1},{"px":[896,512],"src":[96,800],"f":0,"t":628,"d":[524],"a":1},{"px":[896,512],"src":[64,704],"f":0,"t":552,"d":[524],"a":1},{"px":[384,544],"src":[96,800],"f":0,"t":628,"d":[539],"a":1},{"px":[416,544],"src":[128,800],"f":0,"t":629,"d":[540],"a":1},{"px":[416,544],"src":[0,704],"f":0,"t":550,"d":[540],"a":1},{"px":[448,544],"src":[96,800],"f":0,"t":628,"d":[541],"a":1},{"px":[448,544],"src":[32,704],"f":0,"t":551,"d":[541],"a":1},{"px":[480,544],"src":[96,800],"f":0,"t":628,"d":[542],"a":1},{"px":[480,544],"src":[64,704],"f":0,"t":552,"d":[542],"a":1},{"px":[512,544],"src":[96,800],"f":0,"t":628,"d":[543],"a":1},{"px":[544,544],"src":[128,800],"f":0,"t":629,"d":[544],"a":1},{"px":[576,544],"src":[96,800],"f":0,"t":628,"d":[545],"a":1},{"px":[608,544],"src":[128,800],"f":0,"t":629,"d":[546],"a":1},{"px":[640,544],"src":[96,800],"f":0,"t":628,"d":[547],"a":1},{"px":[672,544],"src":[96,800],"f":0,"t":628,"d":[548],"a":1},{"px":[704,544],"src":[128,800],"f":0,"t":629,"d":[549],"a":1},{"px":[736,544],"src":[96,800],"f":0,"t":628,"d":[550],"a":1},{"px":[768,544],"src":[96,800],"f":0,"t":628,"d":[551],"a":1},{"px":[800,544],"src":[128,800],"f":0,"t":629,"d":[552],"a":1},{"px":[832,544],"src":[128,800],"f":0,"t":629,"d":[553],"a":1},{"px":[864,544],"src":[128,800],"f":0,"t":629,"d":[554],"a":1},{"px":[896,544],"src":[96,800],"f":0,"t":628,"d":[555],"a":1}],"entityInstances":[]},{"__identifier":"element_teleport_layer","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"42fc2140-d7b0-11ee-bac6-a513923976fb","levelId":28,"layerDefUid":31,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":3453731,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"matrix_teleport_layer","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"722b0a80-d7b0-11ee-bac6-9f35b87444b8","levelId":28,"layerDefUid":32,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":4855165,"overrideTilesetUid":null,"gridTiles":[{"px":[96,160],"src":[160,0],"f":0,"t":5,"d":[158],"a":1},{"px":[128,160],"src":[160,0],"f":0,"t":5,"d":[159],"a":1},{"px":[96,192],"src":[160,0],"f":0,"t":5,"d":[189],"a":1},{"px":[128,192],"src":[160,0],"f":0,"t":5,"d":[190],"a":1}],"entityInstances":[]},{"__identifier":"start","__type":"Tiles","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":11,"__tilesetRelPath":"tilesets/WA_Special_Zones.png","iid":"d7e2a386-d7b0-11ee-bac6-77f02559e567","levelId":28,"layerDefUid":22,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[],"autoLayerTiles":[],"seed":18453,"overrideTilesetUid":null,"gridTiles":[{"px":[96,416],"src":[32,0],"f":0,"t":1,"d":[406],"a":1},{"px":[128,416],"src":[32,0],"f":0,"t":1,"d":[407],"a":1},{"px":[96,448],"src":[32,0],"f":0,"t":1,"d":[437],"a":1},{"px":[128,448],"src":[32,0],"f":0,"t":1,"d":[438],"a":1}],"entityInstances":[]},{"__identifier":"walls","__type":"IntGrid","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":null,"__tilesetRelPath":null,"iid":"c1d9be80-d7b0-11ee-9c16-d32f7bb172d0","levelId":28,"layerDefUid":76,"pxOffsetX":0,"pxOffsetY":0,"visible":true,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[],"seed":1078922,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]},{"__identifier":"test_room_autolayer","__type":"IntGrid","__cWid":31,"__cHei":20,"__gridSize":32,"__opacity":1,"__pxTotalOffsetX":0,"__pxTotalOffsetY":0,"__tilesetDefUid":2,"__tilesetRelPath":"tilesets/WA_Room_Builder.png","iid":"783fddd0-d7b0-11ee-bac6-cd5ba6bc4944","levelId":28,"layerDefUid":35,"pxOffsetX":0,"pxOffsetY":0,"visible":false,"optionalRules":[],"intGridCsv":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"autoLayerTiles":[{"px":[384,96],"src":[64,128],"f":0,"t":102,"d":[57,105],"a":1},{"px":[896,96],"src":[64,128],"f":0,"t":102,"d":[57,121],"a":1},{"px":[384,128],"src":[64,128],"f":0,"t":102,"d":[57,136],"a":1},{"px":[896,128],"src":[64,128],"f":0,"t":102,"d":[57,152],"a":1},{"px":[384,160],"src":[64,128],"f":0,"t":102,"d":[57,167],"a":1},{"px":[896,160],"src":[64,128],"f":0,"t":102,"d":[57,183],"a":1},{"px":[384,192],"src":[64,128],"f":0,"t":102,"d":[57,198],"a":1},{"px":[896,192],"src":[64,128],"f":0,"t":102,"d":[57,214],"a":1},{"px":[384,224],"src":[64,128],"f":0,"t":102,"d":[57,229],"a":1},{"px":[896,224],"src":[64,128],"f":0,"t":102,"d":[57,245],"a":1},{"px":[384,256],"src":[64,128],"f":0,"t":102,"d":[57,260],"a":1},{"px":[896,256],"src":[64,128],"f":0,"t":102,"d":[57,276],"a":1},{"px":[384,288],"src":[64,128],"f":0,"t":102,"d":[57,291],"a":1},{"px":[896,288],"src":[64,128],"f":0,"t":102,"d":[57,307],"a":1},{"px":[384,320],"src":[64,128],"f":0,"t":102,"d":[57,322],"a":1},{"px":[896,320],"src":[64,128],"f":0,"t":102,"d":[57,338],"a":1},{"px":[384,352],"src":[64,128],"f":0,"t":102,"d":[57,353],"a":1},{"px":[896,352],"src":[64,128],"f":0,"t":102,"d":[57,369],"a":1},{"px":[384,384],"src":[64,128],"f":0,"t":102,"d":[57,384],"a":1},{"px":[896,384],"src":[64,128],"f":0,"t":102,"d":[57,400],"a":1},{"px":[384,416],"src":[64,128],"f":0,"t":102,"d":[57,415],"a":1},{"px":[896,416],"src":[64,128],"f":0,"t":102,"d":[57,431],"a":1},{"px":[384,448],"src":[64,128],"f":0,"t":102,"d":[57,446],"a":1},{"px":[896,448],"src":[64,128],"f":0,"t":102,"d":[57,462],"a":1},{"px":[416,64],"src":[128,128],"f":0,"t":104,"d":[56,75],"a":1},{"px":[448,64],"src":[128,128],"f":0,"t":104,"d":[56,76],"a":1},{"px":[480,64],"src":[128,128],"f":0,"t":104,"d":[56,77],"a":1},{"px":[512,64],"src":[128,128],"f":0,"t":104,"d":[56,78],"a":1},{"px":[544,64],"src":[128,128],"f":0,"t":104,"d":[56,79],"a":1},{"px":[576,64],"src":[128,128],"f":0,"t":104,"d":[56,80],"a":1},{"px":[608,64],"src":[128,128],"f":0,"t":104,"d":[56,81],"a":1},{"px":[640,64],"src":[128,128],"f":0,"t":104,"d":[56,82],"a":1},{"px":[672,64],"src":[128,128],"f":0,"t":104,"d":[56,83],"a":1},{"px":[704,64],"src":[128,128],"f":0,"t":104,"d":[56,84],"a":1},{"px":[736,64],"src":[128,128],"f":0,"t":104,"d":[56,85],"a":1},{"px":[768,64],"src":[128,128],"f":0,"t":104,"d":[56,86],"a":1},{"px":[800,64],"src":[128,128],"f":0,"t":104,"d":[56,87],"a":1},{"px":[832,64],"src":[128,128],"f":0,"t":104,"d":[56,88],"a":1},{"px":[864,64],"src":[128,128],"f":0,"t":104,"d":[56,89],"a":1},{"px":[416,480],"src":[128,128],"f":0,"t":104,"d":[56,478],"a":1},{"px":[448,480],"src":[128,128],"f":0,"t":104,"d":[56,479],"a":1},{"px":[480,480],"src":[128,128],"f":0,"t":104,"d":[56,480],"a":1},{"px":[512,480],"src":[128,128],"f":0,"t":104,"d":[56,481],"a":1},{"px":[544,480],"src":[128,128],"f":0,"t":104,"d":[56,482],"a":1},{"px":[576,480],"src":[128,128],"f":0,"t":104,"d":[56,483],"a":1},{"px":[608,480],"src":[128,128],"f":0,"t":104,"d":[56,484],"a":1},{"px":[640,480],"src":[128,128],"f":0,"t":104,"d":[56,485],"a":1},{"px":[672,480],"src":[128,128],"f":0,"t":104,"d":[56,486],"a":1},{"px":[704,480],"src":[128,128],"f":0,"t":104,"d":[56,487],"a":1},{"px":[736,480],"src":[128,128],"f":0,"t":104,"d":[56,488],"a":1},{"px":[768,480],"src":[128,128],"f":0,"t":104,"d":[56,489],"a":1},{"px":[800,480],"src":[128,128],"f":0,"t":104,"d":[56,490],"a":1},{"px":[832,480],"src":[128,128],"f":0,"t":104,"d":[56,491],"a":1},{"px":[864,480],"src":[128,128],"f":0,"t":104,"d":[56,492],"a":1},{"px":[896,480],"src":[128,64],"f":0,"t":54,"d":[65,493],"a":1},{"px":[384,480],"src":[96,64],"f":0,"t":53,"d":[63,477],"a":1},{"px":[384,64],"src":[96,32],"f":0,"t":28,"d":[40,74],"a":1},{"px":[896,64],"src":[128,32],"f":0,"t":29,"d":[42,90],"a":1},{"px":[416,160],"src":[256,480],"f":0,"t":383,"d":[41,168],"a":1},{"px":[448,160],"src":[64,480],"f":0,"t":377,"d":[41,169],"a":1},{"px":[480,160],"src":[320,480],"f":0,"t":385,"d":[41,170],"a":1},{"px":[512,160],"src":[192,448],"f":0,"t":356,"d":[41,171],"a":1},{"px":[544,160],"src":[96,448],"f":0,"t":353,"d":[41,172],"a":1},{"px":[576,160],"src":[384,480],"f":0,"t":387,"d":[41,173],"a":1},{"px":[608,160],"src":[0,480],"f":0,"t":375,"d":[41,174],"a":1},{"px":[640,160],"src":[0,480],"f":0,"t":375,"d":[41,175],"a":1},{"px":[672,160],"src":[256,448],"f":0,"t":358,"d":[41,176],"a":1},{"px":[704,160],"src":[0,480],"f":0,"t":375,"d":[41,177],"a":1},{"px":[736,160],"src":[320,448],"f":0,"t":360,"d":[41,178],"a":1},{"px":[768,160],"src":[192,448],"f":0,"t":356,"d":[41,179],"a":1},{"px":[800,160],"src":[64,480],"f":0,"t":377,"d":[41,180],"a":1},{"px":[832,160],"src":[192,448],"f":0,"t":356,"d":[41,181],"a":1},{"px":[864,160],"src":[160,480],"f":0,"t":380,"d":[41,182],"a":1},{"px":[416,192],"src":[64,448],"f":0,"t":352,"d":[41,199],"a":1},{"px":[448,192],"src":[0,480],"f":0,"t":375,"d":[41,200],"a":1},{"px":[480,192],"src":[64,480],"f":0,"t":377,"d":[41,201],"a":1},{"px":[512,192],"src":[320,480],"f":0,"t":385,"d":[41,202],"a":1},{"px":[544,192],"src":[256,448],"f":0,"t":358,"d":[41,203],"a":1},{"px":[576,192],"src":[256,480],"f":0,"t":383,"d":[41,204],"a":1},{"px":[608,192],"src":[0,480],"f":0,"t":375,"d":[41,205],"a":1},{"px":[640,192],"src":[320,480],"f":0,"t":385,"d":[41,206],"a":1},{"px":[672,192],"src":[96,448],"f":0,"t":353,"d":[41,207],"a":1},{"px":[704,192],"src":[320,448],"f":0,"t":360,"d":[41,208],"a":1},{"px":[736,192],"src":[64,448],"f":0,"t":352,"d":[41,209],"a":1},{"px":[768,192],"src":[160,480],"f":0,"t":380,"d":[41,210],"a":1},{"px":[800,192],"src":[96,448],"f":0,"t":353,"d":[41,211],"a":1},{"px":[832,192],"src":[384,480],"f":0,"t":387,"d":[41,212],"a":1},{"px":[864,192],"src":[64,448],"f":0,"t":352,"d":[41,213],"a":1},{"px":[416,224],"src":[320,480],"f":0,"t":385,"d":[41,230],"a":1},{"px":[448,224],"src":[256,480],"f":0,"t":383,"d":[41,231],"a":1},{"px":[480,224],"src":[320,480],"f":0,"t":385,"d":[41,232],"a":1},{"px":[512,224],"src":[0,448],"f":0,"t":350,"d":[41,233],"a":1},{"px":[544,224],"src":[0,480],"f":0,"t":375,"d":[41,234],"a":1},{"px":[576,224],"src":[256,480],"f":0,"t":383,"d":[41,235],"a":1},{"px":[608,224],"src":[96,480],"f":0,"t":378,"d":[41,236],"a":1},{"px":[640,224],"src":[256,448],"f":0,"t":358,"d":[41,237],"a":1},{"px":[672,224],"src":[64,480],"f":0,"t":377,"d":[41,238],"a":1},{"px":[704,224],"src":[192,448],"f":0,"t":356,"d":[41,239],"a":1},{"px":[736,224],"src":[384,448],"f":0,"t":362,"d":[41,240],"a":1},{"px":[768,224],"src":[320,448],"f":0,"t":360,"d":[41,241],"a":1},{"px":[800,224],"src":[384,448],"f":0,"t":362,"d":[41,242],"a":1},{"px":[832,224],"src":[0,448],"f":0,"t":350,"d":[41,243],"a":1},{"px":[864,224],"src":[64,448],"f":0,"t":352,"d":[41,244],"a":1},{"px":[416,256],"src":[64,480],"f":0,"t":377,"d":[41,261],"a":1},{"px":[448,256],"src":[0,448],"f":0,"t":350,"d":[41,262],"a":1},{"px":[480,256],"src":[96,448],"f":0,"t":353,"d":[41,263],"a":1},{"px":[512,256],"src":[0,448],"f":0,"t":350,"d":[41,264],"a":1},{"px":[544,256],"src":[320,480],"f":0,"t":385,"d":[41,265],"a":1},{"px":[576,256],"src":[160,448],"f":0,"t":355,"d":[41,266],"a":1},{"px":[608,256],"src":[64,448],"f":0,"t":352,"d":[41,267],"a":1},{"px":[640,256],"src":[320,448],"f":0,"t":360,"d":[41,268],"a":1},{"px":[672,256],"src":[64,448],"f":0,"t":352,"d":[41,269],"a":1},{"px":[704,256],"src":[64,448],"f":0,"t":352,"d":[41,270],"a":1},{"px":[736,256],"src":[0,480],"f":0,"t":375,"d":[41,271],"a":1},{"px":[768,256],"src":[64,480],"f":0,"t":377,"d":[41,272],"a":1},{"px":[800,256],"src":[320,480],"f":0,"t":385,"d":[41,273],"a":1},{"px":[832,256],"src":[0,448],"f":0,"t":350,"d":[41,274],"a":1},{"px":[864,256],"src":[96,448],"f":0,"t":353,"d":[41,275],"a":1},{"px":[416,288],"src":[192,448],"f":0,"t":356,"d":[41,292],"a":1},{"px":[448,288],"src":[0,448],"f":0,"t":350,"d":[41,293],"a":1},{"px":[480,288],"src":[0,480],"f":0,"t":375,"d":[41,294],"a":1},{"px":[512,288],"src":[160,480],"f":0,"t":380,"d":[41,295],"a":1},{"px":[544,288],"src":[256,448],"f":0,"t":358,"d":[41,296],"a":1},{"px":[576,288],"src":[320,448],"f":0,"t":360,"d":[41,297],"a":1},{"px":[608,288],"src":[160,448],"f":0,"t":355,"d":[41,298],"a":1},{"px":[640,288],"src":[0,448],"f":0,"t":350,"d":[41,299],"a":1},{"px":[672,288],"src":[384,480],"f":0,"t":387,"d":[41,300],"a":1},{"px":[704,288],"src":[64,480],"f":0,"t":377,"d":[41,301],"a":1},{"px":[736,288],"src":[320,480],"f":0,"t":385,"d":[41,302],"a":1},{"px":[768,288],"src":[256,480],"f":0,"t":383,"d":[41,303],"a":1},{"px":[800,288],"src":[0,448],"f":0,"t":350,"d":[41,304],"a":1},{"px":[832,288],"src":[96,480],"f":0,"t":378,"d":[41,305],"a":1},{"px":[864,288],"src":[160,480],"f":0,"t":380,"d":[41,306],"a":1},{"px":[416,320],"src":[384,480],"f":0,"t":387,"d":[41,323],"a":1},{"px":[448,320],"src":[256,448],"f":0,"t":358,"d":[41,324],"a":1},{"px":[480,320],"src":[256,448],"f":0,"t":358,"d":[41,325],"a":1},{"px":[512,320],"src":[160,480],"f":0,"t":380,"d":[41,326],"a":1},{"px":[544,320],"src":[320,448],"f":0,"t":360,"d":[41,327],"a":1},{"px":[576,320],"src":[64,480],"f":0,"t":377,"d":[41,328],"a":1},{"px":[608,320],"src":[64,448],"f":0,"t":352,"d":[41,329],"a":1},{"px":[640,320],"src":[96,448],"f":0,"t":353,"d":[41,330],"a":1},{"px":[672,320],"src":[160,448],"f":0,"t":355,"d":[41,331],"a":1},{"px":[704,320],"src":[0,448],"f":0,"t":350,"d":[41,332],"a":1},{"px":[736,320],"src":[192,448],"f":0,"t":356,"d":[41,333],"a":1},{"px":[768,320],"src":[384,448],"f":0,"t":362,"d":[41,334],"a":1},{"px":[800,320],"src":[320,448],"f":0,"t":360,"d":[41,335],"a":1},{"px":[832,320],"src":[64,480],"f":0,"t":377,"d":[41,336],"a":1},{"px":[864,320],"src":[192,448],"f":0,"t":356,"d":[41,337],"a":1},{"px":[416,352],"src":[256,480],"f":0,"t":383,"d":[41,354],"a":1},{"px":[448,352],"src":[96,448],"f":0,"t":353,"d":[41,355],"a":1},{"px":[480,352],"src":[64,448],"f":0,"t":352,"d":[41,356],"a":1},{"px":[512,352],"src":[160,480],"f":0,"t":380,"d":[41,357],"a":1},{"px":[544,352],"src":[160,448],"f":0,"t":355,"d":[41,358],"a":1},{"px":[576,352],"src":[320,448],"f":0,"t":360,"d":[41,359],"a":1},{"px":[608,352],"src":[320,448],"f":0,"t":360,"d":[41,360],"a":1},{"px":[640,352],"src":[96,448],"f":0,"t":353,"d":[41,361],"a":1},{"px":[672,352],"src":[384,448],"f":0,"t":362,"d":[41,362],"a":1},{"px":[704,352],"src":[320,480],"f":0,"t":385,"d":[41,363],"a":1},{"px":[736,352],"src":[0,448],"f":0,"t":350,"d":[41,364],"a":1},{"px":[768,352],"src":[160,480],"f":0,"t":380,"d":[41,365],"a":1},{"px":[800,352],"src":[320,448],"f":0,"t":360,"d":[41,366],"a":1},{"px":[832,352],"src":[384,480],"f":0,"t":387,"d":[41,367],"a":1},{"px":[864,352],"src":[64,480],"f":0,"t":377,"d":[41,368],"a":1},{"px":[416,384],"src":[384,480],"f":0,"t":387,"d":[41,385],"a":1},{"px":[448,384],"src":[0,480],"f":0,"t":375,"d":[41,386],"a":1},{"px":[480,384],"src":[64,448],"f":0,"t":352,"d":[41,387],"a":1},{"px":[512,384],"src":[160,480],"f":0,"t":380,"d":[41,388],"a":1},{"px":[544,384],"src":[192,448],"f":0,"t":356,"d":[41,389],"a":1},{"px":[576,384],"src":[384,448],"f":0,"t":362,"d":[41,390],"a":1},{"px":[608,384],"src":[0,448],"f":0,"t":350,"d":[41,391],"a":1},{"px":[640,384],"src":[160,448],"f":0,"t":355,"d":[41,392],"a":1},{"px":[672,384],"src":[320,480],"f":0,"t":385,"d":[41,393],"a":1},{"px":[704,384],"src":[320,448],"f":0,"t":360,"d":[41,394],"a":1},{"px":[736,384],"src":[384,480],"f":0,"t":387,"d":[41,395],"a":1},{"px":[768,384],"src":[64,448],"f":0,"t":352,"d":[41,396],"a":1},{"px":[800,384],"src":[320,480],"f":0,"t":385,"d":[41,397],"a":1},{"px":[832,384],"src":[160,448],"f":0,"t":355,"d":[41,398],"a":1},{"px":[864,384],"src":[384,448],"f":0,"t":362,"d":[41,399],"a":1},{"px":[416,416],"src":[64,448],"f":0,"t":352,"d":[41,416],"a":1},{"px":[448,416],"src":[64,448],"f":0,"t":352,"d":[41,417],"a":1},{"px":[480,416],"src":[0,480],"f":0,"t":375,"d":[41,418],"a":1},{"px":[512,416],"src":[192,448],"f":0,"t":356,"d":[41,419],"a":1},{"px":[544,416],"src":[384,480],"f":0,"t":387,"d":[41,420],"a":1},{"px":[576,416],"src":[96,480],"f":0,"t":378,"d":[41,421],"a":1},{"px":[608,416],"src":[256,448],"f":0,"t":358,"d":[41,422],"a":1},{"px":[640,416],"src":[256,480],"f":0,"t":383,"d":[41,423],"a":1},{"px":[672,416],"src":[192,448],"f":0,"t":356,"d":[41,424],"a":1},{"px":[704,416],"src":[320,480],"f":0,"t":385,"d":[41,425],"a":1},{"px":[736,416],"src":[384,448],"f":0,"t":362,"d":[41,426],"a":1},{"px":[768,416],"src":[256,448],"f":0,"t":358,"d":[41,427],"a":1},{"px":[800,416],"src":[160,480],"f":0,"t":380,"d":[41,428],"a":1},{"px":[832,416],"src":[320,448],"f":0,"t":360,"d":[41,429],"a":1},{"px":[864,416],"src":[96,480],"f":0,"t":378,"d":[41,430],"a":1},{"px":[416,448],"src":[384,448],"f":0,"t":362,"d":[41,447],"a":1},{"px":[448,448],"src":[0,480],"f":0,"t":375,"d":[41,448],"a":1},{"px":[480,448],"src":[64,480],"f":0,"t":377,"d":[41,449],"a":1},{"px":[512,448],"src":[192,448],"f":0,"t":356,"d":[41,450],"a":1},{"px":[544,448],"src":[320,448],"f":0,"t":360,"d":[41,451],"a":1},{"px":[576,448],"src":[256,448],"f":0,"t":358,"d":[41,452],"a":1},{"px":[608,448],"src":[96,448],"f":0,"t":353,"d":[41,453],"a":1},{"px":[640,448],"src":[160,448],"f":0,"t":355,"d":[41,454],"a":1},{"px":[672,448],"src":[192,448],"f":0,"t":356,"d":[41,455],"a":1},{"px":[704,448],"src":[320,448],"f":0,"t":360,"d":[41,456],"a":1},{"px":[736,448],"src":[96,480],"f":0,"t":378,"d":[41,457],"a":1},{"px":[768,448],"src":[0,448],"f":0,"t":350,"d":[41,458],"a":1},{"px":[800,448],"src":[64,480],"f":0,"t":377,"d":[41,459],"a":1},{"px":[832,448],"src":[192,448],"f":0,"t":356,"d":[41,460],"a":1},{"px":[864,448],"src":[96,448],"f":0,"t":353,"d":[41,461],"a":1},{"px":[384,544],"src":[32,288],"f":0,"t":226,"d":[72,539],"a":1},{"px":[416,128],"src":[0,288],"f":0,"t":225,"d":[69,137],"a":1},{"px":[448,128],"src":[32,288],"f":0,"t":226,"d":[67,138],"a":1},{"px":[480,128],"src":[32,288],"f":0,"t":226,"d":[67,139],"a":1},{"px":[512,128],"src":[32,288],"f":0,"t":226,"d":[67,140],"a":1},{"px":[544,128],"src":[32,288],"f":0,"t":226,"d":[67,141],"a":1},{"px":[576,128],"src":[0,288],"f":0,"t":225,"d":[67,142],"a":1},{"px":[608,128],"src":[32,288],"f":0,"t":226,"d":[67,143],"a":1},{"px":[640,128],"src":[0,288],"f":0,"t":225,"d":[67,144],"a":1},{"px":[672,128],"src":[0,288],"f":0,"t":225,"d":[67,145],"a":1},{"px":[704,128],"src":[32,288],"f":0,"t":226,"d":[67,146],"a":1},{"px":[736,128],"src":[32,288],"f":0,"t":226,"d":[67,147],"a":1},{"px":[768,128],"src":[32,288],"f":0,"t":226,"d":[67,148],"a":1},{"px":[800,128],"src":[0,288],"f":0,"t":225,"d":[67,149],"a":1},{"px":[832,128],"src":[32,288],"f":0,"t":226,"d":[67,150],"a":1},{"px":[416,544],"src":[32,288],"f":0,"t":226,"d":[67,540],"a":1},{"px":[448,544],"src":[32,288],"f":0,"t":226,"d":[67,541],"a":1},{"px":[480,544],"src":[32,288],"f":0,"t":226,"d":[67,542],"a":1},{"px":[512,544],"src":[0,288],"f":0,"t":225,"d":[67,543],"a":1},{"px":[544,544],"src":[0,288],"f":0,"t":225,"d":[67,544],"a":1},{"px":[576,544],"src":[32,288],"f":0,"t":226,"d":[67,545],"a":1},{"px":[608,544],"src":[32,288],"f":0,"t":226,"d":[67,546],"a":1},{"px":[640,544],"src":[0,288],"f":0,"t":225,"d":[67,547],"a":1},{"px":[672,544],"src":[0,288],"f":0,"t":225,"d":[67,548],"a":1},{"px":[704,544],"src":[32,288],"f":0,"t":226,"d":[67,549],"a":1},{"px":[736,544],"src":[32,288],"f":0,"t":226,"d":[67,550],"a":1},{"px":[768,544],"src":[0,288],"f":0,"t":225,"d":[67,551],"a":1},{"px":[800,544],"src":[32,288],"f":0,"t":226,"d":[67,552],"a":1},{"px":[832,544],"src":[0,288],"f":0,"t":225,"d":[67,553],"a":1},{"px":[864,544],"src":[0,288],"f":0,"t":225,"d":[67,554],"a":1},{"px":[896,544],"src":[32,288],"f":0,"t":226,"d":[67,555],"a":1},{"px":[864,128],"src":[32,288],"f":0,"t":226,"d":[62,151],"a":1},{"px":[384,512],"src":[0,256],"f":0,"t":200,"d":[73,508],"a":1},{"px":[416,96],"src":[32,256],"f":0,"t":201,"d":[71,106],"a":1},{"px":[448,96],"src":[32,256],"f":0,"t":201,"d":[70,107],"a":1},{"px":[480,96],"src":[32,256],"f":0,"t":201,"d":[70,108],"a":1},{"px":[512,96],"src":[0,256],"f":0,"t":200,"d":[70,109],"a":1},{"px":[544,96],"src":[0,256],"f":0,"t":200,"d":[70,110],"a":1},{"px":[576,96],"src":[32,256],"f":0,"t":201,"d":[70,111],"a":1},{"px":[608,96],"src":[32,256],"f":0,"t":201,"d":[70,112],"a":1},{"px":[640,96],"src":[32,256],"f":0,"t":201,"d":[70,113],"a":1},{"px":[672,96],"src":[32,256],"f":0,"t":201,"d":[70,114],"a":1},{"px":[704,96],"src":[32,256],"f":0,"t":201,"d":[70,115],"a":1},{"px":[736,96],"src":[0,256],"f":0,"t":200,"d":[70,116],"a":1},{"px":[768,96],"src":[32,256],"f":0,"t":201,"d":[70,117],"a":1},{"px":[800,96],"src":[32,256],"f":0,"t":201,"d":[70,118],"a":1},{"px":[832,96],"src":[32,256],"f":0,"t":201,"d":[70,119],"a":1},{"px":[416,512],"src":[32,256],"f":0,"t":201,"d":[70,509],"a":1},{"px":[448,512],"src":[32,256],"f":0,"t":201,"d":[70,510],"a":1},{"px":[480,512],"src":[32,256],"f":0,"t":201,"d":[70,511],"a":1},{"px":[512,512],"src":[0,256],"f":0,"t":200,"d":[70,512],"a":1},{"px":[544,512],"src":[0,256],"f":0,"t":200,"d":[70,513],"a":1},{"px":[576,512],"src":[0,256],"f":0,"t":200,"d":[70,514],"a":1},{"px":[608,512],"src":[0,256],"f":0,"t":200,"d":[70,515],"a":1},{"px":[640,512],"src":[0,256],"f":0,"t":200,"d":[70,516],"a":1},{"px":[672,512],"src":[0,256],"f":0,"t":200,"d":[70,517],"a":1},{"px":[704,512],"src":[0,256],"f":0,"t":200,"d":[70,518],"a":1},{"px":[736,512],"src":[32,256],"f":0,"t":201,"d":[70,519],"a":1},{"px":[768,512],"src":[32,256],"f":0,"t":201,"d":[70,520],"a":1},{"px":[800,512],"src":[0,256],"f":0,"t":200,"d":[70,521],"a":1},{"px":[832,512],"src":[32,256],"f":0,"t":201,"d":[70,522],"a":1},{"px":[864,512],"src":[32,256],"f":0,"t":201,"d":[70,523],"a":1},{"px":[896,512],"src":[0,256],"f":0,"t":200,"d":[70,524],"a":1},{"px":[864,96],"src":[0,256],"f":0,"t":200,"d":[61,120],"a":1}],"seed":5926386,"overrideTilesetUid":null,"gridTiles":[],"entityInstances":[]}],"__neighbours":[]}],"worlds":[],"dummyWorldIid":"13e86261-d7b0-11ee-8fc4-adde36f3cac9"}
+\ No newline at end of file
diff --git a/assets/settings.ron b/assets/settings.ron
@@ -0,0 +1,28 @@
+Settings(
+ client: ClientSettings(
+ inspector: true,
+ client_id: 0,
+ client_port: 0, // the OS will assign a random open port
+ server_addr: "127.0.0.1",
+ server_port: 5001,
+ transport: Udp,
+ //server_port: 5002,
+ //transport: WebSocket,
+ ),
+ server: ServerSettings(
+ headless: true,
+ inspector: false,
+ transport: [
+ Udp(
+ local_port: 5001
+ ),
+ WebSocket(
+ local_port: 5002
+ )
+ ],
+ ),
+ shared: SharedSettings(
+ protocol_id: 0,
+ private_key: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+ )
+)
+\ No newline at end of file
diff --git a/assets/tilesets/WA_Decoration.png b/assets/tilesets/WA_Decoration.png
Binary files differ.
diff --git a/assets/tilesets/WA_Exterior.png b/assets/tilesets/WA_Exterior.png
Binary files differ.
diff --git a/assets/tilesets/WA_Miscellaneous.png b/assets/tilesets/WA_Miscellaneous.png
Binary files differ.
diff --git a/assets/tilesets/WA_Other_Furniture.png b/assets/tilesets/WA_Other_Furniture.png
Binary files differ.
diff --git a/assets/tilesets/WA_Room_Builder.png b/assets/tilesets/WA_Room_Builder.png
Binary files differ.
diff --git a/assets/tilesets/WA_Seats.png b/assets/tilesets/WA_Seats.png
Binary files differ.
diff --git a/assets/tilesets/WA_Special_Zones.png b/assets/tilesets/WA_Special_Zones.png
Binary files differ.
diff --git a/assets/tilesets/WA_Tables.png b/assets/tilesets/WA_Tables.png
Binary files differ.
diff --git a/assets/tilesets/WA_User_Interface.png b/assets/tilesets/WA_User_Interface.png
Binary files differ.
diff --git a/assets/tilesets/matrix-logo.png b/assets/tilesets/matrix-logo.png
Binary files differ.
diff --git a/assets/tilesets/matrix-logo.svg b/assets/tilesets/matrix-logo.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="75px" height="32px" viewBox="0 0 75 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 55 (78076) - https://sketchapp.com -->
+ <title>matrix logo white</title>
+ <desc>Created with Sketch.</desc>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="matrix-logo-white" fill="#000000" fill-rule="nonzero">
+ <polygon id="Path" points="0.936314791 0.73220178 0.936314791 31.2495668 3.12942478 31.2495668 3.12942478 31.9817685 0.094721871 31.9817685 0.094721871 9.49554896e-05 3.12942478 9.49554896e-05 3.12942478 0.73220178"></polygon>
+ <path d="M9.38571429,10.4066469 L9.38571429,11.951003 L9.42961441,11.951003 C9.8409292,11.3631335 10.3363464,10.9066825 10.9167193,10.5830742 C11.496713,10.2600356 12.1615676,10.0978516 12.9104298,10.0978516 C13.6298989,10.0978516 14.287263,10.237911 14.8819532,10.5170801 C15.4768331,10.796724 15.9285398,11.2891632 16.2369785,11.9952522 C16.5745259,11.4953116 17.0334387,11.0539585 17.6138116,10.6715727 C18.1938053,10.2893769 18.8803729,10.0978516 19.6736094,10.0978516 C20.2757901,10.0978516 20.8335967,10.1715371 21.3480721,10.3186231 C21.8617889,10.4657092 22.302402,10.7010089 22.6696271,11.0245223 C23.0364728,11.3483205 23.3228192,11.7711573 23.5288559,12.2928427 C23.7343236,12.8154777 23.8372946,13.4438932 23.8372946,14.1795134 L23.8372946,21.8126053 L20.7089128,21.8125104 L20.7089128,15.3485104 C20.7089128,14.9663145 20.694311,14.6059585 20.664823,14.2674421 C20.6351454,13.9294006 20.5547408,13.6354184 20.4225664,13.3850208 C20.2902971,13.1351929 20.0954488,12.936451 19.83878,12.78927 C19.581732,12.6427537 19.2328066,12.5687834 18.7922882,12.5687834 C18.3517699,12.5687834 17.9955436,12.6538635 17.723799,12.8224095 C17.4518647,12.9918101 17.2390961,13.2125816 17.085019,13.4843442 C16.930847,13.7567715 16.8279709,14.0654718 16.7766751,14.4112997 C16.725,14.7567478 16.6994943,15.106184 16.6994943,15.4591335 L16.6994943,21.8126053 L13.571397,21.8126053 L13.571397,15.4149792 C13.571397,15.0767478 13.5637168,14.7420297 13.5495891,14.4112997 C13.5346081,14.0801899 13.4724083,13.7750979 13.3620417,13.495454 C13.2518647,13.2162849 13.0682048,12.9918101 12.8112516,12.8224095 C12.5542035,12.6538635 12.1760746,12.5687834 11.6767699,12.5687834 C11.5297092,12.5687834 11.3351454,12.6019228 11.0930784,12.6682967 C10.8507269,12.7344807 10.6155815,12.859727 10.3881163,13.043276 C10.160177,13.2272997 9.96580278,13.4920356 9.80423515,13.8373887 C9.64257269,14.1832166 9.56188369,14.6352047 9.56188369,15.1940178 L9.56188369,21.8125104 L6.43388116,21.8126053 L6.43388116,10.4066469 L9.38571429,10.4066469 Z" id="Path"></path>
+ <path d="M25.8417193,12.0835608 C26.1645702,11.5980534 26.5759798,11.208546 27.0754741,10.914089 C27.5745891,10.6200119 28.1360936,10.4105401 28.7604614,10.2853887 C29.3845449,10.1605223 30.0125158,10.0977567 30.6439949,10.0977567 C31.2168774,10.0977567 31.7967762,10.1383976 32.3842604,10.2190148 C32.9716498,10.3002018 33.5078382,10.4584926 33.9925411,10.6935074 C34.4771492,10.9287122 34.8735777,11.2562136 35.1821113,11.6751573 C35.4905499,12.0942908 35.6447219,12.6495905 35.6447219,13.3409614 L35.6447219,19.2751098 C35.6447219,19.7905282 35.674115,20.2826825 35.7329962,20.7532819 C35.7913085,21.2241662 35.8942794,21.5771157 36.0412453,21.8123205 L32.869153,21.8123205 C32.8102718,21.6357033 32.7623894,21.4557626 32.725885,21.2717389 C32.6889064,21.0881899 32.6632111,20.9006528 32.648799,20.7093175 C32.1493995,21.2241662 31.5617257,21.5845223 30.8866308,21.7904807 C30.2108723,21.9958694 29.5206068,22.099181 28.8156448,22.099181 C28.2720607,22.099181 27.7653603,22.0329021 27.2954488,21.900724 C26.8253477,21.7682611 26.4143173,21.5624926 26.0618837,21.2825638 C25.7093552,21.0035846 25.4340076,20.6505401 25.2357459,20.224095 C25.0374842,19.7976499 24.9382111,19.2897329 24.9382111,18.7016736 C24.9382111,18.0547418 25.0518963,17.5213769 25.2799305,17.1026231 C25.5073957,16.6832047 25.8009482,16.3487715 26.1612516,16.0984688 C26.5208913,15.848546 26.9320164,15.6610089 27.3948167,15.5360475 C27.8573325,15.411181 28.3235461,15.3121424 28.7935525,15.2381721 C29.2635588,15.1648665 29.7260746,15.1058991 30.1814791,15.0618398 C30.6366941,15.0175905 31.040708,14.9513116 31.3931416,14.8630979 C31.74567,14.7748843 32.0244311,14.6464095 32.2302781,14.4771039 C32.4355563,14.3079881 32.5310367,14.0616736 32.5166245,13.7378754 C32.5166245,13.3998338 32.4616308,13.1312047 32.3514539,12.9327478 C32.2413717,12.7342908 32.0944058,12.5796083 31.9109355,12.469365 C31.7272756,12.3591217 31.5143173,12.2855312 31.2721555,12.2485935 C31.0297092,12.2123205 30.7687737,12.1935193 30.4901075,12.1935193 C29.8732301,12.1935193 29.388622,12.3259822 29.0360936,12.5907181 C28.6837547,12.855454 28.4777181,13.2969021 28.4192162,13.9143976 L25.2911188,13.9143976 C25.3349241,13.1792522 25.5182048,12.5685935 25.8417193,12.0835608 Z M32.0208281,16.5068724 C31.8226612,16.5729614 31.6096081,16.6279407 31.3821429,16.6721899 C31.1543932,16.7163442 30.9158344,16.7531869 30.666182,16.7824332 C30.4163401,16.8121543 30.1666877,16.8487122 29.917225,16.8928665 C29.6820796,16.9366409 29.4508217,16.9959881 29.2234513,17.0691988 C28.995512,17.1431691 28.7972503,17.2422077 28.6285714,17.3671691 C28.4594185,17.4922255 28.323641,17.6506113 28.2208597,17.8413769 C28.1179836,18.0326172 28.0666877,18.2754184 28.0666877,18.5694955 C28.0666877,18.8486647 28.1179836,19.0843442 28.2208597,19.2751098 C28.323641,19.466635 28.4634008,19.6173294 28.6395702,19.7275727 C28.8157396,19.837816 29.0212073,19.9152047 29.2565424,19.9590742 C29.4912137,20.0033234 29.7335651,20.0253531 29.9833123,20.0253531 C30.6000948,20.0253531 31.0772124,19.9226113 31.4153287,19.7164629 C31.7529709,19.5107893 32.0024336,19.2642849 32.1642857,18.9772344 C32.3256637,18.6905638 32.4249368,18.4006647 32.4617257,18.1061128 C32.4981353,17.8120356 32.5167193,17.5766409 32.5167193,17.4002136 L32.5167193,16.2307418 C32.3843552,16.3487715 32.2191846,16.4405935 32.0208281,16.5068724 Z" id="Shape"></path>
+ <path d="M43.8835335,10.4066469 L43.8835335,12.5025045 L41.5926675,12.5025045 L41.5926675,18.150362 C41.5926675,18.679549 41.6806574,19.0326884 41.8570164,19.2090208 C42.0329962,19.385543 42.3857143,19.4737567 42.9144121,19.4737567 C43.0906764,19.4737567 43.2593552,19.4665401 43.4210177,19.451727 C43.5824905,19.4372938 43.7367573,19.4148843 43.8835335,19.385638 L43.8835335,21.8124154 C43.6191846,21.8565697 43.3253477,21.885816 43.002402,21.900819 C42.6793616,21.9149674 42.363622,21.9226588 42.0551833,21.9226588 C41.5705752,21.9226588 41.1114728,21.8894243 40.6783502,21.8231454 C40.2449431,21.7571513 39.8632111,21.6287715 39.5328698,21.4373412 C39.2023388,21.2463858 38.9415929,20.9739585 38.7508217,20.6210089 C38.5596713,20.2683442 38.4643805,19.8048665 38.4643805,19.2309555 L38.4643805,12.5025045 L36.5699431,12.5025045 L36.5699431,10.4066469 L38.4643805,10.4066469 L38.4643805,6.98710979 L41.5925727,6.98710979 L41.5925727,10.4066469 L43.8835335,10.4066469 Z" id="Path"></path>
+ <path d="M48.3553729,10.4066469 L48.3553729,12.5246291 L48.3994627,12.5246291 C48.5460493,12.1713947 48.7442162,11.8444629 48.994153,11.5426944 C49.2439001,11.2414955 49.5300569,10.9838813 49.8531922,10.7706113 C50.176043,10.5577211 50.5213654,10.3922136 50.8888748,10.274184 C51.2556258,10.156724 51.637737,10.0976617 52.0343552,10.0976617 C52.2399178,10.0976617 52.4672882,10.1346944 52.717225,10.208095 L52.717225,13.1203798 C52.5701643,13.0907537 52.3939001,13.0649258 52.1885272,13.0430861 C51.982775,13.0209614 51.7846081,13.0098516 51.5936473,13.0098516 C51.0208597,13.0098516 50.5362516,13.1057567 50.1399178,13.2967122 C49.7433944,13.4879525 49.4240518,13.7487953 49.1816056,14.0798101 C48.9393489,14.4109199 48.7664033,14.796724 48.6637168,15.2380772 C48.5610303,15.6791454 48.5096397,16.1574362 48.5096397,16.672095 L48.5096397,21.8123205 L45.3815424,21.8123205 L45.3815424,10.4066469 L48.3553729,10.4066469 Z" id="Path"></path>
+ <path d="M54.0388748,8.64161424 L54.0388748,6.06043917 L57.1672566,6.06043917 L57.1672566,8.64161424 L54.0388748,8.64161424 Z M57.1672566,10.4066469 L57.1672566,21.8124154 L54.0388748,21.8124154 L54.0388748,10.4066469 L57.1672566,10.4066469 Z" id="Shape"></path>
+ <polygon id="Path" points="58.7972503 10.4066469 62.365866 10.4066469 64.37067 13.3849258 66.3533818 10.4066469 69.8119153 10.4066469 66.0670354 15.7456142 70.2747155 21.8125104 66.7058154 21.8125104 64.3265803 18.216546 61.9472503 21.8125104 58.4449115 21.8125104 62.542225 15.8119881"></polygon>
+ <polygon id="Path" points="74.0938369 31.2495668 74.0938369 0.73220178 71.9007269 0.73220178 71.9007269 9.49554896e-05 74.9356195 9.49554896e-05 74.9356195 31.9817685 71.9007269 31.9817685 71.9007269 31.2495668"></polygon>
+ </g>
+ </g>
+</svg>
diff --git a/assets/tilesets/test_room_autolayer.intgrid.png b/assets/tilesets/test_room_autolayer.intgrid.png
Binary files differ.
diff --git a/assets/tilesets/user.png b/assets/tilesets/user.png
Binary files differ.
diff --git a/src/main.rs b/src/main.rs
@@ -0,0 +1,211 @@
+use std::net::{Ipv4Addr, SocketAddr};
+
+use bevy::{
+ log::{Level, LogPlugin},
+ prelude::*,
+ scene::ron,
+ window::PresentMode,
+};
+use bevy_ecs_ldtk::prelude::*;
+use clap::Parser;
+use iyes_perf_ui::{PerfUiCompleteBundle, PerfUiPlugin};
+use lightyear::{
+ connection::netcode::ClientId,
+ shared::log::add_log_layer,
+ transport::{io::TransportConfig, LOCAL_SOCKET},
+};
+use networking::{
+ client::ClientPluginGroup, server::ServerPluginGroup, ClientSettings, ClientTransports,
+ ServerTransports, Settings,
+};
+use wall::WallBundle;
+
+mod networking;
+mod player;
+mod wall;
+
+#[derive(Parser, PartialEq, Debug)]
+enum Cli {
+ #[cfg(not(target_family = "wasm"))]
+ /// The program will act both as a server and as a client
+ ListenServer,
+ #[cfg(not(target_family = "wasm"))]
+ /// Dedicated server
+ Server,
+ /// The program will act as a client
+ Client,
+}
+
+fn main() {
+ cfg_if::cfg_if! {
+ if #[cfg(target_family = "wasm")] {
+ let client_id = rand::random::<u64>();
+ let cli = Cli::Client {
+ client_id: Some(client_id)
+ };
+ } else {
+ let cli = Cli::parse();
+ }
+ }
+ let settings_str = include_str!("../assets/settings.ron");
+ let settings = ron::de::from_str::<Settings>(settings_str).unwrap();
+ run(settings, cli);
+}
+
+fn run(settings: Settings, cli: Cli) {
+ match cli {
+ #[cfg(not(target_family = "wasm"))]
+ Cli::ListenServer => {
+ // create client app
+ let (from_server_send, from_server_recv) = crossbeam_channel::unbounded();
+ let (to_server_send, to_server_recv) = crossbeam_channel::unbounded();
+ let transport_config = TransportConfig::LocalChannel {
+ recv: from_server_recv,
+ send: to_server_send,
+ };
+ // when communicating via channels, we need to use the address `LOCAL_SOCKET` for the server
+ let client_id = rand::random::<u64>();
+ let mut client_app =
+ client_app(settings.clone(), LOCAL_SOCKET, client_id, transport_config);
+
+ // create server app
+ let extra_transport_configs = vec![TransportConfig::Channels {
+ // even if we communicate via channels, we need to provide a socket address for the client
+ channels: vec![(LOCAL_SOCKET, to_server_recv, from_server_send)],
+ }];
+ let mut server_app = server_app(settings, extra_transport_configs);
+
+ // run both the client and server apps
+ std::thread::spawn(move || server_app.run());
+ client_app.run();
+ }
+ #[cfg(not(target_family = "wasm"))]
+ Cli::Server => {
+ let mut app = server_app(settings, vec![]);
+ app.run();
+ }
+ Cli::Client => {
+ let server_addr = SocketAddr::new(
+ settings.client.server_addr.into(),
+ settings.client.server_port,
+ );
+ let transport_config = get_client_transport_config(settings.client.clone());
+ let client_id = rand::random::<u64>();
+ let mut app = client_app(settings, server_addr, client_id, transport_config);
+ app.run();
+ }
+ }
+}
+
+/// Build the client app
+fn client_app(
+ settings: Settings,
+ server_addr: SocketAddr,
+ client_id: ClientId,
+ transport_config: TransportConfig,
+) -> App {
+ let mut app = App::new();
+ // NOTE: create the default plugins first so that the async task pools are initialized
+ // use the default bevy logger for now
+ // (the lightyear logger doesn't handle wasm)
+ app.add_plugins(
+ DefaultPlugins
+ .build()
+ .set(LogPlugin {
+ level: Level::INFO,
+ filter: "wgpu=error,bevy_render=info".to_string(),
+ update_subscriber: Some(add_log_layer),
+ })
+ .set(WindowPlugin {
+ primary_window: Some(Window {
+ title: "Matrix RPG".into(),
+ present_mode: PresentMode::AutoVsync,
+ prevent_default_event_handling: false,
+ ..default()
+ }),
+ ..default()
+ })
+ .set(ImagePlugin::default_nearest()),
+ );
+ if settings.client.inspector {
+ app.add_plugins(PerfUiPlugin);
+ }
+ app.add_plugins(LdtkPlugin)
+ .insert_resource(LevelSelection::index(0))
+ .insert_resource(LdtkSettings {
+ set_clear_color: SetClearColor::FromLevelBackground,
+ ..Default::default()
+ })
+ .add_systems(Startup, move |mut commands: Commands| {
+ if settings.client.inspector {
+ commands.spawn(PerfUiCompleteBundle::default());
+ }
+ })
+ .register_ldtk_int_cell::<WallBundle>(1)
+ .add_plugins(player::PlayerPlugin);
+ let client_plugin_group = ClientPluginGroup::new(
+ // use the cli-provided client id if it exists, otherwise use the settings client id
+ client_id,
+ server_addr,
+ transport_config,
+ settings.shared,
+ );
+ app.add_plugins(client_plugin_group.build());
+ app
+}
+
+/// Build the server app
+fn server_app(settings: Settings, extra_transport_configs: Vec<TransportConfig>) -> App {
+ let mut app = App::new();
+ if !settings.server.headless {
+ app.add_plugins(DefaultPlugins.build().disable::<LogPlugin>());
+ } else {
+ app.add_plugins(MinimalPlugins);
+ }
+ app.add_plugins(LogPlugin {
+ level: Level::INFO,
+ filter: "wgpu=error,bevy_render=info".to_string(),
+ update_subscriber: Some(add_log_layer),
+ });
+
+ if settings.server.inspector {
+ app.add_plugins(PerfUiPlugin);
+ }
+ app.add_systems(Startup, move |mut commands: Commands| {
+ if settings.client.inspector {
+ commands.spawn(PerfUiCompleteBundle::default());
+ }
+ });
+ let mut transport_configs = get_server_transport_configs(settings.server.transport);
+ transport_configs.extend(extra_transport_configs);
+ let server_plugin_group = ServerPluginGroup::new(transport_configs, settings.shared);
+ app.add_plugins(server_plugin_group.build());
+ app
+}
+
+/// Parse the server transport settings into a list of `TransportConfig` that are used to configure the lightyear server
+fn get_server_transport_configs(settings: Vec<ServerTransports>) -> Vec<TransportConfig> {
+ settings
+ .iter()
+ .map(|t| match t {
+ ServerTransports::Udp { local_port } => TransportConfig::UdpSocket(SocketAddr::new(
+ Ipv4Addr::UNSPECIFIED.into(),
+ *local_port,
+ )),
+ ServerTransports::WebSocket { local_port } => TransportConfig::WebSocketServer {
+ server_addr: SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), *local_port),
+ },
+ })
+ .collect()
+}
+
+/// Parse the client transport settings into a `TransportConfig` that is used to configure the lightyear client
+fn get_client_transport_config(settings: ClientSettings) -> TransportConfig {
+ let server_addr = SocketAddr::new(settings.server_addr.into(), settings.server_port);
+ let client_addr = SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), settings.client_port);
+ match settings.transport {
+ #[cfg(not(target_family = "wasm"))]
+ ClientTransports::Udp => TransportConfig::UdpSocket(client_addr),
+ ClientTransports::WebSocket => TransportConfig::WebSocketClient { server_addr },
+ }
+}
diff --git a/src/networking/client.rs b/src/networking/client.rs
@@ -0,0 +1,205 @@
+use std::net::SocketAddr;
+
+use bevy::app::PluginGroupBuilder;
+use bevy::prelude::*;
+use bevy::utils::Duration;
+
+use bevy_ecs_ldtk::LdtkWorldBundle;
+use lightyear::prelude::client::*;
+use lightyear::prelude::*;
+
+use crate::player::PlayerBundle;
+
+use super::protocol::{
+ protocol, ClientMut, Components, Inputs, MatrixRPGGameProto, PlayerId, PlayerPosition,
+};
+use super::{shared_config, shared_movement_behaviour, SharedSettings};
+
+pub struct ClientPluginGroup {
+ lightyear: ClientPlugin<MatrixRPGGameProto>,
+}
+
+impl ClientPluginGroup {
+ pub(crate) fn new(
+ client_id: u64,
+ server_addr: SocketAddr,
+ transport_config: TransportConfig,
+ shared_settings: SharedSettings,
+ ) -> ClientPluginGroup {
+ let auth = Authentication::Manual {
+ server_addr,
+ client_id,
+ private_key: shared_settings.private_key,
+ protocol_id: shared_settings.protocol_id,
+ };
+ let link_conditioner = LinkConditionerConfig {
+ incoming_latency: Duration::from_millis(200),
+ incoming_jitter: Duration::from_millis(20),
+ incoming_loss: 0.05,
+ };
+ let config = ClientConfig {
+ shared: shared_config(),
+ net: NetConfig::Netcode {
+ auth,
+ config: NetcodeConfig::default(),
+ io: IoConfig::from_transport(transport_config).with_conditioner(link_conditioner),
+ },
+ interpolation: InterpolationConfig {
+ delay: InterpolationDelay::default(),
+ custom_interpolation_logic: false,
+ },
+ ..default()
+ };
+ let plugin_config = PluginConfig::new(config, protocol());
+ ClientPluginGroup {
+ lightyear: ClientPlugin::new(plugin_config),
+ }
+ }
+}
+
+impl PluginGroup for ClientPluginGroup {
+ fn build(self) -> PluginGroupBuilder {
+ PluginGroupBuilder::start::<Self>()
+ .add(self.lightyear)
+ .add(MatrixRPGClientPlugin)
+ .add(super::SharedPlugin)
+ }
+}
+
+pub struct MatrixRPGClientPlugin;
+
+impl Plugin for MatrixRPGClientPlugin {
+ fn build(&self, app: &mut App) {
+ app.add_systems(Startup, init);
+ app.add_systems(PreUpdate, handle_connection.after(MainSet::ReceiveFlush));
+ // Inputs have to be buffered in the FixedPreUpdate schedule
+ app.add_systems(
+ FixedPreUpdate,
+ buffer_input.in_set(InputSystemSet::BufferInputs),
+ );
+ app.add_systems(FixedUpdate, player_movement);
+ app.add_systems(Update, spawn_player);
+ }
+}
+
+// Startup system for the client
+pub(crate) fn init(mut commands: Commands, mut client: ClientMut, asset_server: Res<AssetServer>) {
+ let mut camera = Camera2dBundle::default();
+ camera.projection.scale = 0.5;
+ camera.transform.translation.x += 1920.0 / 4.0;
+ camera.transform.translation.y += 1080.0 / 4.0;
+ commands.spawn(camera);
+
+ commands.spawn(LdtkWorldBundle {
+ ldtk_handle: asset_server.load("matrix_office.ldtk"),
+ ..Default::default()
+ });
+
+ let _ = client.connect();
+}
+
+pub(crate) fn handle_connection(mut commands: Commands, metadata: Res<GlobalMetadata>) {
+ // the `GlobalMetadata` resource holds metadata related to the client
+ // once the connection is established.
+ if metadata.is_changed() {
+ if let Some(client_id) = metadata.client_id {
+ commands.spawn(TextBundle::from_section(
+ format!("Client {}", client_id),
+ TextStyle {
+ font_size: 30.0,
+ color: Color::WHITE,
+ ..default()
+ },
+ ));
+ }
+ }
+}
+
+// System that reads from peripherals and adds inputs to the buffer
+pub(crate) fn buffer_input(mut client: ClientMut, keypress: Res<ButtonInput<KeyCode>>) {
+ let mut direction = super::protocol::Direction {
+ up: false,
+ down: false,
+ left: false,
+ right: false,
+ };
+ if keypress.pressed(KeyCode::KeyW) || keypress.pressed(KeyCode::ArrowUp) {
+ direction.up = true;
+ }
+ if keypress.pressed(KeyCode::KeyS) || keypress.pressed(KeyCode::ArrowDown) {
+ direction.down = true;
+ }
+ if keypress.pressed(KeyCode::KeyA) || keypress.pressed(KeyCode::ArrowLeft) {
+ direction.left = true;
+ }
+ if keypress.pressed(KeyCode::KeyD) || keypress.pressed(KeyCode::ArrowRight) {
+ direction.right = true;
+ }
+ if !direction.is_none() {
+ return client.add_input(Inputs::Direction(direction));
+ }
+ if keypress.pressed(KeyCode::Space) {
+ return client.add_input(Inputs::Spawn);
+ }
+ // info!("Sending input: {:?} on tick: {:?}", &input, client.tick());
+ client.add_input(Inputs::None)
+}
+
+// The client input only gets applied to predicted entities that we own
+// This works because we only predict the user's controlled entity.
+// If we were predicting more entities, we would have to only apply movement to the player owned one.
+#[allow(clippy::type_complexity)]
+fn player_movement(
+ mut position_query: Query<
+ (&mut Transform, &mut PlayerPosition),
+ (With<Predicted>, Without<Camera>),
+ >,
+ mut cameras: Query<&mut Transform, With<Camera>>,
+ mut input_reader: EventReader<InputEvent<Inputs>>,
+) {
+ if <Components as SyncMetadata<PlayerPosition>>::mode() != ComponentSyncMode::Full {
+ return;
+ }
+ for input in input_reader.read() {
+ if let Some(input) = input.input() {
+ for (mut transform, position) in position_query.iter_mut() {
+ // NOTE: be careful to directly pass Mut<PlayerPosition>
+ // getting a mutable reference triggers change detection, unless you use `as_deref_mut()`
+ transform.translation = Vec3::new(position.x, position.y, transform.translation.z);
+ let pos = transform.translation;
+ for mut transform in &mut cameras {
+ transform.translation.x = pos.x;
+ transform.translation.y = pos.y;
+ }
+ shared_movement_behaviour(position, input);
+ }
+ }
+ }
+}
+
+/// Spawn a player when the space command is pressed
+fn spawn_player(
+ mut commands: Commands,
+ players: Query<&PlayerId, With<PlayerPosition>>,
+ metadata: Res<GlobalMetadata>,
+) {
+ // return early if we still don't have access to the client id
+ let Some(client_id) = metadata.client_id else {
+ return;
+ };
+
+ // Only spawn other players
+ for player_id in players.iter() {
+ if player_id.0 == client_id {
+ return;
+ }
+ }
+ info!("got spawn input");
+ commands.spawn((
+ PlayerBundle::new(client_id, Vec2::ZERO),
+ // IMPORTANT: this lets the server know that the entity is pre-predicted
+ // when the server replicates this entity; we will get a Confirmed entity which will use this entity
+ // as the Predicted version
+ ShouldBePredicted::default(),
+ ));
+}
diff --git a/src/networking/mod.rs b/src/networking/mod.rs
@@ -0,0 +1,176 @@
+use std::net::Ipv4Addr;
+
+use bevy::prelude::*;
+use bevy::render::RenderPlugin;
+use bevy::utils::Duration;
+
+use lightyear::{
+ client::components::Confirmed, prelude::*, shared::events::components::ComponentInsertEvent,
+};
+use serde::{Deserialize, Serialize};
+
+use crate::player::{AnimationIndices, AnimationTimer};
+
+use self::protocol::{Inputs, PlayerId, PlayerPosition};
+
+pub mod client;
+pub mod protocol;
+#[cfg(not(target_family = "wasm"))]
+pub mod server;
+
+pub fn shared_config() -> SharedConfig {
+ SharedConfig {
+ client_send_interval: Duration::default(),
+ server_send_interval: Duration::from_millis(40),
+ // server_send_interval: Duration::from_millis(100),
+ tick: TickConfig {
+ tick_duration: Duration::from_secs_f64(1.0 / 64.0),
+ },
+ }
+}
+
+pub struct SharedPlugin;
+
+impl Plugin for SharedPlugin {
+ fn build(&self, app: &mut App) {
+ if app.is_plugin_added::<RenderPlugin>() {
+ app.add_systems(PostUpdate, (draw_elements, spawn_tiles));
+ // app.add_plugins(LogDiagnosticsPlugin {
+ // filter: Some(vec![
+ // IoDiagnosticsPlugin::BYTES_IN,
+ // IoDiagnosticsPlugin::BYTES_OUT,
+ // ]),
+ // ..default()
+ // });
+ }
+ }
+}
+
+// This system defines how we update the player's positions when we receive an input
+pub(crate) fn shared_movement_behaviour(mut position: Mut<PlayerPosition>, input: &Inputs) {
+ const MOVE_SPEED: f32 = 10.0;
+ if let Inputs::Direction(direction) = input {
+ if direction.up {
+ position.y += MOVE_SPEED;
+ }
+ if direction.down {
+ position.y -= MOVE_SPEED;
+ }
+ if direction.left {
+ position.x -= MOVE_SPEED;
+ }
+ if direction.right {
+ position.x += MOVE_SPEED;
+ }
+ }
+}
+
+pub fn spawn_tiles(
+ mut commands: Commands,
+ asset_server: Res<AssetServer>,
+ mut texture_atlas_layouts: ResMut<Assets<TextureAtlasLayout>>,
+ mut new_players: EventReader<ComponentInsertEvent<PlayerId>>,
+) {
+ let texture = asset_server.load("tilesets/user.png");
+ let layout = TextureAtlasLayout::from_grid(Vec2::new(16.0, 16.0), 8, 8, None, None);
+ let texture_atlas_layout = texture_atlas_layouts.add(layout);
+
+ for player_event in new_players.read() {
+ let entity = player_event.entity();
+ info!("Spawning tile");
+ // Use only the subset of sprites in the sheet that make up the run animation
+ let animation_indices = AnimationIndices { first: 0, last: 3 };
+ let atlas = TextureAtlas {
+ layout: texture_atlas_layout.clone(),
+ index: animation_indices.first,
+ };
+ if let Some(mut e) = commands.get_entity(entity) {
+ e.with_children(|parent| {
+ parent.spawn((
+ AnimationTimer(Timer::from_seconds(0.3, TimerMode::Repeating)),
+ animation_indices,
+ SpriteSheetBundle {
+ transform: Transform::from_xyz(0., 0., 17.).with_scale(Vec3::splat(2.0)),
+ texture: texture.clone(),
+ atlas,
+ ..default()
+ },
+ ));
+ });
+ }
+ }
+}
+
+/// System that draws the player's boxes and cursors
+pub fn draw_elements(mut gizmos: Gizmos, players: Query<&PlayerPosition, Without<Confirmed>>) {
+ for position in &players {
+ gizmos.rect_2d(
+ Vec2::new(position.x, position.y),
+ 0.0,
+ Vec2::ONE * 40.0,
+ Color::GREEN,
+ );
+ }
+}
+
+#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
+pub enum ClientTransports {
+ #[cfg(not(target_family = "wasm"))]
+ Udp,
+ WebSocket,
+}
+
+#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
+pub enum ServerTransports {
+ Udp { local_port: u16 },
+ WebSocket { local_port: u16 },
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct ServerSettings {
+ /// If true, disable any rendering-related plugins
+ pub headless: bool,
+
+ /// If true, enable bevy_inspector_egui
+ pub inspector: bool,
+
+ /// Which transport to use
+ pub transport: Vec<ServerTransports>,
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct ClientSettings {
+ /// If true, enable bevy_inspector_egui
+ pub inspector: bool,
+
+ /// The client id
+ pub client_id: u64,
+
+ /// The client port to listen on
+ pub client_port: u16,
+
+ /// The ip address of the server
+ pub server_addr: Ipv4Addr,
+
+ /// The port of the server
+ pub server_port: u16,
+
+ /// Which transport to use
+ pub transport: ClientTransports,
+}
+
+#[derive(Copy, Clone, Debug, Deserialize, Serialize)]
+pub struct SharedSettings {
+ /// An id to identify the protocol version
+ pub protocol_id: u64,
+
+ /// a 32-byte array to authenticate via the Netcode.io protocol
+ pub private_key: [u8; 32],
+}
+
+#[derive(Debug, Clone, Deserialize, Serialize)]
+pub struct Settings {
+ pub server: ServerSettings,
+ pub client: ClientSettings,
+ pub shared: SharedSettings,
+}
diff --git a/src/networking/protocol.rs b/src/networking/protocol.rs
@@ -0,0 +1,82 @@
+use derive_more::{Add, Mul};
+
+use bevy::prelude::*;
+use lightyear::prelude::*;
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
+pub struct Direction {
+ pub(crate) up: bool,
+ pub(crate) down: bool,
+ pub(crate) left: bool,
+ pub(crate) right: bool,
+}
+
+impl Direction {
+ pub(crate) fn is_none(&self) -> bool {
+ !self.up && !self.down && !self.left && !self.right
+ }
+}
+
+#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
+pub enum Inputs {
+ Direction(Direction),
+ Delete,
+ Spawn,
+ // NOTE: we NEED to provide a None input so that the server can distinguish between lost input packets and 'None' inputs
+ None,
+}
+impl UserAction for Inputs {}
+
+#[derive(Message, Serialize, Deserialize, Clone, Debug, PartialEq)]
+pub struct Message1(pub usize);
+
+#[message_protocol(protocol = "MatrixRPGGameProto")]
+pub enum Messages {
+ Message1(Message1),
+}
+
+#[derive(Component, Message, Serialize, Deserialize, Clone, Debug, PartialEq)]
+pub struct PlayerId(pub ClientId);
+
+// `Deref` and `DerefMut` are from bevy
+// `Add` and `Mul` are from the derive_more crate
+#[derive(
+ Component, Message, Serialize, Deserialize, Clone, Debug, PartialEq, Deref, DerefMut, Add, Mul,
+)]
+pub struct PlayerPosition(pub Vec2);
+
+impl std::ops::Mul<f32> for &PlayerPosition {
+ type Output = PlayerPosition;
+
+ fn mul(self, rhs: f32) -> Self::Output {
+ PlayerPosition(self.0 * rhs)
+ }
+}
+
+#[component_protocol(protocol = "MatrixRPGGameProto")]
+pub enum Components {
+ #[sync(once)]
+ PlayerId(PlayerId),
+ #[sync(full)]
+ PlayerPosition(PlayerPosition),
+}
+
+#[derive(Channel)]
+pub struct Channel1;
+
+protocolize! {
+ Self = MatrixRPGGameProto,
+ Message = Messages,
+ Component = Components,
+ Input = Inputs,
+}
+
+pub(crate) fn protocol() -> MatrixRPGGameProto {
+ let mut protocol = MatrixRPGGameProto::default();
+ protocol.add_channel::<Channel1>(ChannelSettings {
+ mode: ChannelMode::OrderedReliable(ReliableSettings::default()),
+ ..default()
+ });
+ protocol
+}
diff --git a/src/networking/server.rs b/src/networking/server.rs
@@ -0,0 +1,185 @@
+use bevy::app::PluginGroupBuilder;
+use bevy::prelude::*;
+use bevy::utils::Duration;
+
+use lightyear::prelude::server::*;
+use lightyear::prelude::*;
+
+use crate::networking::shared_movement_behaviour;
+
+use super::{protocol::*, shared_config, SharedSettings};
+
+// Plugin group to add all server-related plugins
+pub struct ServerPluginGroup {
+ pub(crate) lightyear: ServerPlugin<MatrixRPGGameProto>,
+}
+
+impl ServerPluginGroup {
+ pub(crate) fn new(
+ transport_configs: Vec<TransportConfig>,
+ shared_settings: SharedSettings,
+ ) -> ServerPluginGroup {
+ // Step 1: create the io (transport + link conditioner)
+ let link_conditioner = LinkConditionerConfig {
+ incoming_latency: Duration::from_millis(200),
+ incoming_jitter: Duration::from_millis(20),
+ incoming_loss: 0.05,
+ };
+ let mut net_configs = vec![];
+ for transport_config in transport_configs {
+ net_configs.push(NetConfig::Netcode {
+ config: NetcodeConfig::default()
+ .with_protocol_id(shared_settings.protocol_id)
+ .with_key(shared_settings.private_key),
+ io: IoConfig::from_transport(transport_config)
+ .with_conditioner(link_conditioner.clone()),
+ });
+ }
+
+ // Step 2: define the server configuration
+ let config = ServerConfig {
+ shared: shared_config(),
+ net: net_configs,
+ ..default()
+ };
+
+ // Step 3: create the plugin
+ let plugin_config = PluginConfig::new(config, protocol());
+ ServerPluginGroup {
+ lightyear: ServerPlugin::new(plugin_config),
+ }
+ }
+}
+
+impl PluginGroup for ServerPluginGroup {
+ fn build(self) -> PluginGroupBuilder {
+ PluginGroupBuilder::start::<Self>()
+ .add(self.lightyear)
+ .add(MatrixRPGServerPlugin)
+ .add(super::SharedPlugin)
+ }
+}
+
+// Plugin for server-specific logic
+pub struct MatrixRPGServerPlugin;
+
+impl Plugin for MatrixRPGServerPlugin {
+ fn build(&self, app: &mut App) {
+ app.add_systems(Startup, init);
+ // Re-adding Replicate components to client-replicated entities must be done in this set for proper handling.
+ app.add_systems(
+ PreUpdate,
+ (replicate_players).in_set(MainSet::ClientReplication),
+ );
+ // the physics/FixedUpdates systems that consume inputs should be run in this set
+ app.add_systems(FixedUpdate, movement);
+ //app.add_systems(Update, send_message);
+ app.add_systems(Update, handle_disconnections);
+ }
+}
+
+pub(crate) fn init(mut commands: Commands) {
+ commands.spawn(Camera2dBundle::default());
+ commands.spawn(TextBundle::from_section(
+ "Server",
+ TextStyle {
+ font_size: 30.0,
+ color: Color::WHITE,
+ ..default()
+ },
+ ));
+}
+
+/// Server disconnection system, delete all player entities upon disconnection
+pub(crate) fn handle_disconnections(
+ mut disconnections: EventReader<DisconnectEvent>,
+ mut commands: Commands,
+ player_entities: Query<(Entity, &PlayerId)>,
+) {
+ for disconnection in disconnections.read() {
+ let client_id = disconnection.context();
+ for (entity, player_id) in player_entities.iter() {
+ if player_id.0 == *client_id {
+ commands.entity(entity).despawn();
+ }
+ }
+ }
+}
+
+/// Read client inputs and move players
+pub(crate) fn movement(
+ mut position_query: Query<(&mut PlayerPosition, &PlayerId)>,
+ mut input_reader: EventReader<InputEvent<Inputs>>,
+ tick_manager: Res<TickManager>,
+) {
+ for input in input_reader.read() {
+ let client_id = input.context();
+ if let Some(input) = input.input() {
+ debug!(
+ "Receiving input: {:?} from client: {:?} on tick: {:?}",
+ input,
+ client_id,
+ tick_manager.tick()
+ );
+
+ for (position, player_id) in position_query.iter_mut() {
+ if player_id.0 == *client_id {
+ // NOTE: be careful to directly pass Mut<PlayerPosition>
+ // getting a mutable reference triggers change detection, unless you use `as_deref_mut()`
+ shared_movement_behaviour(position, input);
+ }
+ }
+ }
+ }
+}
+
+// // NOTE: you can use either:
+// // - ServerMut (which is a wrapper around a bunch of resources used in lightyear)
+// // - ResMut<ConnectionManager>, which is the actual resource used to send the message in this case. This is more optimized
+// // because it enables more parallelism
+// /// Send messages from server to clients (only in non-headless mode, because otherwise we run with minimal plugins
+// /// and cannot do input handling)
+// pub(crate) fn send_message(
+// mut server: ResMut<ServerConnectionManager>,
+// input: Option<Res<ButtonInput<KeyCode>>>,
+// ) {
+// if input.is_some_and(|input| input.pressed(KeyCode::KeyM)) {
+// let message = Message1(5);
+// info!("Send message: {:?}", message);
+// server
+// .send_message_to_target::<Channel1, Message1>(Message1(5), NetworkTarget::All)
+// .unwrap_or_else(|e| {
+// error!("Failed to send message: {:?}", e);
+// });
+// }
+// }
+
+// Replicate the pre-spawned entities back to the client
+// Note that this needs to run before FixedUpdate, since we handle client inputs in the FixedUpdate schedule (subject to change)
+// And we want to handle deletion properly
+pub(crate) fn replicate_players(
+ mut commands: Commands,
+ mut player_spawn_reader: EventReader<ComponentInsertEvent<PlayerPosition>>,
+) {
+ for event in player_spawn_reader.read() {
+ debug!("received player spawn event: {:?}", event);
+ let client_id = event.context();
+ let entity = event.entity();
+
+ // for all cursors we have received, add a Replicate component so that we can start replicating it
+ // to other clients
+ if let Some(mut e) = commands.get_entity(entity) {
+ e.insert(Replicate {
+ // we want to replicate back to the original client, since they are using a pre-spawned entity
+ replication_target: NetworkTarget::All,
+ // NOTE: even with a pre-spawned Predicted entity, we need to specify who will run prediction
+ // NOTE: Be careful to not override the pre-spawned prediction! we do not need to enable prediction
+ // because there is a pre-spawned predicted entity
+ prediction_target: NetworkTarget::Only(vec![*client_id]),
+ // we want the other clients to apply interpolation for the player
+ interpolation_target: NetworkTarget::AllExcept(vec![*client_id]),
+ ..default()
+ });
+ }
+ }
+}
diff --git a/src/player.rs b/src/player.rs
@@ -0,0 +1,60 @@
+use bevy::prelude::*;
+use lightyear::{connection::netcode::ClientId, shared::replication::components::NetworkTarget};
+
+use crate::networking::protocol::{PlayerId, PlayerPosition, Replicate};
+
+/// Plugin for spawning the player and controlling them.
+pub struct PlayerPlugin;
+
+impl Plugin for PlayerPlugin {
+ fn build(&self, app: &mut App) {
+ app.add_systems(Update, animate_sprite);
+ }
+}
+
+#[derive(Component)]
+pub struct AnimationIndices {
+ pub first: usize,
+ pub last: usize,
+}
+
+#[derive(Component, Deref, DerefMut)]
+pub struct AnimationTimer(pub Timer);
+
+fn animate_sprite(
+ time: Res<Time>,
+ mut query: Query<(&AnimationIndices, &mut AnimationTimer, &mut TextureAtlas)>,
+) {
+ for (indices, mut timer, mut atlas) in &mut query {
+ timer.tick(time.delta());
+ if timer.just_finished() {
+ atlas.index = if atlas.index == indices.last {
+ indices.first
+ } else {
+ atlas.index + 1
+ };
+ }
+ }
+}
+
+#[derive(Bundle)]
+pub struct PlayerBundle {
+ id: PlayerId,
+ pub position: PlayerPosition,
+ replicate: Replicate,
+}
+
+impl PlayerBundle {
+ pub(crate) fn new(id: ClientId, position: Vec2) -> Self {
+ Self {
+ id: PlayerId(id),
+ position: PlayerPosition(position),
+ replicate: Replicate {
+ // prediction_target: NetworkTarget::None,
+ prediction_target: NetworkTarget::Only(vec![id]),
+ interpolation_target: NetworkTarget::AllExcept(vec![id]),
+ ..default()
+ },
+ }
+ }
+}
diff --git a/src/wall.rs b/src/wall.rs
@@ -0,0 +1,10 @@
+use bevy::prelude::*;
+use bevy_ecs_ldtk::prelude::*;
+
+#[derive(Default, Component)]
+pub struct Wall;
+
+#[derive(Default, Bundle, LdtkIntCell)]
+pub struct WallBundle {
+ wall: Wall,
+}