From 6a5efcda986b7944dc1549ca976b6f93b5db04cd Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 13 Mar 2020 15:41:50 -0700 Subject: [PATCH 1/3] Update `wasi-tests` to test multiple versions of WASI This change also cleans up the `wasi-test` generation a bit. It's actually still really, really messy, but at least now it's split up into easier to understand chunks. There's still a lot of low-hanging fruit in terms of improving the readibilty and maintainability of the code. --- Cargo.lock | 1 + Makefile | 20 +- lib/wasi-tests/Cargo.toml | 1 + lib/wasi-tests/build/mod.rs | 11 +- lib/wasi-tests/build/set_up_toolchain.rs | 31 +++ lib/wasi-tests/build/util.rs | 22 ++ lib/wasi-tests/build/wasi_version.rs | 29 ++ lib/wasi-tests/build/wasitests.rs | 263 ++++++++++++------ lib/wasi-tests/src/lib.rs | 2 +- lib/wasi-tests/tests/wasitests/mod.rs | 69 +++-- .../wasitests/snapshot1_close_preopen_fd.rs | 19 ++ .../tests/wasitests/snapshot1_create_dir.rs | 15 + .../tests/wasitests/snapshot1_envvar.rs | 15 + .../tests/wasitests/snapshot1_fd_allocate.rs | 19 ++ .../tests/wasitests/snapshot1_fd_append.rs | 18 ++ .../tests/wasitests/snapshot1_fd_close.rs | 19 ++ .../tests/wasitests/snapshot1_fd_pread.rs | 19 ++ .../tests/wasitests/snapshot1_fd_read.rs | 19 ++ .../tests/wasitests/snapshot1_fd_sync.rs | 18 ++ .../wasitests/snapshot1_file_metadata.rs | 15 + .../wasitests/snapshot1_fs_sandbox_test.rs | 15 + .../tests/wasitests/snapshot1_fseek.rs | 18 ++ .../tests/wasitests/snapshot1_hello.rs | 15 + .../tests/wasitests/snapshot1_isatty.rs | 15 + .../tests/wasitests/snapshot1_mapdir.rs | 18 ++ .../tests/wasitests/snapshot1_path_link.rs | 24 ++ .../tests/wasitests/snapshot1_path_rename.rs | 18 ++ .../tests/wasitests/snapshot1_path_symlink.rs | 24 ++ .../tests/wasitests/snapshot1_poll_oneoff.rs | 25 ++ .../tests/wasitests/snapshot1_quine.rs | 15 + .../tests/wasitests/snapshot1_readlink.rs | 18 ++ .../snapshot1_wasi_sees_virtual_root.rs | 28 ++ .../tests/wasitests/snapshot1_writing.rs | 28 ++ ...pen_fd.rs => unstable_close_preopen_fd.rs} | 6 +- .../{create_dir.rs => unstable_create_dir.rs} | 6 +- .../{envvar.rs => unstable_envvar.rs} | 6 +- ...fd_allocate.rs => unstable_fd_allocate.rs} | 6 +- .../{fd_append.rs => unstable_fd_append.rs} | 6 +- .../{fd_close.rs => unstable_fd_close.rs} | 6 +- .../{fd_pread.rs => unstable_fd_pread.rs} | 6 +- .../{fd_read.rs => unstable_fd_read.rs} | 6 +- .../{fd_sync.rs => unstable_fd_sync.rs} | 6 +- ..._metadata.rs => unstable_file_metadata.rs} | 6 +- ...ox_test.rs => unstable_fs_sandbox_test.rs} | 6 +- .../wasitests/{fseek.rs => unstable_fseek.rs} | 6 +- .../wasitests/{hello.rs => unstable_hello.rs} | 6 +- .../{isatty.rs => unstable_isatty.rs} | 6 +- .../{mapdir.rs => unstable_mapdir.rs} | 6 +- .../{path_link.rs => unstable_path_link.rs} | 6 +- ...path_rename.rs => unstable_path_rename.rs} | 6 +- ...th_symlink.rs => unstable_path_symlink.rs} | 6 +- ...poll_oneoff.rs => unstable_poll_oneoff.rs} | 6 +- .../wasitests/{quine.rs => unstable_quine.rs} | 6 +- .../{readlink.rs => unstable_readlink.rs} | 6 +- ....rs => unstable_wasi_sees_virtual_root.rs} | 6 +- .../{writing.rs => unstable_writing.rs} | 6 +- .../wasitests/close_preopen_fd.wasm | Bin 71549 -> 0 bytes lib/wasi-tests/wasitests/create_dir.wasm | Bin 97044 -> 0 bytes lib/wasi-tests/wasitests/envvar.wasm | Bin 78953 -> 0 bytes lib/wasi-tests/wasitests/fd_allocate.wasm | Bin 81754 -> 0 bytes lib/wasi-tests/wasitests/fd_append.wasm | Bin 81710 -> 0 bytes lib/wasi-tests/wasitests/fd_close.wasm | Bin 82738 -> 0 bytes lib/wasi-tests/wasitests/fd_pread.wasm | Bin 81542 -> 0 bytes lib/wasi-tests/wasitests/fd_read.wasm | Bin 80914 -> 0 bytes lib/wasi-tests/wasitests/fd_sync.wasm | Bin 81885 -> 0 bytes lib/wasi-tests/wasitests/file_metadata.wasm | Bin 78946 -> 0 bytes lib/wasi-tests/wasitests/fs_sandbox_test.wasm | Bin 72279 -> 0 bytes lib/wasi-tests/wasitests/fseek.wasm | Bin 82625 -> 0 bytes lib/wasi-tests/wasitests/hello.wasm | Bin 71008 -> 0 bytes lib/wasi-tests/wasitests/ignores.txt | 7 +- lib/wasi-tests/wasitests/isatty.wasm | Bin 71573 -> 0 bytes lib/wasi-tests/wasitests/mapdir.wasm | Bin 84381 -> 0 bytes lib/wasi-tests/wasitests/path_link.wasm | Bin 81696 -> 0 bytes lib/wasi-tests/wasitests/path_rename.wasm | Bin 85780 -> 0 bytes lib/wasi-tests/wasitests/path_symlink.wasm | Bin 80571 -> 0 bytes lib/wasi-tests/wasitests/poll_oneoff.wasm | Bin 90399 -> 0 bytes lib/wasi-tests/wasitests/quine.wasm | Bin 80098 -> 0 bytes lib/wasi-tests/wasitests/readlink.wasm | Bin 81100 -> 0 bytes .../wasitests/snapshot1/close_preopen_fd.wasm | Bin 0 -> 61993 bytes .../wasitests/snapshot1/create_dir.wasm | Bin 0 -> 85641 bytes .../wasitests/snapshot1/envvar.wasm | Bin 0 -> 66017 bytes .../wasitests/snapshot1/fd_allocate.wasm | Bin 0 -> 71482 bytes .../wasitests/snapshot1/fd_append.wasm | Bin 0 -> 71341 bytes .../wasitests/snapshot1/fd_close.wasm | Bin 0 -> 71664 bytes .../wasitests/snapshot1/fd_pread.wasm | Bin 0 -> 70581 bytes .../wasitests/snapshot1/fd_read.wasm | Bin 0 -> 69992 bytes .../wasitests/snapshot1/fd_sync.wasm | Bin 0 -> 71718 bytes .../wasitests/snapshot1/file_metadata.wasm | Bin 0 -> 69036 bytes .../wasitests/snapshot1/fs_sandbox_test.wasm | Bin 0 -> 62337 bytes lib/wasi-tests/wasitests/snapshot1/fseek.wasm | Bin 0 -> 72098 bytes lib/wasi-tests/wasitests/snapshot1/hello.wasm | Bin 0 -> 61524 bytes .../wasitests/snapshot1/isatty.wasm | Bin 0 -> 61622 bytes .../wasitests/snapshot1/mapdir.wasm | Bin 0 -> 73403 bytes .../wasitests/snapshot1/path_link.wasm | Bin 0 -> 72456 bytes .../wasitests/snapshot1/path_rename.wasm | Bin 0 -> 76005 bytes .../wasitests/snapshot1/path_symlink.wasm | Bin 0 -> 70632 bytes .../wasitests/snapshot1/poll_oneoff.wasm | Bin 0 -> 77974 bytes lib/wasi-tests/wasitests/snapshot1/quine.wasm | Bin 0 -> 70081 bytes .../wasitests/snapshot1/readlink.wasm | Bin 0 -> 72086 bytes .../snapshot1/wasi_sees_virtual_root.wasm | Bin 0 -> 73219 bytes .../wasitests/snapshot1/writing.wasm | Bin 0 -> 72360 bytes .../wasitests/unstable/close_preopen_fd.wasm | Bin 0 -> 62848 bytes .../wasitests/unstable/create_dir.wasm | Bin 0 -> 84883 bytes lib/wasi-tests/wasitests/unstable/envvar.wasm | Bin 0 -> 67300 bytes .../wasitests/unstable/fd_allocate.wasm | Bin 0 -> 71389 bytes .../wasitests/unstable/fd_append.wasm | Bin 0 -> 71422 bytes .../wasitests/unstable/fd_close.wasm | Bin 0 -> 71938 bytes .../wasitests/unstable/fd_pread.wasm | Bin 0 -> 71109 bytes .../wasitests/unstable/fd_read.wasm | Bin 0 -> 70527 bytes .../wasitests/unstable/fd_sync.wasm | Bin 0 -> 71515 bytes .../wasitests/unstable/file_metadata.wasm | Bin 0 -> 69039 bytes .../wasitests/unstable/fs_sandbox_test.wasm | Bin 0 -> 63174 bytes lib/wasi-tests/wasitests/unstable/fseek.wasm | Bin 0 -> 72203 bytes lib/wasi-tests/wasitests/unstable/hello.wasm | Bin 0 -> 62381 bytes lib/wasi-tests/wasitests/unstable/isatty.wasm | Bin 0 -> 62475 bytes lib/wasi-tests/wasitests/unstable/mapdir.wasm | Bin 0 -> 73768 bytes .../wasitests/unstable/path_link.wasm | Bin 0 -> 71315 bytes .../wasitests/unstable/path_rename.wasm | Bin 0 -> 74740 bytes .../wasitests/unstable/path_symlink.wasm | Bin 0 -> 70381 bytes .../wasitests/unstable/poll_oneoff.wasm | Bin 0 -> 78310 bytes lib/wasi-tests/wasitests/unstable/quine.wasm | Bin 0 -> 69976 bytes .../wasitests/unstable/readlink.wasm | Bin 0 -> 70835 bytes .../unstable/wasi_sees_virtual_root.wasm | Bin 0 -> 73557 bytes .../wasitests/unstable/writing.wasm | Bin 0 -> 71395 bytes .../wasitests/wasi_sees_virtual_root.wasm | Bin 84410 -> 0 bytes lib/wasi-tests/wasitests/writing.wasm | Bin 81812 -> 0 bytes 126 files changed, 853 insertions(+), 178 deletions(-) create mode 100644 lib/wasi-tests/build/set_up_toolchain.rs create mode 100644 lib/wasi-tests/build/util.rs create mode 100644 lib/wasi-tests/build/wasi_version.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_close_preopen_fd.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_create_dir.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_envvar.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_allocate.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_append.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_close.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_pread.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_read.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fd_sync.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_file_metadata.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fs_sandbox_test.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_fseek.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_hello.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_isatty.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_mapdir.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_path_link.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_path_rename.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_path_symlink.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_poll_oneoff.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_quine.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_readlink.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_wasi_sees_virtual_root.rs create mode 100644 lib/wasi-tests/tests/wasitests/snapshot1_writing.rs rename lib/wasi-tests/tests/wasitests/{close_preopen_fd.rs => unstable_close_preopen_fd.rs} (75%) rename lib/wasi-tests/tests/wasitests/{create_dir.rs => unstable_create_dir.rs} (73%) rename lib/wasi-tests/tests/wasitests/{envvar.rs => unstable_envvar.rs} (75%) rename lib/wasi-tests/tests/wasitests/{fd_allocate.rs => unstable_fd_allocate.rs} (76%) rename lib/wasi-tests/tests/wasitests/{fd_append.rs => unstable_fd_append.rs} (77%) rename lib/wasi-tests/tests/wasitests/{fd_close.rs => unstable_fd_close.rs} (78%) rename lib/wasi-tests/tests/wasitests/{fd_pread.rs => unstable_fd_pread.rs} (78%) rename lib/wasi-tests/tests/wasitests/{fd_read.rs => unstable_fd_read.rs} (78%) rename lib/wasi-tests/tests/wasitests/{fd_sync.rs => unstable_fd_sync.rs} (78%) rename lib/wasi-tests/tests/wasitests/{file_metadata.rs => unstable_file_metadata.rs} (71%) rename lib/wasi-tests/tests/wasitests/{fs_sandbox_test.rs => unstable_fs_sandbox_test.rs} (68%) rename lib/wasi-tests/tests/wasitests/{fseek.rs => unstable_fseek.rs} (79%) rename lib/wasi-tests/tests/wasitests/{hello.rs => unstable_hello.rs} (73%) rename lib/wasi-tests/tests/wasitests/{isatty.rs => unstable_isatty.rs} (72%) rename lib/wasi-tests/tests/wasitests/{mapdir.rs => unstable_mapdir.rs} (78%) rename lib/wasi-tests/tests/wasitests/{path_link.rs => unstable_path_link.rs} (83%) rename lib/wasi-tests/tests/wasitests/{path_rename.rs => unstable_path_rename.rs} (76%) rename lib/wasi-tests/tests/wasitests/{path_symlink.rs => unstable_path_symlink.rs} (82%) rename lib/wasi-tests/tests/wasitests/{poll_oneoff.rs => unstable_poll_oneoff.rs} (82%) rename lib/wasi-tests/tests/wasitests/{quine.rs => unstable_quine.rs} (75%) rename lib/wasi-tests/tests/wasitests/{readlink.rs => unstable_readlink.rs} (78%) rename lib/wasi-tests/tests/wasitests/{wasi_sees_virtual_root.rs => unstable_wasi_sees_virtual_root.rs} (82%) rename lib/wasi-tests/tests/wasitests/{writing.rs => unstable_writing.rs} (87%) delete mode 100755 lib/wasi-tests/wasitests/close_preopen_fd.wasm delete mode 100755 lib/wasi-tests/wasitests/create_dir.wasm delete mode 100755 lib/wasi-tests/wasitests/envvar.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_allocate.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_append.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_close.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_pread.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_read.wasm delete mode 100755 lib/wasi-tests/wasitests/fd_sync.wasm delete mode 100755 lib/wasi-tests/wasitests/file_metadata.wasm delete mode 100755 lib/wasi-tests/wasitests/fs_sandbox_test.wasm delete mode 100755 lib/wasi-tests/wasitests/fseek.wasm delete mode 100755 lib/wasi-tests/wasitests/hello.wasm delete mode 100755 lib/wasi-tests/wasitests/isatty.wasm delete mode 100755 lib/wasi-tests/wasitests/mapdir.wasm delete mode 100755 lib/wasi-tests/wasitests/path_link.wasm delete mode 100755 lib/wasi-tests/wasitests/path_rename.wasm delete mode 100755 lib/wasi-tests/wasitests/path_symlink.wasm delete mode 100755 lib/wasi-tests/wasitests/poll_oneoff.wasm delete mode 100755 lib/wasi-tests/wasitests/quine.wasm delete mode 100755 lib/wasi-tests/wasitests/readlink.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/close_preopen_fd.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/create_dir.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/envvar.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_allocate.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_append.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_close.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_pread.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_read.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fd_sync.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/file_metadata.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fs_sandbox_test.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/fseek.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/hello.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/isatty.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/mapdir.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/path_link.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/path_rename.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/path_symlink.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/poll_oneoff.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/quine.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/readlink.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/wasi_sees_virtual_root.wasm create mode 100755 lib/wasi-tests/wasitests/snapshot1/writing.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/close_preopen_fd.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/create_dir.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/envvar.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_allocate.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_append.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_close.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_pread.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_read.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fd_sync.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/file_metadata.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fs_sandbox_test.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/fseek.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/hello.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/isatty.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/mapdir.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/path_link.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/path_rename.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/path_symlink.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/poll_oneoff.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/quine.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/readlink.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/wasi_sees_virtual_root.wasm create mode 100755 lib/wasi-tests/wasitests/unstable/writing.wasm delete mode 100755 lib/wasi-tests/wasitests/wasi_sees_virtual_root.wasm delete mode 100755 lib/wasi-tests/wasitests/writing.wasm diff --git a/Cargo.lock b/Cargo.lock index 3cd09fa0d47..53adf7572d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2133,6 +2133,7 @@ name = "wasmer-wasi-tests" version = "0.16.2" dependencies = [ "glob 0.3.0", + "tempfile", "wasmer-clif-backend", "wasmer-dev-utils", "wasmer-llvm-backend", diff --git a/Makefile b/Makefile index 7365279abe5..6c0441c0012 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: spectests emtests clean build install lint precommit docs examples +.PHONY: spectests emtests clean build install lint precommit docs examples # Generate files generate-spectests: @@ -11,15 +11,31 @@ generate-emtests: && echo "formatting" \ && cargo fmt +# To generate WASI tests you'll need to have the correct versions of the Rust nightly +# toolchain installed, see `WasiVersion::get_compiler_toolchain` in +# `lib/wasi-tests/build/wasi_version.rs` +# +# or run `make wasitests-setup-toolchain` or `make wasitests-setup-toolchain-all` generate-wasitests: wasitests-setup WASM_WASI_GENERATE_WASITESTS=1 cargo build -p wasmer-wasi-tests --release -vv \ && echo "formatting" \ && cargo fmt +generate-wasitests-all: wasitests-setup + WASI_TEST_GENERATE_ALL=1 WASM_WASI_GENERATE_WASITESTS=1 cargo build -p wasmer-wasi-tests --release -vv \ + && echo "formatting" \ + && cargo fmt + spectests-generate: generate-spectests emtests-generate: generate-emtests wasitests-generate: generate-wasitests +wasitests-setup-toolchain: wasitests-setup + WASITESTS_SET_UP_TOOLCHAIN=1 cargo build -p wasmer-wasi-tests --release -vv + +wasitests-setup-toolchain-all: wasitests-setup + WASI_TEST_GENERATE_ALL=1 WASITESTS_SET_UP_TOOLCHAIN=1 cargo build -p wasmer-wasi-tests --release -vv + generate: generate-spectests generate-emtests generate-wasitests @@ -67,6 +83,8 @@ middleware: middleware-singlepass middleware-cranelift middleware-llvm # Wasitests wasitests-setup: +# force cargo to rerun the build.rs step + touch lib/wasi-tests/build/mod.rs rm -rf lib/wasi-tests/wasitests/test_fs/temp mkdir -p lib/wasi-tests/wasitests/test_fs/temp diff --git a/lib/wasi-tests/Cargo.toml b/lib/wasi-tests/Cargo.toml index 3a542ab7a71..402fd599451 100644 --- a/lib/wasi-tests/Cargo.toml +++ b/lib/wasi-tests/Cargo.toml @@ -19,6 +19,7 @@ wasmer-llvm-backend = { path = "../llvm-backend", version = "0.16.2", features = [build-dependencies] glob = "0.3" +tempfile = "3" [dev-dependencies] wasmer-dev-utils = { path = "../dev-utils", version = "0.16.2"} diff --git a/lib/wasi-tests/build/mod.rs b/lib/wasi-tests/build/mod.rs index 778ae9ea593..d7ad095fba9 100644 --- a/lib/wasi-tests/build/mod.rs +++ b/lib/wasi-tests/build/mod.rs @@ -1,11 +1,20 @@ use std::env; +mod set_up_toolchain; +mod util; +mod wasi_version; mod wasitests; static WASITESTS_ENV_VAR: &str = "WASM_WASI_GENERATE_WASITESTS"; +static WASITESTS_SET_UP_TOOLCHAIN: &str = "WASM_WASI_SET_UP_TOOLCHAIN"; fn main() { + let do_all_wasi_tests = util::should_operate_on_all_wasi_tests(); + if env::var(WASITESTS_SET_UP_TOOLCHAIN).unwrap_or("0".to_string()) == "1" { + set_up_toolchain::set_it_up(do_all_wasi_tests); + } + if env::var(WASITESTS_ENV_VAR).unwrap_or("0".to_string()) == "1" { - wasitests::build(); + wasitests::build(do_all_wasi_tests); } } diff --git a/lib/wasi-tests/build/set_up_toolchain.rs b/lib/wasi-tests/build/set_up_toolchain.rs new file mode 100644 index 00000000000..6add53c70dd --- /dev/null +++ b/lib/wasi-tests/build/set_up_toolchain.rs @@ -0,0 +1,31 @@ +use crate::util; +use crate::wasi_version::*; + +use std::process::Command; + +fn install_toolchain(toolchain_name: &str) { + println!("Installing rustup toolchain: {}", toolchain_name); + let rustup_out = Command::new("rustup") + .arg("toolchain") + .arg("install") + .arg(toolchain_name) + .output() + .expect("Failed to install toolchain with rustup"); + util::print_info_on_error(&rustup_out, "TOOLCHAIN INSTALL FAILED"); +} + +pub fn set_it_up(only_latest: bool) { + println!("Setting up system to generate the WASI tests."); + println!("WARNING: this may use a lot of disk space."); + + let wasi_versions = if only_latest { + println!("Only installing the toolchain for the latest WASI version"); + LATEST_WASI_VERSION + } else { + println!("Installing the toolchain for all WASI versions"); + ALL_WASI_VERSIONS + }; + for wasi_version in wasi_versions { + install_toolchain(wasi_version.get_compiler_toolchain()); + } +} diff --git a/lib/wasi-tests/build/util.rs b/lib/wasi-tests/build/util.rs new file mode 100644 index 00000000000..b2d9ad14b04 --- /dev/null +++ b/lib/wasi-tests/build/util.rs @@ -0,0 +1,22 @@ +pub fn print_info_on_error(output: &std::process::Output, context: &str) { + if !output.status.success() { + println!("{}", context); + println!( + "stdout:\n{}", + std::str::from_utf8(&output.stdout[..]).unwrap() + ); + eprintln!( + "stderr:\n{}", + std::str::from_utf8(&output.stderr[..]).unwrap() + ); + } +} + +/// Whether or not we should operate on all WASI tests or not +pub fn should_operate_on_all_wasi_tests() -> bool { + std::env::var("WASI_TEST_GENERATE_ALL") + .ok() + .and_then(|s| s.parse::().ok()) + .unwrap_or(0) + == 1 +} diff --git a/lib/wasi-tests/build/wasi_version.rs b/lib/wasi-tests/build/wasi_version.rs new file mode 100644 index 00000000000..10abf6785e8 --- /dev/null +++ b/lib/wasi-tests/build/wasi_version.rs @@ -0,0 +1,29 @@ +pub static ALL_WASI_VERSIONS: &[WasiVersion] = &[WasiVersion::Unstable, WasiVersion::Snapshot1]; +pub static LATEST_WASI_VERSION: &[WasiVersion] = &[WasiVersion::get_latest()]; + +#[derive(Debug, Clone, Copy)] +pub enum WasiVersion { + /// A.K.A. Snapshot0 + Unstable, + Snapshot1, +} + +impl WasiVersion { + pub const fn get_latest() -> Self { + Self::Snapshot1 + } + + pub fn get_compiler_toolchain(&self) -> &'static str { + match self { + WasiVersion::Unstable => "nightly-2019-09-13", + WasiVersion::Snapshot1 => "nightly-2019-12-18", + } + } + + pub fn get_directory_name(&self) -> &'static str { + match self { + WasiVersion::Unstable => "unstable", + WasiVersion::Snapshot1 => "snapshot1", + } + } +} diff --git a/lib/wasi-tests/build/wasitests.rs b/lib/wasi-tests/build/wasitests.rs index 5ccda63c9fe..d7fd28798db 100644 --- a/lib/wasi-tests/build/wasitests.rs +++ b/lib/wasi-tests/build/wasitests.rs @@ -8,111 +8,160 @@ use glob::glob; use std::collections::HashSet; use std::fs; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::process::Command; use std::fs::File; use std::io::prelude::*; -use std::io::BufReader; +use std::io::{self, BufReader}; + +use crate::util; +use crate::wasi_version::*; static BANNER: &str = "// !!! THIS IS A GENERATED FILE !!! // ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME // Files autogenerated with cargo build (build/wasitests.rs).\n"; -pub fn compile(file: &str, ignores: &HashSet) -> Option { - let mut output_path = PathBuf::from(file); - output_path.set_extension("out"); - - assert!(file.ends_with(".rs")); - let normalized_name = { - let mut nn = file.to_lowercase(); - nn.truncate(file.len() - 3); - nn - }; - - println!("Compiling program {} to native", file); +/// Compile and execute the test file as native code, saving the results to be +/// compared against later. +/// +/// This function attempts to clean up its output after it executes it. +fn generate_native_output(temp_dir: &Path, file: &str, normalized_name: &str) -> io::Result<()> { + let executable_path = temp_dir.join(normalized_name); + println!( + "Compiling program {} to native at {}", + file, + executable_path.to_string_lossy() + ); let native_out = Command::new("rustc") .arg(file) .arg("-o") - .arg(&normalized_name) + .arg(&executable_path) .output() .expect("Failed to compile program to native code"); - print_info_on_error(&native_out, "COMPILATION FAILED"); + util::print_info_on_error(&native_out, "COMPILATION FAILED"); #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; - let normal_path = PathBuf::from(&normalized_name); - let mut perm = normal_path + let mut perm = executable_path .metadata() .expect("native executable") .permissions(); perm.set_mode(0o766); - fs::set_permissions(normal_path, perm).expect("set permissions"); + println!( + "Setting execute permissions on {}", + executable_path.to_string_lossy() + ); + fs::set_permissions(&executable_path, perm)?; } - let rs_module_name = { - let temp = PathBuf::from(&normalized_name); - temp.file_name().unwrap().to_string_lossy().to_string() - }; - let result = Command::new(&normalized_name) + let result = Command::new(&executable_path) .output() .expect("Failed to execute native program"); - print_info_on_error(&result, "NATIVE PROGRAM FAILED"); + util::print_info_on_error(&result, "NATIVE PROGRAM FAILED"); - std::fs::remove_file(&normalized_name).expect("could not delete executable"); - let wasm_out_name = format!("{}.wasm", &normalized_name); + let mut output_path = executable_path.clone(); + output_path.set_extension("out"); - let mut file_contents = String::new(); - { - let mut file = std::fs::File::open(file).unwrap(); - file.read_to_string(&mut file_contents).unwrap(); + println!("Writing output to {}", output_path.to_string_lossy()); + fs::write(&output_path, result.stdout)?; + Ok(()) +} + +/// compile the Wasm file for the given version of WASI +/// +/// returns the path of where the wasm file is +fn compile_wasm_for_version( + temp_dir: &Path, + file: &str, + base_dir: &Path, + rs_mod_name: &str, + version: WasiVersion, +) -> io::Result { + let out_dir = base_dir.join(version.get_directory_name()); + if !out_dir.exists() { + fs::create_dir(&out_dir)?; } + let wasm_out_name = { + let mut wasm_out_name = out_dir.join(rs_mod_name); + wasm_out_name.set_extension("wasm"); + wasm_out_name + }; + println!("Reading contents from file `{}`", file); + let file_contents: String = { + let mut fc = String::new(); + let mut f = fs::OpenOptions::new().read(true).open(&file)?; + f.read_to_string(&mut fc)?; + fc + }; + + let temp_wasi_rs_file_name = temp_dir.join(format!("wasi_modified_version_{}.rs", rs_mod_name)); { - let mut actual_file = std::fs::OpenOptions::new() + let mut actual_file = fs::OpenOptions::new() .write(true) .truncate(true) - .open(file) - .unwrap(); - actual_file - .write_all(format!("#![feature(wasi_ext)]\n{}", &file_contents).as_bytes()) + .create(true) + .open(&temp_wasi_rs_file_name) .unwrap(); + actual_file.write_all(b"#![feature(wasi_ext)]\n").unwrap(); + actual_file.write_all(file_contents.as_bytes()).unwrap(); } + println!( + "Compiling wasm module `{}` with toolchain `{}`", + &wasm_out_name.to_string_lossy(), + version.get_compiler_toolchain() + ); let wasm_compilation_out = Command::new("rustc") - .arg("+nightly") + .arg(format!("+{}", version.get_compiler_toolchain())) .arg("--target=wasm32-wasi") .arg("-C") .arg("opt-level=z") - .arg(file) + .arg(&temp_wasi_rs_file_name) .arg("-o") .arg(&wasm_out_name) .output() - .expect("Failed to compile program to native code"); - print_info_on_error(&wasm_compilation_out, "WASM COMPILATION"); - { - let mut actual_file = std::fs::OpenOptions::new() - .write(true) - .truncate(true) - .open(file) - .unwrap(); - actual_file.write_all(file_contents.as_bytes()).unwrap(); - } + .expect("Failed to compile program to wasm"); + util::print_info_on_error(&wasm_compilation_out, "WASM COMPILATION"); + println!( + "Removing file `{}`", + &temp_wasi_rs_file_name.to_string_lossy() + ); // to prevent commiting huge binary blobs forever let wasm_strip_out = Command::new("wasm-strip") .arg(&wasm_out_name) .output() .expect("Failed to strip compiled wasm module"); - print_info_on_error(&wasm_strip_out, "STRIPPING WASM"); + util::print_info_on_error(&wasm_strip_out, "STRIPPING WASM"); + let wasm_opt_out = Command::new("wasm-opt") + .arg("-Oz") + .arg(&wasm_out_name) + .arg("-o") + .arg(&wasm_out_name) + .output() + .expect("Failed to optimize compiled wasm module with wasm-opt!"); + util::print_info_on_error(&wasm_opt_out, "OPTIMIZING WASM"); + + Ok(wasm_out_name) +} - let ignored = if ignores.contains(&rs_module_name) { +fn generate_test_file( + file: &str, + rs_module_name: &str, + wasm_out_name: &str, + version: WasiVersion, + ignores: &HashSet, +) -> io::Result { + let test_name = format!("{}_{}", version.get_directory_name(), rs_module_name); + let ignored = if ignores.contains(&test_name) || ignores.contains(rs_module_name) { "\n#[ignore]" } else { "" }; - let src_code = fs::read_to_string(file).expect("read src file"); + let src_code = fs::read_to_string(file)?; let args: Args = extract_args_from_source_file(&src_code).unwrap_or_default(); let mapdir_args = { @@ -156,10 +205,10 @@ pub fn compile(file: &str, ignores: &HashSet) -> Option { "{banner} #[test]{ignore} -fn test_{rs_module_name}() {{ +fn test_{test_name}() {{ assert_wasi_output!( \"../../{module_path}\", - \"{rs_module_name}\", + \"{test_name}\", {dir_args}, {mapdir_args}, {envvar_args}, @@ -170,39 +219,89 @@ fn test_{rs_module_name}() {{ banner = BANNER, ignore = ignored, module_path = wasm_out_name, - rs_module_name = rs_module_name, - test_output_path = format!("{}.out", normalized_name), + test_name = &test_name, + test_output_path = format!("wasitests/{}.out", rs_module_name), dir_args = dir_args, mapdir_args = mapdir_args, envvar_args = envvar_args ); let rust_test_filepath = format!( - concat!(env!("CARGO_MANIFEST_DIR"), "/tests/{}.rs"), - normalized_name, + concat!(env!("CARGO_MANIFEST_DIR"), "/tests/wasitests/{}.rs"), + &test_name, ); - fs::write(&rust_test_filepath, contents.as_bytes()).expect("writing test file"); - fs::write(&output_path, result.stdout).expect("writing output to file"); + fs::write(&rust_test_filepath, contents.as_bytes())?; + + Ok(test_name) +} + +/// Returns the a Vec of the test modules created +fn compile( + temp_dir: &Path, + file: &str, + ignores: &HashSet, + wasi_versions: &[WasiVersion], +) -> Vec { + // TODO: hook up compile_wasm_for_version, etc with new args + assert!(file.ends_with(".rs")); + let rs_mod_name = { + Path::new(&file.to_lowercase()) + .file_stem() + .unwrap() + .to_string_lossy() + .to_string() + }; + let base_dir = Path::new(file).parent().unwrap(); + generate_native_output(temp_dir, &file, &rs_mod_name).expect("Generate native output"); + let mut out = vec![]; + + for &version in wasi_versions { + let wasm_out_path = compile_wasm_for_version(temp_dir, file, base_dir, &rs_mod_name, version) + .expect(&format!("Could not compile Wasm to WASI version {:?}, perhaps you need to install the `{}` rust toolchain", version, version.get_compiler_toolchain())); + let wasm_out_name = wasm_out_path.to_string_lossy(); + let test_mod = generate_test_file(file, &rs_mod_name, &wasm_out_name, version, ignores) + .expect(&format!("generate test file {}", &rs_mod_name)); + out.push(test_mod); + } + + out +} + +fn run_prelude(should_gen_all: bool) -> &'static [WasiVersion] { + if should_gen_all { + println!( + "Generating WASI tests for all version of WASI. Run with WASI_TEST_GENERATE_ALL=0 to only generate the latest tests." + ); + } else { + println!( + "Generating WASI tests for the latest version of WASI. Run with WASI_TEST_GENERATE_ALL=1 to generate all versions of the tests." + ); + } - Some(rs_module_name) + if should_gen_all { + ALL_WASI_VERSIONS + } else { + LATEST_WASI_VERSION + } } -pub fn build() { +pub fn build(should_gen_all: bool) { let rust_test_modpath = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/wasitests/mod.rs"); let mut modules: Vec = Vec::new(); + let wasi_versions = run_prelude(should_gen_all); + let temp_dir = tempfile::TempDir::new().unwrap(); let ignores = read_ignore_list(); for entry in glob("wasitests/*.rs").unwrap() { match entry { Ok(path) => { let test = path.to_str().unwrap(); - if let Some(module_name) = compile(test, &ignores) { - modules.push(module_name); - } + modules.extend(compile(temp_dir.path(), test, &ignores, wasi_versions)); } Err(e) => println!("{:?}", e), } } + println!("All modules generated. Generating test harness."); modules.sort(); let mut modules: Vec = modules.iter().map(|m| format!("mod {};", m)).collect(); assert!(modules.len() > 0, "Expected > 0 modules found"); @@ -213,10 +312,24 @@ pub fn build() { modules.push("".to_string()); let modfile: String = modules.join("\n"); - let source = fs::read(&rust_test_modpath).unwrap(); - // We only modify the mod file if has changed - if source != modfile.as_bytes() { - fs::write(&rust_test_modpath, modfile.as_bytes()).unwrap(); + let should_regen: bool = { + if let Ok(mut f) = fs::File::open(&rust_test_modpath) { + let mut s = String::new(); + f.read_to_string(&mut s).unwrap(); + s != modfile + } else { + false + } + }; + if should_regen { + println!("Writing to `{}`", &rust_test_modpath); + let mut test_harness_file = fs::OpenOptions::new() + .write(true) + .create(true) + .truncate(true) + .open(&rust_test_modpath) + .unwrap(); + test_harness_file.write_all(modfile.as_bytes()).unwrap(); } } @@ -292,17 +405,3 @@ fn extract_args_from_source_file(source_code: &str) -> Option { } None } - -fn print_info_on_error(output: &std::process::Output, context: &str) { - if !output.status.success() { - println!("{}", context); - println!( - "stdout:\n{}", - std::str::from_utf8(&output.stdout[..]).unwrap() - ); - eprintln!( - "stderr:\n{}", - std::str::from_utf8(&output.stderr[..]).unwrap() - ); - } -} diff --git a/lib/wasi-tests/src/lib.rs b/lib/wasi-tests/src/lib.rs index 6bf3626dd71..b65021aeb04 100644 --- a/lib/wasi-tests/src/lib.rs +++ b/lib/wasi-tests/src/lib.rs @@ -15,7 +15,7 @@ fn serializing_works() { b"PATH=/bin".into_iter().cloned().collect(), b"GOROOT=$HOME/.cargo/bin".into_iter().cloned().collect(), ]; - let wasm_binary = include_bytes!("../wasitests/fd_read.wasm"); + let wasm_binary = include_bytes!("../wasitests/unstable/fd_read.wasm"); let module = compile(&wasm_binary[..]) .map_err(|e| format!("Can't compile module: {:?}", e)) .unwrap(); diff --git a/lib/wasi-tests/tests/wasitests/mod.rs b/lib/wasi-tests/tests/wasitests/mod.rs index 59092573ab2..8a3c6b27d40 100644 --- a/lib/wasi-tests/tests/wasitests/mod.rs +++ b/lib/wasi-tests/tests/wasitests/mod.rs @@ -5,26 +5,49 @@ // The _common module is not autogenerated. It provides common macros for the wasitests #[macro_use] mod _common; -mod close_preopen_fd; -mod create_dir; -mod envvar; -mod fd_allocate; -mod fd_append; -mod fd_close; -mod fd_pread; -mod fd_read; -mod fd_sync; -mod file_metadata; -mod fs_sandbox_test; -mod fseek; -mod hello; -mod isatty; -mod mapdir; -mod path_link; -mod path_rename; -mod path_symlink; -mod poll_oneoff; -mod quine; -mod readlink; -mod wasi_sees_virtual_root; -mod writing; +mod snapshot1_close_preopen_fd; +mod snapshot1_create_dir; +mod snapshot1_envvar; +mod snapshot1_fd_allocate; +mod snapshot1_fd_append; +mod snapshot1_fd_close; +mod snapshot1_fd_pread; +mod snapshot1_fd_read; +mod snapshot1_fd_sync; +mod snapshot1_file_metadata; +mod snapshot1_fs_sandbox_test; +mod snapshot1_fseek; +mod snapshot1_hello; +mod snapshot1_isatty; +mod snapshot1_mapdir; +mod snapshot1_path_link; +mod snapshot1_path_rename; +mod snapshot1_path_symlink; +mod snapshot1_poll_oneoff; +mod snapshot1_quine; +mod snapshot1_readlink; +mod snapshot1_wasi_sees_virtual_root; +mod snapshot1_writing; +mod unstable_close_preopen_fd; +mod unstable_create_dir; +mod unstable_envvar; +mod unstable_fd_allocate; +mod unstable_fd_append; +mod unstable_fd_close; +mod unstable_fd_pread; +mod unstable_fd_read; +mod unstable_fd_sync; +mod unstable_file_metadata; +mod unstable_fs_sandbox_test; +mod unstable_fseek; +mod unstable_hello; +mod unstable_isatty; +mod unstable_mapdir; +mod unstable_path_link; +mod unstable_path_rename; +mod unstable_path_symlink; +mod unstable_poll_oneoff; +mod unstable_quine; +mod unstable_readlink; +mod unstable_wasi_sees_virtual_root; +mod unstable_writing; diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_close_preopen_fd.rs b/lib/wasi-tests/tests/wasitests/snapshot1_close_preopen_fd.rs new file mode 100644 index 00000000000..e887861c857 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_close_preopen_fd.rs @@ -0,0 +1,19 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_close_preopen_fd() { + assert_wasi_output!( + "../../wasitests/snapshot1/close_preopen_fd.wasm", + "snapshot1_close_preopen_fd", + vec![], + vec![( + "hamlet".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/close_preopen_fd.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_create_dir.rs b/lib/wasi-tests/tests/wasitests/snapshot1_create_dir.rs new file mode 100644 index 00000000000..629f7a220e3 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_create_dir.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_create_dir() { + assert_wasi_output!( + "../../wasitests/snapshot1/create_dir.wasm", + "snapshot1_create_dir", + vec![std::path::PathBuf::from("."),], + vec![], + vec![], + "../../wasitests/create_dir.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_envvar.rs b/lib/wasi-tests/tests/wasitests/snapshot1_envvar.rs new file mode 100644 index 00000000000..dbac0d47106 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_envvar.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_envvar() { + assert_wasi_output!( + "../../wasitests/snapshot1/envvar.wasm", + "snapshot1_envvar", + vec![], + vec![], + vec!["DOG=1".to_string(), "CAT=2".to_string(),], + "../../wasitests/envvar.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_allocate.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_allocate.rs new file mode 100644 index 00000000000..a3f1caf9daf --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_allocate.rs @@ -0,0 +1,19 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_fd_allocate() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_allocate.wasm", + "snapshot1_fd_allocate", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ),], + vec![], + "../../wasitests/fd_allocate.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_append.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_append.rs new file mode 100644 index 00000000000..a160be58d59 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_append.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_fd_append() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_append.wasm", + "snapshot1_fd_append", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ),], + vec![], + "../../wasitests/fd_append.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_close.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_close.rs new file mode 100644 index 00000000000..ab56e38742d --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_close.rs @@ -0,0 +1,19 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_fd_close() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_close.wasm", + "snapshot1_fd_close", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/fd_close.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_pread.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_pread.rs new file mode 100644 index 00000000000..77ea8123e70 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_pread.rs @@ -0,0 +1,19 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_fd_pread() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_pread.wasm", + "snapshot1_fd_pread", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/fd_pread.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_read.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_read.rs new file mode 100644 index 00000000000..58f63824942 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_read.rs @@ -0,0 +1,19 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_fd_read() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_read.wasm", + "snapshot1_fd_read", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/fd_read.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fd_sync.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fd_sync.rs new file mode 100644 index 00000000000..fcbb252a2b1 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fd_sync.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_fd_sync() { + assert_wasi_output!( + "../../wasitests/snapshot1/fd_sync.wasm", + "snapshot1_fd_sync", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ),], + vec![], + "../../wasitests/fd_sync.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_file_metadata.rs b/lib/wasi-tests/tests/wasitests/snapshot1_file_metadata.rs new file mode 100644 index 00000000000..b26b5cc44d0 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_file_metadata.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_file_metadata() { + assert_wasi_output!( + "../../wasitests/snapshot1/file_metadata.wasm", + "snapshot1_file_metadata", + vec![std::path::PathBuf::from("."),], + vec![], + vec![], + "../../wasitests/file_metadata.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fs_sandbox_test.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fs_sandbox_test.rs new file mode 100644 index 00000000000..c95842a1fd4 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fs_sandbox_test.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_fs_sandbox_test() { + assert_wasi_output!( + "../../wasitests/snapshot1/fs_sandbox_test.wasm", + "snapshot1_fs_sandbox_test", + vec![], + vec![], + vec![], + "../../wasitests/fs_sandbox_test.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_fseek.rs b/lib/wasi-tests/tests/wasitests/snapshot1_fseek.rs new file mode 100644 index 00000000000..8e1cbac625c --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_fseek.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_fseek() { + assert_wasi_output!( + "../../wasitests/snapshot1/fseek.wasm", + "snapshot1_fseek", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/fseek.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_hello.rs b/lib/wasi-tests/tests/wasitests/snapshot1_hello.rs new file mode 100644 index 00000000000..af895a2c765 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_hello.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_hello() { + assert_wasi_output!( + "../../wasitests/snapshot1/hello.wasm", + "snapshot1_hello", + vec![], + vec![], + vec![], + "../../wasitests/hello.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_isatty.rs b/lib/wasi-tests/tests/wasitests/snapshot1_isatty.rs new file mode 100644 index 00000000000..17cdf11aee9 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_isatty.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_isatty() { + assert_wasi_output!( + "../../wasitests/snapshot1/isatty.wasm", + "snapshot1_isatty", + vec![], + vec![], + vec![], + "../../wasitests/isatty.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_mapdir.rs b/lib/wasi-tests/tests/wasitests/snapshot1_mapdir.rs new file mode 100644 index 00000000000..32cfae71622 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_mapdir.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_mapdir() { + assert_wasi_output!( + "../../wasitests/snapshot1/mapdir.wasm", + "snapshot1_mapdir", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/mapdir.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_path_link.rs b/lib/wasi-tests/tests/wasitests/snapshot1_path_link.rs new file mode 100644 index 00000000000..ee99737b6f1 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_path_link.rs @@ -0,0 +1,24 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_path_link() { + assert_wasi_output!( + "../../wasitests/snapshot1/path_link.wasm", + "snapshot1_path_link", + vec![], + vec![ + ( + "act5".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act5") + ), + ( + "temp".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ), + ], + vec![], + "../../wasitests/path_link.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_path_rename.rs b/lib/wasi-tests/tests/wasitests/snapshot1_path_rename.rs new file mode 100644 index 00000000000..577165f49ca --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_path_rename.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_path_rename() { + assert_wasi_output!( + "../../wasitests/snapshot1/path_rename.wasm", + "snapshot1_path_rename", + vec![], + vec![( + "temp".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ),], + vec![], + "../../wasitests/path_rename.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_path_symlink.rs b/lib/wasi-tests/tests/wasitests/snapshot1_path_symlink.rs new file mode 100644 index 00000000000..923619ba34b --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_path_symlink.rs @@ -0,0 +1,24 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_path_symlink() { + assert_wasi_output!( + "../../wasitests/snapshot1/path_symlink.wasm", + "snapshot1_path_symlink", + vec![], + vec![ + ( + "temp".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ), + ( + "hamlet".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ), + ], + vec![], + "../../wasitests/path_symlink.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_poll_oneoff.rs b/lib/wasi-tests/tests/wasitests/snapshot1_poll_oneoff.rs new file mode 100644 index 00000000000..bc689194f88 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_poll_oneoff.rs @@ -0,0 +1,25 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +#[ignore] +fn test_snapshot1_poll_oneoff() { + assert_wasi_output!( + "../../wasitests/snapshot1/poll_oneoff.wasm", + "snapshot1_poll_oneoff", + vec![], + vec![ + ( + "hamlet".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ), + ( + "temp".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/temp") + ), + ], + vec![], + "../../wasitests/poll_oneoff.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_quine.rs b/lib/wasi-tests/tests/wasitests/snapshot1_quine.rs new file mode 100644 index 00000000000..71366923e4a --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_quine.rs @@ -0,0 +1,15 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_quine() { + assert_wasi_output!( + "../../wasitests/snapshot1/quine.wasm", + "snapshot1_quine", + vec![std::path::PathBuf::from("."),], + vec![], + vec![], + "../../wasitests/quine.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_readlink.rs b/lib/wasi-tests/tests/wasitests/snapshot1_readlink.rs new file mode 100644 index 00000000000..2b6c675b920 --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_readlink.rs @@ -0,0 +1,18 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_readlink() { + assert_wasi_output!( + "../../wasitests/snapshot1/readlink.wasm", + "snapshot1_readlink", + vec![], + vec![( + ".".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet") + ),], + vec![], + "../../wasitests/readlink.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_wasi_sees_virtual_root.rs b/lib/wasi-tests/tests/wasitests/snapshot1_wasi_sees_virtual_root.rs new file mode 100644 index 00000000000..626df39f93c --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_wasi_sees_virtual_root.rs @@ -0,0 +1,28 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_wasi_sees_virtual_root() { + assert_wasi_output!( + "../../wasitests/snapshot1/wasi_sees_virtual_root.wasm", + "snapshot1_wasi_sees_virtual_root", + vec![], + vec![ + ( + "act1".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act1") + ), + ( + "act2".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act2") + ), + ( + "act1-again".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act1") + ), + ], + vec![], + "../../wasitests/wasi_sees_virtual_root.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/snapshot1_writing.rs b/lib/wasi-tests/tests/wasitests/snapshot1_writing.rs new file mode 100644 index 00000000000..d48cc32edcc --- /dev/null +++ b/lib/wasi-tests/tests/wasitests/snapshot1_writing.rs @@ -0,0 +1,28 @@ +// !!! THIS IS A GENERATED FILE !!! +// ANY MANUAL EDITS MAY BE OVERWRITTEN AT ANY TIME +// Files autogenerated with cargo build (build/wasitests.rs). + +#[test] +fn test_snapshot1_writing() { + assert_wasi_output!( + "../../wasitests/snapshot1/writing.wasm", + "snapshot1_writing", + vec![], + vec![ + ( + "act1".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act1") + ), + ( + "act2".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act2") + ), + ( + "act1-again".to_string(), + ::std::path::PathBuf::from("wasitests/test_fs/hamlet/act1") + ), + ], + vec![], + "../../wasitests/writing.out" + ); +} diff --git a/lib/wasi-tests/tests/wasitests/close_preopen_fd.rs b/lib/wasi-tests/tests/wasitests/unstable_close_preopen_fd.rs similarity index 75% rename from lib/wasi-tests/tests/wasitests/close_preopen_fd.rs rename to lib/wasi-tests/tests/wasitests/unstable_close_preopen_fd.rs index 38089722d96..48f26dee8d1 100644 --- a/lib/wasi-tests/tests/wasitests/close_preopen_fd.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_close_preopen_fd.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_close_preopen_fd() { +fn test_unstable_close_preopen_fd() { assert_wasi_output!( - "../../wasitests/close_preopen_fd.wasm", - "close_preopen_fd", + "../../wasitests/unstable/close_preopen_fd.wasm", + "unstable_close_preopen_fd", vec![], vec![( "hamlet".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/create_dir.rs b/lib/wasi-tests/tests/wasitests/unstable_create_dir.rs similarity index 73% rename from lib/wasi-tests/tests/wasitests/create_dir.rs rename to lib/wasi-tests/tests/wasitests/unstable_create_dir.rs index 820cadd531c..bda8633f5cd 100644 --- a/lib/wasi-tests/tests/wasitests/create_dir.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_create_dir.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_create_dir() { +fn test_unstable_create_dir() { assert_wasi_output!( - "../../wasitests/create_dir.wasm", - "create_dir", + "../../wasitests/unstable/create_dir.wasm", + "unstable_create_dir", vec![std::path::PathBuf::from("."),], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/envvar.rs b/lib/wasi-tests/tests/wasitests/unstable_envvar.rs similarity index 75% rename from lib/wasi-tests/tests/wasitests/envvar.rs rename to lib/wasi-tests/tests/wasitests/unstable_envvar.rs index 9264b2ac7cf..0e0a8bfdd05 100644 --- a/lib/wasi-tests/tests/wasitests/envvar.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_envvar.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_envvar() { +fn test_unstable_envvar() { assert_wasi_output!( - "../../wasitests/envvar.wasm", - "envvar", + "../../wasitests/unstable/envvar.wasm", + "unstable_envvar", vec![], vec![], vec!["DOG=1".to_string(), "CAT=2".to_string(),], diff --git a/lib/wasi-tests/tests/wasitests/fd_allocate.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_allocate.rs similarity index 76% rename from lib/wasi-tests/tests/wasitests/fd_allocate.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_allocate.rs index a45232f7aad..b3904f35a66 100644 --- a/lib/wasi-tests/tests/wasitests/fd_allocate.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_allocate.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_allocate() { +fn test_unstable_fd_allocate() { assert_wasi_output!( - "../../wasitests/fd_allocate.wasm", - "fd_allocate", + "../../wasitests/unstable/fd_allocate.wasm", + "unstable_fd_allocate", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/fd_append.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_append.rs similarity index 77% rename from lib/wasi-tests/tests/wasitests/fd_append.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_append.rs index 0ac3ea6ebf8..e23f9ec7b98 100644 --- a/lib/wasi-tests/tests/wasitests/fd_append.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_append.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_append() { +fn test_unstable_fd_append() { assert_wasi_output!( - "../../wasitests/fd_append.wasm", - "fd_append", + "../../wasitests/unstable/fd_append.wasm", + "unstable_fd_append", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/fd_close.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_close.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/fd_close.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_close.rs index 8bff35789d7..b2e47e364b9 100644 --- a/lib/wasi-tests/tests/wasitests/fd_close.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_close.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_close() { +fn test_unstable_fd_close() { assert_wasi_output!( - "../../wasitests/fd_close.wasm", - "fd_close", + "../../wasitests/unstable/fd_close.wasm", + "unstable_fd_close", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/fd_pread.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_pread.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/fd_pread.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_pread.rs index 01af04a139a..2661028ecd6 100644 --- a/lib/wasi-tests/tests/wasitests/fd_pread.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_pread.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_pread() { +fn test_unstable_fd_pread() { assert_wasi_output!( - "../../wasitests/fd_pread.wasm", - "fd_pread", + "../../wasitests/unstable/fd_pread.wasm", + "unstable_fd_pread", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/fd_read.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_read.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/fd_read.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_read.rs index 92649604198..dc9e90a3bcb 100644 --- a/lib/wasi-tests/tests/wasitests/fd_read.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_read.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_read() { +fn test_unstable_fd_read() { assert_wasi_output!( - "../../wasitests/fd_read.wasm", - "fd_read", + "../../wasitests/unstable/fd_read.wasm", + "unstable_fd_read", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/fd_sync.rs b/lib/wasi-tests/tests/wasitests/unstable_fd_sync.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/fd_sync.rs rename to lib/wasi-tests/tests/wasitests/unstable_fd_sync.rs index 2540e503126..b8aca4143dc 100644 --- a/lib/wasi-tests/tests/wasitests/fd_sync.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fd_sync.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fd_sync() { +fn test_unstable_fd_sync() { assert_wasi_output!( - "../../wasitests/fd_sync.wasm", - "fd_sync", + "../../wasitests/unstable/fd_sync.wasm", + "unstable_fd_sync", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/file_metadata.rs b/lib/wasi-tests/tests/wasitests/unstable_file_metadata.rs similarity index 71% rename from lib/wasi-tests/tests/wasitests/file_metadata.rs rename to lib/wasi-tests/tests/wasitests/unstable_file_metadata.rs index c05595beaae..fef1e35e426 100644 --- a/lib/wasi-tests/tests/wasitests/file_metadata.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_file_metadata.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_file_metadata() { +fn test_unstable_file_metadata() { assert_wasi_output!( - "../../wasitests/file_metadata.wasm", - "file_metadata", + "../../wasitests/unstable/file_metadata.wasm", + "unstable_file_metadata", vec![std::path::PathBuf::from("."),], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/fs_sandbox_test.rs b/lib/wasi-tests/tests/wasitests/unstable_fs_sandbox_test.rs similarity index 68% rename from lib/wasi-tests/tests/wasitests/fs_sandbox_test.rs rename to lib/wasi-tests/tests/wasitests/unstable_fs_sandbox_test.rs index a1d1e4c4409..3caf3b299fe 100644 --- a/lib/wasi-tests/tests/wasitests/fs_sandbox_test.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fs_sandbox_test.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fs_sandbox_test() { +fn test_unstable_fs_sandbox_test() { assert_wasi_output!( - "../../wasitests/fs_sandbox_test.wasm", - "fs_sandbox_test", + "../../wasitests/unstable/fs_sandbox_test.wasm", + "unstable_fs_sandbox_test", vec![], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/fseek.rs b/lib/wasi-tests/tests/wasitests/unstable_fseek.rs similarity index 79% rename from lib/wasi-tests/tests/wasitests/fseek.rs rename to lib/wasi-tests/tests/wasitests/unstable_fseek.rs index 0cc896aa818..f24185fc02b 100644 --- a/lib/wasi-tests/tests/wasitests/fseek.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_fseek.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_fseek() { +fn test_unstable_fseek() { assert_wasi_output!( - "../../wasitests/fseek.wasm", - "fseek", + "../../wasitests/unstable/fseek.wasm", + "unstable_fseek", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/hello.rs b/lib/wasi-tests/tests/wasitests/unstable_hello.rs similarity index 73% rename from lib/wasi-tests/tests/wasitests/hello.rs rename to lib/wasi-tests/tests/wasitests/unstable_hello.rs index b9f28e7bc5d..9cbd7297b81 100644 --- a/lib/wasi-tests/tests/wasitests/hello.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_hello.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_hello() { +fn test_unstable_hello() { assert_wasi_output!( - "../../wasitests/hello.wasm", - "hello", + "../../wasitests/unstable/hello.wasm", + "unstable_hello", vec![], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/isatty.rs b/lib/wasi-tests/tests/wasitests/unstable_isatty.rs similarity index 72% rename from lib/wasi-tests/tests/wasitests/isatty.rs rename to lib/wasi-tests/tests/wasitests/unstable_isatty.rs index 55c97a60659..78138578834 100644 --- a/lib/wasi-tests/tests/wasitests/isatty.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_isatty.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_isatty() { +fn test_unstable_isatty() { assert_wasi_output!( - "../../wasitests/isatty.wasm", - "isatty", + "../../wasitests/unstable/isatty.wasm", + "unstable_isatty", vec![], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/mapdir.rs b/lib/wasi-tests/tests/wasitests/unstable_mapdir.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/mapdir.rs rename to lib/wasi-tests/tests/wasitests/unstable_mapdir.rs index 27064c8ae6b..180e8799684 100644 --- a/lib/wasi-tests/tests/wasitests/mapdir.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_mapdir.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_mapdir() { +fn test_unstable_mapdir() { assert_wasi_output!( - "../../wasitests/mapdir.wasm", - "mapdir", + "../../wasitests/unstable/mapdir.wasm", + "unstable_mapdir", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/path_link.rs b/lib/wasi-tests/tests/wasitests/unstable_path_link.rs similarity index 83% rename from lib/wasi-tests/tests/wasitests/path_link.rs rename to lib/wasi-tests/tests/wasitests/unstable_path_link.rs index b035811eadb..09d9762bc8f 100644 --- a/lib/wasi-tests/tests/wasitests/path_link.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_path_link.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_path_link() { +fn test_unstable_path_link() { assert_wasi_output!( - "../../wasitests/path_link.wasm", - "path_link", + "../../wasitests/unstable/path_link.wasm", + "unstable_path_link", vec![], vec![ ( diff --git a/lib/wasi-tests/tests/wasitests/path_rename.rs b/lib/wasi-tests/tests/wasitests/unstable_path_rename.rs similarity index 76% rename from lib/wasi-tests/tests/wasitests/path_rename.rs rename to lib/wasi-tests/tests/wasitests/unstable_path_rename.rs index f623d80ba40..83c5585645c 100644 --- a/lib/wasi-tests/tests/wasitests/path_rename.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_path_rename.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_path_rename() { +fn test_unstable_path_rename() { assert_wasi_output!( - "../../wasitests/path_rename.wasm", - "path_rename", + "../../wasitests/unstable/path_rename.wasm", + "unstable_path_rename", vec![], vec![( "temp".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/path_symlink.rs b/lib/wasi-tests/tests/wasitests/unstable_path_symlink.rs similarity index 82% rename from lib/wasi-tests/tests/wasitests/path_symlink.rs rename to lib/wasi-tests/tests/wasitests/unstable_path_symlink.rs index 2eeddc0a8d1..8bed0426d5b 100644 --- a/lib/wasi-tests/tests/wasitests/path_symlink.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_path_symlink.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_path_symlink() { +fn test_unstable_path_symlink() { assert_wasi_output!( - "../../wasitests/path_symlink.wasm", - "path_symlink", + "../../wasitests/unstable/path_symlink.wasm", + "unstable_path_symlink", vec![], vec![ ( diff --git a/lib/wasi-tests/tests/wasitests/poll_oneoff.rs b/lib/wasi-tests/tests/wasitests/unstable_poll_oneoff.rs similarity index 82% rename from lib/wasi-tests/tests/wasitests/poll_oneoff.rs rename to lib/wasi-tests/tests/wasitests/unstable_poll_oneoff.rs index 3200f4ad15a..8fc4b1ef3cf 100644 --- a/lib/wasi-tests/tests/wasitests/poll_oneoff.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_poll_oneoff.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_poll_oneoff() { +fn test_unstable_poll_oneoff() { assert_wasi_output!( - "../../wasitests/poll_oneoff.wasm", - "poll_oneoff", + "../../wasitests/unstable/poll_oneoff.wasm", + "unstable_poll_oneoff", vec![], vec![ ( diff --git a/lib/wasi-tests/tests/wasitests/quine.rs b/lib/wasi-tests/tests/wasitests/unstable_quine.rs similarity index 75% rename from lib/wasi-tests/tests/wasitests/quine.rs rename to lib/wasi-tests/tests/wasitests/unstable_quine.rs index c4139d95920..690704395e2 100644 --- a/lib/wasi-tests/tests/wasitests/quine.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_quine.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_quine() { +fn test_unstable_quine() { assert_wasi_output!( - "../../wasitests/quine.wasm", - "quine", + "../../wasitests/unstable/quine.wasm", + "unstable_quine", vec![std::path::PathBuf::from("."),], vec![], vec![], diff --git a/lib/wasi-tests/tests/wasitests/readlink.rs b/lib/wasi-tests/tests/wasitests/unstable_readlink.rs similarity index 78% rename from lib/wasi-tests/tests/wasitests/readlink.rs rename to lib/wasi-tests/tests/wasitests/unstable_readlink.rs index 22f72ff8160..66c1e1aaf41 100644 --- a/lib/wasi-tests/tests/wasitests/readlink.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_readlink.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_readlink() { +fn test_unstable_readlink() { assert_wasi_output!( - "../../wasitests/readlink.wasm", - "readlink", + "../../wasitests/unstable/readlink.wasm", + "unstable_readlink", vec![], vec![( ".".to_string(), diff --git a/lib/wasi-tests/tests/wasitests/wasi_sees_virtual_root.rs b/lib/wasi-tests/tests/wasitests/unstable_wasi_sees_virtual_root.rs similarity index 82% rename from lib/wasi-tests/tests/wasitests/wasi_sees_virtual_root.rs rename to lib/wasi-tests/tests/wasitests/unstable_wasi_sees_virtual_root.rs index ede1b0f38a4..df929306ad0 100644 --- a/lib/wasi-tests/tests/wasitests/wasi_sees_virtual_root.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_wasi_sees_virtual_root.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_wasi_sees_virtual_root() { +fn test_unstable_wasi_sees_virtual_root() { assert_wasi_output!( - "../../wasitests/wasi_sees_virtual_root.wasm", - "wasi_sees_virtual_root", + "../../wasitests/unstable/wasi_sees_virtual_root.wasm", + "unstable_wasi_sees_virtual_root", vec![], vec![ ( diff --git a/lib/wasi-tests/tests/wasitests/writing.rs b/lib/wasi-tests/tests/wasitests/unstable_writing.rs similarity index 87% rename from lib/wasi-tests/tests/wasitests/writing.rs rename to lib/wasi-tests/tests/wasitests/unstable_writing.rs index ce1a6a8c501..d964b29ff53 100644 --- a/lib/wasi-tests/tests/wasitests/writing.rs +++ b/lib/wasi-tests/tests/wasitests/unstable_writing.rs @@ -3,10 +3,10 @@ // Files autogenerated with cargo build (build/wasitests.rs). #[test] -fn test_writing() { +fn test_unstable_writing() { assert_wasi_output!( - "../../wasitests/writing.wasm", - "writing", + "../../wasitests/unstable/writing.wasm", + "unstable_writing", vec![], vec![ ( diff --git a/lib/wasi-tests/wasitests/close_preopen_fd.wasm b/lib/wasi-tests/wasitests/close_preopen_fd.wasm deleted file mode 100755 index 5badfb755e571991c6327b4c6938de49b27a8cb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71549 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 z 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 K1b&}R;J*OpXY$8x5fdq+8#E8ro736(? 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 diff --git a/lib/wasi-tests/wasitests/fd_allocate.wasm b/lib/wasi-tests/wasitests/fd_allocate.wasm deleted file mode 100755 index e604f6e407dd79236af05da43bf676975ec0752e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81754 zcmeFad%R^=Rp+~2d!K#I-sjY+SV&2gX6>E2dP*y%x*JpJA~t7MOC{-$2L0Ig+V^&U zlC(t3sSr{R1AQ;1PLc`)2oN+tkO)Btpb!ZVHDGKC441SGT=u}|$vDqg%F|F|hQdp+i3%rVD%jyYFy@xd3RNs^>DrBAykNiIqcCl_Uh52uH@ zO0T-8ILv?cB)KTJOCBG#OZ&O%Dt@dGzw;`5_^PX{dJl{psl%H!IOTGjr#qx=nn>S{a#X}^w-O1 zyWi^p1)Ze@&GmW=-87&9~D)VyC>m|UUc4%o( zXc#$7W>n9Xdi>d_Q5Qu5WP@xj1wz222{mPdJ|+8>1>OKG%~5?5&+Gpf$rb5=1HC*= zHuk?QKb(fOwWG=Ka1w6$Qs;N>oPPgBm%Ql32mW)GEL?cu3obr%@r9RM{(?LmUU=b; zUvlvk7yhS<4_=aI{R^3v1Ba3g#fvV!^zvleh6^uz@qtTUc_v7g|(&v3ReeT`azkO$V&Vd(SvH#$qz2AG*e>nfm>9hXT&FR1V{^$I_d2dfw z_S~4hF})={`%UQuuTF1BUz5HzeO>x*K9t^>F8@;c%jx%Q|L3Rg_(J;S^uhFx(l4eT z&#uk>HvQS`=d)L5f06!u`se9evv+2)9u=g&S@x?#i-c_`7*p z96oK0|B_Jdns9k_^%C($vDYYz{(vE4iswF zAMk6crR9fp4K8(kv~&GYT@U~D6bwa#p%4sNm6v}VdrzxkIUDHDsJ!0hs%YV;XoGG+ zTp@_*hv|u?vS}ex zeg2Hf_gMYTRK6xl^O~3$RCgXiabVobR`L~4oC~=jN3M*rVP&%fbu&+o3CN5h{?BGB zq~}n)SH4o6g~!wVVZ&aeQ&JV%vk{~e5J{tyW`JnYN6-~v^J-WMH?JL~{MPb~ap1-F ze6xzD;~de@X*z$-VvqKJR^>)Lho^k2-67xds(+rOXVqUF17g+RM}31imPv=hst@dc zCHNA(Y9{0&ut8Unxgk5x23@Q|5tD{5#H7@tBIU#=6A)WW00}xb+7YG)kphi2!zdIr zMQ&C#ak`PKM5~QrIQ&QN`Qj;Bi%joh0L7Xy#OU^{*p&~$JvI~H1J4gu!=1V*ZxGjl zEJmq^XO({->^-9^7CQU^HK)$f8m_RJ?-hcoWP6r$d$7i)duZj{@U#7vI&V!I^;sq1 zFAT!8e6!O^c-ZbYl{d%x`;*o38}WKG+9dD*xp1|SWLiG1SKP1Z9$oV@x{oBx>}(FH zz~$d^wpFsi>hl-b{^qNXQuV!Qc}u6Ox5sOQ?$4;nF(Xx%R;B#9w=P6H-w|Oi%eUz{ zC~ZsreQc)&xxCdMP-gRLd99k>m6zN-n5<$ZAi#iePqr)jVV>Q44UnCgJ)g@Xs&;0! zRYRcWnb}2lRdThNC&JDfeCXTra?g9yAA(_0e)s(DeED+KeTJ9fFGD&hsBVVko-#l; zr?VisIoGIr3&*^~O?DEIbO^5S8J{^&I1QtX z!eKOUmKL|MTk49=r96582&s|K@9d;~lqO_sY*F!%?#5!C(CNb#HphZP#xceml)e z*6I)4@Pmffw(%OllUV2WqWnbz@Jsn@f#zKN#D7gBEuE5PdC}|74dxeyqs65S<;Dc9 zgcJ;qzUAmz5*Eu3(RVW1=nwDtSv?%YhowKf(;k-bp)5zLzr!AGj1QOm;Z62%LwvaC z53ijnIr4{(+@g*~u_Ve$ZT`7EoR1F|{NW$k!@Bo*fB0#8xDZPY{NX3#-(?Snu}ze$9=_Ec)(Anz>fsygVGSq7f*!tVs(M87b@s65ZBnj$ zyRbc$7-zq_Y=y!%-XL_Pc6o;jY=&(5(~cRR)^ zRh+46`q@ce{4DFIO5p7sp%9F+pl1KW^eCigdgYq>pA=zj?VjYE#dO$!qW*SF5|yG^ zxo-1xq2{V$M}lDz4nLQ7sqCzAf>~v+<||r(tH%H`o|mzu%9&TLiqn%cJbVAxoWWD~ zj~8gn8lbh$rRURJQ7wf2p#w7-q~-C@8=Mz3Lk)Od8lDEBzK$kfs^n6xasrj zn1fzH*ox4aR{bfo@Y^7EB99+fg> zdi7!lKM(p7W;(o5ba`gBt(psmS0Rr9LlJrKs$xuM+0|CAD*6_^mG4*gP}q=BkBiZ0 z7`_J8gRc3dQwbZTNjl@dOwY2pVfbn?PO*6@o|L~DTVnL-fft7C$}o5E_C4a1`;#N% z(I~ebDELM%$oN&8X`fwT7;+<+6eBwd`yFsOQe@l03;$0H-_rLqiLl+BAk+UPq@PD?g~V?O}MU zJt`cicj~5mW!%TCW&#Tey5% z-3KO`f-hiY85!3EUlb>Z@EZn&;_%BWxKT;Htgj{SPQ-EZ)^K}a-tr?+FBvaE#vLk`+0w0cha}J{*}!GCV|(ZE5nBU;h0Jk=#Lbw zGgS@Rq0}i?VhgCq`bNA}8mYVKVKhkrsi2xnxwF}9A@PoZ=hAlvIC$Xb&z)G3iNBSfQSUr8?1` zK_}W%ArW>dZ12EztlB?j>7|xKZP=|A1NCn$c+}IRN5>dEy>OVBL+&!vp8g<@%a7`j%wUU|DM#E!e6n+#lGGBvEY?#u6pNDCqube zsIEt-j>&GukGdd2xD*8vgBprF)Ep;xb_?dsI__$X;05od~B7y;|4=1t?l+ zHOSqq#6BrRVg-p7d z71I3wrNG_)RHeZC^C@ejaD7u#zyH=U0B$nAuS6kw6=ZxVcFy93IUy6cJ2OTf=(5A; zFeZNMdPbLJIK}9)_of&<*WC<8XQ7Stgbt%4gQgihpT+3ZS;y!&z70Qz4e%=>!K|mq zU$9gnP1WHMc`v!MS>Cc4OPnf&xp_viC^pNT%@)_QnQ>!eGu$Hy!zbsZT5u2dw;?B_ zcINZNsEpO6ecVbbS1rmd1C2+>Xj!=RBL&$N0_SD18XmnC*0yrxqY{eal$&}vf~CT5 zevj{wWO;%f-#x&uN?X6`7=BgiBSn#APL*hk?EYgkWP$RK;ArJ`j~LdwPy4&`Es~)J zH|PNo>+Aw3lV%zzUuB5*ltoF9bQH&GO_DP#m470pRcF$(D>AA>&#LME2js@-Rk$~i zg)Fl>3ptSsdz>v5NtR(lV@hQ7rYO#9)$U&RUXrjAbuT9uNU&M-{;oIJd-*>}68`8< zKJdl90tUDi89@gK(St(bxv1>}1F2+)_V!NlEob@=gAAN}3y{(}y&FEpSTkvr?M_Y; zc)*>M*T{171#{jgevrbSytqy;G{(&n3?P;tSR~tct&ow7`&5PZlB(ZEO$n0=bvSvQ zx~13M)U6u^<0O3gO^nif-PleWr~M(BduTmb>!4IaW_UzpG?GWJqh9!)aM#QEEx#Jo zH;_|Ofg64c!ZXz1b_YmHvK3AHJx&LhAVwqco|`kX`}9hn->ZxA3mW1COguB?b0`puBCJNk81HAk&KMdpf)PQdJOMoNXaI?np zi(XYVc)gtcus7yyB)(QiPZ|n_No|YBM2kj9js?P9ZGnW;7fkD(K0{9rX?)(3Ol3_3 z;lsm>BcUItR4aOEc;;&Phr%p26-Y_Wfzs21c=4b{rcl$jSwTh3G)n5|HZHu(`_!LzSTM5XIeMt8o?x7|24C&M{&!0Ys_t&DQ{3uwn`yY|X7nK-lVq1h$y3qCMBS#XAPKYOFeIeY_=|$A`S#) zLL`EO4$U%MNR&VHW=0dhQ29Y;fh$l5b$581gujGkxj7JOGKNBYNsPH>UBkhWwDMVU z90B;R+Z2In;=vB#hGDqlZR)HFx9Ye2n2CVl-==B5MtZx*>J5ua(7QxZbWCIeV3P&T zjG&ktLD8UIm_a^CWFWMKi^8fH#p-2PuCd^f%?WF`t5v?8&<)C$Di)U^Dg!P*q2bYA zqqN_WrvsL<)T>saaWoRkkn&E&3*xVQ#pR9=b9(YWB$Fhxmb2@1IWCy>JS^-z)9;b} z%(9iD8Mw_e4(X!Xu5^vrxXJ)(p6AUGF(DYO zaZihLJy5s-R#1DQQn1g1y1n5AiO9iZi-0`|yQ^*}D1L$kO`H7BXnuHFL{LOagG*#j zgPF>Dg!*UBScTGlvI1YsTGi0uRe>?4uK%M;k2_^D2aw-S9DZ67UP34Qv}g}H;inO% z+;QQj4OXfSKaJKm;;nYVPm3}9B&0J76Udj@kunwSe9AeG7s@Hpc&Z$sV_v+Kx9H12 zkqJRt$Fv;OPQYq}O{sVj@+vl2_ojs~w2ifms&tv=xi$)L)lw}a!<(dkBPsfUD4jl;zxavNV!q9)7~Ge;{zM>yL(PqhXeJ0NrW+Z_oA_w1_-G;O z_=n2IZhZ6!WFwSRH1W~Ap>5n=>G}vOV6J14Y>GuR4(AVe;;9Y48y@~AHT=%nzyMDA zW!bgEN7$s$G5xaE-iD2(G0aKMeJRYGJWXM?g6@aGcPEP#)*j(hnT7DSDiEKPbl_)S z^r-uu`Nmt^O=KABmGWq@_S|MgDo8SjOJmfjFLl$mjCCBSg1)ef7Fm1mM0W7IN6I;o z+(aYAB6!pUvK10i=v0CVk6rK+n3=75FrMlVr$!dWwczrU4JC5Qdi$)FdnJ=C&PojH z_w+!qY$XpXsP$Xz17r&iKG8nl?$_d->2Z^ca@vrdd)|%^yHP}oB-L6jK(yiQJ~~r( zQ6z#D3kUbxI2CE9ic^7Ek5gGbLtn9~EOcU3a=A6OnW3p@cStocd(5QNr&LA{UXL$X zn8tEslq`*hon%>A+2L?LsTIpQ zp78au|JdY*PBJV_vz&0MNt+K>?4OFzK{+NR)bFUZzbvW)PK+NK=g?Ve_)FQ;Doxtu zxNOA-!cZX~rQo<)^ykDVOt0F^D5Ow+S!0(m%m86IoWSSyt)=rs6@+wq{1LFv4(qCmHb_k{~T}KQrS+ za)2vZh9RIeb73b)I+^tl6=DFfWVTMnc!tz;XJN`1q-#Q$#QbF7*t;qRTWSmT0YMYE zP57nVDg~5;o@GMoM`ASz*S}Kee0q4)80ce~blJ;5r|P)O3JMTJ(M;GdWcT8L=QM#S zmaTMvRC`GSRyVRLF3&Z#inyd`LDJ6hdeqT2xrKT>Ny`TtmP3zx$-$W&SpXa)!@2xq z#EEt%&kc`?8p8KfWEK-}x>KT|rVXAgufq1>Rcg`(L#Qddy1hfr^4i1glpaBkEBxLn z{3z;X8N8c#a!jE`E$=6F^&Pwpyj>GG&9 zm$?9h`&6+_<`t1NQ&>k~YRMxm^;j8okJT|R3l6DWx3E!t%zKeBTbcv}j%I1?r|2e} z86MV}Y3=V1H^_*AaLaeNY5X5gVET%rL{~0^bTulENaa%*%xq>t?sFt<;t~@a0V@jK z${p!fAMn=yF3*ZKQF3P!w08z+*#zkzx{49Siu7jG*|v&-39S}MmWU|-OwDpH{V149 zh>D-hvl8V)MuyZOAyTc-J#2P*@)-qJw9`z) zY&QZFg`7Y9Io?cqdk+7gpsjj)(wFV>hg>J*tIswO!dEooVOMy-W>e2Q^I#<^v{5=jRI-Oc>OUcs&=B)v)n;` z5QUxi_X+EIvBn3AQM&2%j?Cv?&~w4BwbFri3Ha4YM&4icOwh+KhKn-##9s2??=-q?Lg(toAM z`mI>$z4En8Oj+w2Gt_L*@@N!AlzG}Drq^HvW!(%t$AlCP0VUMs2yaBiw0sxy~1 zv2`sC2-)g5CR>w@tNxd%juf)|T9-9i67X#8!DLYWo`e~zNtRf|t4-D+DvXe^W|W#c z>*P$er)IH^)$CCgcdXs77(pn%GhdNt%fs1mH;NUasc?geSaaHwLnGl%PXtjzukn{Z zK+{&i6FYOJP-<5XwK-*lU*P(T>eY%X4!_4#OX>7L^0*I=Wci9*iB)83Cd8+3Um{Q;6^a~wciP9xyuhBQlo~OvK&o9(-xSMgm=PUaZ?b!RY#L3O z3#*8xaf2rF21Q^}wRg*>6$G9LvOT%8c6sxNruVfE98K?RAAqJ?;#~&`rWlHjQ*2o( zT{Hm#C<#NMX)0d>*$XJOAFLwld|)ueia7{VnT2O1DG!LXW?^AgPDi!^5I%7=A;qRR>4$VWv<_XCO4G^U^XP^Ys*X-y@h+QhEk$)(DAATf|;l z3y4e`*mf|Q2bGj+OX%Ts{t~l}=aL0y*;T<+Wmig;#Z%+$a?D;IgB=82lYon+t;ehw zbORUKfqJrGNz#ows%&#d_(RR=I1k_I0U)QLC;F?Qr%R_K>o-rGLh$C1*Lq_mDt+TH z{87ABqIo$CpN_YuaLX**(KAuXF{84^qsq^&tbOUrb(eRZ}zDVtJLet$FN+-RPa7?nZ2n(^t`Rl_JC zr`#$Tc7h-X_456q7-A$$wA9X!t#)7k@|WNK2Y>U~BVR~{1y6_HDh`rK7Hu6UK_xp4 zK{GM?c-=z}JH8>sZE=DC7;QGvjhxjG(-JaB&gHVWU0IzB!j%bx)rQ9`OPp73dhjD_ z(mljhfC4P=bu@)qpTVphScQoX7$!;+7agna$0F?i0LWADW}w6`?v~<{vNSQ1%z4OGKsA?S^u_p?=M#XX z+ohtj+m8^7RAz-jovO)_vWMfwb5ylJd}iseDVbMhhwG1`18opY4=lfUGLU`2ZBmiN zO1E`Hj5P0dp*KGx{mwDQJfdVgFbFY;5^RPPUv1AdYv~>&`{~K@mdU~%GSssp)q?J~ zZ`pJA*WdaWJChbH6-28H3pf&hN&Rw9LTyC$=2aTAJ!`y}m#a73=6r0E)R1nQzR68( z&U>2~LtqOS*3#pT=lcPH3TLF-Ko5TYt2GxMEu~MP($^vETmmc^=a(QiwW0vi=xg3- z*WyvQ**SB_Sug3~em%$9iqugUj?he7j;^cFs^?HBN74pIZIY4v^2@(FiLUx z!%g;(z=$4_D`q9P+Cv;tJ=Eq6Ro`Y0`~Gk_KHOms=lmhYu9bYIXl4@SR<=DmTbr07 z38Prf(!dqG@hwaVl%{r`JUiPaUgp~d2ne1rttFy6wXa!XIdZ${<+ATT5 z18qE~9kT*yezbV>5=ok+3$3`+gOlGekgXVORc`W^1(_Hu(Nn}auuC7}e$fY9NrC8wC3Tb-@#CQxTgCHH zvy#WsiL^qT#HzQHrR-my9Tr2zjdA4SxhoQAHFGg&^U1qBg>J8k@56s?s^qt$YE0p< z(6?nQmuGN}3r99LN;#U0Oyw)Gk+#EZZ1IKo)qnLsO6eTcsAtaUQJ!oWEP6#W zpM(i!FLDOc1P^}#dbd#Utjc5bj@w4l|o%{^{v!tAw zTQH;iY&kgqxCx5n!8y7vCkxK%=NuT%s~cnLg_fzGU|ccY`+niX)00g?x){;sP#Iy6$a>`K!4n@h z)Une{4|cl|yp6#!G8!yDWQ2N4I+d;!l`xoVZTBALes^gbd1X7DT$B)!)o^T=lWo6< zyPP^p+6+0m^K8**-TC5pcV2tO47Jg=+MQ??!D`p%j-G9sWT1VQ?uC=bq8q%_;g_>^ z0r%EHW0Xk{N`j%|!`h(yLvhwKyc6pv^_RT*tX?Tu3K(n$p=iTu!k*H|DIqvij?&Sg zbvFNwS>7Wypb%UxR%WuZaJ?CJ{K-AvSx)=)Y^T$=CGSV z6A;eA&7kR>uTY)1F5HRXHJ+I}Kq6W*W{hx08;^*(lHshEW&Luq5n@a3n>Jo|;#!;Q zS_fN#MWN(QDW*bweTglkpdZN1cy2Pu>`|PHm|Ot{ za*m*3{aBz-pvm0O43Rhul+ZgjT1`WlS?Y(%04M|W3(18%A;mQ!*|m(>2Xg_xCsc+tY0I6#pmp#{cZC65QlBgNWT3t2Dx zcr;u1#pOGb0wyExRw9En;@c8Yd)bNtF63AX$_)(#MY+PHu|)78Rr8e>?%o&gI#S3} z{`R~MI(-;2shyBc3EI;F@A2y@E(eI=_&#b|SFuq}@1r(D1Y1KCAVW*1jOfrwH;3f) zXDenA+F;zx%fXaU7=KLs@!Pt4$Q9eC755vM&_Y*qEJGq;r47ODe#aEc*y`yd^Yv-M z#K2aW4Le({EkxIZ){#5bTYP>;$H+n0L}e%{(|kG%cS@j`MQS9K`F$dFaJOC=tu1GF z>00R+%l??iHjD)~Ss^_>suE*LNL|^D80k!}$-ph2jum+kc&*A?gflPZS2J2OWKV=` z_pr^@(v(c^H6kazjYTpMB7Or>%Asat44yhi%?NrbeeLs|VEJS)q0bx6W@7#P?has>^;|O<@zq5;SB=6c4yE1=f2z#Gi)52Mtd|;x= zu7u+E)RUkTLA!~?^wO%?em33RVY49_pbRbfgFXTxs0w5GV_7tM%mCtJW#?e#oy+sH z7@C(;JhwJ`G^Y^|6S@Wk?BsK8cL>+=r=(CO418zo>ZwD3tk%lAL0bN_+5;Z?mbkAI zw6c0Lz7+cGN6qKDDxWs$w zjeSJJ$8is)g`tq4&YCg{Ti2AK?3ifuLIDz{BZc&!sM(8os zEC0ys=HcCGyMEe6>|oIRkojIOwG+4U723ftL|Bn{4kIA3^T0d28|Zb6CScgaLF96g ze4t!&kIHFFHAbU(&t^FrI*&8E70EJLJ#BVdEDQCcK4+QUzmvDNeyg|zy{lMrw*FtL z*qfe;ij|vqk}B4%zmAH99}tn#Dpsr1$E#SGO;}G)MaANYwklQ;X*(oZ5)jPSDwgLb zp<<1~ZE3_*Y$_gThx)%N^z~EU~iRBN;pH2X7M-0F%Od}wWoHT zBP-4j3P#eWBzK_2*q(2r!=s^@)o=!8pBsQE1lt6$Zc`EbfFvVw>J^L-JPhAiEn+Xi z??^)>!!PGk{#_C62ab{A$aHH$Cx$x60Np35TOUrr?c7q4Cgckum+{oZGh~ne=cF$O zd9U)ybs={ec$_DR2k*6Q?lC+f2SE0JQNB$ec`VYwK;F}xFJXugpJL9vtsv93kYTA@ z^n{o-QSI##pJo(NPm?~gF*oj$O98|RhffBL+P3&s^SbcdYAbC*!|~J|a{=5h+b@x> z(G$|`>pV?K`~p5?J!z%nOoL=pZPO(&Wy&lK1R~g>Ycr?7Q@&qT(FiOt zw^7&g_+>l>?wrR`YgAGTOujITEHlA?+53O}B%IR{Pn&1(F@;S3{FqSK#h_|E(sG3sIU z48g860keR1STxBU9tCN4_yUH?Xm-CDi+IGU>?k*Wq8|!}jHE;{1}g!2k8Sn;sF=}V z)r=g~Efl44<;VQShyo)}kG0K#B(FL#=nfs0VaW24zyBIlR~SIJ&{z-{so6x@@Rrgw zCXC0cT~Am)EcrhH?>{D;;oWun?4 zu+zqDH?!gKy~F)}Krw7w@6aJmCtb3cA8pz);ZnX!(3d}}zsc~mS*z4qGGGogV2Bi? zS20Z~T61G$U7M!Fr8K#3Hw2dCX7h!wD8HIJx{J^i4b+2O2=FOhsTi z>t5~@;#YFGnC(u|eix=!p&zpWs%ZVAS8VSp%d0gL$xf{)Zut8hg6YbpEWBRyXDNL` zDVuU&s7;_$%i>5=H>2fFZR5c`ioJF-ICt_ertfgYPMc{OLV#_S((w5B)+cfY!MJm{ zX$ADPrl3yQnsNs_3~y&-AhImVbCUuHxY|FZ5wW!?S{F4*d}qQOLGd!k(n|RvRpQ@V z(h3{g^&29c;esCDW0(Jq8q~?W4np$+2EqdbwHNl?M^s1EDSFAj{QNC-wqV^(MXHG2 zm!Gs&f3?@H<7p~ljLS&L_n2wkn1k@sJ~dPgJ63D|l{>9?C_Z$b4rr2o%j=ihfC7#r zKT=x?#G8`9uA4P&O3as=Tk^}a0j>n_)=3tZh&0~X+o>mxdDuFUfg~c;Z_E5f#%+Ad z3Qfniy632o=qDQq6Y)psh(rzl-1)(V=pwW!!Zk^5K6DAX^18obUSz|Dk zG0ryuM9GVzwI;>Hnz?fD9SCh`S>3hk`sL4wu)*(88D{k!zPF`0-_mQ(-s|Y8cw}68 zzX)75V|lf#gYtLmULiolG@m}xLyPaR$dHvU*DW$P<@y!6R%$Ym(G>v*ltSa7)?}FX ziaYq|9-*@Cfk)`M4+`95_)y33(O#hF`2;&-PpW`S6=u^n-V~Vd++n5FWGrVSu65u< z5Q?T%ZK1PgHs2~?YaEdG1TgKIU=X{km^Y<(M#~FvB^yMK-O7z*G5KRo-@PD|3fAgEGs;;o_iIMNOA!46F2`!n=XI zoZVvmDEK5p;`myOa9Nfk^@Na7Y|_H15lZu#3>XGWsxGBP-{fXfz|7II<)-5!BpVYz;!V{{2xgD1Hl_1P*Q+K$E4ccv_aJ)tA= zjwP7rLLUgrNkMj){L~T3iPKEA_oh_4%EzPl)j6e1z8QteS%Pe2JB`dv(G}-w+2G(G z@#A!9(FQE|zfQZB>$SGy-FIq_c9Zz5gUJY@s?W1~;2*(2O%MtN=#`3y2x!u7d^Ta`+In7@#?EaZzEng_O0X8$_&e zl?2)w=V8#!g1bR9%7l5K^D$w(iR;#gM>?xkoUQF9lY^TCp9))^G)TI((9q79J zvS@gm3e%E&_eg?u)(8DQ(QMqOS5eU2tLtcbJXco6vcD$ZAYmJ!{8S_>5L%^R^{oz_ z($r@E*(!kyB-Z&G1c<@JAEbLhW_kH*LM9eM4c?6PaRjDsU`ix#yue}BSm>Xgq6!(C z0k#zd2)A$cgXFmykX!8IzR|{QS;63NcVeIc0ni11=dgvlERgh8!8HtDVvHOuYUi;U z!eM$?G#Yu9Fx(tDsk_FyDbTKwf|T>DX{#4^>vK3XJL}HjxJk}j_|9-dzqOOwEN@zc zspZWM$(BLrL_^cU`Vg<7|-AlMfdkU{R^*w-%ZR?X&Z{h0)#*f^kM zxCH7!Luu~$GluW#x5t2VYz56}`;Qi+=-YioCd5&Jk)HcRIdm7%)a2OMs1+tn;XRAg zPIP5w6L{<9A0j;AQq!7}%g=QF!CZjOcCN-_3AjP5$dR)v&d!mwZxp)~KQrGW8h|SA z*X%36*(RRK;3tay;Sv8j3^f-2(#Yt%aYicvf5ZO_^G2}7EsV51tZwHjw~ zqmb)JQa_4uqp06>p+WrxZ3jIG(X?1ZJgI_Q+y=*(19#GO;H3QR^qcojDnd0v@a7M7nJspi!q+UDc zMf*9Vp;kp0rB2FAt6GQzZQtYJGB0&(wm{5^H=mP1DF;Bh>kuK+A0R0xGRBE9O_ z$62J;#_$`*@ym9P8~=C>FM^eC7o@Vi;p9oNcMC;YuD{_=nasB}Lk0TZg z3{4L@nl4yel%p+*V?4B|p@Nlt2NZnJ#eS{Y2~QlKS@MuM4L!qFkFT`>LQhl7SINMa zVaujGjfhgade6PmM}^G-q#aKH=udj-&U~M;?aYhiI9(2qvT#+^dkHH@MtI0nBpKwy zp95kYZk5Jrh)nflG^UnJmhrr7l>>{k!nVO?pw*l$*vvD;Cmt^VX}tZXKHh0cNES^Z zHnhqfivb_OOR9x`6l70#uFWk@V9-^6!k!M+n;=ajqHTv(96{v9LGPATTcca2kktr} z%nBhjD7P6vEsAhWQ4ogX<7v|BnuBb`cUH2rcqJQE@N`AltFtwK@NhNmJEa{kKZ7aT)^=+dsnhS)-NAUG#-R>tX--Ckdganizq?gG|N`R zZT?T^Ij0C=nKd=@jR{aZ@ zPSCu0tffINMw59vo>|u-av&U`b)e`$HG(Deoj;YNDGMjk7(K>`QQVpXzxC}m=7jup z(AO&Z`Ouw%Zz4O$c8 zn9>f-A@9#~XG3#|&_*EHk&AZn04V4?EkaCNoIy>pgMLL>Ic;v)sT>xR-e4p2>SR#O zYeOQ`v3YD8xHuWKnwR;+BNMoS8ia}#7Zx{-o@R)5+5jDOn-c~`qq={{6bDEq=CAv& z**)(ib$JZ``$Rb7S#d5wkChaP;`GR3M9PRM>q(FvvKI7-GB}V%8yVv586$I9vp0p< zP+5x{Z`pDfm$N$`M66&Bs`WvdgKXcJ!t z661hrH+F$A_c4^dtyt{auhdPXHlxso1;62D*IainOpcM14+a+w!=Pe+uQtlE428Lq z#on23zE#P|AAr41{+Zx&=b@F8Sn}*o>B>o$qESLgPJ(HPAe8U7j7|}t01w(5Nbx-C zp&Ot2nYm2Rvmu ztwaqkEN2C3 zt-HoCkgo*}qW@dMd%s3ITNy5lHbt;?8ugb2kiA)JT zCVP4C6&EHFXjB1Ipb@LvbKyqaVu{=;ApDh4G%%A!{g`Sy_{RHZW^3{z^n@I1Rmn97 zcRRR`{kDcsfoDBGy*JvdmMa7oHvAf7qyPe|zLg%n_u4cWki`b&Pq-)~hIpHAApV zBXohBBY*K0h#1(wiTX_ggQ%>50kJNVi;6)RFbbJ5#(FAD=C>2Tq(G*<5T!`1ChA{d zmuaqgMpaRUFuv{pZ8|})v6F#`#F&9!g*9qL(c^tDqCrs$;a`d&+lR6kLlEc*nXR^2 zSg@M}*Bv4W;f{4frW`2?8<6DqiDVV9x_bWNg5Hkga0*t`qO>{&3tH2x$q@$@HA6j- z$YlBvnwmr!L7gcjYu127FiIVOU@(pvf&r!Tj(gzmh41PN^xykH!w;&4zPMek;#SWG z9ZmXVbVi`Ur&jhMn|88yiVAiyIXFSvGaD5fxFG16+(aquH?m3{_TlkXRJP_h*f)_y zZ4)M3hk6S{eWZKdpNSH}RoHVfMRecMKh$g>o&?JQUBwOCAThJyi%$q}rN@$qBDR0iOwt$Ty;%vxQJ`Kd(L@N-6 z5|+$rZJUt8$z2&eKP5WLEwDxPj;E(mT~Cku#?!-si65Ywmo*~^?tLh-nz!`nsVe$T z5Wxm{b_+8-I~x(bsU^m>(DCdnkIRM%3#{|(co#i8Fd;UV<7ci@!xbPSZyh{h?tC{$ z^fX7z7ny0I+9U?lQR7}$wY;d+4EWPVAW04^dBvkJB%D>igD|6nvve&)QCI^= z4xJ&0^~|C?j7Qo0t_Yo;J`;2(V#?Cg7s35by>yLSCvgKPCYby_r~3iqhz* zyi_`O7*v!yS@|d%G^g_hlY_pn)T$2cGJlM7igM=_lfZ-lnmQ)ocSgAw(N4KEWf3j` zO?Qe(P>h&F6S@(7h#~bFlCszC^v`)rLQ6%*M6nMA2e6#{59SUd? z@xat=Dfx-Q+ZKHn5gkW3SR5me$IpOagUS&fAEY+5 zUO*p4|8Rd-Z4#16^clA*mpC)}$J%5dqJRCE+GI>M{UfC<*+&8f*Z@#KNis2VJ%E~7 z{cBX3zZS4IAp0?DRxpV9wWn5-S5D1VMWbbSP_s-Yd5FrW+D3d}4WjVm$xq0W9=>@g zowE}k6a?ZOJK-h_JG{&y_!*V}rlMz4!5N-HZc8Z2c2$zdBqJ+WLc_cw`|y*A(wdsG z6}@yDSO?eBim1yf^YK5m!I4yQ!Cbv-HZ@(uzRp|h>k}>#EqKBh&Flj=Wa8(#F$cOB zrt3KL&oym(vV`5*aek4CYo{ofSb=1!Omx@MX zLQJI6N$xNdDAeVS4U9Xr1TH0AvK5V=540K~%f{Ae{!~KlbUvh_Rd3{u8OHwFN8MTx zCU&MHqbefLxSpj{+|tf{eZ_=jc$6Xq_XNm)FsgCF;7%z4TCI~7b`nAJY1WwWNFoT3 zD7cM8j5g$8Mq&Vz<0!xvX;?#jLTi+YQ82bJoudOD#8O6GerdpxM8PyXiQ(31u?7la zWFR6&8y4bP#AstPY)b>395L2*TRuf!`9BI30^bZOwCt4*73L>Lg)}ys3N;dwB~a~g zRCt`-)(OndnsaEnmN*1VIwE32WUYoMrwljveU{6I{;aY?6UE?}R4CE53}d)uu$8Um zS}5~W<;PALZtK(?ZA_^z+mG2C$LQ&(5|!ck<@)+`y@ z`hmNAQqS}#-BsIew1MtIG0Wwn3-CSeA**_g?lRkrZ?|4a_(DCZ6tfXsJ|<7c*`rHx z&j-++4l!cX!uZl1^9@)nVQqvKhFO%P2ro&ji^kyvOIOkCzzB`LYno)Fs;2U)Z3@y= zo;|h7wAr|DmIs>2>Fk}ysgJaSRVW#~w%GB#?~p}XNh z((s&ATsKnUGMjZS4lrkYJ3^vL-&;v8mmszfb7@%*T7q-?J|ox}ADKv&YCS!{PBXJY z2*~1TU<7T34-C>_M;)hOg{238s@+B%5k!WFHON4eO6^$={GJB@(BR8Bsz{@<;8M>A zFzYYYSPcU@UlBl*788#&Z^iT+g1O-)Hi}~0uziuU2qn%jJS4IS0TSXnk6V8Bv9dET z4R41OjxZ*4R-rUJsV%km)+BPoHrQLEBIY4i#esOWPaWPZCm9;Vctq){fXoaQV$cd8 z9Io7dfUU2lKoxdW9;YwJ*#^sK^@;||du8ZUI_#5nJrn`Rw5VA5y2h9eMHNLdQDb=5 z5UtmQexs_04Ms=Z8hoC%*2dY9wxuxS?~DVcNWPN^p6}m6gjC3=((~drlxGltH-oIo zES@i5U0ijBPE#iux|{WyM73<@fGmx|Jy@|1-j(t~dM(x{n~DJEcvE7hD7nBR$0#GPZ5 zBDB^mHINxae^MnTjYb~C;RwYTcmM#^cbXS`Td~9%57&AS=t%|tU`7pPMzIB&1BZn- zzA&T+lZ}Ww<5^mCGm6Ga|He1MM`n~2!;I2M#B{bcyv=+^zc5(REzIBmxR>$C->mIOMYrnTdf^%j(k=r}u`#!5d!+yWhJ5Q}zvT%FguXhDGq2@IL} z#}Q!1g3_GU6Ebb069G0&;3hhE3PmCBMG0}T(fK~v{Mcj@j;dw6yg1fKk(cf48tpl2 zG_$HND1eVf;I>klEL~_J29IkZV3t6F!30Fo=2qDrxZaQMpjD2dtE~+5)<3KS%%UY5 z0ouS^5Dmj{CTl#>lBKKA>ugs*(AeUD0*bR}O#3uj8Y45YzWXN97-N`0V+?7E#+f_u{ci- zZL_DwLQ)E@BE}jUJv}}oMeJ#vjh;svotW!%ND67~HhNy$=!i{hbW}%Dhm^3qUKC%Y4Q%w>ZFIT-+v{v}A{Y>++vw_%A$4qYrY_p(7#`w(eMoG|Mwgl} zq@i4aHLtC5N)s{?YmE32<-;Mi?gHh@25D^crb$NXwe82si+zyDYQ*Z&WMiVo)feky zFnqsu^>J9d=^;ufU$^9NPxi`zHQC1K{|wXI+z=qb*k(?F82hNBhgMjE(h z(f|R(wp=Y-SVMS`Zp~ZBPIO+9KS3vwzA59Z!Bfu&Rz_5%GO68eph?7%+O0uuEN8mK zKN_BzsHeCuyLLd-R{39LUk`^gT;8AnV>0~xf|T!IYa8`cNle}^o8DGP*(d*7s?~Yw z4?Ke&-AcxwtWn{ajcGV0Oy!t;5K5aJFF+fZViInfFC)uQ^EWC#qZY@Db&u_Dm7bo+ zA39^NEJlV=gzrV>fTL8d*knmMbBWhxHCBrOpCqY9_DUrwK3>v&%DF(eIg5PEV7y31 zBIyU{3F&=UY0-}%7}01oYHH&Zj%fRP&!K{1a?r4{Aqm&h8AI7nEs`5aZNZ=}$4lb7 zC8XYd^-P*1gQd^sAtc}`r551qt^yD*NyV&|s8ne?0@5Di${H2!MKFtFxLBw5kC(C) zwIl4yKHv#8aTlnkfh$jd=Y|d;it!f!SPj`+x99M6Rd%g?6-D=@?(_N{f+78H!+1e? z2GA98ZDvEvN+L~tc2PZT>SF1F9=|E51-OY}?SyW)C|W zW28Vo#IUHLzs!0KrJq9JyR4|e&c6R!6ek;{h@Bw&+4L`|$3yzBsazt_sK0*1wA9BJ z$Y_agVV&Q~+8s>n!OON;%)a51*dRL&nqk#^RYVS=IXgR?0thxmz4;kP$FkIgIE_#f zY9`A}?-ZyS;Wr8$n=h+B1)&#yzykAPVn<8a6F~n z$ixsVd$ZZ_mJffR-Ac*6w8F6olOETrl|M*<^OPEQZ|ke zuY{J!md)uVH*N2$xyM>5&aIj$j{m8Obgp-bUF71c@0W3`M>_M#Huqv8iLPCrFhj%d zjojpdQ_P!261VMj4k9}k1qJ>t99*pu(%H*h+?sA9S1te6$Q1X(ap3Xs|lAzfhfKr zOJ({1@kZ}bRg6zRP?VV#b_knla6VUN>Gc{QW{jE;!Mse1LaBayoP1XXdqA>DO>%%2 zAb2BG66Or}l#Zpdfe>uuHN>)>beMpIuSR826ab6^5|)e{%!RYzWhVNQ;q583$mmj^ z)QElnq^f2GiN@II6^p^mY+e}T&`myO+Jt+v-jaPtHye?cXUdFh>F*$jc>L>s|B}`H zVeRT`j=WTMo{)pGqZ74`l0Cjvh)M#}e}HA*@WIrHSKa}Lr5V9pLrp`1TaJp^IVvRg zPJ@6|jZUKBL?MAi?4k=6Gm`}X91!rOF{b+9>~a9(EGB(2)_fh`n8ql2hS(B8W|h;NhVP`gpn?nDh?sR;~z z&?*_muxPq1YOz)ZTrqAVB=}YGJPQhfr~(P!UY;G>RuecTJxL&Ih3%3O6F;dB=zvUF ztVOtNmF#)gl7kJWRJ2CC+)>D9V+Mz$8n3iKwgiVQ*jw9rwa~r-(esYj<7$C( zrDGjmOTh-XsV}?}YXa{?D(PRi;74#GO2dl?eeSb-Bn_q+m`=#F;lTMPJDklL&S2(n zc*St*S5w28t~E8BZmsFzoO0Z7OsW;(#c?>ybayyhBV06lM8$nzVB%y4R%&2n4gJ(S z@ro3-`qk9HrfW?NtXpe(U>lDcn8+5WFZY3o+F{X}A)Q8cPG%PuI6?pB%J7KVBgEt)%@;+1R-55>`oT^im&M!I!{kV@jT+wlSMwf zOVUsOml6G9lU^ zjU|s#GRG|gqiVGvNv(%SX4mj$%K7%MrkQ=iw+I5dRYYm+OGnqRBW~7Dw&MTjH4P8T z;aa6pi=l`68daWhjjv$xIh7_xP!7YT9ZaKM$C_o4Bq+FtYGSyA{pRcJx9RhV3)CM_6?IM*;7vc2ww_fDJSi z?y&`u;bU2*6RqL|P#!X4oRYg{pV%z|-s~^El(FcfhyeG}tVYBu*5I3h3V^??c|LE? z15NLf`gF@w6XBMF{6c95*`qp!mG_D^dGxyoRvXGw+|7Q75fO3n*I78!6#O=IV<^m{OxU53nXaqS+b4Z}W3PWik{JD6TcRA%*Y1UiT`cnIob)Y6s3b3jPLnw)uHgb7Bv)lNQt zv1TVf3!GFfGQ3o}X zsUu{?ChOk(m}=`)kxe=5(an2?OrzTG9Ug*JPxI(Q8;GD&!6YX>L-tY{Omq&};t}*A z`%R`CGz6yXN}EjzPUF2DSzuNDkgc%@sPWg+;VwG09wwAp4|%4ML#2X%PHM;T84$uv z?hk0@^_qM^{eawk@;Qxv6n%i_O|oiNtyyt|bdi(iE@oB}9|qXtIWXk;2!SHFETrJ* z-3o46j)#m#N_u39wQ>&9kjHb}kujQ6D*l4zRNu_5kCNdO*++g6M1+mu`uFo&e$`8S zK%d`=IPaYNB$F(rU~*|2h}b`3x}`4|WjBslg*0E*74F9+YI>JGz*i>1O<2eF#BmTGeQR4K{TV=fQ1ZE; z$RE(~91X`(f|tbFc+`$Gorn&CQc5CGA;g(4AZnhp>qm!K`FDk;2+hAMG=tFe{c{fG ztO;#%Jk5=HXQa`;P(T~2xN%!D&aQFMLA2&ieB1`*ANzHA` z?PBZdwB;mbHTRyNV<^WgGxwyn##69!ogx~~?1FH0Fb^5);n6$j)#$%|xs4`rn1=;k zUHK8Bq6IsVQbSD2ulWG3n+74uNinB!vSMzc@*0F}3WUr-$ii1X7(r;x6x&7 z>YFpgG_s0Yq`_mVQ-iU$MFb+HL4-~nM4Rd8vWSnZ;_^5yW`0HvJk;k@d> zo%s%|&xLUK-$dV+wFyOwlQC&mW`60T8d8%y$Z?@3^HNOc zebzx2Ov9=5x;556#!DuyFd@|%z5`&;8Y>=)B;%->#LxnoR5Dvljk-;-Ug3Z(RDhtS zmNbssmO#`Zix6stdZ!!;eC{jRf1p}80Bmb(_h8lPEG7q6B{d3qWA`!6v4RU6{J)P- z8i>j{+5%6B1CeFUQbqM+&@-OhpnL)0hVY=|fgtMcVmTT!=X3i%t2Qq+PaM=!#%KC24|aUogG2pt)LLZ5!P3!$}K@@0xEl@xw&qo0S8}SuJiO;V{Lt7-y$sq~U5U z8iIy&A46Wt#AZw+3l}0~63L7>KI#X-Qf+{y1V8$8g>k1&XtGcpRHzB=LxKzvdWQgQ z0Y*o~Ayc&9GYRZ#V&g4G2ZrA=)$|v?j9{{7&3E;nhxGgj-?9+-VV!f&2SHL77NYmm zXjnf=gyemPeu;XkTbJYJjw|0&3A)1~IkVYrhU@Q08j=43c9y~dy zE^451_;d`X!zXJe!gu7ZE_@J^Bo(wInPUX!TxWDOnV0+q@yKr&xyM7KYJbd3i-It8 zq)g^5_E~YZok?;f;YonQ_U5rlc&Es`d6U8x8D^sNO6Te76k$}0rPP?cNYm_6Q@chG zsFo=m|xCtGtIMXS%t@1*+X+^gh@{a;7C|5$UmT~MD z5l0oIkj`tsTTz$FR?s*&*;)D_fuOnG)^?7FR64~v(B&^v8VtcKJ_NDkiHCr!vmv1E z2#Tt2tvG@y+%g)HHqlL~V4O_?H@5js3MR3X?4rh~!B3^7B1y9xUQ<>K_hSRWEUx+y z-WkJr=0s5rn!&DKW`a2J>=2F{XbxW#1uGsShq2p6xc^rnFnF`5UBJ5jvNyUze2?7& zF5xSC*=>=k-4?MKrM48bg4W7!B~qP;19A5B02M^UzJ`*&Y*y;!&)>y z0Xc7bO61G}Hl1Qzur6;z3#u#hO5d<)yu}{_v%?4^5@?bo{%6XdaMTEf324xmhoi}A z^mB{hD^nuU$AyxBBtdHZ-PO>cDH3yVFxn6Rn;}^HQW4&~+(HF8@0Xz?2UvK{z_Uk? zsOmXx-qKj8Y6D8xi|uVlhrg4xpsbPq7Cqq%VdejP{VQjAMGZ3}Vx3U!X9|kjLt2Yj z^6^kd{vPBcurxjzpUEIF#R}*CNgj5xFF*Wu?(?v4-WCf%%h-e30*6rI2v8s8r4`Yu zv82ql3Tq!`kOAqX#&{V3Vqf__Np`w4#d*TMc6}4O658lKPNCxJB*v!YUum)cynC~l z?D_5AeC=<%Z-^ zI<=qndP#4_e}$gq97*-SgA_+Nga;nbg&Md^7f|T~zl}pCI(RbHJ#KKeN92iV=4UL0ePm;<4A{x5VD#k!cKw<}Yv``6}pc~w^uZZ@k z(g-TZNNf@wGwWY=)4K4$urBcm#UDs@KEA~7r9g_A1g=t{U;m7xmx?@1GKHTlWWh|y z?XuD7ebLR(=J`laFZFu`-xo}fSg@l)<*^nc7=^#~7FgvQg}=9Ji5W>~!;tc$x9(S* z9b*r^NsVt(@r{|Ww(_I#>+`&r!3GW(BBbw-sok#|=2AP`7_%e(j)t2+l?}^aFaKI3 zJp2y$O8RId9IMTG4$VZ0iw_V4ES%!=A3G z7?)3CoVhV1p~z?LA7yfXw({(K9#OInUdXUzbXGD()OAybGpl6yQ$&GY}gzT~Hq~P-S=>2bMLWW0B=T zV2tffo{k~c3r~lz%4)DZ8{iW0QxY}kVJCF?>^pm*lM! z+ZY}cRyZukh^X=XsC?wC;vWRaxsoP5do?_$3U;SBwL&6ab2vA18R68i`10D_4^(oe zpU>~++D_iVXt#7j)d=!Ol!_ZL08B7K>Kwt1QxL!=Or!`3^TI#AC8lj1iUpZ+k$q1Y zOB~XQs+M5zHG1afYSlzR9SBgNL#wfu*W?mVRtAFQ)5eypXWSjM2TkfT)f4+LT0bVI z^(=VC3NuE%8<17+;ACD&X!9|n%@gH$%A(9c@rvcSv47d}?-rF;LRv457FyXtO$rjB z{*^wdED$AAGPqm=jJ?^=h!Q{bpoAkHvR3gj&2~?p;bHb6d_?iS{`NO`3p6}NXZsQaY_{^Ck#T%m^ zXvt2@8iLPQ-wG3F)?6u0q5LQ`qRq<`^5-0P!XqCMCm5{B=(`K2$sj~~kZ`1Vf@`9_35G@uUP)dESscH|$e3>^BPtJhHjZ%zd z>Y3^O3hTxUdZ;M_SD+l?+U%z ztqgiDES?`1Xy%rdlC1Mz3W?5>p|C&PsvzwMn`qwgsi5GJM1j3~-lEoD7$}GRyG=Z# z$ysHO;*i){jaU6B(ZNM(eS>EHoS5`tx6Y!YPFT@tpeKXBT=>I(GW;!q(4Rb?U2R~U z6Ms$$jVAqNHpR(1IW*pAXykm%#HnhjCp0?t9+vaQ@OF|RFyiRV4gxt)&tBaKQbr&! z-U=xS;PW8{RfHs`YQe?|2b>&I6cQ&aa8d|VNjRT)39=E1hftD&hODC-;)E~k*mJ1C z@J!fEcveCZcosiAIk_H(XKM);JiLsfnY|@s>PfU@A^z@+A!{2E#oX5-N}BU2JvWHN z?8CM?6#4al{3^IQC1etn$<9bas245 z?D(%g4h2lDtZDn%x(;J^Qbwp7TdB(8N>kzIq*U-vf=Z+I{=WuVqi(@RKRVe6|9Fjxr-D-NS)oO8TWjAXU-9BbKCA>9d9%INtTJ4Om>goS`_twaX91y7t3hp! zC9H)%E0qN%1Jf)kIY4X;mAV3W);Zd@;Gu8q7qc70P$y^rn|^i!9yc3A;AAcJTWhI5 z!&(|dYv~*mI(EpQwU%__))K_d_lcOAxhZRDMp;=)LrsrYm0_?zt=d{z=(fM07CDaQ zq|qVSb9FHbpC^e9Sv?%U$`m<%TB~Oe8ms4di%Qt(0!kPpT0KGpTlLz(aq>^c>e0!Q zMkXQ>Tc|$y;j#W?=)m$hN$N<2j(!&%vi+2R?M+o$@PhkA!Wy4@IFHRLTOfj}owQWc%zgmn)r zq4}TDBLY3H-o7y>cYP{a7iC6ZjS*CJqjh%A$R=`HEm}tb+fX2m*P0|zp*nDf(RW-l z4AP>yTtY4VV-(cUrRaTmW8Jp?*1}DcKCUh1#oMxubC0Yk8^|MTJw?`txGA!Rb2=4S zWBy`fjo(VCSBk7D_Q1d_vc`i1ubkuX6msVW&ssV+0v=KG|Q%3y4t(Tb&+FJd{tgQYaM^CUnQ>TUwF@_ zj;A(vEA4Howc)Mwp`x8?AO_$7kGYq+{Qh*EyL)a#^ z^*~}P%o)Say=Mcv&?2-P%KBf$UV`i2EwRyA4(RW}e0ltJ7r9b9s_v~1tgq=;JN4$T z)s;X{gk!2^rPqI7zh<_G^Sm3q-mV?2UvnEL0#kvy{+`1xv&J@D%e9p371!2q(9(2A zW&MVDPxFSpSzvI`5CSy?Oc~OaR|nO~P*Z^_(a*XZHoURnZx;l(qFK;p1PhDWMvGFn z!y9sC-SleQNMBCYVC@gvGKMpZpE)D3zZA-H4Ds~9XF0~d#2F|d>^k3@{Z zUAvP6rU_&lVv=+|XG(|g2zhCWdT=$0`<>18AYiJs%X(Sdo^6|u5pG2{Sx&hsZ6e}n zrhGr}1wqS7AcU)rydZ=LB6^+}b6I{)#vNb(vqS(s!>MWn@hW!8$Uj!jNx8a;Kmh}4 znP%AdNPyB|)+4@Qq#uZ$90l{hx!Veikh4Z&ThG|?YV>bI)4HtoRLGwe7Lhx`tSyZc z&yi2K_kd@x$UD@+UD0Ini9Yl|2ZT>~TXP`6yh(Z4ZF#!T?HDuzHQT`n18c5Dfh_IC zART40fZ10YySk^3tiFc{g`#$irx?Ck_OR&&TP{OMSa{k4hvM3lsiZp_8cS^TvIrS5 zqEj(-mDWmxrvECgDr9x8u^FFv_-YjY?Q@W(rAm#=tcB#9;m!H_1*hXwn356=*-*E` z)USKj=%lY}z4eH?B(X6t41PdV4Sa-c5#?!ZbVYrwzVSnpL0d!CHHMv zs8wEU8yKLq_$kp&>y;OeZCQxl3hLo!`TuF}%A?~b&U{aI&pnbxz7N@I3EPrwS(?!` zl6+}o$+obu4Yn~DgEX3HNrRQKR4x4D=;b?+<<=k&e zb619Ovvll^#k7c=?14+{Ke`cs_?IP&WkJYSnx&HlN=TFEg%OlM*4(VSW_tUNM zyC(ljltk!v);6WQRE|~{3xGn~!K1=X;#|OlibS=(>Z9uBU(XnneSU7He_u`kTK)dkxd&GntLB0VL{Xkb2&cZlRDN} zLPAk^KFIw+dov`GvI2X;<_U078zSOW-rXqp4`N>tbBOS7K`n)U>?w|k03r4=IOc-E zlg(JhzBSDjY{5&JCJQ3;X10W9wH{x*+|IW$$jd@ncqfM+3<~liH z&aO0Y2&dp^ryGjz#-R#<1OWX-(J-Co@S)%K^Bi8bA(j3KE>=Nsio-!SXo7p`V_kft z00MoYhCYRh*`eO!hpDI&G+{c;LCg&!1D~Tko%qT%GEM-%pRj9UtF3cr_YZWAb-c{S z`)ExA)95XAj{|^fjV17`QJrOi1P}r;fP$Cwd2^f!Y}j!pTHsGG)J~(7abp*F58338 zZR=1Qz$Py)ED(_%FWP0CXGYO#*Nk!sm(OV01(e2T#x?JV5P4c{+R| zC;_;e=m;QrWO?moZ3U=}twy6ZGA-h4ddh>>uwpoT2G^ZqsM@P0gC{6dHj5HD{X$vdwKBb zMe5u8^zsxMUY3BpR@W?~@ z(AN~1?hC$8|1A;SV+JEzOoX*XC%YU99xPLrQ9m;TAmG3&NY3#*URxf9Vyqlhyqlu7 zg-GMD2Q9miZAAy4@-`2-BCtk`W5AI2!COiA3FLnAl`*4?Tu>0o6JYMgIYWn2;P}Fz zTx4@V(RNf9+(<>^+(_^;F&L4j$w~i0X8db-nfPmXnw-?tLZ#?1<~8qS^3h6?kF6y6 z*bY@E%`RyHMK&)}QJd*yDk4|b_(tGiDk7`jN;TSqhspRi={}_pkJ!@8hK#8;PdWMM znLf`IrM*#vpLEIzhbggFi8fZ*Yh_&^ha2P%umXx2v2AmG*kl~|&+OzXAu&t;{LZVm zVdUcL0dV>tc@kcL8`|(fWV2(Ncj!zcW65sCX#Jc zQ@FtmF6_V>G*nFdOEee=9w<;4fDdsp#nC4Wg?+CqfSH9#=_tphqXKl5)XQ>c9Yln< z(T0u!lna#M^RWs(^GV+)LAC&mgInJp?7&_WAN z>H=xOk9~@t&X*Qo#TL-O$F?wJ{Kp%V#<06gNTz&5sLHu@wh z2@<2dWrrvdypEXI9Lj=aD4y$iqkfj_*tlHShRwV$;yC9WDP@>9Mc_n)nYVgYhWRID zQ!fJI(ln3??juM!1UwYb0%sdq>+Her%&$q_@g)?>Y4>E-_ zbn`>t2@g6X+6Z8MPseuhh%t-Pfb%fzNO-SJ3vKep%O&7ynKXuK~^N%S21}T1?oWmgp}S1wzJH zbYzf;%`?T0r1^g;o?(*-A(kMvntw!vaE%%##)vq`;bEK@Ya4T16?K@sFiwrJJQE4% z{hS(OH~|)o(UH9RkPnXiv8@pkwC#d{xi}6V?U6Hozss0afQp~AWbFA7HhJ>o$+JA9 zWa2!0rd(u_nS7g=IURoIzE1#@9OePMW~})gGR%U93$W+~$&qen<9`1` zD%6l%?ug+3?=FWR2(l4G+$l&1y|Ltgnox928BQm4RT=Kr22`ad+uN(A-FWXopmKDN z#|9{G_XTPuJD|6;WK+ZG*ihx-ZbeHev6Rx?kxq9jdt(DxwYoRah1^;^rmJ1OXrfvl z(bs6%frOIMbS0iv@j{^&(SZS_KRbxxJ!&%5mr-JAw6CR8N^e?KQEfs|_he%ON;0J+ zl6|S9KFSi)$-aI)Q>|?4SCN1+YAT@(qkF?iyh-ETr zT2G=)4$&5+yK+G7)s>Yi71q_o-9AO36ujxK^6^A^7KCop2^Qb;_T)jnw*I^t8{O|DX`=uVY&}$vHx%Kb=hNCf*QJ24d+xkViZ=6pModg=un- z_2*JB5?fsvJyE0g6Kd29f@IQ}Zsa4pyAG2d259*VV+psBkyxB78LK{21ya{5RvJ7*{dkd7jp%rqncXnrte$C#x#F zYf5K(i_(+SGZ+i_#z=oGi~b~xm#NsGstm?PIiu22dJH@vnbOsCQcEkTEcjK=D9AG3 z?x)c1l!;?w!yYLH;EHfnj zxY-#L7NA}emyP)*7^4J$i+4{U4~_XZ2s95>2t+IB65}b=xKkj05JJFiGocoN@Hpt= z^puF{F=Z&N?M)^Ca?B468H|_)%f_1TEf*5tl!k~vekz@xCSt?HIEl4$j;du86+9xX z4bfB(hh)G^XNLfDUf)Mlu-W7wD$}xhG6e~epyikUcLqN$yTFqqGw8r*A>=BgBM4G3J%0!cvN-=~39O!{M90Qj_ zXKg8{N!7>2dr>}tAr2-p87h-dQy?RwQ&e%UmQ5u#BvT2Y4zMTQMWG&Hb0)4O)baG) zfb`wSJcusG`qXjr+K6{gftKk~Doyw*i_NrS?w~;Y;b*v08}V3*IuMJ;Y5YJRKv_v- zLEL>xraz1LaLSnCAtYi3`iSVkRZ+i(^Nc#&LFy*YAskF{DD-OS!I+MD=7=*cAHH-gtUy?aV55i3XewTV`AC3# zSbttde@M=)N2iH4slGwNI2swI3fN8AlWcx1nq#_yKCCGaW9kUexSi*&LOrWb)2;^H zf*RfE>&=`5f`Jw^}x zu?&b*-J8_184|E6;kA~8nxiHJtL#%KJAof(Ml)S;ZE#Ra)x`8J(1qTW92`Q2PoTfV zUx+6VAD!G^@Jw*cvXx5v=1mKmOrYi-| zRxa)Ze;c525QpLz*`oMb;8!AjU^DIjxv*;l@&M07BNV4gK_Gb!lCUm%PjNe5twDTH z9n{iLWVy~v3d06%|zqfcQDBbfNN1<&Ur*yY^?h*u(*W7~@7 zZ4=VABW{P$g@_wtwFWxe58*`uk@zJsL-wYcivh%|VF;8I1eqK?Lsvmk(fpjKL*Fa~{2FKwM(ThFr#fWdW6sQiZ zcQctdoutZe>AQnWzMYV#+er9s&gz|9_O=7%jmJ)sygNwBwvmvHa_QQ^gliiUu3I2m zqmZqeG(BpHRf>0}wr5l%t}z9w@c`V8a(S9hfOf2!8S(xCl}XbrmNac=!W5OQB_TSV z+H1&6s;RD~``|bk@O)vA>Ei?w;)#%h6}rNd1;eP9YoTX= zxiVb_+$|GNCx>*f9?ZFx?dylFoQ(G?kRxQ)_NWTa4*yS4kjb*0xD&pQn2JgSfQL`F|Dl<7({ zR+2?*m?l$UY7@qXF_9t$d=(0Vylh^@qHbieLqkjjB1@m(tc%0|98%xh!R^m_=F2-J)=`+f!gH5aa_2F4H zQEzkcIcsX$TAcEt%8G&|^BdfA)=ynPtV!sE>!A;Pm{e~i1CIb1^g_EfNZL6Yoxn{j zrr)Ji%pUYPvPD$^c!T-WVYTEj%Fxe*&6ZY5<7E092`-eupfS6o$0~qN0+5em@<**V z27eINQVy^0~&_L?Ii|Trd{i!L(~s=7Rcmajsd14?oDD8AUxvsTm;ZCv}_u= zda{{O!A7kL1UZx#*kA(#`CO#dXlWP?z>sXpQfyI>tI-)%-7Tz1YnjZl1e6DA9Y!6> z#}do56bi8s@~VY)bCe8(04YS8fatd=wOdFkc=}3f_StcHu=n8v@&hO z5&^a80{ zU?6I7ZNQi@0+eYP@!8Li1*i+{aF-=h+{`q9gqj)OObF+3TPjbV`D%w@e#7WNpBT*= zwOOswkn+^$uvm-7~q3=#>P)iE=T66>+0G9fRB1q8*OLX;sgrNezLEoC~_{>T2P;sE2F` zdw*l_b0?t!9K*Y5cn6b&*=TLdN83SW6MsA}tFsv1!|lK>8b>bz+22$*U6r%AZDZb{ z7pWuUq9Ho&VVYPAlp&I5aOz}WuHY5Lc}Aqb20PO3n-O-3gSL2rD2g(2na%@@!t`jYe5JOf%s3s(}T3SSA3{G8h|44rT}8=}3M=HOuN|*-1Wm?j|Ffm&yFf#p6Jrr)vhF zKa3KzYUc26E2x9TZ@-eS65%kbX5asKn&vu zhtQ=P1@yVxSGNy$n(ya9dqj&D1I`qeV9b&|(4+Q&slt&@{?$r)SPc6EbVsvJHfpyZ z96=q0$a@rb>dg0WCrX}JryF$=9umzmsYCAeG^glTdUUx$Oo;JaID{3YlDWIl9(CF5 z@3azbTeaX$_I4ZYg!2>Inr5^W8VQ9$;ZSX;E>s_C2sMTxp{7uCI1~YM7D8$u1?hT4X@hWdtvhQ@|SLsLU@W2iCQSld|FSl`&t*w`3pY-((d zgd*WcZKN(zA8Cj*Mk0}>NOM!DDcl6f&;&uy)YuehYHDh3Mi-mWd^4(UMzLlj2|^#n zY5Fbu@tj1s96_P$qrNI%6>iEE$`zHq$|~O_!fw2y`Jga>Kyt~RHi$S0F%7{^cy{@7 z-#m^F+fYd*@|p2&#EA~=<*?X64&|C2O&jRav6=(IJ&y7U^3j?U*@kAE>QZd+C3v>K zCw~R;E;B#*TNDJrAvv8cm*jSNJlHQc+)MPy#LEz|HjkLJolZSy#B_RAQw+r9IlVFEMM7q z?xk1XgqM$e{Tt7G=jaQszahv4h3sw1@{YBg=U$djufFB>&pmhag@WS69i2N8>W#PD zkIYX$_uA`koRABOJD`T<_Fw%^k3IgxE3cmT)m7JAfA_tQKk@XlM_>5ikJf+so8Nur z=nI{jHt)FjvaaiHy7|kGe)WkbpLzDx;u$k9+4bAsof^v(4DR{KYlTInDXnB)*A-X( zyyeu`*1qhwpL_A8V?X%$ zsWCz6DnIa=e4yPkS9TTe|6*b8!G`(MbH}CG9*0~b*UN6n;dZ%;eOrpAxVL*mxy0v{ zJdzt<6_9Wo+$s58j>75A7OB|nat7Ty+@gDW!4`Rqv`liy#jc`2i#%^(mog|{zA*P~ z=YfZ%Ij#fmN*BAQ`)7Km1*Qcqcllg%To=2SI@kKDaB$Tjh5c3X9G73peG#upqZ{RA zlI~d{6-g`HO`fIB17pRrJT=A3Bqdl@l)FJbaO-UU^pAhaS>s&p77J&2a}S5~K<@i< z0?yo+Gxw--LE!dheBTQNuf9==c=zv`miw9~_iU&^_PLroYdry%?w>F1lrQ$?u9{Wi zo8evW$$i50;N5|la`;Yp{|^^o|ajZt*ekCGq9JE8g#muZll(9C!Yw_zUru z$_e@RuD8TM#qw2~HsAdD&)?y4dmC4-y6`tIz9dhZ)fl;O$2S{}zHofXwb$MBc?z8lt?78jsipuSuJ9Ot=cOSm* zp|3yol*=EOKCfkU$NBdje*U|M+_UGDFI=_y>1Sl+oP~=j>zZ2DpSy9(*6kM(W_8Ea z-rbpzEB1Zj?gzf~@R1h->AUX!x93yZW#u1rN|*>$cGOho4$PCnMJ4hA?|kP{XS-au zB=>-8fxJMj^wj$uxr6&7-Wfhm?$gau+~W<+z<>Oi>vXg>$s3$Cvd`^xw<;BKz}qOb zIOn+KfO|`4q^_XOUG4GhUsRggU+Gzr``AqHCV76*n!?#`pKG1B!khK4jxKR6cluoC za)XjgWhF@kZGvi&qu5Z(N!C*A*^@yxlpsUff?; zB_{$G`U<2=rIpR|3aVr;kl2;G?W*r1&F|C$7rQ|uauYgV>6w4QuoRYZ_XeiPl2a;h zT|+VgQu^&T$x)9lCbM7b=j7Pi_)LPE$ETetJH=!S>8-f7%vW+0ZzUOvEBLWydUKBO zco~yL?-==BoUa_QWD_#9I#7--k`cI$Jh`&lUhl#75Rbzgq3a@}9YMHySB|BypI^Ik z`|>eC_;o2;2;)g8ddO)0)V|k_kKrp)W2LS3?8o2jMf6(^VZM-1xcET)IL|^mPbgq? zEKusht6NVMDfA>Xv0tH^ZbmEDI%L2uM`{tS)_rf3p1gxUkL{!N2thb86JilYTM=8A zSV4=1xLWTrMtR}|#C|vSZdp*GPgCG}n<+{x7eyWHNyr)b(HJGr8}{NI_G?T9o^!uj zjo%|ImHkLUJM^AzJckf)4l{?Fa0Iz>W4um2&)=@2bcKHCy0TZmvL#*oSNPnMY{;Qj zmZ)H^akbJ9^~C56MXAFg8!W|6a{(Tt^0CY6I6C3+`tYwd3km_ZU@;7|sne!I?VLGl z_MExao*)#OUura74xC%Ca1qs0!7BUn{ZuZV*wzx#PR{ls4Q9f%teS6-n2>CbhQhV> zsP#+}X!MJg@=td)2#u#p=4lb&H))z@&T&?66v}O2FP@ILQzs}zxR!pp=?51j9Wij+ zAgQr^?2U=>BQC+9JNt|- zQ2IU;d}nOz9n!4ny7CcL6MMdk{qi5uZ0R!lyAN%!1l(Bz6zMinghStQpZq!XWd-M0 zlukThY-}HWp$}Y7A;LWgHBHzzHun1;nN_ekK;5`bm}yp7R?_%kSw7SsduulSamF@J z+Ms&+OvLWTo_N%HX^1dD#Eyx;xI6AxNtp=aP{IZW6Bog+m5-kj6wXDCV+#REWIa|9 zWIiduAxg5-<@R_zKE|)Wt)@bEo55IB$viNqyrqtBG}*86bHK603T(y|#l=gOidD<1 zYeJ$JMzq$g$BRMFn#?Rsw$^VPG} z+^+0Um#(o@fG*n6JKm492XXG#kDho9yZ*hVFm>P z2)PwP>cxQ5n7Sbq3=kl}06`*&@{))N28;@lhC-vznr2YZW;8Y-M2Q;cs6o;iV7|ZS zS^MSOdnzeV=i?t!mDJgL?X}l>*0Y}X^{lm%3lF^{O_C&iUApCh^hk0+l3b7-Ig%dX zCcWZ<;s}4NB)K5BONx)!B|r9*-+9$Ka>W()UJ@T%kzCNT@c|o_aACxxdl3 zYI-u~S6pUa&K4J6cHyCm&;PMY4;{YnKU{Lr(vQCI{L2nr#LeOJUv$yoB%6NxO`XRt zy!hbxmtOdii;}@~oy`|rdili%UwY~Jhc5oVE;=-;m0?|DMh{CD9(>WEWC3Dl@%<nV&A#3oko(@!^ZsKPWG|@bHU4$R!tFy8rwiz4($1 z1Dv-CFTL!dOOu7^Hs>!p_|hLa|Du;)d^ky_pDfbbkG`-)YyP3^gISu+_miUEPqKc$ zmkg40nDw%(-|G+N<|v!b`IBYYfWPrikri2%4EjmZ>p@TP&)l5et)GOu+TAJgwSM-Z)2nfJ281#E7&uJs0<$kXR3_M8+8te7u zvt%?kKesr?pM+LuGg+duP3c^k&dm+x=zdNR@G=hvyrqy7Yy4Iz0dU7hiPYW#|8g3lCkC zXZ`b;mxG6srQ#(QUVLeC@}~38f9b)CUv%-M7hZC{l{|g^jxN@3dEDS7twW zclv@4XaDo9>2qIp_{T1P`H!Fb-QRoR^M58?`M#Udf4%SDobzwrnLg*NpGto^y*UkU zOMl??=^N7P((BVVrqBD8^jFhUKahSf-SwS&{^fW5Y5EuG=hHt=|1ACW>{Z$0=`Gpq z+3T~vPQRM|Rr<5pt=Vnab=f`H&u8z+ej)pf>^HN8Kf12?AoDQ%y*w?BJY$VNNhtSE zk{xzg{_d43$j526;(zm%Dy@>zo=&nbICC+rvc)`GsghG6<)liMvm&Icz3$GAK6s2)0A&>6pjr~Rw+DhMaUc@j1CHHU`?N~StJK4D7PDda zSWjNtIZNVARtb*Ey4SF;p3%>+e4R=SctE*X zH{-PYuZEX&5ln`1)n{kZutr!HP+p24?@H4nAsH8$<}5#JG2w#VxdA8#Bb#}gUJ*$Y9@{D)7@DiD8T*@c=Y1Kj_mS_{#zM5YNHTl4J+QmFQ~2I@cXFH zQf=XQsfsXI1-!icJJnK8Rk556^v|e#tzoigusD2ok@o6FcI}_!u@T0;J1Z-Gcy&_j z&bCw;V;T1-;%>X1?9R3_wrVvL2gm)Y7|-#4mJ1VEH3yy>u|b zfH}=Wzr0p2g|DRt!lpA9;ZdN?!}6-eRM=Y#p>9S1&}sQ5Lo?S~SIf5=;;2zh3?&B8 zmPvLFlc~x=6tgKvv;E~wu&IIAw5f^c`;^ZyMlV z;}yhPZHz(@Gc?Xd(AxJnG1}O{uDC)pR==-dWcz)55fdWp7pFNaWo%%>IyET*DD&Zi zF!ckSFsuA-W-tIleHBbZER$TXStZ(s6iX+4wKxC|MZ6zwp-D9*W`Ws$P52+4H^m<< zX~T0PCtyesTn$#sTO5%Zun|#FzTGFh<&+n+tyLXH(LAOQ>*Lmf5U)mPSnT$dx>?P~ zS7VJT&c|>w@Y+a#_&PltUJ&txHmUJch(`Y*cq+Ph`d`~Ypy(n>;tYjUOq*B9&aBvz z4>T%6PI#xNt$c%U3aJRiW9l`Ssghv_H#D2N5SeN=t(y&Z8SQ=t(qXW=uIaRCbNF7Y zrCKgsmo_>XzA0D3byorq0`o>kuZpg>qNVaJv4~l*sso|Vc`4bMmwR$BPW|$gHoZxB zEQuA<@@f^)>QR4GzQdcMK9$1F*1?wYZ7SWJz1W)JpNDw%85`14d1Y*r_HT-C@VNX> zZSjn5XLt8Y*4@)*cK4WdSAJvNT{UxbziZuXue%#DFa~*cmF!FRVD$)P{3DGYjxnNl zX>>lnrOPX(pg36mw92Jit=jJF`SxbmvKpl4xDmESs{t55(4YuyH{P)^!cV%iGa9O_Vn}D2AxIc`Ub@3TObk>7Cy1 zsmaR&#tGcfKyqEW>ii=s#Yhi?UF9G|NFAB`a!1|WuWTTV)g01K3esz6+MB7NzBZ+J z&5N(mwU6Las(mfR;--hyWcios)TeW2{_;I}+3>Dani2~qCE=*5%Tg@gt*hZ6Dc^1v z&u&>6>5%#8s>~#(~WMmbp&!2<%z;A@wMtN{9QV8b~9Kg`v$~HQ(ba(X4e|+Vi+<(jG9&{p!yq z!%?#D!T0|9)o*#*yRO+h{MIfR7?@ZQJ2o4)VpIE5Ao?YNJp9vqYIuHAh}}s}+u7&7l{*-3sSp;er>w-U{p9=e_W#6)wb@ z126pY)QIN1@C#O0*X(=YXRWaAz2}90XobVrCI+d7`3Wnm5t4i1Z(3muXXb^!HuZW$ z@-JIq&)cM4`A%UQK4`fQKKT8)Y@T4@GnjL*|H-5=azbjpU>1(OR`ZgU@6+otcqAP} zxi_dl24N!|-c*eXAD1HW?FxB0z49vcKPkf6+C2&CW7vSAZcmvc z<_l4sAi_Ldh{UVnlmtUE9CK)<)gdP=pSi00v#idC;|74P!g#D7C_CCmjYQk0b{URteAyL#7dhmobp=^z(?u zB;h`A)92SQ2fc!@6`?i7OYEYR5>aDOen7b9F%@@>i_yZ6$;C?(AOmxSWjUO|obvNb zer|g6F-wDn;V9|PR8k|C;CXr{}fwd^y$GDh3xV$cj%6N z;*?J&N5`X4Zaq-(tzMDw>usie_6x(18^NR_f<<4XDzYc9MtgFN!jT~Y-zERi#=<`} z?+BZ4j)nyTPw}MaEQfWY`X@B=eTgZdu{aKSF6bp+DXe}Dv#G6 z()IAJBJUl^u4tT!M_SQP<@<1W&gLiGV-tCgL04v@gV?--)k$BE%=c%qcV?$g277YxKG!dt%TO*pIaQ8_rbqtgGU8?dl@zW|V<;Z{uVMFmi`EET@OI@4nu8!5RtFfKy zxpTWDPqGxi>5d?r_+#?zpS>cFnq#_3J2;_x+$-%dv=@lCxr>k)86D{ z+I+Bi;pEkD_w)!vb_73$#+jT&5nvL4?%s8xCkV z4Og1V@7Lf{VE|Q^-g*lc4$C#F=>vJ1BRLZ=&x9PfLzrNP)XGXYMBi9-j zo+0u(zJ&Z}r;MYynkS--x$LBX#{AMw1kfDyqqp zJDbfG67LvDPCgKhdB>Te%$Wp<_?N3fQtu;XG@{5DQ+8@H2)XPid8Ff9gAcaGV?j(A zT}F=*1s0%`7t77MC?-Y4q$fpTm3kJ7KTZ_0LLv~p)er<++zKQGz^DuR!NyLYu1 zsDEq0qn;)`I>zAXg(Hf}+M+;D<3%2quQqP&RjOn1)~41#voJct2kz0NhfTO04z(2x zjbcE1sI_D{`S5keP>~6GMvRs0OnyZLd#r%C9tH1h3%GlCyt81Ww}+UVN9QV1c1+_& z`uC*P6xNMBF81v%E{v$cIlM#QdR2=BRd4?|XR@2|qb^31{!$c(452I=VK(lGNL0qe zas!H~zBtAL?D@LDSu7j$J?yG#!XU$2KdUN`E-xk)skcgVQb$c}x@R!QK($MERuNh4 zL(wtC#m;Pm8bc4!@zUNzIK9yg4yLQhrPUyl(~_;vO6GYsL=6h**(%CVYlaf@hAFNT z3Bo`NYe&I;D81%mS94RxYi$A}0;iBkS55f7Ko&Yp4gY^B@X>#+Qs5W!DQje=6sTnY z++=)j3ydbaWPGs{hzuyN(Fn!enKAlc9izjTS{+-*=&}r_7+sF@6r<<5o5AR;coHt_ zFgm{m@N?J%zhbVL^%VIFmP(|lIy@rpC3iN4DoWmHEl&NVSP>QlES9fN_7o>*3C^A|W zZe3KRb_FtE`*7P;u(s7J|6W3ToN`n1F5!=V{2o93Bt70bz^_VMzv_Pcs??DQ zuTiT@<$o7Rt261@6&cl`XRqo0`{l;zQTTWw3t47&7IGpNR-7#rBRwJRkYKau`9n9@bNN3>68`Kj-uJn_0tUDi89@gK(St(bxv1>}13|E7 zp?Bsa-?rO_7-Zn&+klkT>D}-#Mp30zwl{f(zyt22yjqr@q-lp@k}_6KAc z$px|>DhX!v_p(NEn>0}Pj_{CaqA!V3HDh`K+F#Z$Yltf0_7sqoWGkBXM>Xv&jl}yz zJpH&H3G~NwQGVV;7?^lw#1T!RvKK8vWX3*Pbeo(s7LgTdVbUz|0tme4UYM^E=HU!M z5w6up?f!J`)9?%&jpy3c4zA9&t7Wdf->y#Q3V?C{Y!#CUDBq$%Y6eEa7ntXAFiC`d z!^;oy!!VxD8_+HP65t4TtJm^<{;J;K@pATq-k7(M_!>ApX($*bwS_5LCK@4mMeapw zfrQk|qNXR-xx$TYPcoG?5rhwqFph+Npi-^!Q1Y$}kFoCT$)hw$P-jZC4Y zZ?l4oCYXLbX{?_#++X|8_%@n7fQHR0$dnQ9LZR8fSrkfh;uX93vJJ zdDQaEieS|gKG>pvh*6w5DPSUI)U=d^VJb>Y_?yvN)Ztw~)jKR_ly4F5NJNz2kj>UDl*ECcOo&7%uYg&m3yJa@-^yqL7%G3+S>Q4hLfswSCgCq(S#A!5 znv9_kUxj3@2{1TVl2$%Tjw1m7xJ?n$MLgIc+%ydLzg?YG;gk9;e@j)8;r~d}evR~Y zW!@VWm&mUHx7%e~hRnR3@U6NrY5;S2`G8u=R?PQFBI)KN7yw%=aApL>Zcp4YXdL9 zmK6-wM2&l6K$bY;LXgA>HF6pdS#qa3#)HZ~vmq*YGGQWMbRHjvUMea;1$o_~`Vay< z3uORO+G*yln9OU2vueKLu8{$qu9Uy%IZZu6-Z^=SHA{7A0ImUB=S)~SfqyXRpy!!7 z#1wzcL&r&rqt3T?_^eKyo59w@f6>&d+X6{8^BPvlz-tLGe37N*Xu5^vuPX*1ZRb*4 ze9c%XXmQ1L$6*`-{TT>Kn^FBE?rCwZ0)-n$j}nBUQm{`!-QMuLMC4$yMZlhb-BmXf z6hFa&rcM4cnjbzRA}FGz!6l5=V5YJjq5hdOR-v??titEARyA~ZRbY&H*Z@Lw{-UAy<-XrX*JiXgHlta?QjSjLZTwZeZK6 zcmv>W*LY>VnsB0~933bW{dJrq*EWLrVZGZ4dmgjtsbcA>!KH|#|{nNRai(&@3Q z5bj_W|9htE_D|C3llhCknOe-ZSrvo(^5~|@f-$m^5iMbul^@lVVD_d^d)~xH$vPdl zgY}Kd#%_G{31lObR5bC?ywTXWz0&m&R=|v07s;EX+%Ah~9L^u`#Md|cZg}{g)$luO z18pwUm)SDXG5xaE-e&fsG0aKMeJRYGJQoh=ei(djvRGm55l)p^2yg2J;**jN{Ope& zb>EydJ;mKbhOu5Lj}~jsZC0d$B!f}CN1ef25g>fyoJY_>sPg!rTyB5xrOtv^HF|4aq zpjfsNLcB9Q?xAaQHuHTy3&&h1qD7KwEf*l#@OB@ask=J7 z-S;?Ezl~Folg>+^GxIo={*aBC$q zn*snj);^S@1-IIm;NfKEPBkfU;j#l$5jrTxq=fn%wf2`qb-;=7Lv6`Mi8=h`Y-*Jz?Q&eU z;sar*P?S<|TrGMz=Ar3Tn;C@^%7-OtWehVwSPm!9s7LqF_M3L%YZqP<6AgOb=IC(;h@1Z)+l;d~Qh&qR;vTm8Grcn=|9r*+RosiU|*2^D0eyObl<b<>IP$_zt)OeHi`lJz|sdx~yt(mdCCdjQxMto;0{*qAEwu&vfS?K7 zCj8QFl>!RAThfSrBvzB~fosG-PYJi_w~S7^L8sRhaT(*}#hA7S7SH#uu>^4xHns3Cj@ zv`UmUJlLfT%9dA^2L4(#DY8lkHHB;2JLD{nJ>1U25%jpi?&$1sQg)0ANwiUhmM)L!a+wQ2c-*GpFMZrjB+V4o zQJ7lth)X?I#=G~|F)s@asa?0Q(@G>*WYC^OEdocge&_X!A?yyf=(nEr;U*a|aCP}^ ziQr`T!^bgwMN*6dgfM|?UR%vCMLlk~iixp&SD;Q)_Jfdc~mwpsXB}B!~*7AA-jmrUC zA!#DJQt$E0NJI>j+un>ySJWuKpc$|+%0dtqpySch*I1kdE*CM|jQ~YM=eH>AGU@F* z@&Z9y_4cK&*yDv|r50ehO^DBRd(u-QCnz}H5Bv}C;gs1#K@(S~SW0zfEAts*S6;W7Gx zQ#%~d718;#2(2bZ)gfDV{;=0jlFXwBgvm4eK|vtYt(q1--9YD6Ry@?XdB+l&^a|>* zVQF=Oi3cr#ZC=K*)XTjw&0_J<2_@K~JR*n+c@k68Gnt55V~NItD%vgT+`zNFfm)NP zZ7x-f*R|yk{@ARV9bwI+LA`om@=n?mj!K4a&KgrfTZYpeOzxVoeIm(?=_>8bS`d}9 zmHID3%n1Ee`BI*x8CKg3wtTfc9Mx}4e$IB-Ro>17U&A#@)J_P05&dlKBt8wI$5uN* zhOV6wcuQ@$>0r2(b=@)OW{Y|dYqJ9Q67{1-)Em1$*d@e=i>%*@l}`S(=D*!I>Il(9 zG2@n!tP)=|)ATrR^`N89WHl2cUn7?Ufg&n^b5jj%o4K@!tz+AiLbf`N$<}1!YW|ja zUBPYT*Sf5s?ufuDKZD7j{IrA_t4WqvMA;VW5EVwqSTo9-yXxdjwWnsWj@9fj7I&=O zzcPYQerLY2C$A_xBW{DTN;DO0v$Hj)T}Lz$9uysTL$BBSQhkbz(rTR?Tyb@_6>jBf z#X1Yu$OEZ2?8M>sm})7V9!R#Wuvxw$S7H^JnhEhK+*gPmY+dchnTsG(a{#Uhn>k| zDv)z0^{9eJ+5-3X9%>7Ce1E*_cyiI(dk4_o8NEG`NvB3s9;Nbqvev=#ObCQo8WRyR zId|Hl!@MB+P$@NHT!FB^S2DE2vKnSYN7tL|Uf(~Brfdgrt|bvo;|5LU4d%!QsoIA{ zQG&n|L3Sn&sz7MUBbx4O3mi?KY70Qqz45Mt1XBz}$0@cfl`fh90hENH&@`2=VO}Vl z+|AdR@`1q=E9M|fbrznLq!bWq&BDU0oQ`Y-Bzma7_JM%~O#Ff{(~X?s^9Vyvg5fvy zT6J&?A7%>0bOu6`Ixj5)GG9-Dy*&@4N=nb5%^D$*X-lGQR+NCqWd5GQXl{4|vmgPH z1=})gW*s+@1*gl-qiNqfkTE`4BPnHwIon1srX>WOmO4!bplRzdD+b-bC8Z7mQP3pm z#vN6*xg)$@p^T!@c#JZn|Z?Rt?_oq?ffvjvGa5= z3}1=EQ)PBf{8_wx3b$mb|53aham%vZ@5Wm#R+EGGv3R?{E#~U`)Cx z%Y6xNBeJ)y(wOa8W{D!726x4F5IZt--12*;g(Mi%8%O7D>>S4L1vkzn#)aD765VtuPKqMedwk90*qs zNaN5XO7wX4-zr%;JDck-E-l)hUXto}%OP5YUDiQiS&lRc z1OD&vKRc?!9RK(EAITUt@xKx(7Wsc(%gCy{F#OO|0H`HH8yZB10fr?Ct4k0_WTIV2CU{!n%Zf5gJeg}~txlU;FGq;W984S*H8Nwbw z=@1ho#JgA`Bd*eN^PA>u-L_faYt=+O5IdJcZ`3pA^eBg~)R7bLokmMc<~X4-HY(&~ zRPOs)dey$10Gc8Nz)>QML4NPn*>exrSUWT3T>hZ#fz)1!>6!Q46qfVFVHCZGYuY zsU-}5#~7{jOKXJ!SCn>u))r|=Z?l}RpV_E{jkp;zF7r8Zz`!PT&Xp|>=8Q}1;3K6_ zDOYM51D;AH3@k{aS|v142Ls(4AsOx3r?zo+9k>&p;qOYysksF+N@JEU0DxPdND9u< zbvapZRzK_DcwXHYQ!lhk{R9JB(7=Yxz=jnCjj1p-uz8VLI|W2is{VeTh=}zlwQD98 zl+_%(E~;Y!WUN94Y>$N#PffOHJC7LA=1_@KkjQ%EtKf-Go9dV|GDW7k5xk9F9~ljn zACROR-jq&dHAO8C=2{cChgIBN0Y+Zgh9EZth+Jwowi(EFDa6e{ot0l;iC!-|8CtKm z*y#0YYn7oknjm`<%_3Osx~9BUZL||@*qgAYG;vC#3YDX*ZD^f6vSU`kaG@2c%Eih| zb{4KtXoUV?V>@t7zU?*aI#${~?y9 z@@Xg3)i^NjCx~dxh%v$)Z9XdMN`|u@mi5D}Mu;uBZ`pkH@!#57zjdf3SQJXWgICs! zVJuOD?wJM!PNh{c{)u~3tSHV!U8F%{^9gwhtnd^z+rIf#1_cET%e?eBW}DP=RHh-C z!U117L_643YHmUwAuw$R*A_bTy1@?qV9siDOO;dEyArE0NjF;wgg-2qSJtQt`ixET zcxW94Cafo#N9>@yS%t)`v@Y#M)L^z^SuEtzL4bC42ftv`JQ`6p$T?>bb43YvFnY!R zB;3gf`5KlLk9%kFxJTwJ`WB9{I%jflXVgT(01BZ^P`S2fFrji&1>p*RF0F(jxs+i%&H_=1ovIwjMOiQ{(bIydUl0L*W zzQp6Mp&6tz7a6AHphgs(_&Vrc<-@BxXH{aaCQhI2Tx!lvP44;(Tm^?SfW3aB8k)^J z^+b#DwQ-k5rvhyVK&YXd0kn; zz+DD2g&YmkjX~n#u<0yau)OuAZAm(iS?T9lDT{;q*02G$R2K3mxg{EehZ?GHHN|ZMoIng8ewN}#oGsqR!r?`#1vWs zjUnbr>-nCQydln8w>*aT7n3&-FIwLc2PhyTw7?iFcu{~nQb?L5gZ09XqS?Z4YfGBE ziP(Hto1m=`PXR^kWh;tHkcx~&9yT=;6y*w&MkM`n^-k(cclT}FNo}lM?0W;k^%2OV zk(;fdL3>&U-MIWro_?Z#$^U~7m1WN7Iy4%@|S=8!fwXDenA+F;~V z_~sp>F#a*|$8YQINghs++%YZRgciD@V;K@KDorZ5-S3!UwO2hgYoAJ|NSf77o7|YE zBb$OIObl!nG`m`@EkxIZ*0I03GU(2Zk%O>_%1~71vnm)Klt3|y)L@AB0JJ-MSdSt& z51B-Qua~_TX$)h*O;$<8kEq6&8d6twBSzYt*_#ZU31%?JX$ZVlSux-m?n*k@g&)Dp88$lCV}j<<-?Skzj51Xig&_CUgx7*vaSG?hvl!o1{=C41AY2@eM$LtkwdxK~TO~?Ew#cOWfCa zOj*6>Z`W$Op-gxi3g4o%(^JW~(*+sXJ&f^pLiRUP{=} zj4$uWHBTJMq{u-gz zi3#eJ{d%{Az(yYp?@n8mYa@6tY<}2$v6tIHRXI4(MtOu6`PwiB5OUXV$EJD+T_iEFm2_)h-^)9L+=JNT#+r4-P2~c#kNpK>T{MU{=0c=`?rc*(7Vbt z=j$J+a_JUs$7{-SW{n* z%EdEf5K-kSGHvIHL`tt!F6ENc#^oaR*-F4D9_a0P0=ZGp5c{;s)hgx*Xi9pmRqOCr zYH`UY+)qNE+0;=x3?Lr0^Uq)_$qA3(qvB#%Ds_7L=QDy|kWc`y9KbZW6YcYsbEy-W zi(yssgmL6^Y)tr9jV5Flm``*kzDHMfE$7C6Wy)P za$pQ|OGTQHUWa_fV-r*)T!<<9a+J?h8n!OvRx<$SMdHF|N>h(wm_&|%{D7kTIf0}Y zUuyyp&W%eM*@_hUqg|5(^V{zY8GdL%H$~kRTxna_v&<)YLcD4?v0W@$uBE0XeP&~B z+}F850I!lkqrNT9)jTdd71?T=uy8ze$6V0V-!g``!aJ?>v~WYWG){~|Zuws9De1sm0kM`HBB(lf?~gip zNy?f@qs3^`B}3MfSQ-dOu%XpvP64R=fUKhtSYmFY&Zqbl6a#l|RA2C_QHru{e3q5- z0xb*osf0C7HM3fN(FTo;pp0efdE<_I)r+~_`4~wI)*!Do)dIVC_5zVkRA|%OQ|0tX zP2k7d;oWI?@F<9NSgv)mKn9kMT6Pm4Ccx{E3MB?x&NWwOaD~~ymF$OQeo0-s?x!?K zf2n4Y;ZOQ$Zq0XXgx{>jFC5M=GUWw5qUz!#>5F9#uV)B!t*V;pyKXfsVV6L5f#!vJ|;gAvV$@Z=U=%Y5YUl%hvteTPE&@B|DdgVQS1B_<0 zs#v=M$cd`+Xzth95{4`vxn)Et(a~_Bu^=!~Q=8f!meMtn&f`|{_#W?%_^xO+rrjEi^+0b%f;DXU+OEE}>Pf5aEKLf_X zw}yA>x8{CMdjFCz8J>!-;yFLWM1MVPEm3T_wDJ9*%k{n=MYDZBaisZG<`FQdZ>uNV zOnMa4)aesqR&ne<(4=pSmw(@yqfAsgge~#g0A|bMgNHRg&lfhXH?$D1lP=lHkM=kj zLzh1<=*wI5Z!&y+)+)7@444BA7$SuYtC-ajt++9=uFdM-)hO!dmZ1skZx zJf`#X;RFjCoLD*!IE;tMKm(|isYpy`{mY$0{7cT_dbLD{wuiuSQsHI;RMF~3uh>>k zmRV~il6_iJ-0%-O1k;sGS$LzGwG23+ln)QVu3JE zg`A9($)U{XZXFFFz_v?BB+n>lS1mn)(rWMfFnu0pRY053kT1{X_N+7Z<+H;RA z16*!D?mycWt&5r@zAa&npm-T%X{Ef8Dt;_WD{XMse-Y^n7gYQ)yZm2xgLg822cdZ$ z1EByx?UjAA4zHu?C{6jBpS!J2uB+RrNEy-d^0%$k5Ai*_dZ)0aBF4ImlzdB;=1u#v zZt$t$)o=>mTxssK@}W4<<2q$X`Yo>??f?o{lypL6;EP!$fn7ICnJKwl?rzC1(+0Rc zFIikF(s=8@Vm)!p!*+!Zu_e|szmahp=dw!Eajx#MBWm0b3S1*}BK-9et6JtJ@S$y* z&~CsYq*YyJUp9G z3sF95kWkfQRy-&+zi#ky+@FMMVP7H|=q0Dx?&6DV;U>r@jmC&>vsf1$s!O}6Y}0@p ziOrPNV|w^Tn^{emOt22LEr@1~Dex;0K&gSCDcB4a){+E56#-}&{)9l3yf~Jux+=lM znz@4Tbc8mvtnS+N{qkKRZ16i&hFQJk?dCM+BZ%!$bsaqwPgpDeK!6eg;lp-X04o2` z?isVhbXK33W(OW{`)bue=B8Y~M%T*ZMKZb~!1|Cvqfl!z%zMQheDtVLS@%E@dM+Lh z^-#z0(bk#5haT)mI;jFOR^TPyr&3_TbBC4YM67vO7ZwKz+HuyNw5J-j)&Y4>0Mpk! zdfJr4yeUnB`L(2vxT6ryP4rsSI|@&cNdyP0p^wKfDQ*%k+DU9om@OJfbR#{V3=pLt^7wjBr_&Bku_zwGRh* zH&B|_WWW&dBD0m+G7it?2cA8HcklXXCPgN9f#Pt@jndvw?bA1RtG!25HlxfXilJ2{|#6ZbcwiSgwn7 z>MX%)@FW+cK8gfHTTqN6v#HB}ELNfwD+wmL*qLu-1;2*L59y$iIL%ahZ%VbRemuEe zom0!?n^CBoCCEm$)5z=;UD2Hl4*nrMG)th8cEKuziaIMZFpvVC{Mh=nu@gKLuF(l= zY8c!a)UCi69__5)bZ|`1LTntCRPR4a3|oj!i^9#G6g1-u3`?kYuz;9h?mAddPKOUs zivpSx7Z(+FTS!@Rx?3oWt0mChI1d9Bf|_;d6r9s26XpTV+r7H%2Sh`Sc%-x5ifd{+ zO(qAc>g^i@wjJNz2s9>le)zK1lhdtJVBN60v#Ww8k6vaUw_x% z^tFYo*mo2`bqwkq@h&eB)`70$=?$qcEgAG=5uzyQ9y0;StYCUPS60TdpL(ec#_YP2 zpNeD!LJKQNyzS2H9XjQ5tN&~V67h<4{$|NhgNc8T?gg7l%VR<&7D5f)jCFDZrtkMj zByhaK5!PB{6GgQF@t6U&9R&!t^W9F_|6C2oG4^pE(||lX7#!|R3^X7By5P?ow(yW` zg#TH=H4J~s7&(d4jxRNY!}PFdG$Jh4(45eyyT&Fj(5{h!l>4k{s~36eV=FW}>yE9s z=S>3g+rnM?E$a|hz07GZOf7SENS5Gahh)QpBE7B)LLp0Qp8W~Giv@Z6=Nsx3vM z2>(*Sdz@|tiMq9*Vq(cbjGRGYTJh;ycC>YrX!lw*wom41LupO=G}H7JVcRwDTZHSx zOEM{$8kC4kJPWRyc4}6;GB&|=vKVJ>*hOd{*R%;iXGYeUmI!*;b~Zhrq`7JarVlM? zI)yT&Q`^890UzL%r=!t|)NALwXulpboC8CQQU}YWRV_q8N(3kqxQyt~1O(&cDFxwhKOtzNEi!R34`3{t1*{U{@1gonf34>Us*fde7&N>(5)-_O4% zpSkU@kvn)C&*v)u3kelMVU9?zdiE_7>9sNZ#_9F4cH%xc9>a@ZbdNDdrUb-{ir*1p* zVmWPvWpv?+s`oNhkc{wgLAK%>5m~al zoDD1F1UrY1bFu6#qD4<=llZLW4^QUpuy2bpXp1DsK~U3@fl%e~lYNp4M6}G_m28mp z%cla32O%A6msbJE$bGa;l%P+5Wh>$~|EuGVQ-rVug(B}kL?WbfbeuP2E@r|Itk^AT z_+qaT?I4KISbm6{4n`p=!iNQ`{&`F%Xx=*3(jXV3$-JFrtZNZD5RT9~Q1qZ0!IJtc zo@&yRg%c-QOrow$jN;aukF8IoF(>4)gT8LPd3&loI#d^$Pn_<9X!e!^20erifRar zy9L4P4$&XUj}J_)CqJRVPQ`vIv?jzcrF7qs_vg5?p}9n8Ban=^lr@hssQONe5Yski zP?PMSU$zH_vn@N7qdTNG*f+d78C3Jym;9c~&vQv#is65s2xmO2&L!xvnnF>W9$Ab?88Kx& z3DQH>g1+drPKJ1U#>iaO>`f)I8*7o{En6-lX|bO}tgzay<{#Fzvn($}0Q4#&<8dS; z_hsX}iI1!|ne7JYQ-E~ekv-WXYK+UZwWC=2a=Rb$5)4s})4A+G`1E`J;61%VyB!2? z^)auaRzGf+YioRFRSasvGMu(LnZuT6XvO{swg~fg-r_gwvCqRjddXLM0r+ma>s9mm zAY<>m#cyG!I2kqHLVKqs-hOdl5%Z^=B3mTBSMQAzNk4PrWa5a$dWHr3mveQl4jn)o z$}R{=`3G07(Q#i^_gpnU&b&<_4CsPUx0V=sSF0b+c=( zI~XR%NXiF;3x{D)vCmf9+{t3^%r~EQY*E^96@Jd#Ptb4ROJ3Z$h&ZP;DdI264&OQFy{RY z;c=im^NKA6!XhHzId5LoktI40DbwK|YItFB6DNk@LU^-8WmxZA;n+aNmXjj@DdstX7B9e#BZ)|A#G?7tiog}DRj z5mCSupL7x7XW@rLv#gO|;z~Jr?~kgl-Pvv4yYRF@45HIk!?Mg%rWc+a;eXhuZJ&GO zN>l^Vz&o~Bh&sl+WeZjm#F`=4r4hP}gA;P`7Kj)`RICFAQCR~6VqGQ|6@xNh6f$Fs z^;DS5Zzq6BflPZLN|9Pk)W5V&Q%}|dgGF^gd5@`f=rj)E%0}{a~bpV3FIBEz6l+HWufxj2N zy))2%=K~Ed&>Q+db-9XLJs)(E=abPHfeN2m*@tY`$v!2L+{5JH1ntahRBYsepl5Ou zwUoqQFR81@J``_9Wow>;eL`5&Heteb2DU)dH?8NrOq39=z@C#S!XreCuEjI8OQ4hx zDW6PcnVh)VE1<_Zu0Ym?{O=wb#zh9-Oe6r1j8Tich-Y2s2VP;dW}7c&!_V#qXo;4vO*c2tXrBL$l$lf%!}xi7j2l}A%Y+; z++Mez0VcCW#3yF=jr?V;N$8|Irvloojc35A%}T64Q!TYwX1zRv-)|ESc5XHqkn?Y!mnVl;|wCz!udzo}OxTJw5IlPY(+w zey?p_){G>$_o2vY-qNS_;Ew2md3FmkJv$o_y{RR}wb1eGERV~E3Ja|B?06PEJ1`+O zm*Z!yQ^OS?BX1o%V(xrqNAxsD%omwyqS_>eyzhv6UDfiURx{vFxs{R}Sn`TT&6FHD zJV-dJfCphl31{hAh@!9tkQ_R456K~ipq3nb!w(%m?#xtBkoz_$NG#wWb&woISZjlV zIg$e+bjeZFK|ve~f`XXT#y{J22(Sx~CN?W=XM-7K*I?MtNKqHZ-ZrC!ky0zhf}K7!wHPoYQ!X((2eLr45`PEls$H*f6ikPS}NKYmEfbe z-KYdgecG863c#ULFJr3Z6J>Q&qNZqSIX$BUk4w+AG=rXb6-tKtGSh*!W1sLg_=b{^ z#$8HABXQqSGH!bz4e)qVTpw-$g_l2nUNpgu~B(VS~yMKaz^hbdpyp-Chlx z1-hCOjx>?Q{s*Z|tryUT(LdbZRhxul5`Fco$|cT>{;@V0i0EHGrZyQHX!>kYF034V&jwE@?knP+bbF^!-JY-I>|$9Pe-j1 zPoDhvm1}Fs@U2VfoSpojAQ1G%4!8-!4zI8XeugE0sp#2Ma7HSx00YTHLK^cISksZv zFt5nIlVqZ_rlxE~58VdVIq$qK>av&lR-W46Xezm2uHH49nl55r=PdU1#S@7ZJYkGx z_JbQT@pIjn16>T$btO~q%%~d?7&7< zIyeek8foZj9k!|1B4fgByc4%W51FibOuTL_eG{A{I!rB#r`d{~$%{r~VqfX~NPd7h z9SK#My&aV=6-_J@Vj`7Jaz}Eo>bcypfpMpn7@njHLX5`vo~aSCMy$i{c?r4G`R<5T zy^%X+82e)%b!$bK*qM%us){`0dX`dgOFQ@V6%&?0J0b=51UMbdsKyC{JEa6@wN6^t zNd(QOS!2c{i6B6t;5HI5+K_`8i2+bHP=GJeu!j1C)+jGV!PvrdmJWIlOBr?fr2$J4 z1=H{(hFhn_8Yqa7fruDwScq#8qm9k5ed5Ge+im$2edYfoR0w=CsL;-~>ri2SVpK?D zv#C%ck!XZMH&UT#zs4-tKz;~RN3K)V(?5V zlxSOpG2AlP%2snNlzFo9W2X$ab?S~brqmsh$JQ%pdcC^S!l$j~YU8b~<|279+;HnH zDNqTtxO~p2tywa*^#gbLq@L-~1vNOpcB2h+7m8UfA6-ay^^jG)Mt7O*mPvP6qJz~! zCPbHy$j2N{rzI4ZY16E5|8=-|^79}adOA_l6xbT9dt7vv$ght;r zO)^rwruur@6r`&>E47ztvvJ`tM!dFZJ#p)D48Rc*<`oOZDLo_Ap^p|x7^e&#xtL&Y zpd*2gvGHadx*HxM4bMr%bt5${v03NhAalm279^_ld6MK(31SN|m%k;wO1#>>jSZO) z?2JVwlBHTtO*{=Dfn;bRo(e|LW_aHq9d^`l8dg|(0I1q+)KNiXh**ORM3mrJ4*Z@2 z05tdtjx5rsEV$J30nGXrYs^g>)A@=3qO_QJq-#Og!v!9infoXU!Aoh zrbWfd*EPm;D5@xui5kPZhG_jw=r=YU8;p*+HTXPjt&OwevWy9lh=*~&6v=lo!Se&# zh>!{yReDa`hVnE5@Me%znZ@%3tc$D8&}r&;L-)~Y64kPq1F|#<_h7|7cvs2`>9ts+ zZYl$X+Ya^{57&AS z=t%|tU`7pPMzIBY)eLYp|JstWjR*tVc$OC3jH0p9KZ%X-kr`#xFrzdQO|xy56u>?S z{&<4|vxJe_hr^4sb>%og^X&w&oYtKnk??E^NNJ;9jpijxsb*GzaG~aa;j0%(kAxyq z4AGe)0S3{R;myp)L#%ZkK8xN-+jm--;L$LllVm0{>}f<+8$YuQdlC!`Ji4hZdL7Tt z+ZLXM_!^2c1p?>7+O;`Pqq3l^i(ZAoO1&RMh~&R{|Fg|`y4y&ATGNiwk^v~+F5X1~ z%v(F&Wh%AIj;BA7f+aIyCz=>)2yoht2i9o|N-YU=L``eQC+jUJ8_@3~7qSvJ;~*8kNdUoSbedNwNB9>I8m;>gr&};^pEcsO)N~DneNGMEstvHyh z>F!5Mv(C=N1S1zq%hV%{DUxgIHX5WLjjR(Ego)48W~dBN_0q9g>7sp(UFS;LR?nua zeY5x(v}`yUmQf23v}McH!i6=27wOi#h3rJC7b_o7Gq?27D3{4(*X@QhmIn`;>Em zaB~*P1Pc~ zk-RM!)a7_de7A(uJD{FPlVq^;`8HXuSY(?z|`?3!x;Z58H-qXO9CqTKOLx^Jh1prn1_))+yZ4#WB_dQ%uuFU z6ptApidTZ?@W-?9j-ND2jyle*?wMLD|J+VP{95lnK`KpK zMZNhMNXN3&g*c5+6Kd8c$$6$g)d;^)=-7Hm{YeNt@BL%GM{bRWCiP@#z&Z zAfOY~*1D-$QZGvQK{Wh7#*!SDPnkHCsnT@fHS!z)5n?o2+95x_D*~j|E95kb;IeO^ zDtzQSZ&~Y&i*w?5Lw6oNE@ad zaD|F!kG86E-xU)Q!He~fYYoH*$4kn~S0D-{uc^2^EQ_?2;73|If`FIUJg*M@-{DWN z-%?_V_rABh&xuLdI7Yk@S|VFEr<>fgy|3mTYo$21*8n^#|C?TC7kF+>41Mx^{iS3=O|Ca+3>AF>e}4-1>(tm_gg;rXdaQ%kBH9DrKkwd*k0Kl{!|g zp)}6n{n9`b9YQw&2G`2>1AN-XL^J+Q8A0qsPq^g?l;jaI=>Q2p)TaVS%#YNR1R#Ud zMz1IYbHJw)2B@n0&1BGqW~<63Ol3rY8`F_8wvc~4y5Og;*0txs;y#EVs>QZ-Ea)Ux ztkjxDH`9u&CR`c?qWI`4FVhEzH+q+F*GT_}W+g{$;BN!rGOuJo<9kc|s1#j!x7%N_Jzb5S0X`{{YMW;e)9Yue<{g zOEZGIhMI;1w;UC-b5u$0odyA`8l6PLiAn;C*hLpCW+n>&I3VClV@&m-+4TU%Sxow5 ztohp5n8ql2hS(B8WPJ%pn|^C*VBNQ-2ex^`z(lq{eW?#j)DDZ*3~^eL zJZp*!ZJ-=Irj-(g%n?gS1zka|#13@T-%^UcwY$l;aVDPI)IVDhWRmkcy3uyCj7@} z041)<@|0_Q1(VOIG%meajI7ZNJ0xy?I)7T zP-ksS=*3vwtQ^$iJ?g!DP*$pak5FLX{d~sk-Nbbrf{}$s+O24gwxbuqFl?X6J;I{v zKPq@%wWC7c1ZIiA~;@?B_(@Fw+MK%zjSAouIq`Ph>ux~ zXe!P%6%_z~MN>X+<$9MrOLMO7EET z^{u`BQAv9IZ=d9q5^?}KuWhos zlP(XBSe5mSc&jv0ce5DyViarw7>q{C4Kg7Wj{+s-UutCbKwg3k7mpxPuP zfN)TO{p17Tn1hMg9y+xiCe&IFd8Uy= zrGkJ?YRBw!71d8CYkb)!sXp|5y78BlD#=W*3C3gL%kU54YXP#2Ee8 z4|mW+4)c(jpesK@RJ346h-!#Q`DGu>)zctEIVt8ePFBoKR9=ISO@WX(2wAx4{Sk!b zOtBp_kwp-6rM@{+Oe3qfMH<|$cWN-sY!QJ-X%L}P2hnCax-8;jySO}#i`kEgv~K1f zXEgVJ1EYDQJDPvpj)vIc6i!9OHd$Ht_%9mLBrid>q}ng}oV;z0MUo2nQaW!NqnXgc zu$1$eOUkfDUBOA{hV63jh*EC0ul&g{l7S_5v^SAmaG`(SM=oBES8Taf>bB3Lxhj>V zJ075va~00(J-9PJ1?zJm9QikkiQTg{p=fb3Chf}1FMSzAYLbE+7kV-;)wF=B8S6|5 z`vfZQf5!H}Xt|-!I_QFFIJI84#`?#2$;1^Vq*}vw01R4V#bc3V9K9wnw16g+%vMvQ zZd0sRIA9AEAgHM&jU%@u5Vgo6gqq>KlMV+y`;{CxSS=g`wzai;uxfP{lY^_88U?+v z`xxg~!37Tf-%ltFMCBZ9fv3cQ$TDYnMeoO;XFR(>`2xZb`EZsp$0W_Ig2=FPwge=o zHdnjKm6T`7W}EaeBK8U9RB={KiyN*PsdTi%bm5H&XU8xt*U~eYIiJ8B$N+x9WjjPN zzh8}Ws)AXj$0Z%>M*5=eN|)8w)t#mKp#;VYPDHYTPfd2AR&ydJ+m?zfNfSi-g6Spu zR{a8N+u)WT&MLfIGk_jo_OcZtNChrUuL^8NfwMzW1KhD0LA$0PWWu2#ijVPZJdZv> zL^MORsx@nXWA)+{wu4308z;FDyD&zC)O;tFmGs%&4PE5Jch9$)_z@!V&B}q~tQNPC zaF}9RjI&cR(r~2~4M9V?pCPYhVlyU^g$t1~iDX6`AMt}=d2N8E1V8$8g>k1&XtGcp zRHzB=LxKzvdWQgQ0Y*o~Ayc&9GYRZ#V&g4G2ZpbhYP$JXkTO=*d|wZGNY9<{Eenw! z);afl5F|AgkFJy@h@@4fL`a@@=$ELsx^+2j?x>>vGJ7RBY-rs0(BgalR%bO>5K^`t zwJjg?ObiiHrtR2s3!u{|01beC8R$7P4rOgw5_ZO%?mnyemZ&Vkr&x|}Z}oWyol*C3 z4c5=7i+b|8z&dqCopiLvtxhOF~+giSXT}wi@^#CP^x2NixR>&biL$YBDeR4dRjCFmjJV zq-uZ6OpAgrbfiq?E%sS)ww+0GCE-bc!}jK}N_eNpym^zt78z!u^hoFF>J(vAi>1_< zy-3sSQd7G|5U7?Y(+LtmhTaI3ym1%jDUC~<>qJc8%y?`c)<*EgmmxX)ufx=9#dmfP z1Kq{1Q6xHahfok<;stZ@LPnAMcf|KYp=%PfIVMSD%>F2d4XafsKE+9Z`L%5`MR<66 z@@Lb+1Jgul-#zi^?>SLE)=a;+hPkcHw3)Q|;)V*G9(FWTAbT!S!7U%?P(k>B48ZUm z;W7Qz9)n!s@5vwvxfuw`WO)5NYX;GWIELhEtgNsDpGhF+9L~+bsEy8_USAXkPtc^{c(+=Px+oaq$XR(T=ZwAw)p`A2~k zlq;cF%Q$w7h~pKckj`tsTTz$FR?s*&*;)D_fuOnG(RPl)Q98vs(B&^v8w|lLJ_NDk z@rQt{vmv1E2#Tt2tvG@y+%g)HHqlL~V4O_?H@5js3MR3X?4rh~!Ou%eMUrMYyr!%e z?#Bj#SzL7y-WkJr=0s5rn!&DKW`a2J>@bcSXbumGpcRji!`N*jtbGUqgEx!X1+3p+ z_C`+;-(&ZHOZdtjc3b4tZj0EAQd9fd}x4xfsfN|ZL0kY+woWOzN&xl*(Q+pyiFg zIi^{uahXsaO>{wQxCJTlU6fe>Qe>O?x z85FQ}Sc~SzA?F=m7df+lO{W+atjinGg6ayr(l=}xZ}E?T*cYUDFI1>)cVSmR5C?k4h}{e0$?iyYhNnDo0nUt zAm^GpQUf}|bq3EKLE=@>{Y{mcj`WFirmgT{W zh;>4BfGH^M2x%>5$;U$-iI|kpIZj|{d^A3jL12m%&I1!pV`5)^_^;gOVd0!@7J`$6+t;3d#IA%kx{p(+ zxH^fkY5BLBECBD`EGGLt@jI{o?RVU9^{YS2`iBsVHqL5<>KAQ{B>_%erqMoKSs^(e z2W4qh`HuHJge`B?ilvkLX|I>`X8b8smUAT4eGgI{;Slb-PZw(71G<1p@B0J}ndtOB zEf|0<>-qxwdP(>U90w-~`Fe92p2m2VXO-mWEP zB%uvM%8%ZDKyh}AJ@_UyzDdP5X2!;K961+?fSDJlqtglLJ7jA2D~7q$&NjyEh`*!Z z7EoowGT6(w6XCBrus zS#hLyMHIg}6uswM4ITEg6}jyelwf&yJg0lj$bcDTt;oF%*=AeA&q&CJn@!Zu89UEy z3t7Mp*oK9(j{3~3v%F~9;%#8$klQD#6>fQ-`j}Z0nJ>sJPcJG-i!}qWLDL2GMgvub z*9Nex5gm&x7Xo8!Z}OB1Q!YFO!YZr5&TN27#7{}opog6t9{(U9$qvRr-G+VT-NTny&JC;9V{EuU)QN}?ZR$_-86ftemcV#zNN!U z@>Yr+(P(g3kP%`|RIneFkDOKfg8(^K(xhjshCg-A;!bgDg+$)zaBk%?vYn2_m)Guo zpprZNe113AcJT~GySEE5g8a)$#SJKUiADy+8ZYY=@P(alr-&i*!e726W<~(9AX6@~ z@2O*nLt0VQ5)8gZ&-`4inkc9P0V;H8Z=A_vatWv_1HtlXV@uXE?he{RNYF}-eHg7D zlhb+@JY$6!quve3s&{BIuOzhjn9=5m@|3bDb4a{md2Z}qw){IZkEQkEXrYxY)TAI0 z>Yp}Y1uR+;6+lAH|8;LRG@`^`|Io0C)vl)u^QpDko`CL6gKD0W;a_H)Ny2DlB`6A^ z#r6H%6&yFHgZG5@b0+<5luBgzUx6w#X-+tj7GINqEdQ{tq38QGgxfep1U_>nN%6+$ z2U@ZdvxeX^*0;*UnKf66Qz$T9*pSH*6ZDZ-N^Zv_F>u%tjnl1H zaP8;9-z&C?f>Xa9e1{wu0Lv>z4fJ>pXZ~Bqo9I9%_#C(YnY|iJ&`90qeC%^xefkOw zJbMd+o(qfT#s!+WrKKe6{7E6vc`_6Zgj*D(9bpsAJ3bW@T#_iTXU|*I`U?Z)uz$CS zhcr2>?lBw^TdVO`KSFeHk+;4|GhZYoz1V$c(NQO?=rqt1!Cx-?;XfJv7D4DwoXf5@ zu+E7;Cxk|m{xX~5cAo&inazur2qiyW42$MpA zX7CVykTXw=?8ECCTt@!D`%)bqO2^OwLw%~*BLb` z-x|L1H7H8rsk+YSjFa>)J*MOxziPynn6+G92?FRB=qJ3HNU(d1QTw&>Hf~!(*HWnR0?T zte)@%@_o=KtKE0J>MHi+4L_D*%x5b==qNLi(v6HpCQk@?;I)TW!vn871q^a`^KIPS zywz|1+XLJz`85Z1CkMjYAHj@Jy`O*okFAEC{^)nE=X&VZ*FApLYIwur!*k8|e&0vY zk>MHP%l7;3H2lnOsNlxDyxXEy$V+$9*X~yN&hUHo`>rf}`NJyswahEVZv@NxRM^C< zis&uC&p7lHmjC0*wKeRRcc(L>c$RB8&KYz9moRBaW{bZOSHSvbE4RfJigocgMSCn{ z2e~^U3CiUJ<;`V%u$BhV zS~?4bjvX>+ttH*KwFI&AeWFb9g|4+Uqpqx_p$r3mRffR=Z`Ib)Lbv?|wa9TaCyWls zo-2!4_&h;$$m-z$R;I}D(^@@)&{#dsTU5eM7f`|=(drQ**s9kKj+1{nRu2J@7Jar* zed5Do{mIaQ<#U46kqRCCE;?lUDFNG?sfimVZFQ)CV2bSkpO{Kd!` zzm-z26j@X3fq_|Mje-QPoa68nStGEg$Qt1jMb_9SBY!-8$SJesL(1YZT(gVPw&!50NSh&FfV4$~^1Oi1;Yu$uj37;;;s;5mdLY!lnMFR>NojN#|r zvw>Y`5n2vq{kLK-!8Nx^Y;=|b`ui|nzV?O-T&W#X_tpp2*Yu-Zdh#W8B@h(hn0m9) zk0{d^RrS0Rh@L0LT$T^WxZ~@8mI%OSIQ1Gqyo#MN@{g5sQm(EdP{4p%rWrOq5}