From a6a50194548de4013d5006bfd95bc1104c8f3df6 Mon Sep 17 00:00:00 2001 From: babadro Date: Tue, 2 May 2023 07:02:36 +0200 Subject: [PATCH] 1518 cosmwasm-check: update clap to version 4 --- CHANGELOG.md | 10 +- Cargo.lock | 412 +++++++++++++++++-- packages/check/Cargo.toml | 12 +- packages/check/src/main.rs | 21 +- packages/check/testdata/corrupted.wasm | Bin 0 -> 91861 bytes packages/check/testdata/hackatom.wasm | Bin 0 -> 181627 bytes packages/check/tests/cosmwasm_check_tests.rs | 59 +++ packages/crypto/Cargo.toml | 2 +- packages/derive/Cargo.toml | 2 +- packages/schema-derive/Cargo.toml | 4 +- packages/schema/Cargo.toml | 6 +- packages/std/Cargo.toml | 6 +- packages/storage/Cargo.toml | 4 +- packages/vm/Cargo.toml | 6 +- 14 files changed, 488 insertions(+), 56 deletions(-) create mode 100644 packages/check/testdata/corrupted.wasm create mode 100644 packages/check/testdata/hackatom.wasm create mode 100644 packages/check/tests/cosmwasm_check_tests.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index eff24ae6e2..f53cb510d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,13 @@ and this project adheres to [#1664]: https://github.com/CosmWasm/cosmwasm/pull/1664 [#1667]: https://github.com/CosmWasm/cosmwasm/pull/1667 +## [1.2.5] - 2023-05-02 + +### Changed + +- cosmwasm-check: Update clap dependency to 4.2.5 +- schema-derive: Update quote dependency to ^1.0.25 + ## [1.2.4] - 2023-04-17 ### Fixed @@ -1694,7 +1701,8 @@ Some main points: All future Changelog entries will reference this base -[unreleased]: https://github.com/CosmWasm/cosmwasm/compare/v1.2.4...HEAD +[unreleased]: https://github.com/CosmWasm/cosmwasm/compare/v1.2.5...HEAD +[1.2.5] https://github.com/CosmWasm/cosmwasm/compare/v1.2.4...1.2.5 [1.2.4]: https://github.com/CosmWasm/cosmwasm/compare/v1.2.3...v1.2.4 [1.2.3]: https://github.com/CosmWasm/cosmwasm/compare/v1.2.2...v1.2.3 [1.2.2]: https://github.com/CosmWasm/cosmwasm/compare/v1.2.1...v1.2.2 diff --git a/Cargo.lock b/Cargo.lock index 908cd9a779..117f91dbf7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + [[package]] name = "anes" version = "0.1.6" @@ -43,19 +52,83 @@ dependencies = [ "winapi", ] +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" + +[[package]] +name = "anstyle-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + [[package]] name = "anyhow" version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" +[[package]] +name = "assert_cmd" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d6b683edf8d1119fe420a94f8a7e389239666aa72e65495d91c00462510151" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -123,6 +196,18 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bstr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +dependencies = [ + "memchr", + "once_cell", + "regex-automata", + "serde", +] + [[package]] name = "bumpalo" version = "3.12.0" @@ -220,7 +305,7 @@ dependencies = [ "ansi_term", "atty", "bitflags", - "strsim", + "strsim 0.8.0", "textwrap 0.11.0", "unicode-width", "vec_map", @@ -233,11 +318,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "bitflags", - "clap_lex", + "clap_lex 0.2.4", "indexmap", "textwrap 0.16.0", ] +[[package]] +name = "clap" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a1f23fa97e1d1641371b51f35535cb26959b8e27ab50d167a8b996b5bada819" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdc5d93c358224b4d6867ef1356d740de2303e9892edc06c5340daeccd96bab" +dependencies = [ + "anstream", + "anstyle", + "bitflags", + "clap_lex 0.4.1", + "strsim 0.10.0", +] + [[package]] name = "clap_lex" version = "0.2.4" @@ -247,12 +354,24 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "clap_lex" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" + [[package]] name = "clru" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93" +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + [[package]] name = "colored" version = "2.0.0" @@ -280,23 +399,25 @@ dependencies = [ "cfg-if", "libc", "scopeguard", - "windows-sys", + "windows-sys 0.33.0", ] [[package]] name = "cosmwasm-check" -version = "1.2.4" +version = "1.2.5" dependencies = [ "anyhow", - "clap 2.34.0", + "assert_cmd", + "clap 4.2.5", "colored", "cosmwasm-std", "cosmwasm-vm", + "predicates", ] [[package]] name = "cosmwasm-crypto" -version = "1.2.4" +version = "1.2.5" dependencies = [ "base64", "criterion", @@ -315,7 +436,7 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.2.4" +version = "1.2.5" dependencies = [ "cosmwasm-std", "syn", @@ -323,7 +444,7 @@ dependencies = [ [[package]] name = "cosmwasm-schema" -version = "1.2.4" +version = "1.2.5" dependencies = [ "anyhow", "cosmwasm-schema-derive", @@ -338,7 +459,7 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "1.2.4" +version = "1.2.5" dependencies = [ "proc-macro2", "quote", @@ -347,7 +468,7 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.2.4" +version = "1.2.5" dependencies = [ "base64", "chrono", @@ -369,7 +490,7 @@ dependencies = [ [[package]] name = "cosmwasm-storage" -version = "1.2.4" +version = "1.2.5" dependencies = [ "cosmwasm-std", "serde", @@ -377,7 +498,7 @@ dependencies = [ [[package]] name = "cosmwasm-vm" -version = "1.2.4" +version = "1.2.5" dependencies = [ "bitflags", "bytecheck", @@ -662,6 +783,12 @@ dependencies = [ "syn", ] +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + [[package]] name = "digest" version = "0.9.0" @@ -682,6 +809,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + [[package]] name = "dyn-clone" version = "1.0.5" @@ -814,6 +947,27 @@ dependencies = [ "syn", ] +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "fallible-iterator" version = "0.2.0" @@ -839,6 +993,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + [[package]] name = "fnv" version = "1.0.7" @@ -944,6 +1107,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -991,6 +1160,29 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "is-terminal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix", + "windows-sys 0.48.0", +] + [[package]] name = "itertools" version = "0.10.3" @@ -1041,9 +1233,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.125" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libloading" @@ -1055,6 +1247,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "linux-raw-sys" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" + [[package]] name = "log" version = "0.4.17" @@ -1133,6 +1331,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + [[package]] name = "num-integer" version = "0.1.45" @@ -1158,7 +1362,7 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", ] @@ -1176,9 +1380,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.10.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "oorandom" @@ -1254,6 +1458,37 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +[[package]] +name = "predicates" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +dependencies = [ + "anstyle", + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1280,11 +1515,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1309,9 +1544,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.18" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -1405,9 +1640,17 @@ version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ + "aho-corasick", + "memchr", "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" + [[package]] name = "regex-syntax" version = "0.6.25" @@ -1492,6 +1735,20 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustix" +version = "0.37.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bbfc1d1c7c40c01715f47d71444744a81669ca84e8b63e25a55e169b1f86433" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + [[package]] name = "rustversion" version = "1.0.6" @@ -1697,6 +1954,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "subtle" version = "2.4.1" @@ -1734,6 +1997,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + [[package]] name = "textwrap" version = "0.11.0" @@ -1830,6 +2099,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + [[package]] name = "unicode-width" version = "0.1.9" @@ -1842,6 +2117,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "vec_map" version = "0.8.2" @@ -1854,6 +2135,15 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + [[package]] name = "walkdir" version = "2.3.2" @@ -2277,43 +2567,109 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_msvc 0.33.0", + "windows_i686_gnu 0.33.0", + "windows_i686_msvc 0.33.0", + "windows_x86_64_gnu 0.33.0", + "windows_x86_64_msvc 0.33.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + [[package]] name = "zeroize" version = "1.5.5" diff --git a/packages/check/Cargo.toml b/packages/check/Cargo.toml index 825ed222e5..c3a25aec69 100644 --- a/packages/check/Cargo.toml +++ b/packages/check/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-check" -version = "1.2.4" +version = "1.2.5" authors = ["Mauro Lacy "] edition = "2021" description = "A CLI tool for verifying CosmWasm smart contracts" @@ -9,7 +9,11 @@ license = "Apache-2.0" [dependencies] anyhow = "1.0.57" -clap = "2" +clap = "4.2.5" colored = "2" -cosmwasm-vm = { path = "../vm", version = "1.2.4" } -cosmwasm-std = { path = "../std", version = "1.2.4" } +cosmwasm-vm = { path = "../vm", version = "1.2.5" } +cosmwasm-std = { path = "../std", version = "1.2.5" } + +[dev-dependencies] +assert_cmd = "2.0.3" +predicates = "3.0.3" diff --git a/packages/check/src/main.rs b/packages/check/src/main.rs index c1f7da1784..b73ff4f07c 100644 --- a/packages/check/src/main.rs +++ b/packages/check/src/main.rs @@ -4,7 +4,7 @@ use std::io::Read; use std::path::Path; use std::process::exit; -use clap::{App, Arg}; +use clap::{Arg, ArgAction, Command}; use colored::Colorize; use cosmwasm_vm::capabilities_from_csv; @@ -13,38 +13,43 @@ use cosmwasm_vm::internals::{check_wasm, compile}; const DEFAULT_AVAILABLE_CAPABILITIES: &str = "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2"; pub fn main() { - let matches = App::new("Contract checking") + let matches = Command::new("Contract checking") .version(env!("CARGO_PKG_VERSION")) .long_about("Checks the given wasm file (memories, exports, imports, available capabilities, and non-determinism).") .author("Mauro Lacy ") .arg( - Arg::with_name("CAPABILITIES") + Arg::new("CAPABILITIES") // `long` setting required to turn the position argument into an option 🤷 .long("available-capabilities") .aliases(&["FEATURES", "supported-features"]) // Old names .value_name("CAPABILITIES") .help("Sets the available capabilities that the desired target chain has") - .takes_value(true) + .num_args(1) + .action(ArgAction::Set), ) .arg( - Arg::with_name("WASM") + Arg::new("WASM") .help("Wasm file to read and compile") .required(true) .index(1) - .multiple(true), + .num_args(0..) + .action(ArgAction::Append), ) .get_matches(); // Available capabilities let available_capabilities_csv = matches - .value_of("CAPABILITIES") + .get_one::("CAPABILITIES") + .map(|s| s.as_str()) .unwrap_or(DEFAULT_AVAILABLE_CAPABILITIES); let available_capabilities = capabilities_from_csv(available_capabilities_csv); println!("Available capabilities: {:?}", available_capabilities); println!(); // File - let paths = matches.values_of("WASM").expect("Error parsing file names"); + let paths = matches + .get_many::("WASM") + .expect("Error parsing file names"); let (passes, failures): (Vec<_>, _) = paths .map(|p| { diff --git a/packages/check/testdata/corrupted.wasm b/packages/check/testdata/corrupted.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d69a963a6cb3cf3b625cb6074d275427e53c7f6f GIT binary patch literal 91861 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 literal 0 HcmV?d00001 diff --git a/packages/check/testdata/hackatom.wasm b/packages/check/testdata/hackatom.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f15360139aa648df28bbc97182f1e53ca18d4e16 GIT binary patch literal 181627 zcmeFa3%Fg!Rp+^1=W(Apl4V=A1?+PohO0)mtde^F|b`ZyYj54V`}RAMhJLmA z^>6mxwQqNl>F0>OeEl2m+wC7u+u!I;8{cr(>v;3O z?M@Pv^>6Qd^XqSaL;bAtrroc*=NrCp+n$%-df)E7cYXI;l2o5==s(`O`*pOo_ttyf z{MtRc-;%7+>&e}Be8V?>75gMvFYp_+M6V;cr&(zh*L;G1N`|(}-tjk+oX-j(^Yq|6AMU z#nS(>teH?U&s$lNW%j-Pg2hI&Xys!?k&mw%AJ2=Vp$2%)|C)TM|8hWS<`)4&R!}<0 z+wBRp-^iNTL^B)HH?5@M|5*Xv*?$H|nits^T~Mugp5{4E( zO2NsCFBwT24LU6`z3^p4&2j|VQg>ka#M@BQxEU$8eZhh_TZ`z$_BR`X-NtKS>zva);cc=Gnp8k0H1L>9j z$AkOdn!YW4dwL*!NBU6u&h%jVu5@baj;sFp2eWPe;v2s&{r>b{-}0UR^Z&Tz?prti zFE@YJ|9a)VH*MYVJ-2PU?hJK zR~}1$GQHu6^vZ4jHhnzZ`ib<0pH6=v{r8B3Po>AxD}O)zz4Wu`ne=zl-$}oa{%v|b z{hRdf(!WgKlU;c{eKwuT-kQy4Z_D1E9mqbEeK;F^|JD|%_w=8N_Xy4(Mz>TB-n7L>^WDO1fG)bnlGdM-&-2&QdW zM_^_Gcmr3}!>`V4=M`l(l@;Aw7Z`$0MM$Zk7|&FwZQV+$x6aMY-T&%|v`hq8UM8J| zG#TssA%FPFy7J3unuV_9u`4u|(U}`!XMpj!JCgwly;f&{O`V~=q0Z!?Gr4sp_s-<% z483368EUZ3lM zv=pRFQ&OfS0@ht`L>H4X&2j``VXsGcS&oQnT4Gq973IhxDWhU#OH!s;wqn7S)moIT zAZ2(}*MiuvA|_>cVN%AL>zAsf3^IsH>gH)FNEy{ADYK|xlrr|(q)b~@Iv*0E z+e_q3TXLp7C}-MbTXJS}F``EY5#4rreqSExdF!5DGa_1|BOtmEq8mcA?s_d<4AGzm zeA#Py&M%>;Aw=`ca5p5*Rjh0X(dtVm*sxl85D?AXU@a8bQ)QCMdLeOc&Gk$55F=M6 zCYaMIn?>Sev(pLc1EH!CeSoYg6YzQ=)Gw+kqTXH`>YHGQ(fv257{&mdGnH+kK`v8_ zg{~!#rJbKk$3Pc97b$?I2BtYUFwL^5foU%unD*enG^?#r0AKhD2e_U!4q#NuW@r7E zfdM{0nl<(p66lB1J-q@BD5`}-1OJ%#4Jx@!DzK=|CL*nFZn~JSrm{PF%@Xc`>KgmH z2!dT`87o{Bd%Nx2H1EBXg*4i|OqU>`vM6X!rBngQ*YYWg^2woSc8(4~Q5Mt5omVGY zAV&ePEt?A97S+^j^~+ejRRc3%y|gpe4Z3#L_Im;CcClHelP$nymRdfZ2TLt8`$-(y zC znRMQf?M%9(Wx6>}y0U89v$`7zl!hrpbziqFJCt(m%w`XkBUD#@7x>Q+0p-}vWanS~ z^qEh6@Pj}9>om{>cx0@{zyx9&FA# z<=6w%|9NpKEyR!N_u)0+?+##rYPv^%l;qz*}V~_f1W<<^OM(c)p zYJN#ONjb8(9f}9wZnCDnFwj&QnkvU0tG4dFI@wLD4E-VcmQ|Daq68A_m^bg!_mg<(R=ZF2E>85+^{fq;1$_d?QclT z&KG-nPW*GY0OMHdS?4`M*ZFj|9Pd1mRz;Ve)5+h_DG6KXfM4h7b{@7Wz9_up)ma`fO6SsEoBCDTAE#aDt6%$B)o!9Zy|)YH zSLYEuNO4iwL8J$_mvVb1pGCCr19z%w?Cq_uTC?3Nsw@JU&EzxL{!ncyKzl{C1xUfe z-wWb$Tn{I*Y6Qr~$I4DM_u##ZUmo}e_-599ycc{`ae8zBqMN?U2!Yy^A{el4?kN`kG z0w7b_*&KDk_36Bew4TZqa$#>O`)uy`)%}@V3N+aL=-v(VZ zIv>dfx9kBK&zM3~f%5ouB)Ee)c1e{hw!k>Wj&@gUF0G`B+3cJ!yFD z79>j%;>AGiS(P|5^y{Y6rpOl8oKzX4Rpnz~eB3%<4dL(qTnbXgRVb}4mg_s-?SQF@ zu7@#XKllGB_#%vSl4x3HrsNnuM|Vx60I33y~xY!7CCNXH6dEG zqKxbZj2={wP{PH6Ew3If)T&n?O|DiM<7X%^-Nb z(<`}I!VFf&GJqtDF@AO@^$U~XW&FQ4AV&%#la|YoR*)l;wH#?lRy0hG6fQ^Xoyn2b z_$U^p%Mlp~5sGhfC~g!K6Vg6`5^E`v(hO3hC3#_W`zL$54WvkG+y)ghqOS0IvAeKy zonxn#Ayz}$FBX6inKXk8IZ|{nEvB-Ei|(YZhYOb_hiFM-qh|*Tv0$q&LnfVzo186`*|Rwyw4sxSWMfA^EkYfXZfj4h1MPru`rzwoEO{rJ;Cf)v9NWW?*v z6Qbv1<>Wx!L4HgQ)Ewl;Q*K9){aNPu7>soF{FuBG-UQzKf z0)P)Lm4uLz{lx*P<-!BqB2l+uQR0@Xe{gZA8)A!M?O@RtYX?lMA>0s#wOBhuJoZ_^ zk61gOyI8{Jn@)C^sLHB|?ufI13#4j#&tx&0B(g?}>g9XH z1=Yy)*g})t5t%PS4)U~&_rQg3)$IHzTvKh`^YNYkn7+MRs)eoALR+^l?}|7wVLG`i zG%x|$tE;caW_LFEucGzo$@dknOoiv^#K+E2InIoR<2x|*hVgY8m=PIC zd@W%bn3Ma%MK7|b4MA^NMip1DQ|a}HvhDdP4ek{Px^2m?>6Sj8g0fH8{S?o(CI8-@ zp3A#E2L>hhej~R5%Ykyq?^Euml`{)MRepk>(+O7Mq&VWDatx_xqyp^J>mR7i6Ls0m z)UiE3659U+-+TxWv$H(-7?qTdbuTN|bT1jdL_N58TXq1d5d+WZI5J$^lX0R4n`4EIjGltqXws7;3Cv$|3j+&wLv&d?pwM0!y1bwg>rR0$5XhBI*zafa?i!WEYm72zt#e`rG8Vz&8_H2bX`49!fU6I* zXx23vID<`POJrSH62j@z!tLa?Y(ZC|$c7ri_Gdum*e-}t=q&8 zV+w+OVhL*Oa9Z2N?@DF#sMdpCYrz~Xl-3;qkabI};nb~RnW^gVh;V6MHG$%8rZI{Z zaV93U_hu3Md-@y%`W%o%0)Hzo2!c6>06KBIICF z#&3}Yr+V+FKLA_X#?pnjl6A2FlKksv8{=P_BFDd8BaAKN3TT+mR;W@9n3TBaph{8l zYpTYz_(xf_AY)1{H8CLc0tBqr7gsg~vu4q2{3@ArYb1r~cE*<`*XWC(&J5C#z`p8E z{~xp!&Ce>+SZLI!Yh9JPqvqYY!eN!w3Ab4Xm@tC6kP7R}bfUf;kV7N{!qR+q6}X%#cx zqeTJs4Q@oO0;uuXvpG{~;NiRpjB6)GE|1U;C{c|87&UbDTIS+0`kPTm-L5P#Xs2v_ zyzCO@oSVDn?FV|suMjs;umJ+ZpAh-o69hM*K{2UlRc3_HyQFeO5|(`dGYt!I9CGsi(beOx}$P&eQZ5E z(I-FM2~#YSrPT~Pwu_l5+a)y$xo%EdwCsbTZ@K$SlQmRv?1ukjRufK~^BF&122 zNUhZvAf$|@Ax{%ln0JjhIucTiD5P3dOG0W*^=ofMNVOIVskN0&$hQ`~9+Rnv?;M2G z8ibUF92aE`q)eZzr&tw9cdd&pXmv08SU!P?CN!W#6CoyutU8at2>@&;Cw37!0$ZaK z#30ON3$GT-B05O`%_Q-t^GJ7sL8Qq#6Fjp;~ylYS&GZ` zY4CHSm!kvp^07dIM@20JDhqvK1h5o0L^hx~^qdD7O{z>(?fV#{MMe5!2p^zgBgw)a zR9~(QRy|gs2^fTh2^g%!^T__uT@0dGiKA{Mno(=;AZ~1|Flr~%C_>jL2UX{gi1DI) zsa+U8=}TXx@0LQGiEI#1qDThA>rze1$Or*H0{xOdZ4k9NMB3f$s0E68bGK*)`F0FUnj)%v*B9FmONAH*k;S+s(jLqlaZ? z)94{xCkWr_x()<$#SD`Hk-ho~8IN;%)7ze(7nrz_U(^*_|MS`Q{Iu>BX4{thHn;eu zdAHQ-DSmHD{*!;oXWR3W+$*TdU*>9ppSY0Kp_o|Z@qU$`)ipAYx*+#k04Dc)~O-pBm_Wbb3R;O?c6oe?6; zaj*{m0Y8?5uI{s$g>hNW}j8NILpL^J+&Otdx;Qr~d6^ zHsUFX^JK7)Eh_6D^DmVI%BGXsm9tVN{VB5ANQuVEj6S=~3?#jyk>5-9Ounp0C&1Ur z|20zL0DRorGdY$e@xO7NW!^`EY*eg(0sPC|+HND4gMe)7<<*u~Q}*|hSMTM5xw3bH zxnNCID7ln7FFbX-YOYW9Hy*MsQ?{$0h>($-UiWbk`hYH zcAMlZu1vmGg}$!p>?3recU#b7T&CnLPA8kFR4p=@MeeY?u|fkG+Z^#WZ6KvB@xUF| zDB)(=cqQ_$iKt7)xr}T}NY^ae8edW|JWx*OKB9A~Svhh(d{B~2Wf*Qj^N}#D zaS|^KsSTLCqO9_PRsIiElo^4wv^TarzcX-{9wYIL^CTD&S#Oz5xKv1iDDEU&lZY;LZLH9!R|zGS}9lE=7(Qgl1Qa7Smt z!x2p%^k#^Cv^?%%(bMQew9J7h2nvILW2u=vJ`%K9;mmNEF;WHlvDVsqP|bJ`g{EUs z*AL$7pX}`t_2((Pmm!7f`d(q7Eo$81ooU7V0jmI#h@}E3;=V@UKH@>f4Tlv{GA?w? zh%d#D#V#iOFzWE>Jv5={8v2M&kH`iU!QnwAlr~7Kbnh4hfq+rzND`QI6gZfgwL$zL zkObZHFB%pwK=Aoj!R^i}1&2l;Vz}RPX0mdGD1wOPeo}5FrbH}l5sT&g+W^wJOI6dI z77A3@k{|oT?o-)4>h5%Mx5(nkk|-ClN&TBUHlY=KHko8|$T#90`UEk^?az$r0;OI6-0?$&p6MkyV6cU!W!M>F@h* z+!8ockjt7W$!cLa1Bd4wPx6)x(koo95c(6NDH~J4KPj7RM%mv<_4Ruu^E6Aqb*5;Z z&4qG@ks-GS6-DY6H@1l{8dKnrcYLsCTF`CAq5gvhi`68-4Hrv`hWHoJVr3+m=~D&oCG* ztm$`z%@m>|7Qo{w9n*A=GQ2k>bQ_c2v$$o>Zt&DN3$9ZFt&ZxvI{CUXuRe{O4wfPe zag7;)UxyJ$4ZM{(h#jaeZt=@aT#o&K$md4xxLju+?%>0lc`!xx8W;3LFY9~`X@%rR zhdix^*nWJBnq`!@Y%xn565pI(r*I~DKC%i?I!Xw#D88&eNc`spGsw*>q)Imlu`PU@ zZLASONz_A_NoiDMl5asyw;Auu(~3cQ2D*@m5@J)ClB4Li#5FdHr2(Z?@-4jv?rzBd zb*}FfIHwvEhL^=x6f;xSC5eG=d@5mzTjW*&-)Ek_j3A`9{a0Q%uyzo^vRe3Pz#cT2 zVKNDsfe0E$@Ja%$pREN@Q$jlnYn24(LTaX~En4~$RyWq`d^}yz%=Q>r?)0)4ZZtG` zTH#1c1Qe;r)G;NbIcionDwzZj76XZ2XM)YFhh*o)4i%ur*=*Q~K3iYl#9(A>wW;oI z24e`TKbqP|(yB&s7aEe=6a}=E$z^DrIc6x>aVsFS^a*ghvX8?+y~bns*$t*sZlmgGRIU?!cJmVoTwCsKq-nE)3USN`0-{3^GYv z=>JSEK~c8$Bojq775*cS9*Tmvz=h~56Gh3sg{iP=qwl3oBjXfU4awNxsnPl26hb!Y z69n7^0;+pTMyuGUqgVa~_P7jL=$+pg=;p3kFSK$8Wpnk{#+b_W-IT0}E8qZj0ji3Q zUV+`T$j|$~)}-TdN#_uDPG?&cx>3h0D|U+J4@x7^MzycYrThZ7tJe)EiAT6Q&|lj)wWOeT5vk`7#ZUk z>m%}};i?%ijdrP3;2~`*6+prErYv3|NVy+#jmtiy2A6wa4K8*YqC> zgp}4SP3UJ<{gS5Ml#9mH8|xaoW3XD4RSao$TCX%KcLh&z(L#CPw6s-ffUKL#)Ich# zYG@ACKx1NwXd6=*YSHauC;|~`N#I=(j~KzS$+9@Wx{Ay~gdE#ASGY5s)RJ-X)O^HC z=AYGD4^f1kSxo#+cf0cHiDZ+^kYLa}E;|kiC2Cp3gZ_PY>Q%haan_8T{B4@jYsM zb9VQ3>2K+!o5f#5h>b)n4eVwin&FO(qjLv)b~8QW9WvupWy>e9aLRasj*lG;F{M}e z47-!xSF3ZNR(Zv-YS1}YwIL1eYS;CJVTtw8;K*Q|=&b!#ZFGqv9xV93&qwYaEGXfX zHBExRU8VH$vPpginu2GGJ{&X5KLtjl90IT=Gl`k;)C8;{?>Z>mD_|7GO>qQyT61ga z-0$j3mZrQqK#C}|lunCTV@s9H0bod#=Z~*|2t#Nu47h;@{vEt#mQs@+X3-RU| zd1N7`|0?I{*Lb(DgV7tJeiP!O+>L5c7X~U8LpMdslBT@}qSiND?6VY+3e*j)yJ(n~ zM(FB3o{aCBAQmE`gGBp4cxZVLh=JBYj6iw`fS~meZ(Z(~GSEg{ldWexy5C{SfVzaY zC}tbJK}`q(Yn@LOCO8J8$=J~rO|CTfd>jX#wfwr(;G22ogKsi`>6wUAX7Gg544h)- z2ApC?I!-g;RK5i`Rd~@Sx#?0p@mDeHjd12P`%KN*2eJEHo41N`(ax!QwJ;B~@}G@;(!P+*xL3 z_spf+^V@iYj3HugF~o6&7_O(^Toi2DH33HNWqvlRj(UKpQ?-!*Sw)5qQ*!1XcQ4MR z9GVuWtrxH;#@JxeHtDV*zp{k@R;qm+UQ&Z|;F0WX=t(GmSHg6&8bt&_aR6aJ zGhaplnG^|!|=jO@05d}Sxk~_(jSep5AO3zZIO3jkiw;B7aORg|aC(Xu5Qd4@q)USb1t#7itjyhQ+FbH3S=Ha;OHnBIZ}xyy;*GYPWHej!gHA zR&3UvXtdcl^{js{cbg^;HqAxQ%?Q4O@g4YxFkIq2mO%pv8CuvVBZL^af)+Zx;W6S9 zBfEqtO$p$lM?fiGDdQ`v9!br=%o7hRKMX_OLlARf1HK0x&^{X~%RrbTX@~|&Q%YI& zIB%>DM3rQzMc=3+I|kXy2R>>zFxI6Ci!w3=kFj7(hy{bD;^-eM`)1Yr7XYM ze~~Z%)juY)FK5kJ=b-}zPV#1znoi^x*k(7bd6ae>NdP%Ii2uXFzg7d#x7*6Lj9QzX z>o!pvC^>w-Ox#7ZV7Av5Dzr|VSr;}$nJC%Hp`2iMmo_4j|FgSGTXqRADpJ16>#KZU z_Yz9GZHWrQ21LI$_WAB8NLF`TZL61DxapcCKn!(BU`=o` zKH9>C;UTdyAi$Jats881U^+>VnV7UT#sqmZ!=qWhhf~FUNH?`x)9LV^qCJnpGl6}M zam$C8uqe09aFX7TSRqb>-)c^SyZDR_J8=aeCK3T@2M82GWX5HE_66@ouszl-NKMd- z%~YZWP^ybrnIz|7_Pt!CoqbUUk$je8Uz^=D{xY!ye~qZ@v9x=UGn8{akRgg@)6QHv^UI`JFbfWN|gJ#ZxIzU<^X74YqOV=o5r42Lckd?>cV#rFOh(`Cp)Wdcn=3qJ=k8RnYm0}B6K#W7#Q&3FR^@CRXHJ_nJW)SUX zcrbJ^J@UmttIQ`*CFRAoWg-(zTFI1@^0S~-Y<~HmRR}dHV?3;+ zv_O+*i-(|^ml4|rTp zkM5U@mr|C_0b9+gxo5JOH4~u%@ zpiSVJrzDJGbet6y!piFVow@VsfawvBqdcH7kbj7<=rUvwh+%q+S&+JxfJ=*XEv`lR zr=d7TmyMpxp1N#6dB3d1CLch?)qs$F8>@hzZC#CmCdgFQIJar?_l<7QI=+?9IRj+DZ-ZD-w%^{ zR`PRwrN9n$zG_8muTm?7i%BKTX#+=*ICXP>Kk7$tk=H(alD-!8dtiHZx1;G!mqv=r z6~6e>B6A3W*f4hJV0RRn;~f^mt7sdwiMcAFrJ!FJw-}_W2xIVngOHVXnl{u|fin7E z2`!j~5<7Yy=x^Y?pB85K}*Q^)+tXX{;b74d8M^Mu4T`V?|O#LiU>$^GX|) z#Kiq>V;wU>1WT>+mWYycKX;lO^Shyl64b?8QC9)8TRw?PtQeED!SG10zp$7j63h~H zkzfY)1KM5%=~YK1Gqzkn0P$?er_UoUDH;K9VYqBqFAzFgs19@n!ZOgUm4tHWhCl5? zXDDoqEQ*=}9d$(LluTCH=@M08+BJnNW1ZPKSVt@Oc-G#<=xJLAg2|HEBcwqi7)>Y-h849O z5IJIDI}cep3`Rqa9S=5&(tu$M>CPW=a$pa3-jG+~#^KssS~HkpFG_5B?rO&ahE@8e z3kew_-z2ak!;Jv1QwsW$kRd*jBq`?FbzDNo5Ey4*2(~kQw~|riXwB^DYy?yvWvp~; zs86hk^UDiKOxkSEc7804dTFJrg`ctU*#S#av8)IrO@jCavy8H0J2+chf}e?Dp*^+q zybD2cMN7;QSX0siEQQZ$&X);i#P)3UGg^^RXon&`z7esbvKLb4)k9S}^yp>ViLB?_ zkV>{&Bfq6aTAh#e8&NYi35~=oG|MurWw@{5-pfex`FadRY&9%g$8}|MGXqrR`rn3) z(4bb&A&6gr8)dFhf|jO}*K|G{GC6C|{%?UcUV}zl43IyOv2L~CCR6%oL-$yIaC>ybLI zHYVzkB5-#BBlQl=zcL}XED6M%V1#Ip z#e{Fv3X2P%6!U27(KwSFwnM|YQSazer9TuOL zgzI$GuMHDz8L1agvniM7q!3B)mD{&E77I7@;u6`zqp56%5xcn3gmC-XiLkM=^$$>x ztvESv5THmdi8FcKP-O~*8F8^x&EVA-$OK6FqIrDvim!HuhR zt_kmj+;9vAI$LT;o@cGDb*)l%3iVo~v{}i*pDjbU-LyShZx~VxCA{n- zg1v3ok4t$^81MlRg(E`0e2}s70dy0kr=+5_4PY7yEdct`FFr>nX#K{Snye?3#oC) zs@24kRTx-pf%Q?Y!JcLYO=f?vcQw;nolV6efR6LkW~$QNRf0)+V4Wb@fKJ$J{2_j6 z3J8DNJPwkieJfz+JmcqQ2IecU6rX0QVZGak*NF9&d3}{DAn`50*<=t`v!FY$vGcBf zgS;dV1ZZVp{x~6z0Gvb4exb8|=mL?XK}adEr)qt(dMeUkH(u{CUDCJ|vpfIvmwx3( z-uKM!{PbTX+Y<#@L|}DCt+;K!s~6gtdr|SY{jR-+%HuF-hh`s6&DsWhYx#)8sikVs zKSqW;bCMVv$nm?G?Jj%*mvPkU8tnV(wBKrJ8bVtsyCY5-Tx^{1pFxElO0@GUh<2VB z+4(-_P8%b>Ve=rBJ*{a`Cd1eVUTTVXQJ0yb>Ex^;X5QD}lec>|^no~ZT86z=V8W-z z`os}V%a9bw6u^RbVvZ_9%{JpCu|8lSwHG>~s}9K@pJLsG4`udJ3}xA|V>C2&OaJwG zR_N$~^O}K{qfrfq5!nDYy)dG-t>;B{+IrqcswQeCVr52#Ev4IRAXR;c->`gap1oq@ zcs)-Vw{nAcC^=st(bTV;ewzn2mnf6dFJvssvcT;o2wxcU28YdLSU&9OBg!nowhDHa zR43U8t0|jH&}ll{c_6QT`v3yB2;Km76M}GxzdBKFfd=$x)SOM^x`<}hy!t(r8l^(_ z@LPi(zE=|Dxjyy@+EV8Z_%7!c1zAA-Vrl(S{nNB4H{VvRsja;FjYZHgVSNG6g$5Tx z7n*h7aoKi>14~H1&~X~_r9lIc;#Ij|g>lLPV@Z&(9wCQzkn3^4o)JpM`U7Th4~eL& zlg9@J?6{EY19qG-2;TH!lvqe6DA_m^DmhJEVJKMaX(Eb+Ta5OA@bXn{K2Cotpkgd$ zLDF*dVsQ{(FvQQ39prFHX*WFX`?AwD9cv=fTvCc!8s@;RIw`xsY9IGpbyAh4Fab- zE=w;MQY=JociXaubk}2!5G2WvE!fK<95(|f{F3cT$R1BmdT}%!xRGfEB#Cw^=XqM> zgT#`IqkWCpW#^758*88%3hb#0nZSC{z*^vIz^P01Mk@)7sf4Xkm=4o{6z}ABuokRP zA1JFWoK=Hiv9z{m5vyD#ix@oE9_22ai_S+wj72O_l;dpd_Mx~?Qz)xlpunlh1pcV; z4XCxlAR@2J!5R2y3H{o#K(*rO#H*7is%x;aV`@rbpq@)%p>ES-$c*hPQI%0E-Ob}wRlOK_!DhWP>RRo{?R=0AF=}p3kPQ*!uPyL=BFrc7 zSFy}ras;jF%>U&ted=@X{qx`c&+zUj2cDM6>hbAso6_1+PTrW?S-=<*AyV*%>6Z&)O%?42x;S4xh56nYEU! zjW3VtpH9iNSH5MJco)b3KWrYc0_|f@VxJ2&q{Rl*Fp!ZLrJIBh=0Qx1YmCtbMwyxH zu2)&97er~fq`4|AkmdqGLAu!5)4%xZ-^-pLiGT2-&iv9uPHhe~B)Lua2)hGEoDrTe zg$!~ zLo8RZaHprL&sk>BLKY_)Ssl`d6OGIgQH>-H9tv!wNi#_teg%mm`c#PCqkL?YrHRI% zDRp!xLJzL6-Az=uci}bKB#2jt*vdtPhI+$M>9mIrs}nMt zTD&kwdhFF9(zBUJDB}ecR59Cc;;Cjl^HjN4+I5Y7tagUAiMF6%b?B){8I+`)7sMDd zYC*wrV5|##ChfF-f)A7Db%wPU*i((TP-|ABQK%_nP9uzJOsl^}F$5D;vpLn@^Sf4` z6zao7^Lw7>!Pa(!A?ww2{-u!(zN~EuQbdE)sj1LBGVg9;myH|+imtGIt)xIT+eBW! z(*OKKM9sCJM46435)}gBBK6kI79|Jhp%MT!hv|W9>o6MFaT?*m8x%xX$k6+Aat(f5pE&_z>SBpMw?^E2C)jA@CNK98wIVYSEyl zYWb=b@-F!FI>Gara5~=(o0UR+W>pFrzz(Y=g8F2oqgFlG>3k}<0dLpYMOwpK8<^11 zhDn;xxkgO08Z2P1Aftjm{iL!8=|;)K@V1|)VQ-b+p?8Q3eL&Zp8|~#rombliynbH5 z(0R2*NRaqKogl#^yzfHE1}r%fydV{AmD|jilavfFmhM{6Tz6LmK}zt!LLxG~D1y~y z>GlxB@YJP6S+|-tw$D6kn$K*)n5#`mxS_PwVifk7r(pAX*fRIp7-l6!@MnqO-{iWS z)D4k^47VaU2PK)?3NNf&5@TfLmu5k%)F#6faw=?sV?a4~Ry;%AbaN$$szRSVh^r<9mbLXb#rf_o=W!8pFQNW2iocp2wkLmbJ7j=#ha0^rc9 zhZ45u9Ly@}F>%#-3)gvsv=!Z|ny%8uIyx^Glgm~qAxN}JiHE*AiM2ol>(_9_SgwWw zH!(qwLQ1Ld9PALl@F(X?h*%uM9w@1T1f@Iq7z_7N>gDb%t|RJeUQKgl8qBUNXfLXh zZ&!}UVcl{)$dx;Qwi&WQp?H2D#7y{H3d~cgpEZD!r6J}7wT*K-=_*ng+v97W59m6e zb}`&U&-!q$0QIv-*9(O@@!iq@SfD$k$P>dKC>QXq|beFatur+D6 zk}(jG)_)aP5e$PyPP?A!!3MgbMQNj2l*ZG`@YT6!AsRBSVy84;>Lm5oZRvMDQ*%k+ z4XhJ%0_$w;ywG}gPdyA<4oqslAZf>NRDdmUvc+i)tu+~S;5zL05x`)-U4c>Ws1#eM zw;TvNecFitR;>fEm&|%C&r`e{^P;ZLwl`Ca1iyW2vwF(`1y1^<0w~ZtWmzPy;USF0 z#THKcj!MG5Z8yM;?Wh#a2Vm>h3SO7fUT-CUswB9dX*UpdR;ikjAMAxRht3WgE!hf7 zt&{2RhJ;b(I|Trl`eHq_odR08Y~U4JV=vZ}RB>htzvvb<jC-3;1QrpLLrlKaepKV28!($W@g1$z+VmWAuEZFhds0$5L>+@SbA(c zCtwThW6NLGF!e>C?OAjPgljdzL36T9axe^+3MdZOVTHSxNSw#t!}V%)Df|2&?g?># zoXl0c%=i)9u@p8v+||hWhJDn>Bw!08?qMh<(YKJ|Kpooz6h?GNDTWFM7H6u0+ zI+UidzT1cXPD=j%!IMcf9SBWUGl5@?AJs_U1tdN? z9}yD!mR_chaOL=jm6HfN=n{XHj~GmpcTZM4d6-z68ziE&NC>s@^?Fch%`UTv=79oX znVRP%SRoNP+x2f0tsIW}HBtjzE`Ivol#%Nj*;tS=#d%M#Wvverd{I;>55 zZ}=~@i?u;e4EL|zR#FI9Q0|vHshi(Q(?aRbuq>XJkVexodPSLFKj{(h+t*X2G|7G< z=y$%*ejH9c)CLTgJ-~(#)|NIxFCUTR z@d}yjZ2zu{?I!{Pkgj9rs2^eQPh1VW;zoUN-C%JNR`25BK-q=*!Ao_* z1wrVC0clVB6^RX1vTkXEwPZC~vBal2LrYWEDkh_~l+u!dgA`%IiyAn^prPePU_Ze~ zjszp~;sK;Jp+eOebPa(I6V~8wGVl#deE?+yVb}w^i3wRV1N3t2w^O#Y+yO+vuJEObW% zJ*5Ag4x9o_iR!IFvXH%@Wo*)WiY&hB@+uj7640f0*jC>44xNS#=2GohoykT=t5tKI zZ$%-C2mkwfdAIlKL>aef)w~b;h+pIE@Zmkt^r6(1w6X*XAr1wFVQqeeps+g3M4}F! z_A^h}39GR71{z?0LvJ9qs0?J54Bxj1gmw2-t$V9;4uz++4AfE=TCfim*Evzy(Y~pH zY>@WyJvTV$U}#Mr_y95iXyC>Wxt#u>?UlMEji}A%!RB`@R%c-1CDLfuQZ?WUw>|w? z46TyPYE(xA+uqs&6(J>10r5`?hq1rkr772OvvN$?nib@`tlMwJN{F}0fU)0Z6>aMO z-m3Ro>fch%tV3&yIgIQSBL-OzaIbHQ4VzYyS$si~s#!_U^kP$Nv8gs>%DE|X8eb|S z_+0~vo63U$$Y=KOyWcYzW#hJ7QFMM=neEgmoXncu%x7|UYz<1i`#6F##67d>7;_qC z7TFeLDh`gTGsLxqn3WhyA(EDp2zNFeE&nV@q0J0v{n?q@>oOcBVw~ z<`{8u%i|B7OsefXAU3dQXY`$Ynth?<`jaVjWHXX~Z1-jOZNFsOG;5NpYre!+eV6;5YY{$4@~x2JfKlsHCy450rxO~ z8d08|H)b6MP%AOzd?)>051N^!^;Oa^Qd}hxwfTvIqfX^%i z9I54yD~2_v=tG~$0F}k>&xqqrz4K(!`BIvU{jE3z4ZiHqP{q)Qgbw%7adw%p`SNz1 zaCZ{YyTwDVEq&U9j+G%GtphZyY!&d?#th!h>-f}8Ws13hAoH|@n& z<5$_!0cvElg=2L_%JG{>aAPZ;vc)Moqu;^$#qsaD!dxdiK&MIMBqQ-Mp0op0ay>A> zW6LeI3^`MBG{A%@)+N#o3~Dp!v1p6Rd4JQ#wf|XNpCS|^nmsn28^r=(9)#c%Tm6JH zdHjyJzGN!A-9MAZ&v=8abLJb|3Sh%9^s8cCFuHgZv?)W)gVU;k#Zl~`cL8VgEO$W9 z=^v1!d1(*mky;2k0l{LM3JF>n{1V983h2)R3o04Kwo`QJXmqFyJQ*)2oBMIBQa;KE||&D})85|H*lClc{oClWpW{YyG5nR+v?v;!j-#L3Dh5^Z%g zdX>9#+Rkm+6N#vX$PijTcKDalfea_h6hOPmw3tpvw3R*pR(^mv%`)ZMco_Zc8xPBL z3%gi9$Du?eIO5wG5gbYvs`Q0|)M%jtz*f+JuLia{l^^0~?LbYk@X)Gg{9yMHorB_S z^fI`V!TVU6IKU2c)!H-JB9Oy>i2@SU``&j_yVQKdY_=+l6jWZ=G~+w0~V|PnM#}^ODBku)$;|z%o zkVva{#GgpO`eW^lYvcEWdTV=PiqAt;VZ_qvzr2UH7i;YCYUA5REc*q$)lo2mquq>e zKXI71q6{UNFt%y+tNMO}zL(?+ZMFP+ANk{grae6Jfn4eWMhPDoJlyKb$AFoLdQ852 zUOg=6g((X~8E01WdX{#sk)7=TT9lDufmPY&%!;Q=iW9}|7Z>RpLJ%>}hqD>cVa{gb z7vyr_?6-Ywc4;`=AveL?`FTl1WHym%rdV^$<|1G07E22eZMP>gem|4xxcbfcxvb01iq$FA$c$Uh&ak<^^HutFDy=3o-%e9;zA>*nCzm7>PQCG` z?A2X8<+s{?^0eQwVdzx$WZKm}ck}E8z|d-Q!QN%M9!%>)tP;<)0a)eQ@KwmQ!L#pX zn!vKw`Fp0{UCT|TrGY23$~OZ@iYPgy5kY-3J)1`d;JBWhWgdj)Y^wT^hcJ8Jp`Hp6 z33CXn)76p6{J{Zr)#<1uONAsTt5So*_nj#v5hRu_5OYH^O?rop``*CVZb>|4i#J3f zz(d(n_tj^%E7m1uhGg_zSq+*)mD1H>gVDTpRtJeC-osN&tg;z^<%zV}=!gk@h?a*O z%R!1pseOgX0J2Ax9#TI_97ZgP2+xZ97ekZP!2ZQvg>B%829Bjiyf+~o#4{;+DmkhC z=%5bEVF=AK5|ktz1dN{9E!St*7FE}?=8j|bdAI3wn^o&cM!=DI z)nVoL?L;gQ$D~&%ThN6JQ~AOtR%=>4tH)XAl}wweHl^#Uu4Xf3@RlgjrcJl>>%y+) zSO7U}*iBa_S25y7vTeVx!E7UJI?}9<$|9CAxKZ#~vMyx8bbACXQi8*r!9cxco56LF*LqEai4u5eK7u@5mvU-g0Qpl_( zJTz2ILug>u7}%tNFZlr6t(rbEq?>erZ72Y~l5Zp(M+25CDK%m7@F!j3z*rK+JeR;Q9 zm3ro*YiorS*R{djs0hPPu`!7$Y7L2_$hg#Hpqv$DcT1vM z<8wy;kXoew>O37XGOM4!yF5Xs#V6vCQ}D=H35(^l8O*wjHgia1l) zszB~$vOrtg5>fw?{M77tuM+a-Yqf3sW0r>M&<&VlFu&wQyK;r1f0;Rv^!_@N??yj2kh>8$G9oNhJf)fu}r zO(pD6{W%`<;<%_k=r*pAGK?ag0ccC+LUM2$w%2}|TMO(W^|{^P&3=|!^Ps2_V3Gc%QQuA25UDXUU-}!T4Di1kqP-=>_Sl; zmF>ZH5WbgDufaLaYZWzP*1^-|5@bwbUd1SN9o42$9-Z&WqOoibO@)v5Mo5Hrc^{-c zgmD{t^II-`QaxjVUnFg!2^wcFzPJOS8>`m>4_@>}sn`-&O4TU>yNx4kZ~;<2Wz9K% zy|!N11pZ;fl;4)gW;`2)^hQ3K=W*sB3ayEB>OtyIHq!xJQLJ;iUcNoUHNx34YCFQM zf?5hX&vyPhwcqJYxC_GldJawbh`e8U=blg@3|U~SZ1e5fme|6#25oVtleMtRr)Wd$ zq6w^;WwZyBJ!B@UerWS=kPjehhHIw+I^5FBor=triShhN?jHqI`@zY2)&hpb4=+bAIY6jkE0o*+z>I7(uM_&gMutgxN{ zLczslK!d($82WNB*%4OQ00=8(KwM!!$hYFHK&-)*1gHVCWI;Q3P4pq#Cs97$5FSc3 zrlzv>j)#q~qO_2mudJe80JRC|0ILOBE5(MPginyqZqnNK_g0!lx=WoO1K! zq#@P})-+^kLsJ07x`Y~N$vT3c$SW+Y$T@3K8z_-jiD(C^rOwOr4Ze^`Jh#lFF)OVAJZ|cW%q<*%ZCQpFJTfhTXzqM( znptx*YE>1#JOH*;c%}`HXru0Pn?G|I&)>PhKm>JjAj5#NQ)}jqMQtM8D2L}H6X|HQ z>g#z;`_-wp^W%{NCw&Gk&S#l+TQocO*H>f{K1p?$7!;8@#h`o!-eORGXqd&I*aU#~ zA(p#)ocYNJtQvUYgVQ1Klm$6{qVAmK0MHC(TIdRS0jNN%7-YBIpW+@-PcEyFCFL@uD7A?eS5=N*ggglW62om%& z6b;wML4>ZyiBH22mafZ8k>a(B0xaJ)VOtJ>D&i@5b;#qkuY_xaGemcn|)wd+?M8=?JfN+N*S$z7mVryI%QpXUqqU2{95_RFQ z8wHIxi7J-oer(t$2Je)Q5pGcySnQMxo`EMP?VDv#eFDtMAUXn2(UUqXv_VTfnw4Cr zJt<29f|K2k4gES&yHeJ#!w4RBh*zE0aXDdr?1*i!nb{)kY>J_fA8ViEc_rV(Epsv) zs-ZC@7egn(?3HSD!wJmn=;;hr4YTSHDT%6PWPv%#uJHr>#8w7#I5G5irh*a-RPuO6 z$OUJYrj6N*>5SQ+0ZgW#0C{=Mz=yAL=A5z393*m}IC;UQEQ3%NmUOfeMTc61qx+2* z1c*->!vZ%=YQ+5nz=^0&=t{Wfaa|#H;!2)%^oO&B1XwxavBuvVwhrFi$gMfBpq*O_MPfOahm0@G zQ;Y}z)UA8SHk4FCShO%yk;?Jet`yS;(3zDBq!CN*)Kc^EJBM z%%CTBT2<}xtTB(yL_?w(JBXC6Z5ZuDJHVK;tVe6@kz9`3dh6H)252xNtg!h)R>a`4 zFVm8bYLJv*U|UHf;aJpOSXD+hl8QZMdaV#=vD8#^uj>ailV}lV{Qzsmi_0sy#q(X{ zm4j*}(pc)AHZ^z88=PADy$^vQfe3;{!IJ7Aq|HuL94D+X558bPf>9k0X+wMc%%!D% zn#$zR-Ov8r}wvOBKkF()ccrN=E&$J!>t1uZn?OBLj@aj=}xs>p+dxvQDpO zFoUbef*cDC+-$w^(zg)7u0sP0Ca8M~Z-8McDj~xV9PqFts!f3CAcS}~HEUW(zP3Ok^)|`~GTUw$8WMIGqi+ zeHJfKk^#s;9t5`!B_!Zq<8I%LE4h98=49%*2HY}ZZ`(Pa(moRWW=Sz_npQ;XaDr%_ zNrv10!nbK2Ka-^yyfuDJCsjAez~yu@gV6|9%{#)VHBXISJ$W~yI3~=SM>kVi`(LT0 z`Ecrd!DMmn`-$U3{031zw>+JyOM!Ej6 zZp-V3y>u|KAby1#y*p&>vKvouG>0em&Cv|-;HNf%i+L4&K}OU5*4o9~?A1+Com3uk zU`zz%cmzB!je6eQ%(Z%zuRg!;SRD2F{n0SLZw{l)?-N_YKUx=jNE+j4zxXJ4f2fq` zH+CJcQh*6hafobaG{2vyfh$54mNhWsbtXcVHjs$J8@*1WK#=2YNE~{HfE}0br?I_k2 zCfaC}L^kMl1Zt#5%hae4$1tLL4YeEVl)CO})+jEpwK}y@8eFY+Tq$=#I3P!1Knj{L z4&L9q%SJ>M}L0thFJakIF0W*d$WEov5D{=O z_nXRG7C{$KRr2>}-?M6gqj6xtgz(ItrwSz6XOe?M3<-67wTq;{i{Lg>h-4~5YMF;E zhOBHV1Fl4r2O+|`8d;W)dgZH;IKxdv;bRzDZmU-nq)ERjvAg^@z|y8KfC?bK8!SbAVhQL zLX;PQzpk<*h-@H!WV(QGsPNm5ALZ_8i+(K75c%F{$C$i+BDyhb#3v>j0BVj=6hQZs znOWtSxp(q}uJve5Go1s`qd98nM~@J`e1S0y3p#G-DBJ4Hi!69zb|FQ`gJ@eG1l=7l zA%^+OBY2Ms%qeKe;!B!FEFnz*5x7M9laGt&AZtlv$0G&+(vQ6=FrOK66ROWs`ba`B zC1b|vx?Re>Xn3ZDdpWk8kUrMNPX(C#jzU+r3@fy33}XfWo=%i(B1~H+mO(;&(eCHN!u2Yo4qD0O@wtCD2UyuDB!xC0#%3wqA#b@*fap%M-(HL_GtkZI%n@0M^of4E@5&ld#eCd-buN*6 ztB6tU$R1N+4Xmz+iz?|{T_)BvWTQo%s#5f9Xcf5Lh&{o>sh=orR>ywrngdpt)~VAFq*OO8?$c@`15I^d zJQ%5}XOQZ^7&EG2h)s|>-I~9t0atPiGS)`B?{7jVG>F_~o{@Km%;0dkaFQY!ayXyG z!w3V3Mu-k4j{wCRj1K4VOjKr7N0)ORGZuUxaWV%+5k;-laM1;)kB( zexBQq?>^sP+LQUdyl1K43;9YOXg1^j^z}*Bec>FUzURrLAn&CSdrKOTJvrHbqIuML zPH8=&)I07^aDR|{ywyh6A`Oo>$fDu*sfMQ-KG{&>`sVy}quW#Ms*!}-yk}XA=W@?` zKT4d8b8q?Jqy^Pb`FZt(-;Q#7!f(l|uO9bXQtGSYerwtN#|mZJS91*s1X_4D?_Htm zT;X}|%72Qv(jU%IkmL)_=kAL^@9dt3yv1E6gBw5DX8jBp>O9f!zW`Cg15W^gCj(fE zI6A8Czz+vWu8RV7j{E8q3+QQIu+{?AF=H`z<@qZWDz6SUqQ*32&w=ct+^NzNx`Iqp zCOg+LNrJbOc<#PYfhzA*Lcn~(%oV!D{G_FU8j>>kiHtcU!$LMcMb$r*a}RPJZFKt| zcqVIjFK_Y6w=g2N_ocEsy!$;Yg;M7VOrdP{g7`#IQs4P*`g<+T?mYf+Grhlay9Ffs#HthU1 zTQs3$x=hn}42Amo{#-7r?v6O2k!+@ErFuI{pVsq%Aksx)X3qKi;ao_oET?ZOJDd}V z@g)oIqDFmi(CQ=LfJZOfvqu)2Sq7fAHWts8w=7^`D?VFLx;ZsaAdSYl-x}(kb6E2+ zRp$UhKum{27VwF4spd*lFn0Ct6jA`N^OM5%xGK) z6AvNRRT08iJ5cgWW2V@GwqZb3zEU&0{!}I4LrT;y<(9z3h;aqOHFvKRaHxgqoLVSD zgJvq6);r`>A@V@hdIJVq0f z9J>XCg(lZM$8wPF{+PjVx;v|SrQTMiy9EQs>F#M;S)gS<>c>J>)7|fc;XPyZy?DAq z!`5{7>!I$`4(sZ4hix-Ncb^G`PkG_5(A~;(chUyh<;bT3-JKNL7*5fhR-cRRUOh2l zyKe@%8()_02sEM>2WtFTqdBL#6E+xBE0u(FTABEcTMbTpf9Sf_|}m{%_eeTvmLs7G6??zd=x{ya#hb`QeJLft*CRAl zYvE>)ix^UzYiyd6qNX`b#-NW)GD>cO=devjL)x14%I`%yY6UB?RSk{ACV39kIXzDi zn~JkgicL{ffc+@?1sEYOzy<+>1$au-=M-Yn_Ac~11^_zcBCu*m!pVS$mDvKRd2RF? z1z~r@jvoukb~zi#CM1Zwk$Fz<+8=K3hKb`FJqH@>6AGP^&tO%EK;9aP&p9*-e(MwKzwmN3nny})h<=D(EK5H| zH)tLx*XYMInCQo7fM@dxh#IyH>)4Zqb*=QMv2G+IF0n#%U!zK*^)iGbMi`(p;0}aC zuqAbU43R;gs-ihqMXk-1LJ+I45fhb#fj4zaI({s;L6bQbF;b#jv^#2>wYPMdhM&SE zP>}I`#&&3HR3<)y%;_l}Dq5r>d`^gnJ4KC-=?bQg3K|fWyTL4J1ZBx2afZybo32qj z3VcxU%Xcs$L-A`9-ldvfkiydW;0KSJm4~RyyU+l8|y1FrNIuwjX=&y&ur@io3jDeMnfm1fnZVY@TbtCkY z(8h4e7$|CEpd}j<#0tp}+j2&ztxP-_YK(*NDattAo%G>Y%?PzPOK^UkaJo})9J)Kv zr@NmD!+YH7d+~Iqz)hsPkA=F4ygxVH5zHAfLO&b|&wJso(A~;(cO+1Wh&~FAh(-q?fPv#tT(Ez z7f)--Q;IU~dawC9gK~AvIrYAcf(SxqL3l)?eEy~3$YnN2R=0;LsN z%pWPOwJfDsaFk4^LDBYd9|l{ILkxDYTaCFKg1SnH3fgpwQCVq3HdPZ@*J~;Vh>X(x zD5BTBQVbC;Xc4OqF+DOKBZXb&)hh9Wr4}m&5M@@9*`!j@T3G8PmEE*!qBR^n3zDSv)463zz+Z%z)uGP_Ew)(Yq6MkU(Aw>y% zTL7QvG1tl`Z``%Q-V|2O7<|k_)v^DldBT<{xIfhbw_#I|v-*x)e*8YYIcLR~tg4I6 zHD}A7zkHULVFmhmZtb{{xZ3@30ea4I`PG+@%WvJF`Xf|-T3sS=pa}&M74(a%bvSnP z5N%nOI2$d{fF`Gkxed$oPjVa9+dsi=$9kp}3I|~dE$craFo@ptHi{#J zx2~R?<|?*fDyo~X8eq2qub-InzS1wE$eO~?VF#RcqO5TesquBWbf6?I z<6V2$W;%{vMR!yeEt6-z$*s)ivCw%7GLFj>yH0UgkE6<^!`xp(znZ#q*!PNc8d61y z)`zrl?wMh?Gv%0ky{R`Tb>|Bd8p=UaR`cKjg~s3l1+AL*scbtc(I&NvfdvY7N>Nhw zmwJy7c_8@3X1w&8?64vygjVO9X{z5Qe+%V?DMCkXSi=@}k5SOGJ0^BbT;aitD{RX8 zMq5p(Zduyy&8&N%BRBTg3gS}wi+qvh!Jtr5eUk z(0*yF11PAT*&LJB$qS;ie?E&xVww7106Ts@3w_Z7a5{Mt#LeYq1G*kzuc?x<0ac{FrOS6T_kg9SzPsp{eO4 z>3rB|=p@L;EVCsCpn?>j;YvPD($Ru_dCr>Bj%p#JL?N!BOGss<6!fdL{zl%gx!Q9`a*eE4;|tamlE3o}Q9* z3PskVP*GEd1E>#2P>~ue!e5K=R*uYw_Vz0d4v#n=HmMd07f);n16fp?!Z;Re4Pp|= z7xf5$og7dr`8HmE3|$#e4Th+_56XMCbuYIY_U+Y!`>MHr$nE!id-oEptw^3@Tq;uc zs&xhgqW};)-v$#ZWm(HGlkDnBWN~0^A1Xd2k~aP*yGQy7NcQIZ_FbE5|B_nQ5ehEezA1 zGacJKMyS70V=Mu^gGFgv@Kbx*OWK)>U4KV;xWL1)`r*`Uj~xZH?P_fQ4a@M!&zhDG^mcsxE_ z)bOO^SRQ5Ch3kVG8W8k1IP!LV4W>|zZ<)`Jjfuz(P?4O~dF7Y`RSJdBcx+yc6$c_Y#VQbJ!)HsYuLxjdaQ-rQYm>zVm5F?Rs{|Z>gw%Q1UXaB{m9Mt%hH!&E(AuT{m$|or zlIyDOJ?}?Vb#+&NRDVcnecviOK~5|Xc?>uXAG&%m#^Z4aEZ&+-)~xlCS!>pSl*hAV zEjgLR!fgM4=3ow^ZW08 z?yXzh)vcB=9~Shzb?>?7?6c4QI{WOi529VSQyQ|Db=D^c*kGAtmL15@rxNvSB%5L{ zxx$8+`vk>LC^l9?PE>&c7Hy(^x9DSC*!D=`Mv2j^`+QTu7$8j1l%P>6I79Q0#ECoE zOHG@ZaY&5~s~K1sQgE6%aJ~JsWM}W6VEyGHg<_JQ2%3DUK{Zd)YNgTsIc^Y4MnYlw zlb_aaqjr(de3+5_fb&n8%Je3Gk7mt{Je&vcGkR(hFw{l+QFbL3){FwLhIZ#4qqxPQ z$eQ_ceuVjm4G7omugY*M4frQmXQreTIpD_VDY*Xd8a;o;xE<&h76OS3i1ZFBh$Ih2Cy zV6DshgE#PfATdnx>NXmV-W)$B)sbz7?Oi$^icOqy!?v@=uA7iHXAl&eWbatyKzpIQ znG;X+f!+u;ZCJx_nZp9430cc$I?~*Ah>l3&HpM?82U4dy?f6K)iV8t|)+s7< z8JcF9W(jxq)7o*THC_~iW?OvVo+?Ey(46KLm&*5?aP(G*l1qgW@h}=fX{15NW(VEW z16%71$AQ=ctEq&hs|33slmd-D3kbn8H{e_2ZstJhTe=HSpi|wCNVww zZA!LR=@+uoX9y)6DmbvYT-<4xdNq%tSmew)P5kiP?atq8bB%^2q>?wzH~A%=(F-b8 z-;Hua@HFHaNb_zVcOEh7AiryV+#Yr45h|8aHX_}h(o9`?P18*&w89}$Gu;?mJuu@> zxq3rMUhH?-?(8DJ+g7-9WZVlX{3EugD2C=Z?E*XpPQp|(!+v3!{#pT4!aOyI)l#TR z6?X%HnIu(D&jhEEJvY_tPNm?bvO%gbL?y?YW2NeDIv$MsyLmYtN+v&58a z{Ffv(%SUp;ZcHlJon(UDi0SPn4L6o}*%O#NwSIqq^wj}8`xbQA16!vR&hp+9Y)*2g zK6no39|kBg{v4K=HGsA3fk#FED4L~D-fof;wu--*1wMi*H+jak}r=@KhRMY3?vWys@t*0V1b2;}-$`9w&JLXL6| z);9cm9@Y~|GUYua?Av2t;a)Q>Z2kIynz;9v78D7R)&i#1A$Vj9wX89gd06lEbIKXo zG85}DYZ_?o4AA6<8$~WwmLsW?5e-TQ9NQE2aFtKgqV3@-o@nLv1WT(&>&5=a)S}2O z7wcIPvf8w;SSPZz*G2myAK9O5yrH231Ltbh{gGH>#r{Zc!~RHZtO9zH64@y{3-P%& zMfQx+;4$`>?x+2qp61%-=6x$ z$-C2zt;XM*Y6B%kY}!#`{WGK^XVi37iJusBCLHJ^8?@Ni_{ErM3ZVfHTBsV!kbXc- z9MS;Ao-t;m6OC@ra=W2MHMd`&n%QV(TcOsCuGL$$7$PrJu-;cl#M1oG%*A|*8U)0w zTMHFbPwyF9OEp@IqebsACz>ms!ZPY$WHu0#vslGrYgzvMeMKLjUyGXh&fQ^Yx4@aA z5OF+dqXye)rKa^o5wTK#e1zF;3KUz9JkH-o}1WsJ0vBaqf1-Gu{(1;xFNO^s0qq`O68jioTo9B~jFD}4@v~yEcgnKA?qz>XWwl=9B<2_?vIQH} zh0$e>S`M#{LBtLfgulWPo;Usy;b(i)i-W7-jn*(rim^jYnS#etMtt!YFJRG{=$bi{+e{B!?UTRC`fDgjrD2Xn#{$ynkhuyHi(5V$Q>9VF0C{X{1Ahw`Zy zcB~F**;XJn4*ERh3pdVlZ*zLv9jM)W+S+{bH9W6u1!AV852C#C0b1UWn?;z~l@EBT zG{JNqPeEklW(0LI0dJP6Nf+{A7y;9TqEg!ubeOOGP%}iN$ldlw&c2*ooSxY1A&Uy_t2#GOlFwMJStdl7|gHRQyuI7}j{GFvhHf4t(J)Ay=GuV_g zD3w)TPB_395Xe?0I~K(UULT|+F-|ONs3MIxCBtT+Ur3bnYN(J1kb8mCS+zK+ z%uCL~Wo{ay2#IisK5e>}D4_S_l3fL+UH1dr$#6K1=tH?_`1+(0I?EG8E_cJ=LYecy zlon^)34=N)id4pl6XSv+X!#8tYdo2di1Ot=5>lV()UTLD1s;fA##%lG^VS5WMxi6~ zyX^@Qu6&{mg5^LmhcYl2$n+Q}l~?H~SDQBx^g?E1latbu+J#r$Tu(hkJ{rR@C5~De z3C9QIaVwqEKxy86Qdf2&vIMrF#iAU)m_(H%)3;+n`L#+pNB*cF;8=^|_K2xtR__Si z;sI!yk4qJHPwYbTZr9cdQitsSAi5b?AK67$)$FYOH_fw%9a~@Hw>^ zODlu5*$B^%RtD~!v3K^UV`t`e6w^qLE+p19LH==CHaYv0PyMh95 zf*7~2efW8o)yW3BJV%i;hFFtq{!T?e?oU1ty{Qe2;6E z&=hO4b*x_NJ#eJh zr#%%{J$z8KR2)8dw5Q^rsevkvo`G^#^FUVHGoHlCOqk?v`~y^)o!e@e3CRZ)<=^|; zzkImyLM0}2O-4Gt{63YdBqnTxN>EvGuM#{E+OQdywRoxnQ+!m0f9RBsQ8O)LX$fl< zCd2S4bdeI$djX`1-m`8=*|jJ+(JT380aa@cDCzrJ%;a897iyQ`5@qOObtTC_0?~~r17Wzan_imHRU}t?m^s`ntX+$`Q>nsds{zlOJdCgms{)_o+{S)&ct(}J|U&OE&4(@!|n_}&ADpIo8wBN?|=e*_ZYweo2PSP z6T1_&&ODQqsJLfnRkwsbGx5bx76Hf(^ljw>8nPsC0~%7Uws6#dNAp(Nb;EL{W*L8( zdNR`uOUqcJmVf6N(YNT{_UPM*Wf8IAf82I=vwCX@HnvA}#WI`{S&ztJLL${+`)D=3 z&xqba54J~tz%*4^K9-J@&ActiiL?&kakkIdxKaqxnFZ9N1&`aPNep?bt}x^gU9p=E zbCrdY-+2fz#1X_I+z_IlC@@VLUg=@d96PPF#|+~lhVqF<*9f6_0z+b*`4m(Z+7q-? zSZHU|Dh+i-M`sY1MLxM;7$`Xp#-xm3{yt%|h0;JfgE8A@pfOR#Q>VyocdOZ{1D=sDPw#|;mME4{v#Ct+K{-Q0%o z|9O@36prfP3HxlW^4UqAY?j*{Cmpw8FT#V|hK&t=#K7%BlW$AV_~m}YfDIkh9|Ejn zJXQ-zH-{0dUtDdFi@`ljtwq!f@6EtX7xWdwUWf)+=W^tBMv+8A{C|Z1xA?!-e}{3f z9mm1OVMl1+73`7zx74`65G&r*ygzBIW%k5`h1{jZ1_16W8vr=6V?>q}d7{EDfOw2W z_QJQ%>do;)d9tmV5v}Ijop{9kaU?wJ;v^$Wx|>NfO__&WY$zb{LBACMr0kP0(NYMA z)2*T(@AF%h`b6n^8fTmDK;(=;Eq0v69gu6o@{?`Q+=q@e`I1YGjSZvP`!J)xff*Lx zxwJbvz~itT<1iY6bJw_Y%51$+rbx8X-O$xBKPUyow`Nfuy-1E6`fICGNJb9?=fa4x zNX2?v)V@90;18NO{)_l;Uk6ccO52EVI2Lv=I_a|x-J?IO2N7%^<)4h&?~*98#pnE1 zmOlg6f+q?bu0CMGlOL))(AwRCs+ubv&c~?LIG>MR45nmfH4b#6_k~iL|7gwNPw9qP z3_JHikNFGs;^Cne>a#u94*->hU{2@5%Sh1p8SgFw`=AE)$?#wL+HCVn6*sH2TC|sK z-qpD2V5PuTD`0W5um@O!7V|mNK$~}^H&L>ANCN4J2@39-)&1F_*B<148~6XN`gdJ+ z=-|Q57KY;m*L5`q$1(}&>GocpjhzfAM^;`1)}NX*vfoBDVfBznkIg(Y zf{nEF9)YEE26S`4p$=9m;=ac$?wbc8?wj8h_YEh>ZBY~(w_-d9#rSQ-;Ja+1S8T$H z@gNlAw-swsj02a8+D5Dx4?;11Td`4!DX~_FNguLeJP5`3ZN=CNm9=}t+E$DQp%}ld z7+K4(#LC*5R*VOs7{9HU!j1fBO0pW8Lk`n`xLbbh=_t?ZA*6My;MLBSf=N4D3-0V> z1xt21PA{E}PAr{GDU}x#LA*(}#R*Ak23rG7ahvJ3g_p>SvLUs+v*1qNGQ1&t#R5mP zHKqKGFI_=WRenKC-jz_guB%l( zW&mRH<^?l(*O@$CC6j9cWK6!%@xG}TsS9Ur35>i9`HW8>!5EuouL#%!|k4OA^lT#o-zB8iK>L zdHZQjRjA^y>jecx?PiJdGS}khea>;h~PLg9uYyZv-s!u z3glqP@oYr;$U#=3$YG>H4kHCQ=r9l%sE-^*0y#+YYyTR59Y`Bf$GV13=9wrg3p5rL zmC`SxE5aeW%C{aP>MJeq!JfQ+jnO5slI;nDuhaXg+q8uJ_}HG!*G-MiLvv+RpK3#r zgJL6Jt1T{SOP1D_zw7Zx5nTE%VYiD+dts8;E>n z;EL(jepq7h85$Z=dWATH0u<{aoNE`Y{8d+w_|VSFfaaJGDX4kWgQcy!=15l{_B0)` zv_2O~SxG?)=~7xCc=&g3Eh))j`rgEE_@$szaoZ0BXLU7DiP6?dV%3NU zja;FvqXg9S(H7rV=mlYn1iTR1`m|_^6G@+H+QJ`gV&Vs(ExEaZs611MO6tpST7XLP zOo>JKeb~IU(1Lm08r!Gqes)Qo%spK z&<@H?@|9{pa;#jyNZBP1!m^6{qgVoW*(x(f*919AQql$q3`s|7CNc)d z(Zf|a8r+tBv@Y9%ReJ&KEP1R)H@Vz&iOgn4|&t^TbMPfag$1!4|8KME(@O#E!VG`Cug(@*oep*cvK7z}J zmVb*Yc}=8(I2=!Zp6kcIvCOX3H@tLMYFcK;mF0(ZvjRx2YKd7OGljs!uduMBLU>No z{qLTfj+#sg;v=(Adj0@-n z*mT-Ke^X2wWN_}8YSf3z6oZwlnCQmq*CFXt#~GFuS7noNR#eKg?UpDkjEh!#69u*n zI`!PvM;Vrm4A|`vmSH%OPQLzzT>e_|=X;Q&c%~7Cvz6>j7l{{CvLc#d4+!uCKg6_! z#97;4(7TkeIo z)2tlfkX1OuogkrtMutON0u8ck=}}R{kHo7SQyWXh)W()EO%Q~Z&))|R@@hZdG_eR@ zL(_h~pUYGohj3Io0>~r^{#*2!?YkkH(-W@Rmf#J18Q#DjMHu}NFa>!j3<_U@2BS20 z9o-Z&Ch(&JIc7_#Pa(y*nvW$2XI5dDDTFOdB0hllLQIp<~{;l+}%d4Owji`>Jj?HIL1Nmmt%hzhm-lNEGLP#?|d{^W6D<6hNFNO z)J+d9I(kX^%1-LO&CsHAxTUA0-ncV8HLp9-qFa*{J;i7iO1h$_G^e5yKu_KvNGzBw zu5|Ad&u@!9>_?Lc6KuDN-fe7sd33w3kSS2N$|Y%c09$=bV~SHOt!YtX(3Vb+x7P?I zaX|SC_=@1=Q!?f&^}2F1NuYLz@kY5+McNvSNZTRB4#wtiHU<>nm69ByV&e5;uM+0o=pXboYCrngF(9x?Xb<1A%U1;nXe7k8b{skm7Bj#ZJ+n3lD#}kQ zXB>wBN>a5qd9xxc3prqvxb=OI^3pH}+O2x6iQUt-Q-OxVz6mYh*(MyJOLiPS7sX#W z!4(;Awk6lPQwnKe`={VoBnHd51n`Mr;}w$yV8sW zYWUjCQN;6*$j3g#b0}ufELn>tnkKuIu8@$$Eh`YYWGEV>1~tfKCuJenVuIpI_Cno9 z=j}~2RQ*`oM{W)T_mOQ1{T^mOk@+Y4!QDrit0%+IvO&Pt<*=UCc)hdnr| zjWVUV`4i@3Dp`mb%1@q?2{i6>7W_pM3(g8PX9d~x`GdX=FU#21?70cc^z!ieGQEpA zJXMn2SYOgiE=_`P&wXYsF+zSY`Set{aILf6i5>?IJ4&6aZ}_yWS+?p=ttQcC#EL6^%{gsLTr7~th}B`sb31mlLC}4YpU|+F0q)94*4R({oVEN`8#jCIftXIin+=dBs zdOiVD1jn6Ez!Y$X;3(g;%CD1BiT#05%&+jJ5FLai%&s9_pRna=i=0C8vA;mC+&n zZLKI*D=bQkC_9CvSU_HW^0yhYhv<_<2X^)4X$&r7Wg^rJVt}G8x0S5#j}fh7hdzhe z9a0`ywTH38UT-vTl2|4xJf&gby5Pre(m!#c0*P&hu|**k+#`w1^Cx=zl;3Jk&h(xr z)a^8!MRf0NtSsd}>(Kl0oA(}^U%b7PNzJ0|rNdDsm%xYO*6$C+jT;Jo6hdNHkxs~A z-gSp?v{~3DF&*ts#~o6^_zlhyzo`*%<+r5bB%dsCC9guZp-y)1-jiRyH&59rEPZe_ z;mFreo%Uzcb{F5&_hjkS8$+EC?w4bgZhuxM6FkV4f@Ej)A8+pW#pA3_T}ZOSum7ah zq3qoC{FdSefw%1win6S!CKk#pH^5aqK(+2+X4`#HG8#5QWQYSQDFC65nFfD*_zM-61q6!8mMWS0w!?p#(ak zq#e5F+}S<)iFB>yM*!LWP&uD9_So`Glpob|{ZXTGk{~y)-UyZDx9W}l=nZpr{v}uG zjpBEGBr>M%d%Cr&=^*1EJOVv8pHrAxt+?Pv!3lK8YZBaibxrRR|CUeajH*lWc%LBF z2iory8SX7IT1&(S`|7z$F0Mt;KvgmeK1a`mFb@fI_=Hx0*{Fi~SA>pa4c7PbSMR0a zmJP3*Mv*nc${U%3CKhrfLD4Xw|lN&M>C4JOAh z@#6OD6RjSx|J$y5^0s86rS0OxVAN3a3Lxkt{G>Sfe2LYpCp(j!=}v419GMZ37Jx(W z>7IN?{+ukiqnqXv+EY4m)kZ>%q=}MU?O&x4))~dwDwUd-HqDR56oQctSh$Lq6caj!h=?wZ3hAry(Lb4?Lfm-6^OhT;zVHbU)okCa z{W;+6?H}dmh<<86PyXLO#Lr3n#HAbO3;MZMKN({Xu5YLH6NUljdOM?^5HgrT$SJTS z&X4KENd5u4WI7=`znA;=8~6-h8Ism3f!_fqWLjh|-jgiTJq&083Rc*wJazAUl&{Ng z`v@1=pbYcldh~(f0T~qS!NHI56j4K??cddW$C~?v0nK^E$5nnZ|D-NM_E~=99R_Rh z?Iy_0prcW)S+H7Rl{Y1=^~Fnn<0b6P;2sjL5IR}(a5Nz8c6Dbgf4?pYwx);o>iz-! z(Oixm3bOp6;z3^zH^aLI=k^Fj*q=YfSP9%bWq?{AP2#km7Xa_)dVJ~aZ^z^^gqZ`U zq#6{y?j&OLj5U`hF%bP~cGGBN0Gr2UPtMLaLduGCDy z94s2gV!}Abt^yV@=Z^xI)^Cg1N@DGCSs)7`*-|$osc~43hm2`@JhYT)MC*f@M)ccb znn1;Wn8b+y*O`N-z%o_Tag{HE}qo-AC^_XS))) z{V*E|MEULIw+3mHcQtq-4pG{r+(pDBdFFjKPIH&_x}!=Bm&*&iBT4JsfgyIn;W7~< zDAYias4Ed*ma@wz@*<~AhS=|DLsIZrPG2n5=eHozOdblms_A0I7>ZIvJ6UKxhJNG~jFL$;L+(K=@>GaG98@8%+=fo`{rjS;;f68c_ zn{8z)f@Ygqfxf+=MTGb5xb<)8iiDT!)W4Gada8NRXc{7-{4T`!IVe!;$NiKLzCC*G zZ&CWoe0y%{#X=bT?J6jLS*|&BZkT_9x#l~@&bUau!yCxh zj9*AremjrquHezcMGj9EQQg~;*8l1)6J;3eDYG&Z9I2fDVXL0VmfvOmKoq~dQS+D^ zr%)8!A=kbm64zN7t)|S1xcz^$j@ROvbPqg_AZ6qY?5Oa*=?TYP)VSRGHq58j$t-pG zkjI@Aif03xP7FEn&3U+5ziM6nj84XcMe>??anlqKQ&eZt)3h*Ss1Vx`L(yRdE51b@ z2%pH0{B~-4cCv#zE-n+Kc`nlom51BZ6`w<>0nLHAgsI+SvpO|;DYJ^Q>2EwmP0JTW zgQFec6Zv;P^#(Esw+x4Rm(jKcMnWvfzZsgRuM$MyLtW;gE}#9zxx3tfzY-IIVAlMH z&|;JA)Ld$vG#_O*{Z(DdhXiD<(74nXYg%E*+xq`UV-uN7-SnAx!5C8{E2iRc2APQ* zo3vPl)ct*LXVkyXWXvjG;ARapL969X2rIVA3PlE)!!fh%E#{*%zFzM3#=pTt>XL-g&p1Yrxkdx=sRjckq``f(4WxZX{ zJ9x5Fu0LhVDI^O&B*)tShKIHwM9UMfh!TZH9SFm4qo@Rw2$8QZ6E!-JETeloOl|kdO1>cjg*a9oy4{BFH$ytJan(_V^;SuL##>|)g>k* zWb0uBbthwNhduMLv@c)8aTRPJ)j?bG0Fk?l!K^c;;`P;|o6;%@PkB2+3oQDP4EEivlP|JEvKi2K&7+Gq81lNm< zwnrXzIwT;k6yZ1tD!j~+-a%-GVipv*-eRj6fljQpBNi}CUk>|?zav--9qeIZ+j{L? z;_YoSl9w!gn1I%j<}(!}JClX=c$8G;9lMwhEb{>~EV+tpFOD5mDkiFJkJfjZHYVJ9 zXQGrL@_%e-vZP&2p^^0hi=Z-x@-XDZezR00Y$>Ar+(IFTiYAFMmLvojrn4AFblFDO6)!HPQnhH|tf`3Kb`4o( zA6^f8n~LuY{%E31HI%f^vd}L?$~Z9c?1;l2*$5XYfqGM1#d0&HSR)t$ro4UN@(B9U zK`|i9h7U>#5o|uJ+TfvKEh0_BklHp#Wsyp9A6P92QH5Camblw`PWp1=twLi;5bc z0(nk}%2G&xCKL2Vx5Etg4Pm$~zg9I5msVGX##ksMMU5p}BBzZ6&=7;E9Fyc%ve8da z7TmdX&b7Se`3G(Ei(0#6Vacai6>Nwd$-d<||ELmt!?OE2tTONv-m@(OMSVZt8FC47 znRjL=x0*=Cr3xU4;;R6PhRM#=1tp}7V5v?~a_YXg&@rO{)S^o53Nq>JLx9F*A5e0~>B(f#ssX=T>6rR-skBlS3F&`4pZ zLE{lz-e0XOYw=e{FO2gnfJI8saE1a8pUMN%r$^1LViLkMs)8`xQE0jq2L|@;fmSz` za(m!kaJ|6lyVv0=;flt29Od6r$+dBEzplPDJg(QB+H zJ9*-Zz(RtqteSc~21#*QjfJqsm1+t~FREE$tMsAYY!%_M&sM36wCzJwM}7*|5>Yj~ zZMDkeH+2)I!VqbH7id8@%DE(~Y^BnP8$0*MNph}XcnXm3@U*Wr<1CBmp&_z;t)Q0u z2-H5mtr&9VBQs({?ig}J@qNf)|4`3x`!=?cygLia%<44X!nb-L*{S%Gwr}qOQI{k$ zZeNPnL8ncxHff+m^0aMpyx3Ho=2= z2@m~f2XEiv!NYER>IUyyanxh?z-&W%#>bL6|Hbus8rADHaa;ZsoQ`=LE(L3G{`KOQ zGSUbK;!@`GQ*?WS{y5pd~&ZtH!!8n5n7lG^JI1pVY4O4gDSC?kvX zDh7R6GjFs$zNO)9$uF`ulgo=NTVyt-Wms%nj!aTomuxKKv)w$zY~{8|<}=_@F1Hs^ zWi!8XVP1YKSy27|1m)gteY_DV?f^NTHwn|hwkE4%mT)czSsO=qf|=j4_?>)|omwA1yU3Qh`dfT&Nr$c#)s?LS{smQ2L3*#QcbY<0{B!dpd1?p$Jm| zGl`NBoUE`Mwv)({h#iw3JqqH!3F7j(w}Qz{`C&bHOqguu8%SBFxTm2ESp&kY(cRCa z>B(JB#xFs~5fsKMX7Blwo=X;KZPQYOs6$%ip!THt~1euC-(so62T)wYg6A<@uVb=J}$YUT!hUmASe4l@h&S z7^{>RuaxKw!+52{M5RP;7$!oA2{L~C_yz%961v+J5H$=hh3fTuvhut)43h#KBU>e= zDkXZuFjXlrT`AEUhUrR)nM#S?FmTpP*~*$qiQX`*sgzh-DbX8-wUrX;l_JF25g1 ztSli>T@R&SM-?8eop*D8yhvM~DLWt?Nkt<)U1-7?G&Fonh5%@gs-(YR)Kp@Ss%-GI zSH~b#N%(E0#2{5k0`p3VL8_9(R+SQiR3!%?R!R&~m2&Ypq*9eXP6{;gBO(tmC9fqu zn_31f^ikhoji#A8S|oo^Ls_+i=8Lf{OrwS30q!CeS@bn?4hS4qP(#Kerk(zO^~R3O zIEa4)!V8|if(Uhm5Gl5&+rsK~GL*Gf!`qC(R^JtMCb?2YN57l=UuNA1|L26<&XoBw zMZ1`GX4XM=X4W-itto82_ChnwnCGcvy1$<6UyT-s5LH61bfGK?m*!_GMNPWV;fbQ?T+!ith<}ImORyHNkC$8_0m}M7Dyvsx^_226 zbF=3~64R?SfS*t4)FcqBEHk(Z8TG(^umn41w@imLa!`M#5tvC6C^3+jDS`bG4K+!~ z8iCTCOY-N*X-t{_1uCwIJwP%#B7Yu9PBgKaz=_AViIxnQB5IdMQ%RUdV7lf;aMfbE zT}R-EZ`dj`aizAp_^glb1-O^ZqyL#L4Jnf`)vbeq!u0D*(T(E4-0cNr6%(}LK{lR` zybzAi{7-YT!ni@0iSey+0nH&;;nU;gr&D|kgyZ?;zmY$G@B5g}9PCU2Ir57h^q@yq zOXSdbVQ`5^>X#YW`1o);QXpxq-iWl@fQ9FXMIJfC<6$NYP+{1pb{HjEe3 zK7}!Kv>2T{YT4Nzfi@?zshfTof`eRf31p)(T2i`dQf>7FpN5$ zgkWUdDcqTwGfu9u5lBV2Yr$jl1{+iqNR96v5a25v72Zgn2rkOgB{@mI12$@ z`M{Koim}m9Q&z7RYXl=}P%#3IW4vR*FyQSrJiBN* z29JYky!;iePF+!2g%d4zc>*0BZ8xQtmL!BY`UhpQe}nBt1e-A8P8{yBbLObs!P zdJhYR2Nk!=?l~T0AV%&xg>U01xB87qt$x0x_58lF(!1|>whYzxzJ+Wq2;RA}YT7zK zcm=JNkKu%2W}*Da@y}_Q&^qa~f}F5~6Dw2sx6dSyT$Sr9mnlL6+UqS9V#+G|y+2 zUMXFQ?-M|@)S3Rq9w=(Wh68aOUrjbIt)l~x{FF=awy**62_dvtQ|#l4ng)Cb~C@DL8mQKHIzUfBbm_64?R%G!7~sIPR0B5z(f!O zCW(c_kX6yV1ijVXb=gh0$Syy0hs-^BSrKC_@@JD-yFYEdJZaB5bO*7Ay^_csFIi2c z->$mY^wrZBeT5j}E96ywWr!U;?k;+ayD0&do};c^anu20I0S%>a0o!ReMh&IuT_L( z4@%ZA6Kwu=|5L;l^`d)sZCcbKa!Ph|Ln+Y*B4}6zR)wIEqU3oYsAXR*L6G971|W#J zo6!KL9~% z_4o&(pmnNY2^!W|y@MzSNhbtNEsLP_DzGXFVj1895VX<0T7sZW{&+EqZ7$lla0=R@ zDxjd|V&>bb7tMa=OOe6^f#RC#)>#Wd0c!UyJsryLDx?xe+i^5j4v zJ5Uq?Uj~+5O;p4R%EVuVIXb!p&tK!fzP>UhO2_lse(I?8y;FEvlPS#Ti^pVr;mDx3 zj~BhqgY15^kln5^`u{?aGFqb4i~wetm<33903JoY3t#{*`y#onDU}wVu!_F}vab#D*n!+zQ>U|WO` z5bE#|*;~NJCer8j;6pcQMsK7*ENX$IBY#y4r$+nsD$x0T#jm39LzS@~${#IW17a_g&iwAX?1R>qL=t=&P2=+Bb}JnrLQ@RC^%<&}8D8KTmp84#)0@C{*!B zOj8M8V5*=v34wX~bJT8A8By(nMO*n3JkNh7zg+`wYpU{^Vpi4K-^IsC%r9*>h>Arq zDW;j@YV4YE#!f54*04#PQsLM97qff|6|oKIY;o`@;eB@$)4%N=!+XRYL>S1FiOr&- z*$_tSwy@>SNkb8y0o^PYpqueu_@y(# zvYYuWf5OMaE~=tib$<|mY%j-0$R`^%{rL8bojoqFs9rIFa?aN3w2=U__84lmha$7R1OmSQ{*%j<#KPo~7|N2u1-UB}XcwooC6P8Nwpq~Of#ZQ76n~)f0 z!rie&ZRVg#dnAQxA)-Ku?Sd>&B8peV!qsvW-?F&kZL6u6iPIuDZQ{hxSwN45&Nm)w ze z>^Gi96@-yB`I0*Bo#O%^`}bw_eb0`BWt@^oNU~tHT7v`bhPcThu-nlNQ0k|T{Pk#08V0{c_o1B)}dn9s%}_zs)3CNq@4a!AGRgi{7ttW z`Li%=WuMENXBD6*8m)W^{tRZjh_Q`MqBeX4Fs(F-TesAl@OHvC-tU6m4F_pHr}H~P zKfwe0t9)qfB0Okl=^Q>0EFVr8&xt-)L{(-%WH3gZj%DuTacFkEMn(%K0{|B~Bfpn^ zT@pnKuSxJF<#$zoL#}sLf8SpIkV;9d5ri6Q6)MBXU=x!By5c__r<%yyogRP$<(?J5 z=wcXI!d2W0k-}rxa$H1yPGe4f#=Yf`#`z_|sb>ib#Cy+$_P9KY%PGK*z~GxvkQ_RLb7fQ5q1-o zIy;s%V}upw&d~y^(1itnK$Mpp{n-_$fhMZ70M0>{(?TDc=kt*b3OvpJW(#sOB1m@4 zlXcMsNj>DIU1zNiHmoT`HgSwAI%dfyLaP)j|ySSA?G z`UVxYFAVt$5DH&RO4Z0%hGAd^3feKrq!aDJs+0-Z-Z(Mt;#5tNjA60(VC3)~@qlTk z4B@itESI1idL21oRR5}CIBKX{8*kYZuMzRz5K<2@;*vlTLK{;F{dQSlJ3h1>rg)%; zZB4!g+e-)EFTPvOUb=<1ZZEmumgWh2D4BgQ*Hr6f6-vP(6~z5!z$j5MO)7)M1VL8? zmo218T<+KasovXw8TOrFCL3byqUc|#iymUBd;nszazV?hV|@6K*)$uu+RbiLvDn>o zd?=2XCP$hlTOTAygJczcnv}VMHEok@2zi#;mNEgbRHd@|&sb=XNw0Z(TeOQO7hcwb-S`#ij)9_Gs7Q zNMu;fP>L?rI%{-kcGmh#vZjO4aC6LLYjv;~A#8X=Y*%${d-VQPlbG$%ai&IWOuslE z=`a_S4(QqzYpP6hc3=K9-;sKnzf{(KrRF_Pq_*9A?BdajFfOc-aqY(Tg5zZ&&SBC9 zU>ecMM&;|bQPL{WdzxXh`~R>~Po}orok^7))q@**TQVoh%xl0XWJ%|z)gk>uz9wI8EtFO#rPwa>2XT5%#B_SByQ~=d4fHZggfm+rgJAXH@OXm_@i9y;S%l1wqkh z$H^iSRWPBaQdO>E-n<kld8cHc;LV@*wY7y|2 zW7c=Xwe{V)r!@sm#9<(m48n*>w@L;GNOrk^VL3|IoSblS$(uiWxgA3&XHdX;AuqH?$);1?R7H#{&1gM3kWSziicP z*#O_cjw7^pBDI_flW8g17-GqnAy1?+q;u%#$%r0WUIpWB;zsQ<5D)J^QErJp(s2LJ0#1d9kw?lzXT7x#)6>4_wDeKESM#I~q zozw_)ac(t1@u~pgE4~V_oJ0nUwclV+^Bu zlITcQ0bhO3cpBAWEvfYOljqTudAuKwJV8K74oBptiyf;Qd5R+=R6rFYUPTgP3J(pa zBK9hV`l_HcxhthN#XQtTUrC`5aa$K!jM|OSS(wzI5O6Ap`~Qhq_px>?tTSjD(0Dvy z-qOmZ6uZQ_^^gk#Fjc_za$)6U$Rz@0+UX^ZGjJv1dDI^@TGU{{_qAN#2OKQ=J`|n~ zxF%U&Q6-D1wQSnX469wjX{4QXyc5F>D^CSL6uPVs!6>3d%4dWg1>?dc=;#$=&-PQc zp3OAq3UQI0vTBVI+otW@Xo*YGlbpiBIWZ$wjBR%`OBSzG)Rmi4l#*mPmP}Rw1kqXm zUZ6$>nOcFko|8NP4076@FbQd_2T@v1nG;GFB|%!W{9syaF*hJjIFL1&gq)Xm340^V zV<#+;5~aZSE3(nCOBBc|JIYX~mm!J5D|q6cqdIM%Xnl`E9}?QE)a~+XGbeVqloC@v zvrvG_%t5<_{M8bciKroy70uC2Y@;oP$wV<@^h_V4XI5WHWAbW;zuEz?#;j&>z^sUU zW7a86+>3rJ9f-*S?NK(Vc|!k?EExtf0DKtW&lQJ(Su4DapaYJFQoaafCny=-zaBJ3lE%<%s zpon13AJQ!^Ihn{uyY&6?dvF~-UtXz>ay`kcTLE^S#-A{eA2s&v>9KbPOZI4LI)H;m zB#bOg(E37?-D=;sCc6!3Of?)HuR)s86g3i627HX{eFIekt zW)jI1aznXFYn3XkuAqLMmPt}bPZwnGOr_P8*eZ3Eb_i$+IBqs;d3$uoJA@>4@!E7% zB&F7LrB)|O-fQ+E`w-U{%-X+-F;uDYMl_M+$@XZ@I)#l|=ryYY%ewe503<1t_VgMR z8mkzKRP-7M(;L@oVHJ54@U%q=7i$#d|MaDM{4lD=-^VlW!oqUEf5g%3PEm%&93|@9@bjUxjo>;Cu!d?V@33LCJ|Gu zAj_xSn5Lm^j-qYKx)7`7r}+bHW3W!`1;hNS7>v4~P~AvECl}%v0_TV=D5B4pH~0~g z-T`yj*u25lJaOFUlvxo44U!9sJI(d^(kC$8Vj8vl+yYB6(+8(3{r^VKSOZSZS*qaR z`%LJ}bLj>bVGY!PrU*v(f>q<9>rq*0&^M2uuZ4uf7mnY*hJhuXgoTr3?TD>r&-!-p z1#V=j)m>oKeL4xl@{l#zVVXuL+0S5h^RwYH>Oq<<8vG&+s<8*vm?Z!y>Mad#t6PRQ zGKw`pGMiZu&unH~jiFMh@-IV`Cqk7J$N#_%EpJ_H)(8TLgM7_k!#iNCebz*JG4G78 zz_i_mB(MoEgK2iH6+Bd9G6)iV6SgEWh(_lc&IuA^-YMq0|a(4?4vvY1Pi8Jbqek}|u#;@Ydn+v$ZN4=O%dMe3 z(UDlkW`qPF@KczJHssSSy3Uq7tt|CTF{M;38w}<~rRFzLv-9d<)eRw8&4os8s2+Pl zr$Yq+K52@irKW4vMNZ@<&d?-LCMF7DmcQ3z=hHH)yOVT)Bg+)$^KS zB~^uMIuAiW^#i9^##d&V^tG&vpVsoB3W3}lNbiu79_KX{Ns9udY$vl_Gm2zE$N4k& z7#k03|Lb^XNYo>8*%fux754x&XZ4flHD+7e``91;T1|#A2)zyC-5V3Ad&gB2`T48& zjWr193v{RB0N3q`c8#>(4TE07!Gyb_mlCnV?U}f%sIgGztGes5*_Y`}ewuF*rKOd| ziy3uN2;@nsTNQg)uc)&`zFZ1;^(>Hxt1LUbc{TBqTF`=QpZxHGFd77R76y1y2?CS4Fz z!UjSXdxzOv;3?1qo4E~Rn34@+%h$`v*Ng_Y?H#V*R*v>PI-q`r3&%y?JPvNmlXhCuNfL6=|Oz%_Qq0 zpD;%=*IkT(Y!*stU^qa{y8-ZQN)w6blvU?gzD!{@2}cu@RsL3Cc>boO?oKK!S2w5uT!e{G0gjmF2VdQ& zMYWZdH<+B0@->Qf{mcEIf9>}^|L{Hk5WQsZ8b>WkR$AmxMMFy~3W9H$l@4%ZG-7t_ zPtHomf}~`#>WabwDwailbSoWQca^gow7Qj!DVHAPLU-fDyk`TPOK^jWV61pRZN`XM{bOG0kd40lQU}Q$O3B4MQ?~oHu6*RS zsVQK}mhOin;|X+W?vp!cd&Kz=g^B6S-<3~*~(WaG5cz5h!vPLA5`h72qIsL z)rlN0?!X)|Pm|3=!aP7T5sMI&G1(0mgfGxY}$Zn4n3g1fFDKPYx$d(s+v?1P@~zXcJe;T1YCr=petc*r*vh- z6zM55i>M!qjj;O#_ijA&b`;?uJ9S9Xl{Lu+`N;M$vl&?a0pYqUzo8;d!eM^=lI@bT z-^{r>!vBd7i@`D~pZrf+R$Z6iXEMn>qdb({p0e;vZWa`pEttXF8NmpwkLe1wPOHg7 z0BxP&s?O{>q`gXHtU0N-%K@nlECn)d|Bir+vbCN}i&XI%CUT5xm~eY&jh?|#Fts_C zi22hnMa4ocJyojsHZW7*Xss_LjuGLav#A~!_NZg>8)=(#U*utr4s~an3l&H->Jjxr z&EXNwt%byL4&kEn5Rg(Eg}XcNQK)amGcGzA@Mk_Zgj=8gg zedQh-T<77%b^h$C>%__!T<4j)7r}Yas_R5$4X*R#h1W^OGCPcxjm*L)n6)5J!>r#i z*xC|J^k;s2aXWkkVNyaTNiM;$HbvmAUW9GTh{3%$xVZM!V@7_*fmCt&!xxNg#MmNy z1WG%8;dLU^4BPZ#eHA$NqddY@J7o2;9MAabj`pmlo7> zP7al#892UoEw0n@M2I5KStmkvQJp5*lKi%^PLD4~Xt+!%C5FDVb7lWy@da_tiO1xD+DBk$3+Uy*ehy%BKE`)ugdD&xX&~($ z=Lb1lJ4ZU8JMts%V5h}lmj;|DvdkBU^aaP2>WhQ@U))o#HgaKVBM^mPJMmFkn#ezc ze9v{l0S%tyQTq*vDT7MMcdKN(ujJjKq(pqBy}9NI-#belRQxGN>!sFGs? zOG+G5GUTA(PK+mr|5nvb=qLQlnDxE|r|>EBSzzq#T0>v2Vp( zf}6$AK|b)kZ8jykoO2z&(92O^{GaRuR^>pt0?W`o<0prq5RHz3$7vrdf#Wx7l6^DH zZ@4bsdce+7v&0Jq87-Ltk(`lEj=dCCkwI^=Oue8sgR%YdzO5OC=2OkhjPYsQB$Xk@ z0j2{tVr%}UybY1SP6`b+YUg`b;r%3qSdEBxFz zI;o$p4L`T)48A0P!0$%mzng+?+HJjuK1NCe`okPYr-b~z3_9wR(esN^s-&dEyDftXTte3R#dLiK{7i4)ZSKEtMMLSXi7RSrGRwlC!u{-%1?K^FKDv9eiR7p_x-WVLH z#%g6_oYTrXw(43Mwv^_^FOG1T^S{OaRUb8wtU?tKz*RyeL6?di0&K&TP0Bcp$_{>2 zC>uf&*m&X}DXb$LWko%Pr^*|Dq*_VPrbvJae1zB-IvPE6AP$zof|FtJPtz=)sacezMnQl}3MC7E1Md%B91(S+><H{D>n)G%jSwaZN@%d~$j&w_6iwlWT#Fhu4Lot%BG& z8N`TPnU?*?YHh%623k>+k(8)38-Ye_Z@(I9PknQ)MYDr7%8ObT!RlQ#N+qoq zs`uPqe>h37^<_wl#A+&-kl6p-B5pZLsp&TlNeHU5-LS?vj?1} zZKbKGu0qwSu8*qYK-EKn&iX0mysSq##7SH}N-{bJuC|}}NPw{*uR!*EGIu83o6jA$ z9d#7sNJcs{cl;CB+;fNTy}|a!lI+IDf-W;Ks*hs%+}$bpS96_VsP#2}_~eJhyOJm{ z7f;!c0Rga=LSH=jXPg6*Y52ozFXzu}GWR#ye!10Uu8GV8jG_ns#{xpNHwSR9A zM^di+>_{v|8btNWHbF}^-eAx$2dQrqu$GUNYg=Pf1+Ro=A+!uA6<{ZG?Xv9q!oj7? zynT_|M3gFlJC9o(MfwHsueP>O3(Ek{?1*=_V?$EL;TIjVo>a$L&*x>WcJe#96sd=0 zpQ(#d3h*HsQThZ8L&6Fap~-WX{^HN9C2c25)-JVH7e!m>J7u9uv9+H`$VGOOt)yfx zQD87Yk7(UPgdjDh3c5Oqlp9M8CEF77K!$|UdSfVX$Ew7L-@)%vXp(m;7T_)AYG_zW zN=Yst4Lswa^3dG!mvmc)bAZppe|<~8^zOF4clOKP;g+FBtOd*ZlG?n%jJINyBGoDd z3O1tabIbzlRE01b*~T*-%yJ>k+#$^ozD|SxC2nAT_StLL!jT@JhEo|AZn8HtLm0}} zUBg)->_G}f@kWokHY$ou6%?jRX{R?Xk77`&kk{6Kuo+2TYgmVVG%P9z8=#)mTK)m! zca^?*fdSLhq#l^0!DvVtjGrchBk!^|uStTeG-@MqUEjZJj9CgcT^qTptS6caVYZZY z)yuk&6%uLac}rbl)zo+AU20)eK;9^rGG_^}VaKIx`p%L|F@>K1IwtO0C>A4UUzXT7!-L^eN!EE~1OLt7J1_3oao+s2|rUhUsYSK)wUxQh23OE6PeHfv|_r9+k=XoHI~~9xmrb8 z#;l(uRgC2+M_rSB#Zg4MX6Y71!eEW@tSKXetHc}%02`og<_slvw_HbH|GV>HSuB^@ zNvJ8c6LK@C74zI*xQ=^7^wpY^Biuj^YO-tlk9&#|d&+wxHZ=Xz#ibyBn)=r*l%*^| z*RVZN&jg+#nktrENkdnp27{K}fmbr0!zWpUx7huH)QWx9TaBa?7E0^QsVCb-E#qo| zhFGLAUP*T;GdPgQH9GQ2%-fOQ*kiOgoR47mvbWJDC+vZT+(xdoS50&4|9!+6e0rYb zk4CR7-m&M42d9UaZuz^@L*+Y;C*J_{J240j-)Je(SepSSWtN)PHJT?#u~$dOIQ}A z@oIawk4#M$Vk@&`*T`$`FlaXB(;kkfXTMt8iQR~uBnw=}!&6IhH>UKik-6?r`3=*W zU5`dD%Z55cazQ4sig# zRq*xAe|BE;jbrzh^NoDQe|-Zgy-Hs7UYkjnoW+cR&2I{1mi22+Rm0hCV01Enm4i~q3zRyjHkYvZ<zCula; z=|QsyV+dJ;O9nRfFXEe{>L9DGc_b11m*B>0NZ8l}&z@rGdmNg6=`&ksTuTvss6V;` zGg?sHY(t}kOcQe_7c}K67i#`fkjZ#VnE(n@P@t1fs1!ciCr^VHp)iy0>{0v zvpL(s$6NR~6`Uv}>P!vJ{7pAMax;fDPbj!xjP!1_G`9CT&|TMG0g@OX*e2dBT5opS zYQ0^-3ikmkygIONUl+@ABI{5w>UlG*Z>IGLwLW33Pk8I^KXmqszw(h1IX*R*fDIasR;`RJdpRt(eME>xJV;?|&k7`7k zd%M%L)U-ag`P&vCZ3Cq3eU_mZwOJCO&%>2Ib07N5EA^R!pE%}A7$36MCkA5t;e!v~ zPs}srhSk)tHH8TXe8XhHZUgo-AJV4QVrUZ)Us9iZ?fKllr%;i%xgq1^KAi&A9iz`f z0byh6^O*H{%=`SEKfdn^9A{0d9MPpd4`=Fa-Tw-ZDh;ajSx!Nt^@&RB+=teAr5=xS zC^FciR*kcUOBi1|&ZqwE#(!=Y#)s6@ko9@U`YehY?)7=oDkz)O`@6xEVS3CkJvI>2 z|Ier1cn78=$HlOlk?iSCFGJfJs!<>3i&sI}QyS;tjM`Sl^o@W1h9mf^;3%W*(bdrQHm20{87)xK z8TX;jyi%VhMca0S-bxt%`0GFOPU4h+a#`9AeZF)Rw7mwhhLxyIw7op0KmGmpAA`0L zV@BJf=b&v4E#DUHSOs<4agq{_E7JDkANkj}PzWfOrR~t?XRU&^H#%)oTNAObK8v=S z;^(IEGl@VX!(MaS>;82Jr5$K{{c33YvQ^MF7*9pp+eHxXH)EYIWFJ9rjjl`NPBCWe&Ao z5_WoTSLcyU8$YM~O$A75fZ!mKuA0r)U(cU$1nX>`9=I-J<(pGT$MOlu#xWkFT@PHR z@s$moQSS_-qxLmmGirav+Mn_EKXK>pJ&fK!o~&16>#ec%*6a1aKh1}m_^_sSYu0Yf z+C>w?K5ezzwsui0YFEkv`lddS>9bz)`;wjfBav8QPuY^TGIj;L{&C z8l*{9Q@?4AeskV5e-{fFX~7MGV1q%h!5}~*b3p2lAQ&qvRX~8RTxqIZe~zIP3_WZwt;pBDh6MNx@AscRa?{6= zYP8={zgyPtmi3z*o+X`6s?|wrm33yYjZnc1YO2+ywTcC+eh+6*LXGo4!8a{0i|;po z_wJ8lr%3`vkn1xXS{ZIr)Xbz zZ_w{4^?S~tr`}lXC#0sbVN%ecu`aNm=CS7XQ;zQB-TD7{?T3u_cB2-|cVYNDJ ztzyNh-_r^(8i5GG_tXmbzGv=jucKYcjbxL~-;?UGQTt++gHW@Lf?%UTu+bnuykH8h z69nrFf^`l7cxSwJch}JGDZrls{59(L8teBO@An%{KY0RuLi=mg@3q$Nwbt*oz&{!K zJ*HO2tW`Ygj5i_$Mw(Wu)7C1QPyJpmN`O+JAKG0L@ZD0ogq9kcnC`ykk*|FT%Ww+* z%GU1fZltZX^c#%vcQMOJanOF-+HYI?2p1IA2DQJz+TY;qv-l%=quvH!sQonq>HLeI zdC#+r&8F1tDeLx>b$bf5t>wFod^e$HC#=~CYZi$DAFWrj>#bQ-pSsw*FCG)!4uUq?^0S($^01sB*u>A-? z7}_;zBJ-taf8AS7eGG99nXgg5*I2*TSijc@ZK2;oYIn%mwE^ADJ(Y z_lN%RJ;xg7rt=xKJ7ew6Si9-6>KlABcIU$PN8fVngQ&69(s@(uH?94qwU2BWth}?; z(fOCY_4s#~8k~#Hmzc-Mlx5WS>gfFYfAZnSP@k)%^I`RS*!n$e{YJP9R^GCnS3&1r z{nNQ`qDId}=S$3Egvv7Ndv$dFp%4E4Cun!IbUv+qPg}pIt=|Zj!ODA;bbk07U;Gwo z3>IHeo-Z+u5h}~5@72-yBd7lAKH6O^ov&BF*IU2WTfY%5u-X9Sy-GU&`k&qPUDW8g z=zNL#MyM>KzE?-*r@s64&(ZE`>HIv@_v+~U`$s{-rH|Te>Y5jH%xywBp-qvn?z+mX{*uT z;Co8)d!;q0 zhX*=OG!5NIk2MWlZfSs!T=jdY1}7v{2Cy6eOr`_@X0pk14*Muw)=S+UAAIW>@@=T! zi)~`Q2BgsMW%TzNwYtVy#l};sYbE9z>bLMMH_u>v-~Z6x{da`vMorjl8k*Qhv+zyt zm%5pj(ce>Qf6Cg&wpROOX+^^^d%(>!w1S)I3rD_t3cHE_EjEe)8;}58)3Igr_gb~P z*4kw%qjon+%rkbHh!2^YM{6oeU5elR>OG&tUa}{Pt(w@)xu_BRU`5%bX0q+zNC)NPjZ{8Zi0REG-2H z!@ImigYo{@@BZyyyDN7_{hqOY;=L|;&cP7$s_ydq zrn!UvhP}9s@ln6~7s3E3^m~y0Mqwz2qbKl{m&|SJKM6GHS;9PcC&)s%(}ZfT|y~#vRNU!xY&}| zeRi@bi?U1+2T`^~5e-qc*|Q#9qIs_LbJ6Z9!WFQJ9A>Ko86u_@d4y`XI1fh7K zhf-$P8h(@zx6WteHnn{tiQ*wf^^-7J!Uec1HnWf-gJ0D!S%m>An#V&m6wO1ZUVGdg zb_o1bB%g-{Q4BH60xe-Z+GIlg9^_eVV4`TCXi?n7j-TH483&=VeTIZ57A#Q#v-~K; zc?O`1IxWsK&SL9+0N-ND6lEBTWUeSij<~yD1?}L})2INi zuxgPc+Igw7?Jr3zgi#;xyIKCuVtd1qJtLOiNf-`y>;nIef;249h^WZkmTJBoCMuSs zAkFrt<1A)(rw|#n|2$^n7NK(fqQhnu;vXqOP|=Lv(6ryw*{Y%h zbN8P7`n@^Cu5=HLt2buxo=gFh>VnZ!@nN0kS8ufXSjq}dIXG(%fOHkS$9{}2$DJq< zO|bw&OpWbJjYuY^T@Z-aoLcwnRjCp(;-uQ2RmXWHB<{&-SEKV|?z)MhZKC%5N|eUi zTKjW6rj>B{u+{6ttk*)m6=0wuD2)#xJ12fDDFlUFly9*#D_FR zo>z4f^5ZhBSR{m7jDz`Uy&Ecff5wj&Gnmm z^T!W?g3eHWi@#x?V9}{0rwO{XzZ;SIouyfXoNYqREKi8AiJeQ38ktGXsup;jrFqZn z0rh&-UE4pyPnYZjVA=L=H3DnAI!mwLYZR)TK9-;p26T4k}Aq1*au<^ z0xWQ*5aj}AlsA+ii>$Zwcc0?XhLkj8$d7am=@>cxS%5<5600^Ame9G z=>PBTOyJ|H?t6ci8O=x|$ub!52EI}tHehS8#!Ix2I956y~iRHnp5)Voe0jA)Z5};#3@g!3ESSk0BOeIU02ymjp)!+xzP~JB^kT8d)7fCAb|*| z0beH+6Np5BbK2G|CTXjjBTmaxy4FgIc&%r(5C>(`t}&3zFY?f9#HFK^mU)BmF$|*! zk8QP5!cbH2anZkYplf$=QC5S7uTdM3OuI;xfr>g-Q3f1F=xAPbq8plGrzYUVy64!) z7dsUbP188bxe0$43W`Qw$3iu85b{p7$fn9hN_NdKAk%Qb73LM&m3N^MW#YFpXpr=j zXu+WTvO_KEXmb-wsT?$Tl5v-IN`}U$i6B0}8{MPp#Xr67>S*xJ}e`t5;D)kNVt1f z6hxqXLdHm_UeZt$3h9_WA?V3PTw4w_w{0vymNaOPJ~J}S^i_BqG^dn?7D?vjp17ya zd*(Tc9O`OHbde*_lq2Y4O==2FDfapJPS8t-VcZ-_G)C&damDA7E2bnzQt>WAXBgER zB#XL{2-lR!BGk3wo5*z?hLP3`69-U_n-2^m`-+ZHRmvIV@i1Q!Wv z(yOeuC?efe5rvhMHz?&M{!xm;O19e-xiv{qSjl#WBDWc|v^fxS`6Es8vyWK&p4d4p1J z;vZ#GSjl#~BDW?f3M<*}P~^5GMPVh|-HNUV7vVB~U4J z!gZZam%(-OY&j&Fq&c~wu2zvD&%;h>qg?n{vq|}Us$(dnKk$UqbqZ!B@g_~Yyaa%G=Tz}2ba?VdF>}E*R3(>f( zRk!-j6G}M?;!Bz{VQ-|b=LTrlwp@jxfj+GoF~#u}S~EdfIf_392}1#8*!?a92Gi1t z*Q!N@g>?=}>x44rG^Z5~}xt6kDHhBO)9Ej!Q25MPT!iGuQ&b+<_Xs#2v`Tvr=~;etU|`9T+%wU{G-f zf-w#SR66H|A?OWyQ;1tQ-x~!JEm`}DHPE0r2e?X1J;ry3Cd+Vh>l@05dWv3@wZTW( z1z5XGgYq^I*zYqwkrs{wGYImq(F7UfQGxnZqg;EUs1^oNBb(6BEaCw>q%8!CI6yRF z-~}a9Yb!*hIH_o1t6zV;St!<8YSq?27LWu@&<}SASApG);N}?DoyrTs3Wlgh5SgyU zo9SitkJ-#ozVMcu(J&6}7Mj%b4a6sXAu;GZET6=>;36!+d=Q@$JTeky_#~r5-J%P} zCsp{rj!y!$pK?mqBy-Ajr@}3LGfAqs$YHo8YtuFp9OF4Wx2(!Hms?`UOCFdr4&noC zK$x;dIeu-*S6HK#Sv1%V#FRAx#P4K{@_Ry771o$YDPbQvJ`~3;m_1Evk#Bd^Q^kvedadBE3CVz23w{-8u+(p=hW)=`{8;d)Rc>1FJPMqm-2 z@SSlY3xzhd8l-6&;XR_Z#q%U=f*IMu;$&*fwn(<%i$=Bt_SHV7X)4v|rjspx0Y*ei zn(D@CBwH9{1+am9VccV3j-&BD3w8J3{I}jJ&x2`;i@Gz^J~sfwMw)(n+jsAyB7Nf8 z>ht4&AUxhxzmmXbNlvUqPb+zf2yv9$OEJ4Tji{Zc{+c*4&9WZo9q(z%#E;Rmx(_p+ z&e5BukLs9zA$~AW32*27(e zztUXOv)2q*O|J=z=``JHq29bDn5U7MLb8S0QGf}H)9j=mw1lBi0YnV#Hnbo zX_{H1nB%j6^!A|eLqF*?m(2hj`xFpGpg7ebVc0g`=vVynX)3KXjtVoK?^6VTxd*60 z1$w-C0_Y88S|s~hs%+( zJxyTH#1PC`a3!Os`d&A;J`)~vmRaXMAz+h>8EcymfZt{sYEW|xZS=y{VK(fy33_$m zW`-FCL`CwKKQ-+GzI2+C@30>h4D14LWw*tO^7C=F=JV{ zDzom(gVG&xVX=a`cTj{ViwYb|AIv&K4_s!hkC~okmaDb+4u_>=1YI+#P{UuiEt7Z+ zyk^f0KGP3|U%itpltO?@Alb<#xm?);hQ4^{oooy_jpKcwR%A=YYGtsE%}d2mGV3+) z*BWsrmbUcq7;WOJ{)|iw1Og4otQ8_Li0$^GlpYx!;mcGOjC^VC+O5L}WWL360(1fC zO5@NJfy5*Xz!!5?Mv(4L6A;17M{!Ie19?@~3TI6B61eVKT<*-i$x*^v=(u!?5`YwQ)i$wkB5eT$<|);5z6k*(6yzb2HDMsqN7Qi# zvuXS?FBC^VASJajl%bL$sX-F#fR0*@!eVvVkH2)YnPznMYrI&39_AI!uWaZvsd-4# z<)-h8?aDd%5X3Uqbh(vOGhM!sg-yXp4zLa?{UF2+VPJ)7M#MS+>pwAE(G|9n$kp@w z+rF#mPXn+DGA^+()>pH`_z`cHDUsBoBA0Z9TX}1C%wyWv(ezdu)Z?9$iQpji?GL}{ zc6-0n@e(l+piWRB!v>^)dK*7Rl3Waz+o>rvS2mQp#ZyCI6a{1g{Zs-v(#@>k!#>xO z)-9DJqlp0My|~T@PQ^e%FlcMLyKE8%AW^Bz) zaG%%a!Fx~fq%m>H;;VVHiZ|RT?g^Nfb1$x5A*j78Jda8pPPyP8q$Vg0)z~v3758u$ zgVY42O)T`&l?99(fgrZa?hW3m{#x~?vi~*`#I_o&$q!&!PG0i67gk!pBhfreDxYXg{3~*YyV;Y8x0wNxUI37JflSzxgbR}}O2QRM*q(&l7P7n9{h7MgE8UxK zQn3HoDcz?I>Yj9WwV*ytkT!>RR#e5Ef99V?8!&Xre*_fpwvdh2I0b=_PA4y!J@y$v zF7yyTXB%V&|2Akt0*HXPgBlTzCIO~0j#Hu}aP^~@9P1PzHM&92YYmBNR2$-A442&6 z5R=RyGnY|votX+N(8@;Q;^3w;#Valj=Aos?wB=&K55Tr~LL~geXUf0*`}cYA8eXhG z-P7~0_^0XDvOD;)jfQ)dnevG`9lGJR`ay;Jgta;@;uqWS36f6HcV>o3ZSd%cbyRi1 z@oCp#6?u#%H#-K5+2YJyF>e*3v{UFl&cx?KmTy;p)(q7{MP z=t(Mji^E==nO@=Xpdy8>4XLR(e*~OP57Cak*LII7*Q`Cn_fs1nI8_rHAb=uiwuL$| zb0BmcI0m61WbzAGUzJFPYmi(yCr%{2C<-tpj*?+XvQV|b*&;s_S!^)|rPkWBY1J5b zKBN#LRx#DgHzBOE6H;>o7-qz~bB`LWI524VmhatXEo5xv!@!QP$C})&os69WnnKc? zfA;t@f{NRMzOXk`~BVd4vsIfkjH^*OS@g5ZvrW;HT*IOWBr zPciD1NLm&~rP{FoW?#0THv0?(hNXSkf)ix=vIW+T`?3XR5GJC$K1LBDuZ>JsdG=+C zynWe1`R&UV+#j8M*&;-UDp*2A$$dhgfvN3%MNUge6uqY?oa4rDF zg=r`epL0u87Q?LGMYC})j1Yz>*3IUvC|m*qgcIt4_k8dTPUD1Sa}LbIseNVIO1JNQJ0(ivz5OTN}pdSLS*$a9Bi7fCFaashJtmGyf z6F`fcWN8s>By?bVl_QX;JaTLq$CNGsePiIqvJcYsX4hnGVA;>p9%pOY>H&zPDvf9; z^8&EuB-tI`@OzvGPUA-wNyt$r3@_nrPMjpXjU;hKT~J4|tT`#}k|EI5v*%_HJ{z8L zg1RRqn>9;}qe) zk-pkjDaCdlyhU!5p^$)4lGdEKP#>oL^cxns>ap5~ikc;I!Hw#aIb5MKU9}dA0IRr6 zsjJFmN^?@DjHnK7F7eoM4;voa=cYB05dc)VbLT|aLn$o9CV?`NS|(U@=?T7?}#U#nBe9`s}q+?^a$-AVJa|Ln!!3}d^D$+NQqLeSqF!b zvaVU5OurVX#OM>KYoc@51QRKlOS<=6FXb%&&o*7z! zX(2n&ESxwH;J1f{0Nu0-0yyUk1e$_OTMp=FP#_>tLlewofm4Aa9_`o-{Kh(t_k}Y6 zUbFAG6v?Jg0Ro&UfQ51kAmT~~>8(5Q53~g=qQ^!ke5A}5+lG5MXA5X=q7vt7o~hK8 ztyIbqh*ipW0L9XhN^6oz&EKofE2bQP?dl8JW-jL+1>G`Yf@F{<3`=GhYNeX9-k44H z%DCP{IkQbQXc|uJDb-@*$3L@%khZm49IH=G$DedF7uJPR%wjyG!kj+fC!Tw01{!qO zav<8%t|7ntx9AmkDL$jG%VXqs*>VG4sLuAmB<67Q$;baTrEoB8ki++F*8e=d~ z3ivpx&gihUhaZmo+5dsC$6%PMC=Ld>Ki?1dhII&ewqR*&Y>+*g;XBp}Dz7&+pe(cD z9(l{Wq6V=(Gv{JXJlNNS=#J{hIE5jjPhW!?SHeL+xdTv5*7rP5%gfx12>(MxVJkVsSosuvjnQ8KNa0!DsRy4=7F6{9R z%9gGG9BisdIwaM~?A&Bv?W@B=J8^YFRZ>n>$|#WnKmmfn&0)ZyZY^1{oTRmD&XEMY z60%xOBFIWJXPULZBo;!&ZXrn=Beo@>8=tt3V=YVKAcmT`SEr(tK;Ozmr}1yheH(xI z-|vH@XD7hRoOa}Sw)hm)N@iG7Pb)j=bLv^xY=ma3Pua@q6UUd6)hCv^lhr5QxrCc4fD%X%AEYZyPs4xgWzq%rLTVl!4pYeB zisYzTnBqBIn1VV%u@<3l#%K`=;~}!%M*;9^-{IC#IAaP1b&k z;}h#Y%f2e-2gu?CjGxeKVYD7JTtgU6>&Y6f*BYI)gJBVl{8;itJK8atGTJcZ`D5A2 zSG<{RQTELJENk51J6dC6F0It8X{rq%0IQEq5Yz4tH_#fLIzu1C4Ei`=8C)+hgfGu5 zYpxMt*R62}q;m}xGj9-Nab6rZZ1x6*~2ION)bvSn&7(vO`divexO zY&bv27it|lW?m%hILVb$uG~Snr0TTLJUjl3y>TR3Dg=rnx*@^@NY$VuXPvfhL(b}e z9j!Lm$6+|JcK{XKAIHn$b~eycF$m+ph))}K;oIi4sVH7E_^{2`IPhX|& zZQ4>GSz1pI>0TlJl~^Rl1{0N-ezA})R|-W2K})?J&ShzYGwv{vL5CSAif@|I8`!*- z%yVf4C=6;;(%3w%Uk&*DRw^jOqEN{sAM!M=d91_YHtO~a4os#>(k{fmZc-ygP-^&1 zZoKA+`@pE=22zo&CtIFzOS5AZylbN8pXt0tlL##k4Z3oIv0y5eN{vCU2;H2$(!k&a53Ouw{pJGl;Z}U=&JN{<~{T_A&`g;RH3flNQ)s*fXc6Z~X1MzxnO? zFBE#uoc`N~+pa*@W^acGSjT7aM{BVRAh={Kw~Gk2_p?oznHSxT*KVk9(sBH&AaG z?*H%|Cmb$Eqvg2cw!eJsv1GAtVjrR=DOzf3>fdhs=r@m6MpVy3| zZ}|}TU`%ieTZEJVm3*ELiakWNI1mRxmwkor@F1Fv37nxmzc+F? z5Fsv_7-FplD~2INy{E+Nq0#jA1kvli;%QBieHfYzU;*H{TMn9Z(2xb7hVYi9s2gd~ zl@7DUS;$i>%yDbkWu2W#ErynW8Os+7X*7i7tkEomU85O8k^UW$$*$AGvzn5>)Lz$# zmPM?TG^NwmQe=`iyNqeH%#hg`+vQv-Jd(wg9G@J^=P6#Z5ZjBTyX=x?@or8QcN`TkDIx_29j2GD*|tKc6N*TJvq_0o7-eK2M#50afmPe9ASKL65BaG zh2X}(56sYbre-oSdn8QtL3B`qNwWvI2oN26no(nu&Lkj8%)syHq(E=>f?j%W!-?w_ zIKTvY_8i|R8n=xp(wZE)?>y}!QTVWmn5&e9AY9ETIP?uPlYeog{n<5JoA|dkI&mS&Fk0RuX{;2&f^T(FSZzU-EH#RC}nt7|5g;$Pj8&Z%ycO zf~Dr(%|hg?4oKf{xeDL)D_Xx>_(Q#`r=*V6Azs-mW_vGf)0k)(blJCPF(oUz$NtD` z%FL9VspWTHQzi*p-R{BnuW1TtBNr$xU>4B}TkO2j_0jop$Uz_Fvato>+4e-$0x=aO zB0FGk;?Mr*K4E2+U6CxJ+K4^v7rs9mm!d;T7()NQLg#aI!`q=S+5y$ZICz;DXJVE> zY+bS*g+xrp#P*OS0tL%1@d^iKR{0Veg7HO6ME(U##SB-lkdaF&5Jz@r5e~rJ&2oME zK`(U#GB@B(yS1_`(m>be+k#re@!a}-))tZ!WA;N*6`ssf!jpMQcrs53PZsfM^8_5L zvWUbgjW@fJW@UpXo7V)x#dtCR?P~S_CogFsbL86HY?w(JmTDgR0vj4mL9mzB7klZT zks~J;2V$ENy|!z;XlnVx&%>HU0R5nwFb#iqT?5O)~ib3@P35-!5aZMK`!HJyJz9BWq&3v?P4hZmpx zNNl&fXl5noArl*RY7%S!mBi(tApWmKM6-adke6<_WNe-R8p9uyz?6^*fFlXZ^_j7T z#IUW2^7!F<-fbrhRoYNuikT*ePs7-qmC389g}%&)WL{P1-6tem#-(SWIwK0G&a2GRsikxTr?mv z+ZPBs<~~`VP&~}m2ShhYQnf1Ykai(Dh%1)nee5Uqu{a!O3+9xOEx1r%;dW=QHKw1f z+ovmB_#xzXA%p3dT#7V^(@d=MtpA zA=#K*ONb{~;3T^!XjZ!@Wb1C>l26dgUIcHEnOM(TQhGq6k;5<-QP1W@ENg zY7eI#<>}mNPx8aP(4Ojfy2PGjyq~A_3AT%;dpZEy_H-E7V>oAIX>4fVL*7O=bdISo z1(k7hL_Bb+$sVz~6`5jJbfH=F42`T%5pb+e09!BYRt?vSF3&~9lXOgI5h{L^ zJm3D)-?!I0t%vHh>;DR#T>p>f$@O2mmCi%ECo2>d)o`O3Fw4csY*f?2ck(!QaO783 zmRo-Bad52*BG1tMt=%i57ZkG28X)M|uXZI97 zXl^`*uSaT55%Vg=( zYcWvVQjA(l4=t&$4hhELl=8|a?t_h2qlZSNmz!sTLrb5Z0iOF~4+A{LpnzxA2zUle zz;m^4HSqKa$4gX~_M_nXL12fjp8I~d`(V<3aFoHWKE^TDc-Ve4x_&geel)s%=#IIn zL8$5nJ>|Q+@on#dP&rB_muI7T!k|97@NCwx>Zd4j)jmiTvy>YVg5JV-nqA@6u zPjF6;SIgvZQ&in)`iPN>Ypy(QhvLc7bB&O%_RCbKu^{01l4@t1lng}6nI(@aYPibG2y zs)Jj&aN3U3{efUt^Sl^MF~SugGaMLmEqUZuy7v!V-0ihfhivCrK9O7CL~=_Db6d=h zCApOu<3*nJTerSQUfchtoq=Pf#G|Kb=bmi?)Y^ummQ@?hNDC&WhxLt~PN^~ErIQvo z>ZMiX3h@m{58UDH2e0P?f7tlE8phWCf{gEnX{0*LdT>Z&-5i_cN9cwD|lV3WGxYltT2KPzDJG5kg!;Z38?@O~E7J z&8R81xL}(uXLN{j8w?lKIs^jU6@x_wgAt=C7A&=p?Qg6dhrLm4GfE!(OHhNBN4@5{ zfRRl9gTV@cXtX>{PyfBH^TtcXW#b;uYm>}xC=mtPY^eXDdYkduoRG`1A%ZRkWcoFk z6ntmwdAdK%%;UYV&$lWLd396`q8H>@|4S=y%Fit00!_}Zk0On=H1~g&+ zT%cQ+fN)Stce1Pikg>MwWyo;`9g6L9}KwQ;)Vv>%|}WLj7R;;3rSsNcum%o9FDtF}p7O zoj)rK#@{LE{kI?H@m&j(1a{KA^FZAO-v9YKc;A@3W+%>LU#=6aiFV?z{qOs{cxC*) z|0LjY=cj&6_;+E`+c-WB?RxPipQ;;-bxW!POq27#jT0Nqq>JzQ8M#-)H~pO8T|xX8 zza;!{kQ6Qy=)6#>75*>lOit`On^jD|CSEQnhrXj1sBgG!zj=n;;qmUu)XhWy~c4It>4!~+5YWI>lD^)-} zHlnaL+q)~mVd}VI;x*o^4meID)}}>|gIHTA)&{c>hV&nj2RR1mRkOBGtj(@W4Vy!; zHf>IYwMjnkoU%4%N@BQ(vB61}M?$gVTuf5Cb=z^S3=<^bTr7^mxwvoP})JVmp|0B*Y158 z9vMxdmVB~1u9n?#kXtqK0__Z&yZa5h&35A6gSx>}cHqyV%)}jGU7R zjRCn%bvQDRX-KrHt#G)PXR1?9mXq9nl$f;%j?d&Ko8T^>hTeF)wZR({AShLFn=vf5A~!D2fhpi@H}LU9KgQeSno6tA@AyymvO~3 zkgPFH)JTJaqK;_(HSlv{2&}#Zy%iON)k8^6_}*_>O3d$RR$=LL4I$(M`p_S+n$YXO z5-UuI08p6Trd43KNu-s0Y31xmkr=Y-8E**{{Izrhz>v5;6~Yw6{9*6R80rz-lM*$E zTgRvyvW-P6x54L}b*l3q7W;QeoJw2H2Wl!3)|)#hAn#=&Gi-s(lxYv&q}v3V(I!x~ zO~^+OYS{}_8=V3vK*v!vZLM@y!F;N$nc_y%nb+FbA7^_8s%)YyBnEPPmq2_{K#^s4 z;f?;xUU%D}LHC*i`sC4X8iaPS?Va*6_Yx3z90HFGCUyykbQ^aG2%{oV7Q0J80%BFW z#w$D8t#UHPP($@4AcfBaLAG*NQU;@Qxk&?0+YK%=4y*YBcp2?=WTrsugTQJTrdo2! zr&W0vqt=<-(){d|V@MXQM{ARZTaRYA@l(Uq-9CyaXS?$mWv#7$*V7i|fI6UgLBUyB z-cxI(MQsTfI`m3+&`UTC-RLajoC%D}o3;KjlNAK0lKj2G%4Bl{uHPUscfE~>>e6J4-! zIAQmj>f8%m(qXGXw;C1VCu(xlv(cSB-2unu?X z9xD_M@jLzObrB7*cWrul-i^X~`k1{=U=ojRX~|tj3b@mA{<>>hc=^g}Tey$Tqc9!2 z?1K`&*MXeOWgjHXO5JqrwW6QvuI1XYLg5uR`*{yD={~RU^M>NYL}_?*BAO^i#s2)sJy2%wtc9)x34%fRO*kmURoNT9Gd9qnH=u5ZH@L6 zhbBvBl?O)pOC#ms;&6F#WWw`mJ@@Am)bT6utLIn!zJYinzj^$c_@OX+NANq6-vWNs zd5UoBH#t609^O_Q89bBU3noir`+#!Gw&GB6q^~qiAI3`K<4H6g8amS@(1p?R z$av{Ws<1+R<&lZ8V&BA;fsyUyN<_uSihBo3`^JZhV-v&UJGKp#`v%E5GEU}!@<^I> zXK7%^&WVYE;Zonu;=st3f&TFl7#Q0=InqB4tPjwm9HG#1wOSk~jYZ@8#=&+}8XGH* z^+aCDZ}N^NPnw+8oo2X+^o68vrgU*=;F^Jv9gzWlX=(RlX?%hzyt~M=m^`Y7sFzQE zZGGkbQrl>;Z?L$dG~PBo(cd;c*4I|LdbB(?G2S{R7$2c*GvOQgsg5-M-Z^pQtxo^j zIq|2GxJKk6P&PRRrbqfG%3G4*5Y|cP8!8pYcsD#SGCA5`oG7_xdoet)V~jT=rM+7O zIrtnH8J{SQObqZgc{5bpRvIc@UFw^hC~cnHMvXg)<6DLXh6g4tEsYNC+cYv#f^^3x z`=Eqz!*X$GZ*kvvdGH))eBU{HN+S~!`$kI;{n)@ZY8j8yC!^w&N~mRIV%$51eu-u? z{4@@W_z4fi=<(V^nLXkd7Bs5DIGqG%%;D^1XMrVNwAnvW(&z<8-|qSQaMZx%f- zp`Nxeh`FzAeQDd8;`S0jX?ks^aI=k>-BM#Igv*|kBls!VgY zr|00QIa3YeK2hrF*{opZt+ly%vcF7|vn$q+(zkO)_RN0&NA|i>j0a;HJw0iMPM_UC z((px48?$U9oMaBT=Qv_L7)h5x#AD;7wBFg(CWtcpCR2URz*ImK?*^wv-gC$23fRVW z*iPEW9M~>$Gwxv6HqJ~u5}_sWVa);kmhwB6-*Nng2gb+6lW1fJF|qa3nkM7r7Z8f? zPmTb&f$^mIZXus|T>s?g&_ExA zk=Dw)kB}zWF}K}4Mfm2(M6{K(hmt(5y?E+%NWY)fRY|{L$bSGPGFt==jKCNM`lD^d z@lxknFrX~zH)a-Ypi$_mU<|q%^XueS9T#`o@%`FeulUf8PmTR_ODXb6t6ePD+Zeq*p-5Ydn9fg_0J*&LN%Nf`^^)8mO& zL@4!d$UBO-mS<7XFbt2;ort!TA|u_ZJU8)t~Zt~ zjlve`KI1mt2dJxqvfD=1@7y^)ULGzDP3+lu&5k{jy9f8~8XVnwb$QqJ$$=e16MNy* z`>wfqXxC(4Y5Tz7gZXCsxHD=J^DE)sii$O8+9yCs)Pq<#`1^ zo0)q{(T;L-;9Y+{>bGc#mR}C<*|Wl7=a7w+^iNy&>vFSSkX2F z{Puyq0i=qzlRVN^MhT@Irg7+}IJCv-QMV;&W2L@<(E)~}{OsaLQs zB^39XPpCd*llT+BD2?^|grd8z5K4p44Zn(~qH{+{3g`sglQifrjZW;`TOJ!Mixs9i zZHkw-QdS!C&4hwsDhXeg)cIyY@rAi;e~zfxSsdSKbL6Mw7yhc`HJ}LZrLjL&GZ7PW z>~Dffiv7h=!tu7!$mDQItWcUtJoTsW-WOD{-h&K}h4oF|Re;vcPeZN0s{G@V+e~+# z&8oflF;#qXV^z*WGj(cf<);A@!rJ($B~5Y-rrxdQw}#(Zet)dGr#AE_QTSY|dsjF7 zUh1ARI4a8CX0t!g2M$*CDjG$~$SZ~Z5DoEk^;!7SZyi4goi2W2)MIez)U;tLBkcRp zkH<BQU)f*+lqaClfxoE7zp)WPWV6gX>8`IF-`NF z&{{^Q^h2o}?W9T2rg>6Tr=oJ8&&()0o_AT2zeFe+tHx9JocMa;&r-Q?>Wb8hHLdM7 zA^XjUG6dWO3{nb4)DFKi9@1HjRdxLMs(6NU36nJaYs4jd()c5D;{QTi3@c6l_MG&` z=cKbfFsr^F%}M|1ob+GJNq>4y`t+RiY%sh2Jn?GyxH)82`?^51I=z|tH0Ei4P9k27 z55=XTrs=J7(iN95P19EqmpPfn*ATC+KPKK-m3}sHDS2sr#pNzZ=9mF>dkCsvVnX)~RDRku#l&_t|J*B8!exz>H zve8L&ynSebJV!%Cw7$Nb%#oFjWuxDx+UrnhWXHtL@!lhvyvwTEdIxP)_x*0-)v$h) zxca&Y%|foKXz$L_NQ98@n;b&lLMbUvP8blA+qdI+am~#1zzTWVvX-(P;&hVCBX zayyB4ox<-qpMxd5NBt%Py%k5gIVkxelS=$?2XLmYw}bn$&2?lP{fhi)dCgyqnfOU6 z&rao8JTyM=9^|2quli{{JboVZY?&g$ke@T_S9tXcoJJwySjscF1)$l6&kEj4m%Dsq zd~#GiB$&6^sgaD}o~V~}X*icBHea=?Yb$9&?8W5>-^|VmqraB-8swSx&L<}!a2shN z?z4&`vKK~+=tuZh5`#Q~etM#hkVl&A7YL6(~nJ|Rng>gQ?vWF6^u z7@yfV{u@jT=QLY-RFl_2UQJx#qdG1aF1zrQvoGz5u8>pI&5mkw2e6~fPOt3g8Apr8 z38i<#Wz7&wtMO=Gd6K7*2xWFA>lii=(@QR~Qn9}^y08p|OF`Y&6P;Va4N27ODd&wH zkG7AMhb@CyN#ka7?JW%rF#zf46-|eyY5A{Oqs@d-c{}rFjCK-fZ4cXvxYGoadeT3j z`6Q!DHu$y@Mh_FONCP9QN>^j!kQ8D3;R17RFgYk3RISma@|lu#@5;2BsuHVmpFGMa zy;KMv84wJBQr)B0=(2J&I#$LRIAMjYhZAGvNvRIZc}<=X_)AIM9*tzNs8eHO*oEaW zt9(G-TU>h>5`CrS=*m*G6M$s$moRhbzHko%GZo1EgNmJnCru8_mC7z8`H4+R zOJ(^6$|I!+FJqLnV#<5#R_H_m<}fsc<8a0gJ9>=s!wy0}VsegsPL#{hkj7cy%aOXp zW+XkG6>%C>sh>&nS?bYzI9z##uxyqPJjCj#eo<9Veqoa-td?izp3Zo>NjZHS4db)J#bd5(Hv94K0i_Q@>kk8rs3l`7*Lp*5{LJn+=% zErPjL)qVOL__xf7zbuJgik%FdkFr)Gas@LZI9NRITIv&jIt;BO4v?|&x05d-pAPi0+`Q@ui%bk&wiy@}7Qd&?XW!g5xJ<(B%odTQ+N6b^nrG4VU z#o-dLGqWmu1geD5_8|K;smT~it>_e96@Uc7!&qHIV$oyt2Y5C8~0;XkUZ&`2Ie%Hmx@9?g>-gp$23 zuSA*H2t-ge;Tc^^y6}W z@Uj?gMc|VW$$sk3eliMU6DoDSYbkY75<{`pCQ#B;FlO{N41}hzbaU?`v zshS>o$>+xH%zZCr)T+~B($bRE@6Y6Yy0%tga9pihG=Rh7J0PcVy=8XEO{2FLmnSx8 zSP%pK2_i0^*xsEyo>#g$c{&?}ZU&zzHfg82-Lr^0^d|WoG85F%WP+?q3|GYGls}tz zHNKRiy8d%W-@J2Z^UkqL%6l)G9Ad4ES)Ndi)4*-6{^zky@AHpyo}e6|_)3Z^>Mf6z zN9DO;RA%?#1oBzZNPkBXu0D92tcF>zZJ?ZSjFgbwTuUdL_bOm$B+pw3MQ_z(Is?xL ztAi#D@lu$YHxqRl;z)UmR8821Qz>WS{Uz)WElW(!XtHT7w0A%4ie4Wk)SUl868@4< zhI_co;jE5Od@5O*l&CBTU8#ziz?BTJ$ev{jQ;ZxBEK^?ViL>Sl@i*{ZI>4F52{dJ^ z(z}~?@-8NoIkIq!&9VtE(j6WqpZLsGgc`?RGQL0K_Y;0k@q2>b5BX&x_003m-@NH! z>^2E#)SuyERNOAPBt2|MCYz0uX%*y z?_1T~x@p@kX@ue_lBeW?mAO^X6!(+pJlI`M=$r6uO_MaK(`S5?+mLK&v^3sVgprSn zzEBTZ&q>yCo%&blpdc{;OuGiJ>*Y*tv{tiSO6;rvxy5Mf#MopB_t4hu#i4OMNWF`; zN_KC3rdHJZN*&8rE@u~p6d*Y$)vLB1)wXGaMjN#~6@{}=cZlRhU^ge4i!G4|eiaIhbw*203}(#7|DcN$Gdblp_pzKP+Ymh#7rU+#3#w64_Io5oK` z%O-v^6QJY!hPT0aVDa0x%iGiHd0UfuCJ04WFDIm^cTOtUN>^9pow-ztQRk{{1M-q2 zkhFTYQ|4sKq@qfW)`<9*crV>yZr!Oqcd%2@$vpX5%sp$~TJs(}=cHM+{@^WN;b`+- zU=@8ew>+3J=9N0BDG(5U{Y<9j)NyaP5Y5BJAa5+cHx1 zbMng8wr5vEYuik1e@sn(OqrP$S8aKAA)=f%wPw+xD3_UN$K1X&3``(Onbg2r+Qx*#wzNV)%(RuT>oZhV|MS?uKRD< z|C#P4;MdRT^-OU`E zv@4zYAv&k^h|T;m$?r14%lTcwFWs%TX;gl(x#uFHt(ah?WUHR@-ABphGx;{bN#e0} zn;EIE+~IbM-9#w;E#2pxZrZofSWtJ7ZfmTGu9>(+uviAR?=!cJbtBqYE)TjDz@qC| zvTVgxoBl6R$J#@*VI`H1cJiy8&-az&la89kPiOG7?>CK~MqC>}uH+}*m~iz%e!^Qy zA1~rrIF-jq=~wZ43BT$*FD3r6HB`3Q+yeoY=Ak# zv1L!GkG|ljV zvVC|0IJT~FW7khx5&3@nnZKFUj}q@}!-RAB%}U!&+6ESMzpztwzhijUF-M-#y5v(w4+0_XPdk?tT&mPlC@{t1GbE= zxXZ{J@2@Bufv2w%YA(x8y`M4A->-Pb6sm-d_H}Gyg3Z<|qiCH=Zzc@MH=;uPsZ5z) zTF+J%TGHo>$ji`L-gGXE65q{F;}z-ePwH0IQT?ApFOOcnqHe{?x~nXIO3UNqdud8Q zm93P}Pa9~5hVG;d(U@pO>muz}x3iVJeRcbq_O4FYdY6-t?6E~ zer@~Oj$=yi?`-ev=v>{o zrgLrQy3WqduFmex^R9i2X}`b60BD|SJW`xZ@I1+H z55GgAF7f9)+Uan2Jq%4eERDaC_|bwSPS zg8%ObB|H58%YR&*@)I^2tqGp-FP!t2(H|RlRrCi(UDev!`ciXhB$#DF&zk(g=~mDC zUbkBpIY1~JT$s#T+m9ZddKyl;{%D0BPIRshAymr~l#SLqUt%kvXlXT}aG%yOvzj1R zzhgS=T0bQcOO&5vTua2!3b)DaM1v@Wr=Pl>PhGDjlpK5$q4b%w?t|zQmY4b+?<23~ zcn(@Wmhhmw$!bR1C?~%rv~L#TB;S*iJAqLC6#3ZF_+p+r`FVbr&DPWexte^gc7EN` z!lL@c4NZ;p^D<505l0+Zd$fN{W}&|*T%23tFAbI*9fc={s|u}td)N`I_TLk{H+Wy> z{rUe4ex3bI@Y`^@_JddNd(CVAy#2}-zUJ09EdAHUc^6#x>!(}W&Und7w|wWO*S_wJ zZ+h=XKl!Q8eg2F8@Xg1+H|=HSA8}&G+OD2cPTP3?OK*A|iT8Z+Q=k8buRQSh_qkl9J$&Igg&0X*Q^k+Wzg$KUzFX!Foc6w@f_cy=QxNM}n^w=#gzwSdHzW!799(~Ml z%Ql>Q@unBP_$4p9?)ty_+(Tb~^uSMkJ~saPiOIJ-zqRc>AO6^9zVN`q-}c%U{E|$~{QVzjoO*wDS?&HM;i9~sY0Iq5LF(z@C(ALhb< znNgp~hJ_lx@u=*@xh1(Pb3x59^_OJM3Ri`GW`51Q`ku_OCv1s^GrLZhx<7lvN5aK5 zH~c1iQSRv4g|!Rn7u4^nsjFFB^P=3z*$s6o`Qn8ib`(}-7S|NQsSl9U)^Sldbyxn> za9((7t~-Bn_J-;C3-fLBSB1^6VH5sef8r zpPib{PJOHXKi&~`)$V`Ef~k+^r~WZpxA2s(uBJP`AzxoJQ8+Gqappy}Q#USLT6c8q zg_)^W*S!C(`eQO3cV_l~eJzpa9)GQrEYXC$mViE zK3^NuWeY)Lrpccl9FaY8{sRA~;Fw@h!_w@r`DOm`{;tem@Zs>I!M(u)!B>Na>c3w5 zPr<{%H~h!4-wu9|`C;%>bRhGq;6KA(`}NCDIsM{IuYcz|-}NW2dGlNT{C|G(l^?Ci z)pnkC`V~KY@T-{x3p=~6xbphyIs2n#x` zjywP2uJ_#i!B5`%*_uNAQOEY2an1|g{hlv<`HtM8#VseCe#Q@;{PFbXKA(x6cf#{m ztm*DK@B9ld*^FBg+S|&pp~3O1Uw-|o?|R>dKXTuLANue}`O|NHS<9bf!_2C1d+4{d zPTg>9*fDQu=J?vD6lSMhv+cO^@^w@1ep$;og}R!C zBYSGZX3Nq3+o5+>KpfW4^9teXeeQ=c3#x z;nFMod8-?4eB1WP!qjJ9ePLh2P3=ubzy5tUoO|adZdji?Df5z==htnhTai8ThL2oT zx*)SYH@{aT@z!7EZ~CW`YXAHP``66#kF9CU zKYG-LYcv(EtX(v9^Zs+gSDZQTsGBZXR#P+e^^>!wH~XWj!o`_jfA6ySJz0PMgD2ha z{i$D`cwwe46Wloe>TaqzEDuk3`4(-!fsJbm zrfkP*{bnz$+jRbl^6&ONOpb1uD4VUY1?^(CPINV8K5|BrZ8pDz=M`0P*-TfLVad53qzG10R6XzQ{cue{^rliH(|<##`}GPrx|s^fmWwblD=)cMZot)0K| zzuoEAHFq7~@a?YmHx}2oExdDm`_kfhKRxcw3wzfVFFCO5&KGPdH(&aWd+)r|d!V?v z^wm2zd*5ij%zNzHmw)Ix#VenDy!k~B{_xHhMcz{{I^bXbVsDg#Osh~>xHQD~&nvVa z)#R7pc0u50p64I8Vg`dRj1Gkj}4CFzg}+2$ooN|)`z$IlR=BWC(H!3eogoy3LTk0@jK_8NI&bs4(iPLr-jG!{h8Cb z9&T+d)63ry3Y8$me}^CDk21{q{?UG8F3kRYUY$8cSY@n~&kvpewi?1E!R2|q*(H3C zS_&D|tXJy?KWF5j2>%VVm+|=kSB;HSO%S$%a1<$WUwSm4P|GznGyu+_HZ|pYjPBZO zR!@G-JP(2A`DbKaz6)hh1EROrUjP6A literal 0 HcmV?d00001 diff --git a/packages/check/tests/cosmwasm_check_tests.rs b/packages/check/tests/cosmwasm_check_tests.rs new file mode 100644 index 0000000000..6533086bf6 --- /dev/null +++ b/packages/check/tests/cosmwasm_check_tests.rs @@ -0,0 +1,59 @@ +use assert_cmd::prelude::*; +use predicates::prelude::*; +use std::process::Command; + +#[test] +fn valid_contract_check() -> Result<(), Box> { + let mut cmd = Command::cargo_bin("cosmwasm-check")?; + + cmd.arg("testdata/hackatom.wasm"); + cmd.assert() + .success() + .stdout(predicate::str::contains("pass")); + + Ok(()) +} + +#[test] +fn invalid_contract_check() -> Result<(), Box> { + let mut cmd = Command::cargo_bin("cosmwasm-check")?; + + cmd.arg("testdata/corrupted.wasm"); + cmd.assert() + .failure() + .stdout(predicate::str::contains("Deserialization error")); + + Ok(()) +} + +#[test] +fn several_contracts_check() -> Result<(), Box> { + let mut cmd = Command::cargo_bin("cosmwasm-check")?; + + cmd.arg("testdata/hackatom.wasm") + .arg("testdata/corrupted.wasm"); + cmd.assert() + .failure() + .stdout(predicate::str::contains("failure")) + .stdout(predicate::str::contains("Deserialization error")) + .stdout(predicate::str::contains("Passes: 1, failures: 1")); + + Ok(()) +} + +#[test] +fn custom_capabilities_check() -> Result<(), Box> { + let mut cmd = Command::cargo_bin("cosmwasm-check")?; + + cmd.arg("--available-capabilities") + .arg("iterator,osmosis,friendship") + .arg("testdata/hackatom.wasm"); + cmd.assert() + .success() + .stdout(predicate::str::contains("Available capabilities:")) + .stdout(predicate::str::contains("iterator")) + .stdout(predicate::str::contains("osmosis")) + .stdout(predicate::str::contains("friendship")); + + Ok(()) +} diff --git a/packages/crypto/Cargo.toml b/packages/crypto/Cargo.toml index 594696fe1b..7d79ed54ff 100644 --- a/packages/crypto/Cargo.toml +++ b/packages/crypto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-crypto" -version = "1.2.4" +version = "1.2.5" authors = ["Mauro Lacy "] edition = "2021" description = "Crypto bindings for cosmwasm contracts" diff --git a/packages/derive/Cargo.toml b/packages/derive/Cargo.toml index 4993cb1acf..b0909ec357 100644 --- a/packages/derive/Cargo.toml +++ b/packages/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-derive" -version = "1.2.4" +version = "1.2.5" authors = ["Simon Warta "] edition = "2021" description = "A package for auto-generated code used for CosmWasm contract development. This is shipped as part of cosmwasm-std. Do not use directly." diff --git a/packages/schema-derive/Cargo.toml b/packages/schema-derive/Cargo.toml index 94bb8df670..e76ea5c103 100644 --- a/packages/schema-derive/Cargo.toml +++ b/packages/schema-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-schema-derive" -version = "1.2.4" +version = "1.2.5" authors = ["Tomasz Kurcz "] edition = "2021" description = "Derive macros for cosmwasm-schema" @@ -9,7 +9,7 @@ license = "Apache-2.0" [dependencies] proc-macro2 = "1" -quote = "1" +quote = "^1.0.25" syn = { version = "1", features = ["full", "printing", "extra-traits"] } [lib] diff --git a/packages/schema/Cargo.toml b/packages/schema/Cargo.toml index 82a8203265..91ced79a03 100644 --- a/packages/schema/Cargo.toml +++ b/packages/schema/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-schema" -version = "1.2.4" +version = "1.2.5" authors = ["Simon Warta ", "Ethan Frey "] edition = "2021" description = "A dev-dependency for CosmWasm contracts to generate JSON Schema files." @@ -8,7 +8,7 @@ repository = "https://github.com/CosmWasm/cosmwasm/tree/main/packages/schema" license = "Apache-2.0" [dependencies] -cosmwasm-schema-derive = { version = "=1.2.4", path = "../schema-derive" } +cosmwasm-schema-derive = { version = "=1.2.5", path = "../schema-derive" } schemars = "0.8.3" serde = "1.0" serde_json = "1.0.40" @@ -16,6 +16,6 @@ thiserror = "1.0.26" [dev-dependencies] anyhow = "1.0.57" -cosmwasm-std = { version = "1.2.4", path = "../std" } +cosmwasm-std = { version = "1.2.5", path = "../std" } semver = "1" tempfile = "3" diff --git a/packages/std/Cargo.toml b/packages/std/Cargo.toml index 036b8e8809..2629690783 100644 --- a/packages/std/Cargo.toml +++ b/packages/std/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-std" -version = "1.2.4" +version = "1.2.5" authors = ["Ethan Frey "] edition = "2021" description = "Standard library for Wasm based smart contracts on Cosmos blockchains" @@ -42,7 +42,7 @@ cosmwasm_1_2 = ["cosmwasm_1_1"] [dependencies] base64 = "0.13.0" -cosmwasm-derive = { path = "../derive", version = "1.2.4" } +cosmwasm-derive = { path = "../derive", version = "1.2.5" } derivative = "2" forward_ref = "1" hex = "0.4" @@ -54,7 +54,7 @@ thiserror = "1.0.26" uint = "0.9.3" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -cosmwasm-crypto = { path = "../crypto", version = "1.2.4" } +cosmwasm-crypto = { path = "../crypto", version = "1.2.5" } [dev-dependencies] cosmwasm-schema = { path = "../schema" } diff --git a/packages/storage/Cargo.toml b/packages/storage/Cargo.toml index ce9ba8d8cc..78ba760f7b 100644 --- a/packages/storage/Cargo.toml +++ b/packages/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-storage" -version = "1.2.4" +version = "1.2.5" authors = ["Ethan Frey "] edition = "2021" description = "CosmWasm library with useful helpers for Storage patterns" @@ -16,5 +16,5 @@ iterator = ["cosmwasm-std/iterator"] [dependencies] # Uses the path when built locally; uses the given version from crates.io when published -cosmwasm-std = { path = "../std", version = "1.2.4", default-features = false } +cosmwasm-std = { path = "../std", version = "1.2.5", default-features = false } serde = { version = "1.0.103", default-features = false, features = ["derive", "alloc"] } diff --git a/packages/vm/Cargo.toml b/packages/vm/Cargo.toml index 331a04eb0d..5d334f1982 100644 --- a/packages/vm/Cargo.toml +++ b/packages/vm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmwasm-vm" -version = "1.2.4" +version = "1.2.5" authors = ["Ethan Frey "] edition = "2021" description = "VM bindings to run cosmwams contracts" @@ -38,8 +38,8 @@ bench = false clru = "0.4.0" crc32fast = "1.3.2" # Uses the path when built locally; uses the given version from crates.io when published -cosmwasm-std = { path = "../std", version = "1.2.4", default-features = false } -cosmwasm-crypto = { path = "../crypto", version = "1.2.4" } +cosmwasm-std = { path = "../std", version = "1.2.5", default-features = false } +cosmwasm-crypto = { path = "../crypto", version = "1.2.5" } derivative = "2" hex = "0.4" parity-wasm = "0.45"