From 1723be75f89f57ce215e4b26f6975de9fa2ee57f Mon Sep 17 00:00:00 2001 From: Peter Huene Date: Fri, 12 Apr 2024 15:41:35 -0700 Subject: [PATCH 1/4] Synchronize artifact componentization. (#270) * Bumping dependencies to latest. This commit bumps dependencies to the latest versions. Closes #262. * Synchronize artifact componentization. This commit makes componentization of build artifacts acquire the lock file in an effort to prevent concurrent cargo-component processes that are building the same workspace from interfering with one another. Additionally, this commit changes the writing of the final build artifact so that it writes to a temp file and then atomically persists the temp file at the final path. Fixes #268. * Bump preview1 adapters. This commit bumps the preview1 adapters to 19.0.2. It also updates CI to use Wasmtime 19.0.2. * Remove call to `sync_all`. --- .github/workflows/main.yml | 2 +- Cargo.lock | 671 +++++++++--------- Cargo.toml | 25 +- .../wasi_snapshot_preview1.command.wasm | Bin 0 -> 81233 bytes .../wasi_snapshot_preview1.proxy.wasm | Bin 28355 -> 28527 bytes .../wasi_snapshot_preview1.reactor.wasm | Bin 0 -> 81039 bytes .../wasi_snapshot_preview1.command.wasm | Bin 96815 -> 0 bytes .../wasi_snapshot_preview1.reactor.wasm | Bin 96667 -> 0 bytes build.rs | 2 +- crates/core/src/lock.rs | 4 +- crates/wit/tests/support/mod.rs | 7 +- src/commands/add.rs | 4 +- src/commands/new.rs | 4 +- src/config.rs | 4 +- src/lib.rs | 30 +- tests/support/mod.rs | 9 +- 16 files changed, 401 insertions(+), 361 deletions(-) create mode 100644 adapters/040ec92/wasi_snapshot_preview1.command.wasm rename adapters/{ab5a448 => 040ec92}/wasi_snapshot_preview1.proxy.wasm (62%) create mode 100644 adapters/040ec92/wasi_snapshot_preview1.reactor.wasm delete mode 100644 adapters/ab5a448/wasi_snapshot_preview1.command.wasm delete mode 100644 adapters/ab5a448/wasi_snapshot_preview1.reactor.wasm diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 22673d60..c19ca629 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,7 +37,7 @@ jobs: uses: bytecodealliance/actions/wasmtime/setup@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} - version: "v19.0.0" + version: "v19.0.2" - name: Run all tests run: cargo test --all diff --git a/Cargo.lock b/Cargo.lock index 68e11537..d0ce08fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,9 +31,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -112,9 +112,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" [[package]] name = "arrayvec" @@ -154,23 +154,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" dependencies = [ "concurrent-queue", - "event-listener 5.2.0", - "event-listener-strategy 0.5.0", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "5f98c37cf288e302c16ef6c8472aad1e034c6c84ce5ea7b8101c98eb4a802fee" dependencies = [ "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand 2.0.2", + "futures-lite 2.3.0", "slab", ] @@ -208,18 +208,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" dependencies = [ "async-lock 3.3.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "parking", - "polling 3.5.0", - "rustix 0.38.31", + "polling 3.6.0", + "rustix 0.38.32", "slab", "tracing", "windows-sys 0.52.0", @@ -258,19 +258,19 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.31", + "rustix 0.38.32", "windows-sys 0.48.0", ] [[package]] name = "async-recursion" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -279,13 +279,13 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" dependencies = [ - "async-io 2.3.1", + "async-io 2.3.2", "async-lock 2.8.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.31", + "rustix 0.38.32", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -299,13 +299,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -327,22 +327,22 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "axum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", "axum-macros", "bytes", "futures-util", - "http 1.0.0", + "http 1.1.0", "http-body 1.0.0", "http-body-util", "hyper 1.2.0", @@ -358,7 +358,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tower", "tower-layer", @@ -375,13 +375,13 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.0.0", + "http 1.1.0", "http-body 1.0.0", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", "tracing", @@ -393,17 +393,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -446,9 +446,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bitmaps" @@ -493,9 +493,9 @@ dependencies = [ "async-channel", "async-lock 3.3.0", "async-task", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "piper", "tracing", ] @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" @@ -525,9 +525,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "camino" @@ -550,8 +550,8 @@ dependencies = [ "cargo_metadata", "clap", "futures", - "heck", - "indexmap 2.2.5", + "heck 0.5.0", + "indexmap 2.2.6", "libc", "log", "p256", @@ -568,7 +568,7 @@ dependencies = [ "tempfile", "tokio", "tokio-util", - "toml_edit 0.22.6", + "toml_edit 0.22.9", "url", "warg-client", "warg-credentials", @@ -579,7 +579,7 @@ dependencies = [ "wasmparser 0.202.0", "wasmprinter 0.202.0", "wat", - "which 6.0.0", + "which", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -593,7 +593,7 @@ dependencies = [ "anyhow", "clap", "futures", - "indexmap 2.2.5", + "indexmap 2.2.6", "libc", "log", "owo-colors", @@ -601,7 +601,7 @@ dependencies = [ "semver", "serde 1.0.197", "tokio", - "toml_edit 0.22.6", + "toml_edit 0.22.9", "unicode-width", "url", "warg-client", @@ -615,21 +615,21 @@ dependencies = [ [[package]] name = "cargo-config2" -version = "0.1.19" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7fb69d74d76f8c254afd1c0e76aca40c305707b28aebe3c5a0fd2ee62aeeeb" +checksum = "88d9bdc858a15454c2d0a5138d8dcf4bcabc06fde679abdea8330393fbc0ef05" dependencies = [ "home", "serde 1.0.197", "serde_derive", - "toml_edit 0.22.6", + "toml_edit 0.22.9", ] [[package]] name = "cargo-platform" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde 1.0.197", ] @@ -650,9 +650,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.88" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" [[package]] name = "cfg-if" @@ -662,15 +662,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits 0.2.18", "serde 1.0.197", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -684,9 +684,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -694,26 +694,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -833,7 +833,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -844,14 +844,14 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468", @@ -986,9 +986,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -1011,7 +1011,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -1073,9 +1073,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" dependencies = [ "concurrent-queue", "parking", @@ -1094,11 +1094,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" dependencies = [ - "event-listener 5.2.0", + "event-listener 5.3.0", "pin-project-lite", ] @@ -1113,9 +1113,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" [[package]] name = "ff" @@ -1237,11 +1237,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-core", "futures-io", "parking", @@ -1256,7 +1256,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -1302,9 +1302,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", @@ -1330,17 +1330,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.11", - "indexmap 2.2.5", + "http 0.2.12", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -1349,17 +1349,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 1.0.0", - "indexmap 2.2.5", + "http 1.1.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -1387,6 +1387,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1437,9 +1443,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1448,9 +1454,9 @@ dependencies = [ [[package]] name = "http" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1464,7 +1470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.11", + "http 0.2.12", "pin-project-lite", ] @@ -1475,18 +1481,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", - "http 1.0.0", + "http 1.1.0", ] [[package]] name = "http-body-util" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "futures-util", - "http 1.0.0", + "futures-core", + "http 1.1.0", "http-body 1.0.0", "pin-project-lite", ] @@ -1525,14 +1531,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.11", + "h2 0.3.26", + "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -1548,8 +1554,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.2", - "http 1.0.0", + "h2 0.4.4", + "http 1.1.0", "http-body 1.0.0", "httparse", "httpdate", @@ -1580,7 +1586,7 @@ checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" dependencies = [ "bytes", "futures-util", - "http 1.0.0", + "http 1.1.0", "http-body 1.0.0", "hyper 1.2.0", "pin-project-lite", @@ -1660,9 +1666,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -1726,15 +1732,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1792,13 +1798,12 @@ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", - "redox_syscall", ] [[package]] @@ -1813,7 +1818,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", ] @@ -1865,7 +1870,7 @@ dependencies = [ "proc-macro2", "quote", "regex-syntax 0.6.29", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -1885,9 +1890,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memoffset" @@ -1900,9 +1905,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -1927,7 +1932,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -1968,9 +1973,9 @@ dependencies = [ [[package]] name = "multimap" -version = "0.8.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "native-tls" @@ -2165,7 +2170,7 @@ version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -2182,7 +2187,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -2193,9 +2198,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.101" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -2309,7 +2314,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" dependencies = [ - "heck", + "heck 0.4.1", "itertools 0.11.0", "prost", "prost-types", @@ -2352,34 +2357,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.2.5", + "indexmap 2.2.6", ] [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2394,7 +2399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", ] @@ -2432,14 +2437,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi 0.3.9", "pin-project-lite", - "rustix 0.38.31", + "rustix 0.38.32", "tracing", "windows-sys 0.52.0", ] @@ -2498,12 +2504,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -2527,18 +2533,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" dependencies = [ "bytes", "prost-derive", @@ -2546,13 +2552,13 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" +checksum = "80b776a1b2dc779f5ee0641f8ade0125bc1298dd41a9a0c16d8bd57b42d222b1" dependencies = [ "bytes", - "heck", - "itertools 0.11.0", + "heck 0.5.0", + "itertools 0.12.1", "log", "multimap", "once_cell", @@ -2561,22 +2567,21 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.52", + "syn 2.0.58", "tempfile", - "which 4.4.2", ] [[package]] name = "prost-derive" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -2594,9 +2599,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe" dependencies = [ "prost", ] @@ -2646,9 +2651,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2703,9 +2708,9 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -2714,25 +2719,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", "regex-automata", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -2743,23 +2748,23 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.11", + "h2 0.3.26", + "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", "hyper-tls", @@ -2775,7 +2780,7 @@ dependencies = [ "serde 1.0.197", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-native-tls", @@ -2848,11 +2853,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys 0.4.13", @@ -2870,9 +2875,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "ryu" @@ -2948,9 +2953,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.2" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2961,9 +2966,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" dependencies = [ "core-foundation-sys", "libc", @@ -3023,14 +3028,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ "itoa", "ryu", @@ -3039,9 +3044,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde 1.0.197", @@ -3049,13 +3054,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -3081,15 +3086,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.6.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" +checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.5", + "indexmap 2.2.6", "serde 1.0.197", "serde_derive", "serde_json", @@ -3099,23 +3104,23 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.6.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d" +checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] name = "serde_yaml" -version = "0.9.32" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "itoa", "ryu", "serde 1.0.197", @@ -3212,9 +3217,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -3269,9 +3274,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" @@ -3292,9 +3297,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.52" +version = "2.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" dependencies = [ "proc-macro2", "quote", @@ -3307,6 +3312,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "system-configuration" version = "0.5.1" @@ -3335,8 +3346,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "rustix 0.38.31", + "fastrand 2.0.2", + "rustix 0.38.32", "windows-sys 0.52.0", ] @@ -3357,22 +3368,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -3387,9 +3398,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -3408,9 +3419,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -3442,9 +3453,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -3467,7 +3478,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -3505,14 +3516,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde 1.0.197", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit 0.22.9", ] [[package]] @@ -3530,22 +3541,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.6" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "serde 1.0.197", "serde_spanned", "toml_datetime", - "winnow 0.6.5", + "winnow 0.6.6", ] [[package]] @@ -3570,10 +3581,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "bytes", "futures-util", - "http 1.0.0", + "http 1.1.0", "http-body 1.0.0", "http-body-util", "http-range-header", @@ -3621,7 +3632,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", ] [[package]] @@ -3677,7 +3688,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.0", + "memoffset 0.9.1", "tempfile", "winapi", ] @@ -3732,9 +3743,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "url" @@ -3812,7 +3823,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12bf1e22e1e396b98a2181219b06d1a49a3478c1b9d87a29cd9cd819d714e6c3" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "itertools 0.12.1", "serde 1.0.197", "serde_with", @@ -3834,7 +3845,7 @@ dependencies = [ "clap", "dirs", "futures-util", - "indexmap 2.2.5", + "indexmap 2.2.6", "itertools 0.12.1", "libc", "normpath", @@ -3872,7 +3883,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626224ba1a00965282b669d2611654fd6292a15396ed8c850ce91684678fe19f" dependencies = [ "anyhow", - "indexmap 2.2.5", + "indexmap 2.2.6", "keyring", "secrecy", "warg-client", @@ -3928,7 +3939,7 @@ dependencies = [ "anyhow", "base64", "hex", - "indexmap 2.2.5", + "indexmap 2.2.6", "pbjson-types", "prost", "prost-types", @@ -3953,14 +3964,14 @@ dependencies = [ "bytes", "clap", "futures", - "indexmap 2.2.5", + "indexmap 2.2.6", "secrecy", "serde 1.0.197", "tempfile", "thiserror", "tokio", "tokio-util", - "toml 0.8.10", + "toml 0.8.12", "tower", "tower-http", "tracing", @@ -3980,7 +3991,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d272b3002b9e5f6f636817089ba091e1ba7b85858e72529f96e24bc9827f530" dependencies = [ "anyhow", - "indexmap 2.2.5", + "indexmap 2.2.6", "prost", "thiserror", "warg-crypto", @@ -3995,9 +4006,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4005,24 +4016,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -4032,9 +4043,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4042,22 +4053,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.58", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-compose" @@ -4066,9 +4077,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd324927af875ebedb1b820c00e3c585992d33c2c787c5021fe6d8982527359b" dependencies = [ "anyhow", - "heck", + "heck 0.4.1", "im-rc", - "indexmap 2.2.5", + "indexmap 2.2.6", "log", "petgraph", "serde 1.0.197", @@ -4106,7 +4117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "094aea3cb90e09f16ee25a4c0e324b3e8c934e7fd838bfa039aef5352f44a917" dependencies = [ "anyhow", - "indexmap 2.2.5", + "indexmap 2.2.6", "serde 1.0.197", "serde_derive", "serde_json", @@ -4134,8 +4145,8 @@ version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ - "bitflags 2.4.2", - "indexmap 2.2.5", + "bitflags 2.5.0", + "indexmap 2.2.6", "semver", ] @@ -4145,8 +4156,8 @@ version = "0.202.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6998515d3cf3f8b980ef7c11b29a9b1017d4cf86b99ae93b546992df9931413" dependencies = [ - "bitflags 2.4.2", - "indexmap 2.2.5", + "bitflags 2.5.0", + "indexmap 2.2.6", "semver", ] @@ -4194,9 +4205,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -4204,27 +4215,14 @@ dependencies = [ [[package]] name = "which" -version = "4.4.2" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" dependencies = [ "either", "home", - "once_cell", - "rustix 0.38.31", -] - -[[package]] -name = "which" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.31", - "windows-sys 0.52.0", + "rustix 0.38.32", + "winsafe", ] [[package]] @@ -4264,7 +4262,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -4282,7 +4280,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -4302,17 +4300,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -4323,9 +4322,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -4335,9 +4334,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -4347,9 +4346,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -4359,9 +4364,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -4371,9 +4376,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -4383,9 +4388,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -4395,9 +4400,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -4410,9 +4415,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" dependencies = [ "memchr", ] @@ -4427,6 +4432,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + [[package]] name = "wit" version = "0.9.1" @@ -4437,7 +4448,7 @@ dependencies = [ "cargo-component-core", "clap", "futures", - "indexmap 2.2.5", + "indexmap 2.2.6", "log", "p256", "predicates", @@ -4449,7 +4460,7 @@ dependencies = [ "tempfile", "tokio", "tokio-util", - "toml_edit 0.22.6", + "toml_edit 0.22.9", "url", "warg-client", "warg-credentials", @@ -4464,9 +4475,9 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0834150cd852e64e1eddcff4fea9524b788161b4111d83a94c9eda715f8f442" +checksum = "9b67e11c950041849a10828c7600ea62a4077c01e8af72e8593253575428f91b" dependencies = [ "anyhow", "wit-parser", @@ -4474,13 +4485,13 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60620df421d4c787e2660f0159fd58f2ae6998dc42ccf2e09b8d9d96d16885a9" +checksum = "30acbe8fb708c3a830a33c4cb705df82659bf831b492ec6ca1a17a369cfeeafb" dependencies = [ "anyhow", - "heck", - "indexmap 2.2.5", + "heck 0.4.1", + "indexmap 2.2.6", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -4493,8 +4504,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c836b1fd9932de0431c1758d8be08212071b6bba0151f7bac826dbc4312a2a9" dependencies = [ "anyhow", - "bitflags 2.4.2", - "indexmap 2.2.5", + "bitflags 2.5.0", + "indexmap 2.2.6", "log", "serde 1.0.197", "serde_derive", @@ -4513,7 +4524,7 @@ checksum = "744237b488352f4f27bca05a10acb79474415951c450e52ebd0da784c1df2bcc" dependencies = [ "anyhow", "id-arena", - "indexmap 2.2.5", + "indexmap 2.2.6", "log", "semver", "serde 1.0.197", diff --git a/Cargo.toml b/Cargo.toml index abb03e5d..163ed91f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ bytes = { workspace = true } which = { workspace = true } shell-escape = "0.1.5" secrecy = { workspace = true } +tempfile = { workspace = true } [dev-dependencies] assert_cmd = { workspace = true } @@ -73,25 +74,25 @@ warg-crypto = "0.4.1" warg-client = "0.4.1" warg-credentials = "0.4.1" warg-server = "0.4.1" -anyhow = "1.0.80" -clap = { version = "4.5.1", features = ["derive"] } -toml_edit = { version = "0.22.6", features = ["serde"] } +anyhow = "1.0.82" +clap = { version = "4.5.4", features = ["derive"] } +toml_edit = { version = "0.22.9", features = ["serde"] } pretty_env_logger = "0.5.0" log = "0.4.21" -tokio = { version = "1.36.0", default-features = false, features = ["macros", "rt-multi-thread"] } +tokio = { version = "1.37.0", default-features = false, features = ["macros", "rt-multi-thread"] } tokio-util = "0.7.10" -heck = "0.4.1" +heck = "0.5.0" semver = "1.0.22" serde = { version = "1.0.197", features = ["derive"] } -serde_json = "1.0.114" -indexmap = "2.2.5" +serde_json = "1.0.115" +indexmap = "2.2.6" url = { version = "2.5.0", features = ["serde"] } wit-parser = "0.202.0" wit-component = "0.202.0" wasm-metadata = "0.202.0" parse_arg = "0.1.4" cargo_metadata = "0.18.1" -cargo-config2 = "0.1.19" +cargo-config2 = "0.1.24" libc = "0.2.153" owo-colors = "4.0.0" unicode-width = "0.1.11" @@ -99,11 +100,11 @@ p256 = "0.13.2" rand_core = "0.6.4" rpassword = "7.3.1" futures = "0.3.30" -bytes = "1.5.0" -which = "6.0.0" +bytes = "1.6.0" +which = "6.0.1" secrecy = "0.8.0" -wit-bindgen-rust = "0.23.0" -wit-bindgen-core = "0.23.0" +wit-bindgen-rust = "0.24.0" +wit-bindgen-core = "0.24.0" tempfile = "3.10.1" assert_cmd = "2.0.14" predicates = "3.1.0" diff --git a/adapters/040ec92/wasi_snapshot_preview1.command.wasm b/adapters/040ec92/wasi_snapshot_preview1.command.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8e943ef23884a0fe99ff0bf47bc0e972d0f0932d GIT binary patch literal 81233 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 literal 0 HcmV?d00001 diff --git a/adapters/ab5a448/wasi_snapshot_preview1.proxy.wasm b/adapters/040ec92/wasi_snapshot_preview1.proxy.wasm similarity index 62% rename from adapters/ab5a448/wasi_snapshot_preview1.proxy.wasm rename to adapters/040ec92/wasi_snapshot_preview1.proxy.wasm index 5f71e3e128a8997fbd0a9bc4a1a2f57605df2ab4..e9895b341a4d3e66bace74fb5da5d8358eae8781 100644 GIT binary patch delta 3352 zcmbtVdu$v>8QDrKlro4ojII(wkc5Pq$ zitVIC3OFcDtA;jGGD!#$N)bf;Cxl0?5+op~1PKKxqP2uX1t}O11t}p!Y9S&}GqZP& zT^cF@I%#L-o8SEA`+f6$-~I3gxcvtB=DGxUt*|~(3%~+Rtr(^k%lC+fvxW4Eg8=-A zf~G^@7W+2R=G0w=m~Xtsc4>WjsIax-7C+NnJxsqW@iR16J;bMltCfYwyLJk>>MD+X zr*4?OP#0ns>W1i%n#=Dsj@JJ4Jw|Yf4%L&0F4oZ3>N~)xlMUgbkZ(A^X_uU$lKdBN zBlLQndtLZaQ;H)dTZZYrOnC9WmIGBuL7F>!_^?o$OC+O0t~2>M1+DdTU2A7b>|XlO zw>PfO$Ur*JvAIN3T#l|4qfH_`*ZNRbBAEkC<#Iw6ay6s*W?`);SSv){7 z94oY>11vUQ?D6o8N{$>wr|MLEe_Lla1eNm-PId=m?p zEbQfxNis!cMMWSf$K+TT)%q|mhIQxGH`7d?Ad~291^ysEF;#0MSi<|xlB5TF&LP5cRRdKgI zLhI1(uvzHC;dCKGbHyq69@{^w6pG zAv#_{$BJncE1~Ib zmsc)&BwpduA$qQBKR8v$K2it3S18=v51M{jwI;y%_mp^4QvSu zXmHEb!p&}0Xg`qX;FckJvu6gpN}Ug$1iz+lvF|PV%%dm8w3?j4SP z5`bBHthW&t>z(UvBtDmp+$B^CY2sH>C(2ojcszYU5K)tC9=|G z)yWEl^)ue!m_3mb`kF!`peOq-fPc`&^U0B!c6Vf)4Ef`o zutS9%u+t&V5qF8#3%BT6H}u^aHhx70uY3UtND>7mJl^EJ`^n+{Wy+;KKiqr zZ7p$5rF1}P8GZZI{^^-m@ebik8?D)8bU*}s&r+e~L(6bo4Ve&QUo((TOw9`vM@Ooq z1wOd9`cne?wDE1!bZvia1{%H&Efo>Z z^NC?9wm4YApbUWoF?J0q#Pm&Hu_OMn^Af$=pKT0uBS6^kG+i-#q}b8(U|{ECifRtD zZvR9p{oJl<+P!-deJ=k{n#YhuVY;JZU}}cGIv`hRiV--(P>7*>hU(d6qai;WtEIo$ zy(VM%1~l~mA`@%AsvD|HXDpyqu zRrgIzaV$kMh@Jjg(Iw;EF5Ps>>7Y~dV7FHJz8?@bFxX8PnTlywTr9HSe`jfaFheHr zpcCi>sk)^hf^~c4Vro>-X_q~ZZhD4i>W;^fL)Vcl?JjAopg(t8GAt`CM|VBN#0o)y zYF93uN8Xx@OEkqrgcvM7P)Dv^HCcKZgMQzu$SA6UUE=xBbxlvlmYq3N+UMz!rt(M~ z?IINt);(2GT#Phdu?TeOPO>Evu!Kg~hku{3li@{hF+mO)_B$^wT4t6z_uw3o!DG_C>@G!Ia#M4|K`PhOG(Gw%~1{^Rl z7GXDVEE7ZgK3-9f-z;H6(Xoq=p|K~?1B>p+A89uY(}mbI4HizqD)D_twmuem)R?cW zLlcw!I8){t9%RxrRwjz27@ECp$0DX)_eLkCeGY<-PISjtG4zNMxc2ss-3OUd{`mee z*PmiI4|-V9Jx@1uq7luZclLf(Qjlo`EJ<9}29QHAogF>G8ym|x(;_ZnDQf8U4iYlL WF;mh^s2NI_)T)6Mweab&ZQx&Ud$gPY delta 2871 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 d#9EiEjt3~7F+o?)i+L0lY_un;g{{H*V z<2u5B?DO~I-;wj@`ws|IEFIXC03_Pgh1di}0jTd}OI+PG>+-@S9I zjhSYxU$gA3sva6rm2<<9U3$$PYWCVMcdh7FeI6Ln=h<$%?^+{URofR((~R5gcDgf- zP7^>*$ysT4j>(6LVD=7RRleF9iPJ-%0_vMSnVz%keO^~;R`k>#8tAOOy0#8H=!qL% z=c<7^o%Oz1X)8QjF$7S~_SVz&^dYqx7+)WBr`O@RnOfh9ZPoRa15gLFzBO)#b>0Q5 zICCkT52Ny~yINau33q%exUU{E_};md<@V}n)=g|xcNkr)uga<PYNLACa3uU}j3Tcg7X>S^8(LzFb@*SE%o*Sp56XHueGDR}-R-QdfK{r-q+BtcTGkeYC)jhXdvcxi zA%eD|g0zRGfaGT-cR16oc}smurgwNq1Cr^@Tx<(RhO|&ygG_CjO>D{Shbds$3#svH0W9{8r z)gIQZ$6fYZYDMZv>~Tw$=C4}=ULw`&bxS_(48aoAmm2kjnNzjisjZPbjFv;yFNp2D z4}dRwOm#;stw1ixcb2V`N-q4q+g)j|)|O`!w^NJ%ngO;nP{^{b_8Eu&N^(6_{p!uC z%QBXw_$Pbs^_x&ARIM?tAN9bRQmTmLO!u@kONzR1*C z3OA1j*3=OAjmGw{F@Iq4g{OyyP=+^t^HYO$*pF7;2P^qQ-cSi|JoG>f3+YC_S{xED za`i`t3nZV@hHBJl7_?VU&TLiH7u6U=piRv-PPvWKGfKnURE5*pd$^{m6B`cbtVhG) zIzFU|yF=iCy{=Oa{s{t zhxYF~G%U|T|*wlVp?4PptrR~)8)8a8ZW!o{!N{;Qv zfA;>du`%oLVLN79wmp_iCSx)DGi6O#`|!Ub`}Rdg#F`Kyc5vjps8~tkAB(sAC;rE= zxjkSWYoNYGa<9dDt=Vc?&z|xg!j|i~`suBa(umNdR{rEn!ARjB~`x68U1~x?MODEN(-_)Ii1n=YnaMVRA z%+|{|#5G0UKN-ihth_j;uTajaae&aT*H`Lp*J`j(&vj2*O?gFo!{t@qg?85>0IIc< z`_^jxQ;W*9SoB%A)!r?ihlaUyMfh1TqSK@D4TYJttgcB{*2;u@PH5%3Rn?oaC5+xW zNnK8kc5PhVX^r2yJ0)+G5-$;Nb(7Rm7dxwNr`580qifwxV^K2h{+PV()@aGECwpKf z&Bb$Vce!bu8B=Pjobj{C9yruutZpM{)ZP-+0ISU-N;7eh0S>Zol%y zcf9(K-tZqj{-3Opb%3wG^m`w9=Qkhv#9!i`aHf_j*QQ=a5G((ED)o9^;OXx?W*zrl zN7QRP9lKFB`K`wudi^`!_!l4ls&4Wxzy5`feCSR8{uAF0n%r&H(cK933>*?oZR0Th z$M-OfDF1o%53HrsFUbkAod{l39?GOX#`}Y8?7f*vyX zEc&G}@!Q(@*SGHcLr-?e1FPn$-^*1m=La+CSg8-lsgY|LQ-GxocChJ+#@cu6L!o8; zY_z85z(o za9MBLFn$qQnX#^`1ugJ=#Ba}|45#_5WUWld2`6ZBU z;@ z86C#0!Hf>!)?`Lgd~GlzwwDYD|5HLUqbQk?erb^Fws!6d)2I@rx_fWcNsu@mbJcM? z=Bm?myjAy948vb_-`~UdrHD@oQneX28zjSj`1(8E54GxgPQ(|XD81p&e%C2kB*U+M z?k)f6RbPD%wJc8Cx4-eqSAO_g@A+qc1)Yb}_Lcwg?%(*6&%gK0-@?6aT+2kX`n{*V zU%AkD|Ht0r))fHlYk&UF-xe>*A$VQAu8tSdj6a<)pt(bxxFaN4xv+ww0i*ya*&`VR%wFG^9 zYtSPpNWTX#NfcTMgFKUe7Y&hoNc3Kc*hSM+=M7P7VKMrvz}jxn_?U;k;VT=kY@=M> z5skjNd{Gkq3sDg@^gY9f)Eb^`Xm~IyLK>b@=YEg$4DJK}LNpC-1J+B0&&EXC{iW#< z`vmkpHUnahE~TTmQl=%iHgBNw-DqJ!kX>zXwwZ0KJOOiA)JzB1i zmLrOse4F!nCuDOT#%)N=3)`Gid>!KG5tF0)f1XEU(?#|VSt=Mt}lb0A}2s2@FjfWyLQ@^#=z0Yr@m`XM`;H{XrjQE z0}_I?60jN4q!>ssDEpF~kv5_euz6uAryiCp6t3-JWE`XddfS_h7TKJ-OQqqQKu1Kg zbe2U^Zb z?28vY7y5NTQd+#Q8B@IIa-MkcNRLeqlF@d7?hE=&KsN9;jCs2lz2c(h>k@KKl6qac^D!C7c zhjg>Ugs97f3I77T^n1pH{+}l=(>}ksOp9unrsdUe(WazVT2!7%(I!All9WJL_yuzV zqtil=JP$q%@G`F?`I8cYHhA5R+%tLYKUI>u2)PIMoiFzudxCQB7l+F|H0KENI4Sqg z(T?0Z4&G!0ub!O9{+`Rd|GX&&i=04I=+~&rRPJA@+;=w=Dab8IHtIqaRH-3?QL-r0 zF)K|&$>Nk?q^|(f6Q$N9F{5(%18^$ z3KDaqvbK~S(V|j^h<5b#f2w@zT_O@WAGu#U{2f1vSV4e^q{jaoYcgU9$y1i2Mm^k4;Zd2Kx2D= z#heih*n<+V7=UqN3NXYK>;SN6@~^`xsrJ%Tu9_av*s?1la6sy1I0E4w#7A%!T82?) zB=v_9Y}mok=@^z7tQFeCSWTa?QXe8xb+b_w-^a^wz874>vV7{NR0}g!Vgg#k^av2_ zp!687uz;g8)@bUTY>4=dIWa;cvjFHH@Kz?4tMy~Pe^MQE`@20Kx`*kNBr>DiF33ANa- z3f8(~%avZaahl?scVp8G`$)c^^LLD(hUG0>a4Dk3k8B);d)m-|9NdN$ZaA`$;_J}D zC3qVbu6FU$agEpB!j*3N185?=Z~=hf2h(-Dg)8gmXU4+a)?xSyce{u2u@MpX+^SC~ z1q>1m`5;O-z(Ry#e@r}(0oCAU@AL@7U@UT?0y&X-3we7w?nG~c=hb%NmCUlr@p&%p zM;s}EB)^9wk5rHnz_*Si6VED0E`YX%2M|6ZQiXJ4^vy*opH~G_uc35dRuv?Zk(M?N zrBD!<1VHe!QzC!}*(uhcX^2p>Z`2Pm&SDG6s7C6*7MbG=_Idl|jMOPfI06cuI^# zB}Sz?kqP3tr^J932NIur9mZ#cazbvvy!bjyD3j4)PE(M{$jrsC4inB~Oi1G2$O<)G z>DL}Bl$nfdGRz9YDNnkN#|mW~{mfv6+d2%N6>j%1UKNjw1SSTVVI&|erQG@?M$c;? zL2(x%F}nVd52To)^maha1ydZM@w#^!5@|YSutadb+mIauN2N#Koph*tBUa8!%aWF!v+^BMJDfL>f!Xa>S6hBynnH2TQLP3v^mpltUnsje; zLVk=KZVl3X25wE#P4l%O#ShAEHN=}I3wn>0z6O`1|%*YQYK*3r)l(%sf! z_@ukt!>HJjOrn*?#oZMf5_944$N%Hw)^uXwfq(pu&s2l~MzwH$;XX)DarYsJ;rPP; zdH&V7i`)&$!Q8$}Q4QapsU+^^n=^RX1u{Y|MO)n* zWm2-ZTgQbf(YvcRTGwH$a1(@0*hpZ)+Fs=DSg?GqC-nw7>5i)v zf!)yZVUydY!#C zJs0LIH8>B+w2PxfG6N z{7jYX41V^O0IzUTB^&C#v%6$NCztbspFL8HE(qn}RT|w4^gT~!Q_kocttNocde~j$ zta#BBr4cWmrQxK&Z(NnzIpQ&cX)q zJo7YYU+1a%$}2AoT9kw@PZD{^pdA>?MuRp&DYaeus(dM>XAlbv0|=`%+^S{LBDZRp zw5aQZNKro@bw%s3Ir8pKwjA}2Ou(R zX*weAgv~HQ#nm2wWJtXh5+VL!$`sfZGTe6meIK44U5HGJaWJZF4RrXVvE6}=?Hz_s z8rwdM7_7WUrXj_mPU2bOMhxp&OHN|JdF?X=O`y>tq+QgB9T#Q%K>lPf?FlveuyK(3 z7^58aW?!h;7au17@rZ)6ACt2mNz#I&rz}>njc)g#+x=#@v0?;KHOD?K5KLpYh?l`d zVT2wT;r}eu6CHar{B;Z^-lCHX@b-sLFoSYrasMw_TpIiq*73E^CGeU(%ZPLfWn1r zVK4uI%P#!i#knt4`&?$|1`Wcgq!EPm8igr80+mjB(*ptEz$Q7sy=!WZ8-PREtEj=T z3MNt|ms%5Ad|)21`~km{aAJ=@!aS~o1YyU7zmpZM9EhEM9b@Kgbe87o;i&__?! zXeH6_I+57#dWRBw2RAd~!HWZly5)B*mm=Tp8tzUbxe}o1On>0lSn>0m-uH%UgSw}xJM8~!c z!{-m*-^2JvZ~M^}!$@NSzxp|G+>+Dq)pz{eJKylx-{j_cjq;@4z4BB{!vo&NkuBgS zz5eZEul>k>{`{YP{BHp^smn|==CI5(V?C@ZFEFfQ;-C_z5zWGwrn0?j=fB4Ew!tk% z`+cx>{@eF#7%=vvTZc|g&P@(_N|oVGD2Fp5Alb}_%gRQ%V*=a9!gsb6bKYdFg)_(PbU|%;4w| z3a0HEhR@Nrdl=s_GBrtam+a&ueHn=%q%Wpc(7H`AG7tJ13DZ|m2Aec}p%^0YVfw-| zkG?9`B08ow&ZlEe1es|hIjAR4*3|hPAUVXHOp*ft0mY4YPSR)NvDP7u!)IwYL-O>3 z2Juw7P)!};Fkc%w1U#PRei)zPw0BXz_9#v|JlUkFL$Jv(#mOc;ij#G8I|jwsisH6s z7(T^q_b?tA3AR`vma~<%oQ_>sUsn2Voa~YRX=Ry8a1e;aT__L>#njY|p|g@=L9F0z ze%>OLePTKSYHozBZ^ZAwk(xlhv<1D)iK$5EZgXlL~bmj|ycS{mh`kZ5@VB zg<7fD#$nKxMRzSloaJSdjs)R2EtLQ7iAe0c@O=7Yk(>BRKo4PC4_V}!S$no;?J4Sw z4KeWq;WDTeadzLLqm`SE%XktjVcKf2t)>O(p8{H^R9Q}f5hZ2<3=LdP)9QpxNcNig zMeS;b)q4PyJc|%1y|f791SU$u(18sI-@pXy$w%ngmkUQ`-DCVfnLrR0&5kdj-?7xY z*(&{o{*#~M6Y2ys8BqnzkEaFeKweZQfEa+K(Bq6cqyE$|0s#a4<_S6Ay=hpM&z~4Y z1B^7&*u=Oi4lHVV=^-N?xfjlHdRgVBT(c$iARSLqXHJHDk)ZCSrJnjS7de12>vAB0 zXi*db`67K-H{r*(QA0V$87376^5rOQP5I*RwXw3{>R|N6J2uLfFWUK|UwbQC<`1(; zQ@*fCb7ku~-pcm!l-Z53vbS{@{>uLT9)@qDZZV8BCQ#d`n1+yzDreTSQJ;!w@NLvB z;3vI?ZPe(1jfyi~j59AZb$K@GQ!%VJCc$@!}vAJmnwo=zwolCYMsL zSLzLzEAkd6;hVc!9d?DgU0R`mbHPfzf#pyovLznwew&NP6th zG`x$l87O10AC&(XYF`v#>5&Se?n(treOL=aXn}BgbxNwAVb*M0?aT8?<+}IU?*tdQA#7N|X4FytmO8NU0ues~&GNZ{D zQyeZF3=6%#gqF6waQ@!3jdyg5CeaQ=@G)@$=~HYId3x#*dJ6PTxbx*Jmb?+UO{j#1 zCz;eI)wnzHqh;1hs0;=H;@hci1~Tgw+?p~AV1;B>Sq^2R%+hL{e(lLDsadi~Q)aPA zQ)cNpp3IVU^fN60#;pJ|G?@ zPE5x)l9Mw+Vj`(YB1-Qj83AESwAoY2WPz5X9>D-gp)ITx`N&DhD~C1jM4krpEmXwH zJHS79fA%Qz+u5_^?1rwl=X83HGwI+D?}U1XJdHh$IL$;SXR`8uG~Q8wHayli67&JM z3XwHD z0`Q~Wuws>Os3#fk$u2-Ynfe45{6T8iPW&`j3j+^RIH(KiU%WcOeP~!Pa=4fRn` zuH!HJ0V$n2@atnX4r#o9*g+byC;n7D_%GPsx-XW)B@; zv=F~ndM2{e-xXuG9C2KDJu5B<*|V28738yf1E6$gIDdd^LV|}fJSbAqFMUfOb|H_8 z)U?f!;0Y-KQ?_X(f{Y zh(aFojbxmXSxGWZsZ*jLdz?59yG8dha^|N1l^wV_0}h|Tt-;}s;@0Hw4qu0?5>BGe z;eT;VD_q(^i3AHt3_4CBeWq;En%?=5IVHX&(s8`0*Q4_lxu4OD9L0r(1;4-&_o`LG$jwsYEj^I;44 zNmya?A$*b!$slY#$YFWr!)C*hWUkndK4>e%hV(N%ksAnMfGKgMJ?8PvDD!4-WVc zn5=*Pv0TR66=(3B3)>xM06ws+wrd!^qPE?``0JRt8R$D3y@8ruARP>P!Ci=6n0?}m z=ri)+_yU`k&OGe5fQ*#8BWb+^j=cD7@Qi&1<_~y#*qdkL-rt6Rzzd2PTM=v|*d$2C z-hWPH(iT<(b`WxYUxcC#!2+(D4eku^&sYD1LGrJJ80D=ua3@GDb3guekNEU@S@QT zVaO}`xD0tk7ndooVDX3K6*7eYr!TL3Lf3u|{o1ogq|bs)n(~TGn(|85@#K}Pqn{b_ zN_x?@YZyMEZ~HLhA*>`O=qw;1XrIu&5CfLJ(KnIPLD~Yt=>$j}wkQY|;uQsQ~^iCrIc4tQ?nD};W zO!aAdyLWVc$`JR#ZZfjSi<9(?H0_cY27b7zw#bJuk|<}T~#X9076T|C%_xIy@b zvva@+H-rPh`~dbe=pmf^X-nS8j4gEqhpS-J3??UR{D_v`nmGAz^U$_bExhQqR4t4+ z;rKMr2I+397KjnTtqF#0#t5;UNC|m(CLdOYC-Z3eO%}Adm!U?~ka|ZtQIXL%Sph=e zW{^9~;?y@J`;?W0l=hUyV#7=Lv!Dqa6MJ+}j#}b&3C|rJz&~60B2^hZ*PLxH%qnMI zZupgA9wAqVap;gbib1reOk3(i6pki>4NgCKplFMQpADrcY^=(zm9 zvx5-EU>b?HVjTI=j_9Sv^N2D&{x&2w&IJPr=33Dj~) z+sIFcd&X7?mB^e+y+e71lE`hk=a z9!@3+PwKs1n*^Rs9Dt@Cp&yQ^Bu7;i{AX?Nt$MY_+b405;V( zi@?Pu{hYG!RTonjX;yw$ID$6HWeq^by-+#ko}7!N*tqILekO%3SWKr^FkFBm^yFT0 zVB3>@1Z?C1i#XBj5B$eqf4B=-R$yE@tOFZ;;E*COtRoSu4k@Aq?rnMk?*+Gei)34N zNb6Ha7?HB^+&IT$Am_{*14gIMBD2ZOc8)X(r_bpllQzh1op-ivCo{b|5wXLYb4LQ= zB2D-twskmC#_WvX;Z5`c)0xDzP=?ViqlYqFAUTeH^BipU=Vs*v?J<9vQds5sD%N6VF8nTOZ61!MY`6&O< zdudZn%9+G2)_vr76RI}&+W3&#IBS9x5#oXnPj^b6zVhm8 zB|6CHz4x?N8Te$QrfY(Yn%b*Z$x~ltCGTONzoP5y9Ez`pe@}*TOf0C)s9u&OR0{KO z4GcEeRjYV%^4|^F`xqZ&10iNW_eP*@<1Qp`pdj3hgaiaEvHLB86amNtZ};06cfTc_ zF>H1Oos9*1AIGu#jgdbmuH-}9Bdnv?A!!hngIj~J5P1y|R*J8U2o1JbnnsaNS8=ts zNx$~UD$c!4Y|hcPPmK0>F7J4x<+jC1c}Qty3? zJNPImoLkN)_ddc=OU{DBV$|%by^o{ho8Ih4)$B*P^A)=jgW2cK*C=c~cvWLG`9|g5 zN3YvG=oWh)gKn|q60^iDmzW$Ck%hBOD>+CWK3{7`q6dj1R0R zt+{Qzl7LoOA%YpmZA1lgY0%ECG%b}{X zkg(g6nxZ-{K}M*zm49*(;Z z4@d6w5^|MQHW)IF$HBBm<%+@$Jm7)d;Ec)@g}1QC@X}aP(aJ8IjrHNQRT<&&ShR4? zfCRgM8s}w2)kPotf=`4zI4kv_)B#5k27%Z>bKEX= zC`0NM8GN8#;V!f^A-MFqgiS_C7sE`d^9VhWfXL|qhy=X9YT8mwV~IrJ-{JN}N($^% zzz_CFKz`yte=I6&B9O9!O9M?}vjW^9aIyT9T#!hSWGS>bj(nb25T%UMw<23aeXqqh z(|=T}OicBYf3|8CAH*JLcnqp58Gt-N$ObsPgT)x7%!l_Vt~a~EIFV^AkaBS@vzQ{W zSg=xJ;gu2#uawxpO2KPGgFGPdyU{XKX zo38pLk9d~uT9)E9b{5N`skciCgf3zvqo9&LjSbH|yB$6-^PCCP9x$4)T~P|B8}Osm z>!Vn-A-7XVX@Im2DGkWk4=D{)%8XdNuU>2Bu3vlVwa1u4N&}lTl?GiWq%`PfgG$48 z4a29v?H$nQ`^4q+@mf$AMmjH)D`i9UL(q>>3ho&DF{XL46HW_wmhJEF_jz?Xxj(%oP*R~GBr>^ZD##1dh-?<|> z|2LJKA3GEsm#0YjUti;S$5E}g*~-xrsbKyeh~CN*U(ElI0EOp|S-0Y1q>l`YpOuz3 zGD+|t(ucV#AEHA?3vhb~7L5#C@s+IstRW;lwFt zw;wS`Pd-1r=aKscqo9>%!Z*iU8iY~d;=t8`H1@Jpy8Nk zl}f#fs}b8j5hC>=Bz!Tvdq}@S!6;+DNi9~8VQ~W@%yIxs{yORnHTBDK&XBux0)9Y- z3*^a)M!kYrFXPwy6~7)4b2RcC3_0~~)jdvS-i2EgYG5oD%`ae%*}5+IbHhp^m}b_5 zW2y?Ah|0alwzE%Q-babp)O%PLPOE!CPZP|3F|YzEQn|}4>`c-%6i1pKH~#W#wxc-m znaWf;hJy_O4~Hvbss5=CcOlASs8KJ$tr5Mu9k-^J@)o`}d@m;yihbwH8z;j%+P(Ll zsFT^}Y}6EWY}8bwyh@&|la;)OhOpb-q4?5HC#`z`d>;?3QI2@PeCo7#Q9$ z=Vtt7_*3O#k72RLhAwv0oF2m;*tM*lmfs0ubs4{p^rbY|h5BF+WI@b_jgg7(#=4ix z9UF7NJr}^%@f#l^DQKUiW0Q6QiF@14AO3Ea&mR!T_m)&>O#_DpH%9U=2cAezs=Y>p zzXF3mpB4naG9Bi~A3iP?D%j;Lc`n2VlJl0~;C>Frj6pf^<3jhAdIvdqdQviMOu>Rs zm;tBvze^PHa(_)w_9{?Pmm3rfNJIlNNsv|l+sUcFeBqg3ppFt(?U*73GUJQ+UP!v) z&F$$a6i}P7_TC4PopPpr>=07ArkuSm!60CGAwTwn4#P~!`)w6J-@d@0xDp1lbhVt6 zUn_vF#ZV21g;xld;zI_!8pFC~Xi|QUZ&JN=m=eDWG9UWF1ZDGt{QR=*?1B*HIttQw z#yl%?dnMLy1f&0*$E@T2^7=lMSReo2XDEK$U@PHEwaeUnOclvIV3#VA>7mxVtl~uu zo*EU&j~#3^wC7DdWA0d^NSvX_CE}gffw8YZ;yYy>sO^M3;_8ym=f9*RT ze1E)XvGa#N`@#2r{cm3PJ5I@B=U@BMAHM!GAN}*+`W8-3X77Lh*a!alHE;ThkN*ws z+50#C!x!HF(;s;E@BS6;b@NZxClbhS6zXSzlzfXAiV}&3V*wtnN81J-4&&Cq1HQ}| z!UIkY3E=@7dCadWy(ho}B)5JUfE2}iB;Pd}WVVF2sCjBfc(;-E6(XJ8_Z7mw7qWhl zb*wcmx#vtK$MYN&Xj4c(Ve-2=3_&~s;~1%7KQ9$7?83l~A-t9)1;4urs|?n&4$)LB zIFuvG<>#L?any;J=yGstpz9Jhclj#!c5m+5-eLGg(D(N+d`7j!F!lhGl26G!b_So) z`{_J3HGGfV_D+K@L$-jQ^lFL_609jgI4o0y=wW#hF@c0dj= zOuat``~iYvyFNqrd*0yWxyalkiEq>e408Y^9m9jsCPDI}T-S%AT!$IP3bOVO;ntL8 zQ+#c>XBagzzKr)p4%*au!?+EB6b_9{@pTBK5fh}Z zdmzbx1_C%+Vo85bN-ehS`cmWHcp%9oK{*kcxDSQ5@L38=aOVCRm61y1W;l55)Fbi+ zLa~ylz?Yo*1?m68_f*sy$Xd7-u*Xit$mq5ckaK*9D`rIE2tYi7{NjmX^5S>DiwnMb zlovd~>b>~nnmjd%PuT)b4)d28dau);y zqoruj3MSk#1><3yV-=ckYk&svIyB*yIpGiO)%ujB(zDnd@aySQ7Spp1p$Bu#Uhd8KRAsdf<@Q^ zYCD3brURr85~Rq9$O&%Q;}MqEs#qrOc1^>Wwta}4Nbp`>?_|1_2P%!OwEAJSz*(MJivkxQ8`Tf#ZQCc<2~ID{9{^@TayO zSPPMoeG8ol5xCeeTzKKA+R^KUZ%H%tKLV!&9ArG93E>8y52udFu4E!TeCQZigh`;R zjYI61H_hrvREMHC%Ik4wj6V}?+x} z<7X1E606*YfrIt9!wc>!?!$nmzKFmC4!q_LFT`uO!^?8U`O#s^nZOP&wuTcHi5h<= zaq@pgVmv2L;COEl#<<6@HO6tObr3B7Wr=%zzWa29gOUT2;d1~aanEz$4BRs;AK+fP za{}CRLm{!p7_`FuC=dW&8^nd&iL7uh{HX@*$#b@ezmWj+`ui+>cZ= z?g{N6?m@~I!adMT+$R+7M-}eziRU4>2k8?v0q)-$UUM-mAr&9s@YKo!UgUCzi_Bc^ zJZu23xZIiQkOqBoCtw1Y0Y`|EBXELPBnrt+j_@n~5{8#naRi2OnBTjLlu94324W<+ z7~**G&4F{|X?tw{SN-|>2{E`F&zrzA zxxpNL^H%mvcqBCPTsF>^LZaEXGmN!8;`ghWnLNNz9`_-?u|V;x_&vy5or@~*te*Mf zR(-1#?|6Oxln4fn&bM0SAN9e|>so>#b5RU1NMt@3G6t#$&j$mn6@V$?_rds}2#ouU zI2d0_{W?1bs~W=I$1xLX8N-9BKAvY)MwMV8gHz1>fSePuTF0SkuMkEA|M=+fZLh@zvs%AQweC`3+32~81%n2tIi8jL6d;F~XE*#!l=sAO)mcHw82Z(_(*m3jl!P&#Y;F}yH@AHN|-eisRv)M`4SYB>U6Km}et zUCDF@TMsq)F@r!ezIFtx3V>!SWzzrr%k>UEA`@&w<~LZTBXup zMigd!|JC(QBn)QAe+4acKur%HPQ*oIn2J7_!;K&m_Q4d%M>oYLvQ0n(kdM)6Nu~bK zU}gvf|MsByXFbXoj^+=AAs$3*FgDLmxLwAk59e?^fB#|j1Dj&DN(Q@~G)()c@!ziaV#J^pUM-z@$z_{-z3h`$p4%J{nxf5-86 z6aJowzh~p`F+?3I|BC;7hW~ty|NI+^hJ7UYMeqJrfv{l#AV&_wkY17G7&w3GH>eLK-)9UDs*~qHQMLng1gP%6 z?I}*Q*Olt7LqBOqZ^J>spbu0g<)9#TP+#irU@#S-bb4KL+EnPFR?*=Fpio?HFg86Z z7X#w&JjEcs)=A$eCS|;WNQP*? zc+sNT1-h#UczD(Ikke)P0?IbZQQU1fP}V>6nD3;$qxP96laGtwd)(%@n8k_dQvb=R zM!TXi&AF@K3`2n)g));WHXuX0$c2hjxDc?V6Dur*_cF0pPI>Bm#1Gw_Jd?s3eUz;L zXng(6a&Y(?2>^t`S+}Rr49)^cy^XenW5Y|ql7~`n;=Mk|9_1y4(Q*v>m*yEs&rrawd3`ZW#4FXI

GF;oo#cK%_jO1a^y^@=)G#YikbkNYBEWpwKgh(UMh zt|+_!$HlL*2x;LL*aMcQ^r}*ifD0Cxqv~xXqYp4p{SZfJO_&`IUXp5d8%PZa0=g+Ab^btZ2S zV_;w)4`#@(nHrnM;Sm_003*Wqz}fwwk@HAIh{|g-T-Z4KR8~>gfV7wd0-|JHSo>=H zSVI^d7(WJlT#N%!IQZU7T&0nXYk^77w+;G4WRp*kVGECdhb_1hr2s)l0}!%dezcQl z4HZ&SMq>0hMnKjeC5Ds?HW!`ZU9iDz+Kt4njzQyiO4HYI1h&3}p4gzTGtg#4}tzw}$o?;>d5{M=u?@++VJ(#OAs zdxG{?fBxzJ^_$=N(kH%xd);?l=YPq*^|K(f`AHEO35X-$n4CuVS4T)2qzNbT0x8ac zb*6=L>g752*n=BIWKCR$*+BruuEe_V*vFPC&+uk2#-J3HMw}?3n2Xc~9%R57L`1h5 z2^lmGKB7KRV=GFaNW$X?en2^Lx#?+4{)`=ohrrezRDcZ^HIIzeq>OkT0GBk2!%v>i zF=)~Sw36y23mF3o!J&zC>Ed`4+6YiW2$;&Z#Tn0!TgIGUft2NKldLy!1)1j=D8 zkCFCRrWgS;^oFUMK=*(I>sNvVkwyvzE_o_gdW;`~N)VT5OyZLMT;MVh!X-`!Qnrv@1)5YsI&wdu6r=<4VowwB)mMpGiSKW2`Fe|KpjlJ zO292E=RKfbj7#djz=Og)A(Kit8uT;v*`5Rw7})@a(X*{|wIX_!FnB{#b`Ox0d@c}U zAcQxej@3tdU-^K8iDI$@8i(d1zeLR2ihA<|n~}$so6RJw!{D#5pvR!uA5oWh_Nw5S zy8LuRBoyYLQu71K(9G2Uae2A|`3F0Kj3FxR5`@_iWyAV`AjN!9y})UZOH$#$n!w72 zZ~)mO{O&|?G+yQ2yVE!W-kXRhcA}w8HkGL0xISz?tJv5PSvhbwWFdB{-JKqz;R2%y z$5Znu2piKTyJYY&a)#^J!iU15{Vta*GGmxeKY|~KCmX$EqHu;ETgTRxX#rTlu~27t zX)aMf#NHhqR!<_}N%k0E1Ot~Ng?=kXiZ#x@Y_5KPq*n6RMl=c~0Rp7cPK21m^kd|h zX#7OktcTzc2v)4Ad++8J8(aX%IEy=uB661w>v1by0-Z;BbUt{Mh9DuIV?faW%`uz= zN5r8C_5!Yo@3UznV{UE%Bg1VUTumZbPRW?uDu~V#63MngGCLgMjs!3q$L=dkBi-+e z#x%DVg41w{F#-mW)f76=H1*a)T|L0JSqBp%QRE{+>JApbP?TmXO0yNE!H`raFh&pj zlUW1*3JgtYwub_VXdnTTG=Kzr+HfNhG^K4s0>_k4CZRl_6mgzFy*_<1`6fQn*}oGGbeK<*Ob{EK7AACAs*FHHvv7*~5j& zT7%1NV_#Ns5=6okmHH^v#^kDq-H!+M!sGbgu2)kt^)6%g<0LT~2brdEh{pZk6nuxf z(fjXBk1RN^!Ka^8R2>H>-;bBEJ08JPWE(oKeehnK(HFntk$Z{P`^f_CzZYLtPXxU` zDtq^V`E_|~edM!Zf1|Uq)>(B|`!oG>YwnG0+;#gs+luQetJYhYu!I%A2YFm#VN7%) zy`EUJ#0kq1QES&pw?E^qo@sYGt1DbZ^56P@+G`NS6cBsKuBD%8_3!(_7}q3U8`gwSnh6|)2g zK@}LsD5;{?Z?;!43bEHmw0xvnjwO@A8j(-zm=*ua9b}J4WQV6Fz;^gKC@Dbqm_|1y zmH1Xu$(07|;+c=|abaN@@sXX_!8jSulf^ie*anQ_*&xR8$R4w>1(WO*%Wtypc30Y~ zV2*NOVnvFp{Y4Ufr<<~pd&P!o<5v8cUX#20YHDe-&1*Kcsb2bx?i1FAij!9Sqe4_h zhC^y!5K?lvfdPtz7o)hmphHqAo4XK*3O}9q`eB@p*pc05gV?c*r51`(sgiU``U+CILhT43|}cI zXwEOP-3p306&Gvwi6t>6V&X(ZB7W3fc300@$*6Uuhb2?bk(ffj&`J+|D=~z*nIS^q zyjc=wH#9x5S<}7K?KLrZ!KPI)(YC$W8nt#st!swD(_63i8r^o?6)ABl;Z@je0fuR> zg5usC@cOFe-l#P@{JoDMS#YMd z+MH=EulG)gy#aKax2}rri&{r6(7G-dva1+*AdJ z=(M84RPgwqVsGk%rV4IvqJrZ)Ovoe%p-bzVqZ>>Fv+a<+>A}50-yFN7wkS{RfwlrM zqRg-Xt%7#e1=OZ-sl;p$)fXZCCxDy8K!;lRW8DwD7?k}()tI5cnrh50bU8W*tL`%e zGu+pU)Qk;wI$Yrxs^^3hj@?h93(i_}vo3<^+ane*IB7H*62lT_VP&^hVcDE7L+NJPH3-oBxi>09JR)}Zm+YvPTN<+r3ECSXHU7Sn5?L^+vg9^t7WTVlx&3s zMp$4^P{8X)jM-vZ>&XzAy<;n#)lR>&+HTCiqHdhlTGdI} z%bRlqyViI6?G=}k0#6p7fg)3ti%G$cpFV zA*+>NNfcnd+H+yS(20osAwXji-!1qLdhM43@Pt@N#Mf6(1Kq3Rl089(IRh@1YMiQd zYYmW}elXf>cil$6(>)h$wOgHu-no@}2mEekxxIRNyz8D^U#@j$*mA4~6uNy7Z_}l8 zTSF!3gtDzMu^Nj~_KrvnJ;mafw!V830`1&P@7!u*3RtZTJlorK?_PI%eYdG3pDdVK zS%-JXoeAKwQbvcZ<=RQOyT-+;m;|hZa;616r~`r zNJ@#+8L9i6$nQG(K|odZ%9-foHDQpOn+x?{sEBDkt52?d4_n zB<$h(IZR`ZQ@q-6;X<5Q>vm3J&G&E(0_?7@VdlXz&eWFM%}Bd5-tHN*zTD}oO|sFI z+Uhw;jlFRUq*nvNi1-PPYex3kSv^SvDGE>EN)9lN3xYZY{;}S|EVS`>X2o3rt?vmv z>#fxqXs^=`x<`BPldi1w&+XzBmPqFe{B-aLCfCv28ojP=Glnku{d1G}>8&?Tc@VH@ z3lu4vgnMtL-ACc*T6@hMC2D6ntIOx01;~K|L+)wFpnLjqmCX>%x(|qe{>J?Sgrrqi8}`mLx%iSe zBChgOy2G(ftJQP+qt>;CRu?oV75kYp?V4^yJe?Z$lK6pPO&pC{hdm9U`M55=z|@DS#q*}YE)zH8tZz)j4&GnVtcN*A?O(e zeSOj>NM1NYEQ=WobAnwe)AO)3JG=&c50W_{=DZ}5W{r$t4;Xz&Zw0uO$okWucom`d z4G5zGCP=O+k@Ga;!^7Fyfvwou0X9E$%ya~iGm1P7zfPoZ9wV9KNR%Fa*hjNREybvH z#gM7y>JcSW9yKf1vAo@G!6&tH)H*PvvZNC+FWPA|aHEOGY#(QawA-aSMa6?dI;9+8 zM<>LI5k=k`>ps!>_N_YuZzLx<-|V#FcRJaDhzUgWu7r2ro22v#8aSNby^qIXLy`g- ztuKi7G|=}i<=WkJaE656JtEiAg!O+xY7T2zDg$V_ie`J973HAt=JhkE<{SM1$dZqF zK;1li?z<2@XAH$g&ArEQE*2ZZ7FgGn!Vpm3;*&?vUKpFccgq0YQ>4(qt;3hX`l=k9 zl=LX|Odl;Ho&G7ed)R`1%Xe)UEkmUDD5pF1C1{!Ac|fXTlKQ^^I-MaT8*1pmmzA!LY#U&ybi`g zZ6|gj5yW)ii9(1FnjQJQ$EMogvLl`qXLPmJbxGM?Z&!+i-7wfz-Tv85_cUbp%0ACt zn9#ax(_L-5O{v593Qx*YTD&kZJq|OSmR76cT=jUe7q(Pmy$iBzoWtl>TQDg4Qjs#X zKtt!8@Y*G-a#LLX%G!Y92kmKZt=XjFI73~m-d=4|5u5ZLqD^Qwd$_!yaIUXns-Re- z#2$3L3bLc}-E~_i)J%mQfl--dYIUjA?V)%+*+taV*J*dl^~I)Pv7TYu2Qj@+0&CrK zXqpdUQ89qK-gOUB<*UgU{otzsT@GlEMB8g;3j7BmZ+Clb#v4_uw$fgPmTrqq^gjHL z4kDEF-rLrQ=pv=8?LO$6$(uZZhDV^9KR9~$@i zv27(qH>!$`Qm=&>*Xo?}Y9$iA21skB-GuSX`bBT<{Q46vjtiOHNo_N7A&cpKB>cU33`nWme9Ri#a;}ho3|T* z^`3?&Oe{Qy%NFhp(>uaPAvmQ?fAs)4NW=b`;fRqzHz?!7NF+h63X@5?9h=naK!XK0 z!|wJfvPS40_XwLaN~3mo6?j5-V-cV1gsZ?+Hn!gMri_-rfej7&wg6skXu^LfPQfkC zsEru$82gkrse312v%z@uz_;M|@I_Y8{Vb-ot9Su)C#^zHv9K?kjlwPDufU`s=MYzj z_HNPM11xQv;}*urOtQIKpU7rBy(TEx~Vv>PnDIS(r~>mKnuE0}_~D zUr-u_!m}o>30j3mXjlb}ATS;B3Gp-lbDs%}V^}^$KkM*@G4143XHD@|G3}3kMB04! z5sODXacESfTDP$}mFcr)$A=B=$EXbx+J)Z*_AQllWo{f9==vv(NCXLyHAL01{acZ|%W6bHgfRv6VS8DfAFsv{4 zduOd@7zo{L&CKfYiR-?bC*nZNinU$d ze9Vk`tfF^}4Vi(DFkkTWBiTeI=-mW;)7}Hnv$ohDV$Hy{=Ee>f?UccJ#KQOnb}Eys z2HC0Pv74|=$!e#=9Lr!`<3^3kZQO=OcrF&*)-G%;;gH zF^mb{B`y~3;2o)>XLApFON`{}j5W}AcG5nyBi(vRh;V{G3 zUWP!%Y+&?YJ3i+&no&YVtBm3R83Vjioye6mA`Wpd9_zo#VA4hd8V;`o%!6+)8>Lh? z%W$Q-s|;%n14Xyw6_OInzD5G_G!qc8eP3i5T~McA>x0+R=VZX09^PA6WP!$f31qZ6 zAhHez*nlxOY@9F#75q%20PpvZhamB=_6H=~wH|YtQgSLREDX3Pr&K>P^;+ZfatEm! za2Uh2xP(*bjKTka!Pt!Yr(G9n_%ekR>}u%xO>uOf@AIV6>pbpi)Mej8>R*Sh<7U^8 z2);lvsvA|?O~g=WPf;Lf1w{=!&dz<-Zqy#=JZRwtLnIsJ&EDvdhxixpTlpf#C_31* zSNsMH?3_8U8ABo)^^LA%SOwB1Jg9RV)G(9`^sH*r6MCQ7Ej*#VW5nn-&~kiNsHPsN z@TR6Lq})Lj`G7%IZQbzY>vud#UU|$UB(!~2K@xhZic4~W#LUX^wYWFND8EI z(VvtsN8ioK@g2t|aGLLn(xCiCAuafhK=AD|#KGm0-_ZVyb|L*PR(=N~*eJjGZkYUj zI_*8ffEEk;DMiB~S?VDn`MbHH2kv7u2j~%6(f$I@`Y|k~1PwN(O!@OUY9$S~)$p27 zDy44%CNSblnxP^=irL+Y`;Iax$=CM1;vVZ&md3) zTakWSXGbn?7BN|R?C;M{f_K=%2J8cOWk$-Y#Xh+E`#?qpx? zWM9gCT0?TfhU^?dBx)!7awq%J@Cxl@U+!dIA~Xbb*UZS=$-dmlzTC;a+{wN)vmke} zFXhHRBY}xNfSv41nd}c|(oXiJm$5n|5p5^?5)t#m8xgaUeHrAk`l&1ii`mJ(+{wP& z$-bP~$-dmlzT`PBJK2{z*_X)m-pRhi2_!+H*(~!CcCs(!7GxtHy_0c??90Gy zHIVY?ZHn<8?_^&N* zUDE{i&eis+9F>2>xr5`A++{WlKvi1~vBC}APVW?tEONSTf4!^f@t}b_d8iJ~lyY1S zn%gIwcAw+Ko>FY&m`&f1COW%i|&Wcu%&en-M2k1m3th5E)>=&1cd)jv_!M~A0s zeWH}R$9o=#*mq9s0zE*kuI;Gp@qLHe@39@`&Q)&%KM*O&0vq=Gc;VbNdlzeCxLvf4 z321e?5+k$e`|i6T&9l)%)S@1wt9ULU_c}tFvD^*quniokP&3#WwvzTOQINocpT${Cl(G;n;Ij~I(lfz`ue z;tHxcUSZNksP45j;KCQqT^(S*s9-#1|WSac^}TYmn=h_9s!(z2?X6|6Rt#zzgm&+bq;oLoPuCr}$igsVEHxmM&>xtq(VcJImZl53) zBn%o2Y=x}z67b-`@#GKzJ@hgm0xdm3L`WDkBG}6J2od+)XFYcmY__@HaJxM*j!T{_ zh$9l~=OPmz9h|44zW@@;%x258xfCDrXoHhD#jv~H>+|{CY{vS?n%tBl{;KmyVXZ9w z#1H3k+;_6rTdl1@ob(qVV$QVPv)ODmh(`Ca+2{CY{`InX9vZ`f^6;4KJcOrzx2QyN zwsflHHZ!?Kxn9l{^94xWsyMYpcVz;L#nCGeoT5B4vzN{A0L?{tlg&uQS)L4v=k0#b zQ=yh^6?2*ST(&hgUzjgeBU=q@cu#Zwv7i_1E}O|^YsGS7zEN`PnR2db-}Ph$mdDYJ z0|Uy|<}mp$zQh-9j^49a+8TZnBx+9HBWW z3$vMkMv6RBu;&g8D^r-SH|8?+Tw#7LmnoL2vG)mdn9a>C9{Hg=_4=y-Nk_B=cL9PfOlDo?R|k^DT$k@Z~WNUbM-NG^Ic%+9_TU&DDJw!p1-8}5;t z?>JIub~|hGA5d+hn4Nd)&04Kc$~NX2rE2`{%Y>78o(Z?eBNPVFlF4Rs`Ff+Cohud! zbJ=QQ?J{*)=E@|B274^z>)B$XR&TaSbNQNE9ldNlA|ka&4Pv0jMt-i@oS&b|G>gSd zsZ^?tUHlT=n$+gx34Vj!m74SAaIjEpnQTBcZU&K0wOB%3K$C(b?z z1ei-ZTVTfDqHmcDV4*SBEM(kTer~QlUoX3*>f~D`7P6U3#)8^s+MAudmAc%MS=8=) zE?;ZTHS+TXpre+n?s}U7D*MENx=m{APX?-1EjyQOmUHvPf?JCjbDb4=+3nw} zo&UITDjMZlp+IKbNhQGqrlYS z8MoEUWm?%*xq9&QMUTY+C%=~}pC7S1o^%+B79 zf9YX-f?T8AC}f~M&AIh@u~ckTuR6KK*t1#oxrk3R;wa->dGW}4seVNM1JkAl=Mt`) ze9%0ii~3fSThF@nQaRt4%g)#9nL_pI_7)ut*f#1Yf};A#7O4%Y>qQ>JPV>q%qZ;$& ztXrCEwd$EhDO<=_ueo`PuI66EQ#tcEl{1@zCfQzuS^x(}13Gjq<7VouR%R~On9pSL zrRvju@`4Rz=LntQug>KL9t8GYYYr@IJ~s~_Gj6jnS9NZ?VEa-Ph6lH&I^tE(U?Ee? z&lNKHd?DKen&+z1_iWK%7|B~}r`b8FE#XY@MYXsFaGuZSa@l;oT*wzO(=a#E=Pp;z zMX4AsZr*h+JD<%#C!ep?A%*6vhhKiVx-O}s)HmW;W+f;Kpv}YMD%_UYg4mTg`GkSFAqcvW=6mmW>_O z>T`3oW~rFVm$5zzrRw#UtwZUy+c1-bLZdcUXqB^&GNl~6KsQ{xs&WCuX36}94>L30 ztTi&3M!j5XG)tvib>_@vqMvNuJLG$j->eu|C2$Fp^O<6^G*{0Q3(aD6_VO{@P`?{z zwp^Q^gGF4(k=FBxZ7%VP3Bs+@z*?4v`9v*Z>k*SqSF&Jop7x zRK8iOW`02`Q@KlXRp9s^c;IwgZ&7*qXJ_xw50no1#MCQ@;X*#2fhJqbHye#iHTzx# z;H7yH!T`#UPynCQI-eML4Yx4oLYBaXnaR7*d~+A?0nP)cBEm`V@nka;R^D|;7lSJa zR!g?osOM{#twJ^b;)^B~_E2ENSN=0F_4A;@8csmOnunVzH&-pZ?2;OulaVm#@|RZw z&DUFn`8>oO+zi=fsa~kgT{>n!NIqudbqF)1LajDeL`b1rnk&r}n$_aP%W+~RTkt7X z4L~_bJt`hHC^+;Qg;vvTG%z8>My^`Ac#BzfIcIjsAxZoVJ`8K)nJf&Qxk4R0qg2L{ zu9lxnr=+$Gok|i6A-9~FFT3@kJ6~=h0+E}q&bKa_IyN)uhUqFrx0S6GvZYcvo1b&b znd*%f?||N{pKRXyH%ETbD%Kmd>hX>7eZO(>R-zpXgj1=7KI} z3UjR{*nGa8fsvT6-gNQduT47~>g+C;3K>}aZZlUeW}Ah2^_ds%!P>N^T*1etvLg`0 zhF*=YgAO3J>ADCb$3$-B@buEd=5?)Fr4bM_dwOg zm&3Y?QpdqZ%3946^IMRvwqDozUD&J5>>TK@1dnN>2|wU`wes8xR?Wg;>wN{Sw}{Wv zp`B8(1ZkR?hguA_4FSI}<$*;z-(8e&{ooV=nc(~0E2_KhbEc#Xt;~MUl&(H|3ozyv z)>qalbn?x4cK1BoYnf8MP^uMLZlm6;KKGU_8pvjE<;N=e6=}7T`J7rr?$v4yBdNQ< zNG*dCAIp#ujYjom1)qBlYk2V8l8|OJgxIam+M*+c>%agnoyx=JY$C7;+qa3H=Bv+} zlr1rE)LTS*&rfPk0B?TiVrGMq)bJi)3@upljd}wMqtqzYvbE|9c6*Kb{rvERj4fk8 zvfJAx)h&%V_I&$jtBHAHDDy`aE;zz)#2ll{x9T8-dc9t9=b&U)UzlWbL^o#qMG4$U zvbckf85gA2{zoTp(`rf^2oU_(RB%h8k(TX?_l6&K+b2);doS6=rwmllenQX93a<#!J!&+Hi zsk_}K5x^s3TzP>>Z1DmKWy>dtRf(ljKez?`WOEB33a0$M0C7dl zYmk(!YI`3O3Ks{%Ela!QV{`6LUlD%f&-3!Ad_kjZMO~6(u1?6OoJGFrsD1{+7i&pf ziWG1+@>T(h_V{;G^3HI@_mYOsv(N06#v+x{^)Yz~y!YHQ$sPn~bMai;U2dKo)4oZN z?mbB!3cIKdC_gtUZ*V;FnU||e?reL-gna59GJo$yaC`bHF`0F@RcOtXpvV<7^Tqk< zeHWixv9-M`6)fd@LLxyqhe&7<@)%hU^9Zxtf7!b6CljNA13HTwk@|eC1Qt_rtLHCX z;of>QN^gTKsFmG(X}*D!jY6wlC{`a3m#qu(6bvF)F3urTUxfTBw~+NxeWhq@v0N@> z8Jpp1-YWD6NkTUZ%@xR$Fo;HYZNA%F@WVfFQ5D&pGgF;iUOuxj zTh1b)Q7FSdUCi^pd?E8j@p@`7^GbnHs)tHfo}Il-rY$q|?GEOlnL5hwoJ=^cx(Ka6 zPx#T*v$zVXqIz}?%8Y!uxGvuk&SI_DY}OHFLdF-ud(}5Rwcs?0P-*6w0al#PArI$g zpHgt#BH}Xhb8a(_Y|BiuUVXE8vs5=TDlbUQ7BpXcuxWPoh4NRS{0EOzw`s;;$>+cV zGo^B~-e{Ez)wlc;fN8GSDrO)vi}U$<&TUrT`qaaeug$y7g6qPEjU-0onZ50)hpE`g zgG(aj=jQYEB0@KBf9hd^*#NU@K2yse?JI+*;5(jrm|#cEHF58c2315$b2P}R0|VZ5b%LbtjyZi1Tp37R$`PUu1VcT)<*0K@~(+{5(X!FNqgiESRBd1>ghItvm zjk)Uk#ScHB_6oEyF>y#AX)sq3(Y*Tnd^TVGfVk}mH8>~zsb~>u_IcOOpHPcs&&fwHGr4jjQ){_^wvYiKe@JYV#2T8F5FY=(&dy~gVIT^_9HPR8U<_Lm zmKv;Sr}V-Dbm>C3E}FI!LQ*cVvhaz#-+e&8X(0p>F=5rT^kmM=bWS?|g_ca5o}sWn z-9bX9nui$J4uEm264ggQ7j1cf@8xo*?s#BpT8>O((AFsZQ2eC{uPTlcJZvq*TY6I{ z_tsa2O5C^`L1D7*f~--&qg?Nla4A~cTps4Y^SiEPqn+=oUK%_}Lw8K0Nohz)d6q^2 zcQ4Ohq@{mfK=0Ts%UfTirElB3{3Z^$B22?m#~j^+@qCnFyUr1ojM>Qx3{( zzN8+)L6M~WU0fsJM{0{EYd#;54|SJ;RA)G+LAd3pIN(WLjav0^b0jJkE7xJQo<)=4 zoIfg%y{mbCTUm1<%Dy%kCdbyfhs&^i;xizw>Gub12FW%oWhm>ka@OPn&3Y!54&rL3 Y33aArxW+J>#!;4c>iK9mF~Hq_0sZB58vp { diff --git a/crates/wit/tests/support/mod.rs b/crates/wit/tests/support/mod.rs index 1c7785e5..696c2f99 100644 --- a/crates/wit/tests/support/mod.rs +++ b/crates/wit/tests/support/mod.rs @@ -13,7 +13,7 @@ use std::{ use tempfile::TempDir; use tokio::task::JoinHandle; use tokio_util::sync::CancellationToken; -use toml_edit::Document; +use toml_edit::DocumentMut; use warg_crypto::signing::PrivateKey; use warg_protocol::operator::NamespaceState; use warg_server::{policy::content::WasmContentPolicy, Config, Server}; @@ -177,7 +177,10 @@ impl Project { cmd } - pub fn update_manifest(&self, f: impl FnOnce(Document) -> Result) -> Result<()> { + pub fn update_manifest( + &self, + f: impl FnOnce(DocumentMut) -> Result, + ) -> Result<()> { let manifest_path = self.root.join("wit.toml"); let manifest = fs::read_to_string(&manifest_path)?; fs::write(manifest_path, f(manifest.parse()?)?.to_string())?; diff --git a/src/commands/add.rs b/src/commands/add.rs index 27f9945b..794866f4 100644 --- a/src/commands/add.rs +++ b/src/commands/add.rs @@ -17,7 +17,7 @@ use std::{ fs, path::{Path, PathBuf}, }; -use toml_edit::{value, Document, InlineTable, Item, Table, Value}; +use toml_edit::{value, DocumentMut, InlineTable, Item, Table, Value}; use warg_protocol::registry::PackageName; /// Add a dependency for a WebAssembly component @@ -169,7 +169,7 @@ impl AddCommand { ) })?; - let mut document: Document = manifest.parse().with_context(|| { + let mut document: DocumentMut = manifest.parse().with_context(|| { format!( "failed to parse manifest file `{path}`", path = pkg.manifest_path diff --git a/src/commands/new.rs b/src/commands/new.rs index d74e37da..d8266d42 100644 --- a/src/commands/new.rs +++ b/src/commands/new.rs @@ -14,7 +14,7 @@ use std::{ path::{Path, PathBuf}, process::Command, }; -use toml_edit::{table, value, Document, Item, Table, Value}; +use toml_edit::{table, value, DocumentMut, Item, Table, Value}; use url::Url; const WIT_BINDGEN_RT_CRATE: &str = "wit-bindgen-rt"; @@ -233,7 +233,7 @@ impl NewCommand { ) })?; - let mut doc: Document = manifest.parse().with_context(|| { + let mut doc: DocumentMut = manifest.parse().with_context(|| { format!( "failed to parse manifest file `{path}`", path = manifest_path.display() diff --git a/src/config.rs b/src/config.rs index 18caa8d9..3c880c2f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -26,7 +26,7 @@ use semver::Version; use std::fmt; use std::str::FromStr; use std::{collections::BTreeMap, fmt::Display, path::PathBuf}; -use toml_edit::Document; +use toml_edit::DocumentMut; /// Represents a cargo package specifier. /// @@ -68,7 +68,7 @@ impl CargoPackageSpec { /// Loads Cargo.toml in the current directory, attempts to find the matching package from metadata. pub fn find_current_package_spec(metadata: &Metadata) -> Option { let current_manifest = std::fs::read_to_string("Cargo.toml").ok()?; - let document: Document = current_manifest.parse().ok()?; + let document: DocumentMut = current_manifest.parse().ok()?; let name = document["package"]["name"].as_str()?; let version = metadata .packages diff --git a/src/lib.rs b/src/lib.rs index 91ad082f..9148fe70 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,6 +30,7 @@ use std::{ process::{Command, Stdio}, time::{Duration, SystemTime}, }; +use tempfile::NamedTempFile; use warg_client::storage::{ContentStorage, PublishEntry, PublishInfo}; use warg_crypto::signing::PrivateKey; use warg_protocol::registry::PackageName; @@ -386,6 +387,9 @@ fn componentize_artifacts( let cwd = env::current_dir().with_context(|| "couldn't get the current directory of the process")?; + // Acquire the lock file to ensure any other cargo-component process waits for this to complete + let _file_lock = acquire_lock_file_ro(config.terminal(), cargo_metadata)?; + for artifact in artifacts { for path in artifact .filenames @@ -410,7 +414,7 @@ fn componentize_artifacts( ArtifactKind::Componentizable(bytes) => { componentize( config, - metadata, + (cargo_metadata, metadata), import_name_map .get(&package.name) .expect("package already processed"), @@ -914,7 +918,7 @@ fn adapter_bytes( fn componentize( config: &Config, - metadata: &ComponentMetadata, + (cargo_metadata, metadata): (&Metadata, &ComponentMetadata), import_name_map: &HashMap, artifact: &Artifact, path: &Path, @@ -983,12 +987,30 @@ fn componentize( ) })?; - fs::write(path, component).with_context(|| { + // To make the write atomic, first write to a temp file and then rename the file + let temp_dir = cargo_metadata.target_directory.join("tmp"); + fs::create_dir_all(&temp_dir) + .with_context(|| format!("failed to create directory `{temp_dir}`"))?; + + let mut file = NamedTempFile::new_in(&temp_dir) + .with_context(|| format!("failed to create temp file in `{temp_dir}`"))?; + + use std::io::Write; + file.write_all(&component).with_context(|| { format!( "failed to write output component `{path}`", + path = file.path().display() + ) + })?; + + file.into_temp_path().persist(path).with_context(|| { + format!( + "failed to persist output component `{path}`", path = path.display() ) - }) + })?; + + Ok(()) } /// Represents options for a publish operation. diff --git a/tests/support/mod.rs b/tests/support/mod.rs index 779510df..e92d8b74 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -13,7 +13,7 @@ use std::{ use tempfile::TempDir; use tokio::task::JoinHandle; use tokio_util::sync::CancellationToken; -use toml_edit::Document; +use toml_edit::DocumentMut; use warg_client::{ storage::{ContentStorage, PublishEntry, PublishInfo}, FileSystemClient, @@ -264,13 +264,16 @@ impl Project { Ok(self) } - pub fn read_manifest(&self) -> Result { + pub fn read_manifest(&self) -> Result { let manifest_path = self.root.join("Cargo.toml"); let manifest_text = fs::read_to_string(manifest_path)?; Ok(manifest_text.parse()?) } - pub fn update_manifest(&self, f: impl FnOnce(Document) -> Result) -> Result<()> { + pub fn update_manifest( + &self, + f: impl FnOnce(DocumentMut) -> Result, + ) -> Result<()> { let manifest = self.read_manifest()?; let manifest_path = self.root.join("Cargo.toml"); fs::write(manifest_path, f(manifest)?.to_string())?; From 40320a9e3a9f1d73f7d2d1831a7de87724ace7e9 Mon Sep 17 00:00:00 2001 From: Peter Huene Date: Mon, 15 Apr 2024 14:45:17 -0700 Subject: [PATCH 2/4] Bump version to 0.11.0. (#271) --- Cargo.lock | 6 +++--- Cargo.toml | 4 ++-- crates/wit/Cargo.toml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d0ce08fd..8630cf70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -540,7 +540,7 @@ dependencies = [ [[package]] name = "cargo-component" -version = "0.10.1" +version = "0.11.0" dependencies = [ "anyhow", "assert_cmd", @@ -588,7 +588,7 @@ dependencies = [ [[package]] name = "cargo-component-core" -version = "0.10.1" +version = "0.11.0" dependencies = [ "anyhow", "clap", @@ -4440,7 +4440,7 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wit" -version = "0.9.1" +version = "0.10.0" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 163ed91f..5604333a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ repository = { workspace = true } readme = "README.md" [workspace.package] -version = "0.10.1" +version = "0.11.0" edition = "2021" authors = ["Peter Huene "] license = "Apache-2.0 WITH LLVM-exception" @@ -68,7 +68,7 @@ wasmprinter = { workspace = true } members = ["crates/core", "crates/wit"] [workspace.dependencies] -cargo-component-core = { path = "crates/core", version = "0.10.1" } +cargo-component-core = { path = "crates/core", version = "0.11.0" } warg-protocol = "0.4.1" warg-crypto = "0.4.1" warg-client = "0.4.1" diff --git a/crates/wit/Cargo.toml b/crates/wit/Cargo.toml index e46244e8..faa71795 100644 --- a/crates/wit/Cargo.toml +++ b/crates/wit/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "wit" # This tool has an independent version from `cargo-component`. -version = "0.9.1" +version = "0.10.0" description = "A tool for building and publishing WIT packages to a registry." edition = { workspace = true } authors = { workspace = true } From e1715b02ed5c41a4242d1a480f94b004083c9363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Youn=20M=C3=A9lois?= Date: Wed, 17 Apr 2024 20:33:10 +0200 Subject: [PATCH 3/4] feat: add support for every other settings from wit-bindgen (#273) https://github.com/bytecodealliance/wit-bindgen/blob/90a1e547e1a4515a5769f5d157ffc519c5d851a3/crates/rust/src/lib.rs#L87-L189 --- src/bindings.rs | 16 +++++++++++++++- src/metadata.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/bindings.rs b/src/bindings.rs index 63448d0b..c12d19e4 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -161,7 +161,21 @@ impl<'a> BindingsGenerator<'a> { std_feature: settings.std_feature, runtime_path: Some("wit_bindgen_rt".to_string()), bitflags_path: Some("wit_bindgen_rt::bitflags".to_string()), - ..Default::default() + raw_strings: settings.raw_strings, + skip: settings.skip.clone(), + stubs: settings.stubs, + export_prefix: settings.export_prefix.clone(), + with: settings + .with + .iter() + .map(|(key, value)| (key.clone(), value.clone())) + .collect(), + type_section_suffix: settings.type_section_suffix.clone(), + disable_run_ctors_once_workaround: settings.disable_run_ctors_once_workaround, + default_bindings_module: settings.default_bindings_module.clone(), + export_macro_name: settings.export_macro_name.clone(), + pub_export_macro: settings.pub_export_macro, + generate_unused_types: settings.generate_unused_types, }; let mut files = Files::default(); diff --git a/src/metadata.rs b/src/metadata.rs index 851ef7b2..486279bd 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -69,6 +69,38 @@ pub struct Bindings { /// If true, code generation should qualify any features that depend on /// `std` with `cfg(feature = "std")`. pub std_feature: bool, + /// If true, code generation should pass borrowed string arguments as + /// `&[u8]` instead of `&str`. Strings are still required to be valid + /// UTF-8, but this avoids the need for Rust code to do its own UTF-8 + /// validation if it doesn't already have a `&str` + pub raw_strings: bool, + /// Names of functions to skip generating bindings for. + pub skip: Vec, + /// If true, generate stub implementations for any exported functions, + /// interfaces, and/or resources. + pub stubs: bool, + /// Optionally prefix any export names with the specified value. + /// + /// This is useful to avoid name conflicts when testing. + pub export_prefix: Option, + /// Remapping of interface names to rust module names. + pub with: HashMap, + /// Add the specified suffix to the name of the custome section containing + /// the component type. + pub type_section_suffix: Option, + /// Disable a workaround used to prevent libc ctors/dtors from being invoked + /// too much. + pub disable_run_ctors_once_workaround: bool, + /// Changes the default module used in the generated `export!` macro to + /// something other than `self`. + pub default_bindings_module: Option, + /// Alternative name to use for the `export!` macro if one is generated. + pub export_macro_name: Option, + /// Ensures that the `export!` macro will be defined as `pub` so it is a + /// candidate for being exported outside of the crate. + pub pub_export_macro: bool, + /// Whether to generate unused structures, not generated by default (false) + pub generate_unused_types: bool, } impl Default for Bindings { @@ -78,6 +110,17 @@ impl Default for Bindings { ownership: Default::default(), derives: Default::default(), std_feature: false, + raw_strings: Default::default(), + skip: Default::default(), + stubs: Default::default(), + export_prefix: Default::default(), + with: Default::default(), + type_section_suffix: Default::default(), + disable_run_ctors_once_workaround: Default::default(), + default_bindings_module: Default::default(), + export_macro_name: Default::default(), + pub_export_macro: Default::default(), + generate_unused_types: Default::default(), } } } From db4277ef524de14fc7e76d167ae7af744fddc2fc Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 17 Apr 2024 12:49:56 -0600 Subject: [PATCH 4/4] fix kebab case issue (#274) Signed-off-by: Brian H --- src/bindings.rs | 3 ++- tests/build.rs | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/bindings.rs b/src/bindings.rs index c12d19e4..b9b646cf 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -7,6 +7,7 @@ use crate::{ }; use anyhow::{bail, Context, Result}; use cargo_component_core::registry::DecodedDependency; +use heck::ToKebabCase; use indexmap::{IndexMap, IndexSet}; use semver::Version; use std::{ @@ -445,7 +446,7 @@ impl<'a> BindingsGenerator<'a> { fn target_empty_world(resolution: &PackageDependencyResolution) -> (Resolve, WorldId) { let mut resolve = Resolve::default(); - let name = resolution.metadata.name.clone(); + let name = resolution.metadata.name.to_kebab_case(); let pkg_name = PackageName { namespace: "component".to_string(), name: name.clone(), diff --git a/tests/build.rs b/tests/build.rs index 638aaf00..2999b9bd 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -27,6 +27,21 @@ fn it_builds_debug() -> Result<()> { Ok(()) } +#[test] +fn it_builds_a_bin_project_with_snake_case() -> Result<()> { + let project = Project::new_bin("hello_world")?; + + project + .cargo_component("build --release") + .assert() + .stderr(contains("Finished release [optimized] target(s)")) + .success(); + + validate_component(&project.release_wasm("hello_world"))?; + + Ok(()) +} + #[test] fn it_builds_a_bin_project() -> Result<()> { let project = Project::new_bin("foo")?;