diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 18d909e8b..e64b4c84b 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -12,6 +12,7 @@ concurrency: env: ARTIFACT_RETENTION_DAYS_FOR_TEST_WASMS: 7 + SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2: 1 defaults: run: diff --git a/.github/workflows/test-with-openzeppelin-stellar-contracts.yml b/.github/workflows/test-with-openzeppelin-stellar-contracts.yml index dc8c16a04..a2f132c5c 100644 --- a/.github/workflows/test-with-openzeppelin-stellar-contracts.yml +++ b/.github/workflows/test-with-openzeppelin-stellar-contracts.yml @@ -36,6 +36,7 @@ jobs: fail-fast: false matrix: working-directory: ${{ fromJSON(needs.collect-crates.outputs.dirs) }} + experimental_spec_shaking_v2: [true, false] defaults: run: working-directory: stellar-contracts/${{ matrix.working-directory }} @@ -76,6 +77,15 @@ jobs: sed -i 's|'"$crate"' = { \(.*\)version = "[^"]*"\(.*\)|'"$crate"' = { \1path = "'"$rel_path"'" \2|g' Cargo.toml done + - name: Enable experimental_spec_shaking_v2 feature + if: matrix.experimental_spec_shaking_v2 + working-directory: stellar-contracts + run: | + # Add feature to path-patched entries with existing features + sed -i '/soroban-sdk = {.*path = /s|features = \[|features = ["experimental_spec_shaking_v2", |' Cargo.toml + # Add features field to path-patched entries without features + sed -i '/soroban-sdk = {.*path = /{/features/!s| }|, features = ["experimental_spec_shaking_v2"] }|}' Cargo.toml + - name: Diff run: (! git diff --exit-code) || (echo 'A diff is expected'; exit 1) @@ -89,7 +99,7 @@ jobs: - name: Set artifact name if: steps.check-if-contract.outputs.is-a-contract == 'true' id: artifact-name - run: echo "name=wasm-$(echo ${{ matrix.working-directory }} | sed 's/\//-/g')" | tee -a $GITHUB_OUTPUT + run: echo "name=wasm-$(echo ${{ matrix.working-directory }} | sed 's/\//-/g')${{ matrix.experimental_spec_shaking_v2 && '-spec-shaking-v2' || '' }}" | tee -a $GITHUB_OUTPUT - name: Upload WASM artifacts if: steps.check-if-contract.outputs.is-a-contract == 'true' diff --git a/.github/workflows/test-with-soroban-examples.yml b/.github/workflows/test-with-soroban-examples.yml index 2f1002879..6c05d3170 100644 --- a/.github/workflows/test-with-soroban-examples.yml +++ b/.github/workflows/test-with-soroban-examples.yml @@ -41,6 +41,7 @@ jobs: fail-fast: false matrix: working-directory: ${{ fromJSON(needs.collect-examples.outputs.dirs) }} + experimental_spec_shaking_v2: [true, false] # Exclude examples that depend on crates.io packages that transitively # depend on soroban-sdk (e.g. soroban-poseidon). Cargo does not provide # a way to override the version of soroban-sdk required as a transitive @@ -102,6 +103,17 @@ jobs: done done + - name: Enable experimental_spec_shaking_v2 feature + if: matrix.experimental_spec_shaking_v2 + working-directory: soroban-examples + run: | + find . -name Cargo.toml | while read -r file; do + # Add feature to path-patched entries with existing features + sed -i '/soroban-sdk = {.*path = /s|features = \[|features = ["experimental_spec_shaking_v2", |' "$file" + # Add features field to path-patched entries without features + sed -i '/soroban-sdk = {.*path = /{/features/!s| }|, features = ["experimental_spec_shaking_v2"] }|}' "$file" + done + - name: Diff run: (! git diff --exit-code) || (echo 'A diff is expected'; exit 1) @@ -113,7 +125,7 @@ jobs: - name: Set artifact name id: artifact-name - run: echo "name=wasm-$(echo ${{ matrix.working-directory }} | sed 's/\//-/g')" | tee -a $GITHUB_OUTPUT + run: echo "name=wasm-$(echo ${{ matrix.working-directory }} | sed 's/\//-/g')${{ matrix.experimental_spec_shaking_v2 && '-spec-shaking-v2' || '' }}" | tee -a $GITHUB_OUTPUT - name: Upload WASM artifacts uses: actions/upload-artifact@v4 diff --git a/Makefile b/Makefile index 8395b3c9a..55a881025 100644 --- a/Makefile +++ b/Makefile @@ -30,21 +30,9 @@ build: build-libs build-test-wasms build-libs: fmt cargo hack build --release $(foreach c,$(LIB_CRATES),--package $(c)) -# First, build crate used as WASM deps to other test crates. -# Then, build `test_spec_shaking_v2` without the spec shaking v2 env var to verify -# that it falls back to spec_shaking_v1 behaviour. -# Then, build the test wasms with MSRV by default, with some meta disabled for -# binary stability for tests. build-test-wasms: fmt - SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2=1 \ - RUSTUP_TOOLCHAIN=$(TEST_CRATES_RUSTUP_TOOLCHAIN) \ - RUSTFLAGS='--cfg soroban_sdk_internal_no_rssdkver_meta' \ - cargo build --release --target wasm32v1-none --package test_spec_import - RUSTUP_TOOLCHAIN=$(TEST_CRATES_RUSTUP_TOOLCHAIN) \ - RUSTFLAGS='--cfg soroban_sdk_internal_no_rssdkver_meta' \ - cargo build --release --target wasm32v1-none --package test_spec_shaking_v2 - cp target/wasm32v1-none/release/test_spec_shaking_v2.wasm \ - target/wasm32v1-none/release/test_spec_shaking_v2_no_env.wasm + # Build the test wasms with MSRV by default, with some meta disabled for + # binary stability for tests. SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2=1 \ RUSTUP_TOOLCHAIN=$(TEST_CRATES_RUSTUP_TOOLCHAIN) \ RUSTFLAGS='--cfg soroban_sdk_internal_no_rssdkver_meta' \ diff --git a/soroban-meta/src/tests.rs b/soroban-meta/src/tests.rs index 6cd77f537..15053f0c9 100644 --- a/soroban-meta/src/tests.rs +++ b/soroban-meta/src/tests.rs @@ -12,7 +12,7 @@ fn test_from_wasm() { ScMetaEntry::ScMetaV0(v0) => v0.key.to_string(), }) .collect::>(); - assert_eq!(keys, ["rsver", "rssdk_spec_shaking"]); + assert_eq!(keys, ["rsver"]); } #[test] @@ -58,5 +58,5 @@ fn test_multiple_metadata_sections() { ScMetaEntry::ScMetaV0(v0) => v0.key.to_string(), }) .collect::>(); - assert_eq!(keys, ["rsver", "rssdk_spec_shaking", "mykey"]); + assert_eq!(keys, ["rsver", "mykey"]); } diff --git a/soroban-sdk-macros/src/derive_enum.rs b/soroban-sdk-macros/src/derive_enum.rs index 6682899da..4e590e0a4 100644 --- a/soroban-sdk-macros/src/derive_enum.rs +++ b/soroban-sdk-macros/src/derive_enum.rs @@ -12,10 +12,7 @@ use stellar_xdr::{ ScSpecUdtUnionCaseVoidV0, ScSpecUdtUnionV0, StringM, VecM, WriteXdr, SCSYMBOL_LIMIT, }; -use crate::{ - doc::docs_from_attrs, map_type::map_type, shaking, spec_shaking_v2_enabled, - DEFAULT_XDR_RW_LIMITS, -}; +use crate::{doc::docs_from_attrs, map_type::map_type, shaking, DEFAULT_XDR_RW_LIMITS}; pub fn derive_type_enum( path: &Path, @@ -184,9 +181,9 @@ pub fn derive_type_enum( None }; - // SpecShakingMarker impl - only generated when spec is true and - // spec shaking v2 is enabled. - let spec_shaking_impl = if spec_shaking_v2_enabled() { + // SpecShakingMarker impl - only generated when spec is true and the + // experimental_spec_shaking_v2 feature is enabled. + let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { spec_xdr.as_ref().map(|spec_xdr| { // Flatten all variant field types for shaking calls, deduplicating // to avoid redundant calls for types that appear in multiple variants. diff --git a/soroban-sdk-macros/src/derive_enum_int.rs b/soroban-sdk-macros/src/derive_enum_int.rs index e1a5ef421..1b74ab229 100644 --- a/soroban-sdk-macros/src/derive_enum_int.rs +++ b/soroban-sdk-macros/src/derive_enum_int.rs @@ -10,7 +10,7 @@ use syn::{ use stellar_xdr::{ScSpecEntry, ScSpecUdtEnumCaseV0, WriteXdr}; -use crate::{doc::docs_from_attrs, shaking, spec_shaking_v2_enabled, DEFAULT_XDR_RW_LIMITS}; +use crate::{doc::docs_from_attrs, shaking, DEFAULT_XDR_RW_LIMITS}; // TODO: Add conversions to/from ScVal types. @@ -103,9 +103,9 @@ pub fn derive_type_enum_int( None }; - // SpecShakingMarker impl - only generated when spec is true and - // spec shaking v2 is enabled. - let spec_shaking_impl = if spec_shaking_v2_enabled() { + // SpecShakingMarker impl - only generated when spec is true and the + // experimental_spec_shaking_v2 feature is enabled. + let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { spec_xdr.as_ref().map(|spec_xdr| { shaking::generate_marker_impl( path, diff --git a/soroban-sdk-macros/src/derive_error_enum_int.rs b/soroban-sdk-macros/src/derive_error_enum_int.rs index fafdc3f72..ac19a0533 100644 --- a/soroban-sdk-macros/src/derive_error_enum_int.rs +++ b/soroban-sdk-macros/src/derive_error_enum_int.rs @@ -7,7 +7,7 @@ use syn::{ ext::IdentExt as _, spanned::Spanned, Attribute, DataEnum, Error, ExprLit, Ident, Lit, Path, }; -use crate::{doc::docs_from_attrs, shaking, spec_shaking_v2_enabled, DEFAULT_XDR_RW_LIMITS}; +use crate::{doc::docs_from_attrs, shaking, DEFAULT_XDR_RW_LIMITS}; pub fn derive_type_error_enum_int( path: &Path, @@ -100,9 +100,9 @@ pub fn derive_type_error_enum_int( None }; - // SpecShakingMarker impl - only generated when spec is true and - // spec shaking v2 is enabled. - let spec_shaking_impl = if spec_shaking_v2_enabled() { + // SpecShakingMarker impl - only generated when spec is true and the + // experimental_spec_shaking_v2 feature is enabled. + let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { spec_xdr.as_ref().map(|spec_xdr| { shaking::generate_marker_impl( path, diff --git a/soroban-sdk-macros/src/derive_event.rs b/soroban-sdk-macros/src/derive_event.rs index 0918f44a0..a8a978406 100644 --- a/soroban-sdk-macros/src/derive_event.rs +++ b/soroban-sdk-macros/src/derive_event.rs @@ -1,6 +1,6 @@ use crate::{ attribute::remove_attributes_from_item, default_crate_path, doc::docs_from_attrs, - map_type::map_type, shaking, spec_shaking_v2_enabled, symbol, DEFAULT_XDR_RW_LIMITS, + map_type::map_type, shaking, symbol, DEFAULT_XDR_RW_LIMITS, }; use darling::{ast::NestedMeta, Error, FromMeta}; use heck::ToSnakeCase; @@ -202,7 +202,7 @@ fn derive_impls(args: &ContractEventArgs, input: &DeriveInput) -> Result::spec_shaking_marker(); }) } else { None @@ -220,9 +220,9 @@ fn derive_impls(args: &ContractEventArgs, input: &DeriveInput) -> Result Path { parse_str("soroban_sdk").unwrap() } -/// Returns true if spec shaking v2 should be used. Requires both the -/// `experimental_spec_shaking_v2` feature to be enabled on the macro crate AND -/// the `SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2` env var to be set -/// at the time the macro expands (i.e. when the consumer crate is compiled). -fn spec_shaking_v2_enabled() -> bool { - cfg!(feature = "experimental_spec_shaking_v2") - && option_env!("SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2").is_some() -} - #[derive(Debug, FromMeta)] struct ContractSpecArgs { name: Type, @@ -437,10 +428,10 @@ pub fn contracttype(metadata: TokenStream, input: TokenStream) -> TokenStream { } // If the export argument has a value, do as it instructs regarding // exporting. If it does not have a value, export if the type is pub, - // or always export when spec shaking v2 is enabled. + // or always export when spec shaking is enabled. let gen_spec = if let Some(export) = args.export { export - } else if spec_shaking_v2_enabled() { + } else if cfg!(feature = "experimental_spec_shaking_v2") { true } else { matches!(input.vis, Visibility::Public(_)) @@ -511,10 +502,10 @@ pub fn contracterror(metadata: TokenStream, input: TokenStream) -> TokenStream { let attrs = &input.attrs; // If the export argument has a value, do as it instructs regarding // exporting. If it does not have a value, export if the type is pub, - // or always export when spec shaking v2 is enabled. + // or always export when spec shaking is enabled. let gen_spec = if let Some(export) = args.export { export - } else if spec_shaking_v2_enabled() { + } else if cfg!(feature = "experimental_spec_shaking_v2") { true } else { matches!(input.vis, Visibility::Public(_)) @@ -700,9 +691,10 @@ pub fn contractimport(metadata: TokenStream) -> TokenStream { } }; - // Generate with options based on whether spec shaking v2 is enabled + // Generate with options based on whether the experimental_spec_shaking_v2 + // feature is enabled. let opts = GenerateOptions { - export: spec_shaking_v2_enabled(), + export: cfg!(feature = "experimental_spec_shaking_v2"), }; match generate_from_wasm_with_options(&wasm, &args.file, args.sha256.as_deref(), &opts) { Ok(code) => quote! { #code }, diff --git a/soroban-sdk/Cargo.toml b/soroban-sdk/Cargo.toml index f9c76a8be..dec42035c 100644 --- a/soroban-sdk/Cargo.toml +++ b/soroban-sdk/Cargo.toml @@ -64,7 +64,6 @@ ark-bls12-381 = { version = "0.5", default-features = false, features = ["curve" ark-ff = { version = "0.5", default-features = false } [features] -default = ["experimental_spec_shaking_v2"] alloc = [] testutils = ["soroban-sdk-macros/testutils", "soroban-env-host/testutils", "soroban-ledger-snapshot/testutils", "dep:ed25519-dalek", "dep:arbitrary", "dep:derive_arbitrary", "dep:ctor", "dep:soroban-ledger-snapshot"] experimental_spec_shaking_v2 = ["soroban-sdk-macros/experimental_spec_shaking_v2"] diff --git a/soroban-sdk/build.rs b/soroban-sdk/build.rs index 0fa91f946..807801080 100644 --- a/soroban-sdk/build.rs +++ b/soroban-sdk/build.rs @@ -21,23 +21,25 @@ pub fn main() { } // When the experimental_spec_shaking_v2 feature is enabled, check for an env var from the - // build system (like Stellar CLI) that indicates it supports spec optimization using markers. - // If the env var is set, enable spec_shaking_v2 cfg for the crate. If not, fall back to - // spec shaking v1 behavior and emit a warning on wasm targets. - println!("cargo::rustc-check-cfg=cfg(spec_shaking_v2)"); + // build system (Stellar CLI) that indicates it supports spec optimization using markers. if std::env::var("CARGO_FEATURE_EXPERIMENTAL_SPEC_SHAKING_V2").is_ok() { let env_name = "SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2"; println!("cargo::rerun-if-env-changed={env_name}"); - if std::env::var(env_name).is_ok() { - println!("cargo::rustc-cfg=spec_shaking_v2"); - } else if std::env::var("CARGO_CFG_TARGET_FAMILY").unwrap_or_default() == "wasm" { - println!( - "cargo::warning=soroban-sdk: feature 'experimental_spec_shaking_v2' was enabled but not used, \ - because this build was not started by a tool that supports spec shaking v2. \ - Falling back to spec shaking v1. To use v2, use a build tool that supports \ - spec shaking v2 such as stellar-cli v25.2.0+ with `stellar contract build`. \ - To manually use v2 without a supporting build tool, set the env var \ - SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2 before building." + if std::env::var(env_name).is_err() + && std::env::var("CARGO_CFG_TARGET_FAMILY").unwrap_or_default() == "wasm" + { + panic!( + "\ +\n\nerror: soroban-sdk feature 'experimental_spec_shaking_v2' requires stellar-cli v25.2.0+\ +\n\ +\nThe soroban-sdk 'experimental_spec_shaking_v2' feature requires building\ +\nwith `stellar contract build` from stellar-cli v25.2.0 or newer.\ +\n\ +\nTo fix, either:\ +\n - Build with `stellar contract build` using stellar-cli v25.2.0+\ +\n - Disable the feature by removing 'experimental_spec_shaking_v2' from\ +\n the soroban-sdk import features list in Cargo.toml.\ +\n" ); } } diff --git a/soroban-sdk/src/_features.rs b/soroban-sdk/src/_features.rs index 718bc55ea..45d97c87d 100644 --- a/soroban-sdk/src/_features.rs +++ b/soroban-sdk/src/_features.rs @@ -26,19 +26,12 @@ //! [`Address::from_payload`][crate::Address::from_payload]) that are easy to //! misuse. Use with care. //! -//! ## `experimental_spec_shaking_v2` (default) +//! ## `experimental_spec_shaking_v2` //! //! Enables v2 spec shaking, an improved mechanism for controlling which type, -//! event, and function definitions appear in a contract's spec. This feature is -//! enabled by default. +//! event, and function definitions appear in a contract's spec. //! -//! This feature is no longer experimental. It was previously introduced as an -//! experimental opt-in feature and is now being rolled out as the default. The -//! original feature name `experimental_spec_shaking_v2` is preserved for -//! backwards compatibility. The feature is expected to be removed in v27, at -//! which point spec shaking v2 will be always on. -//! -//! ### Spec Shaking v1 (disabled by default, use `default-features = false`) +//! ### Spec Shaking v1 (default, no feature flag) //! //! - Lib imports (via `contractimport!`): exported //! - Wasm imports (via `contractimport!`): not exported @@ -47,7 +40,7 @@ //! - All events: exported //! - All functions: exported //! -//! ### Spec Shaking v2 (default) +//! ### Spec Shaking v2 (this feature) //! //! - Everything exported (types, events, functions, imports) //! - Unused entries shaken out using dead code / spec elimination @@ -135,16 +128,11 @@ //! //! ### Build Requirements //! -//! Spec shaking v2 requires the -//! `SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2` environment variable to -//! be set at build time. This is automatically set by `stellar contract build` -//! from `stellar-cli` v25.2.0 or newer. -//! -//! When the `experimental_spec_shaking_v2` feature is enabled but the env var -//! is not set, the SDK falls back to spec shaking v1 behavior and emits a -//! build warning on wasm targets. This allows contracts to build with plain -//! `cargo build` without errors, while still benefiting from v2 when built -//! with compatible tooling. +//! This feature requires building with `stellar contract build` from +//! `stellar-cli` v25.2.0 or newer. Building directly with `cargo build` will +//! produce a build error unless the +//! `SOROBAN_SDK_BUILD_SYSTEM_SUPPORTS_SPEC_SHAKING_V2` environment variable is +//! set. //! //! [`contracttype`]: crate::contracttype //! [`contracterror`]: crate::contracterror diff --git a/soroban-sdk/src/into_val_for_contract_fn.rs b/soroban-sdk/src/into_val_for_contract_fn.rs index 1aec801f4..a875902f9 100644 --- a/soroban-sdk/src/into_val_for_contract_fn.rs +++ b/soroban-sdk/src/into_val_for_contract_fn.rs @@ -20,7 +20,7 @@ pub trait IntoValForContractFn { fn into_val_for_contract_fn(self, env: &Env) -> Val; } -#[cfg(spec_shaking_v2)] +#[cfg(feature = "experimental_spec_shaking_v2")] #[doc(hidden)] #[allow(deprecated)] impl IntoValForContractFn for T @@ -33,7 +33,7 @@ where } } -#[cfg(not(spec_shaking_v2))] +#[cfg(not(feature = "experimental_spec_shaking_v2"))] #[doc(hidden)] #[allow(deprecated)] impl IntoValForContractFn for T diff --git a/soroban-sdk/src/lib.rs b/soroban-sdk/src/lib.rs index 15c3cec9c..c4fa3530b 100644 --- a/soroban-sdk/src/lib.rs +++ b/soroban-sdk/src/lib.rs @@ -118,11 +118,11 @@ const _: () = { val = concat!(env!("CARGO_PKG_VERSION"), "#", env!("GIT_REVISION")), ); - // An indicator of the spec shaking version in use. Signals to the post-build system that the .wasm + // An indicator of the spec shaking version in use. Signals to the stellar-cli that the .wasm // needs to have its spec shaken. See soroban_spec::shaking for constants and version detection. // The contractmeta! macro requires string literals, so we assert the literals match the // constants defined in soroban_spec::shaking. - #[cfg(spec_shaking_v2)] + #[cfg(feature = "experimental_spec_shaking_v2")] contractmeta!(key = "rssdk_spec_shaking", val = "2"); }; @@ -1195,9 +1195,9 @@ mod into_val_for_contract_fn; #[allow(deprecated)] pub use into_val_for_contract_fn::IntoValForContractFn; -#[cfg(spec_shaking_v2)] +#[cfg(feature = "experimental_spec_shaking_v2")] mod spec_shaking; -#[cfg(spec_shaking_v2)] +#[cfg(feature = "experimental_spec_shaking_v2")] #[doc(hidden)] pub use spec_shaking::SpecShakingMarker; diff --git a/soroban-sdk/src/try_from_val_for_contract_fn.rs b/soroban-sdk/src/try_from_val_for_contract_fn.rs index af8fc967a..51f94d955 100644 --- a/soroban-sdk/src/try_from_val_for_contract_fn.rs +++ b/soroban-sdk/src/try_from_val_for_contract_fn.rs @@ -30,7 +30,7 @@ pub trait TryFromValForContractFn: Sized { fn try_from_val_for_contract_fn(env: &E, v: &V) -> Result; } -#[cfg(spec_shaking_v2)] +#[cfg(feature = "experimental_spec_shaking_v2")] #[doc(hidden)] #[allow(deprecated)] impl TryFromValForContractFn for U @@ -44,7 +44,7 @@ where } } -#[cfg(not(spec_shaking_v2))] +#[cfg(not(feature = "experimental_spec_shaking_v2"))] #[doc(hidden)] #[allow(deprecated)] impl TryFromValForContractFn for U diff --git a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json index d5ea589bd..466dc0b6f 100644 --- a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json +++ b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "d31850fea406e46577bb137d5fbe2e78a574caf8b868eec8eac690449b06e9ec" + "wasm": "082ef6678547237e331161a8487a2eb11aa037114fde60f36dae3455ad72b4d3" }, "constructor_args": [] } @@ -70,7 +70,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "d31850fea406e46577bb137d5fbe2e78a574caf8b868eec8eac690449b06e9ec" + "wasm": "082ef6678547237e331161a8487a2eb11aa037114fde60f36dae3455ad72b4d3" }, "storage": null } @@ -91,7 +91,7 @@ "ext": "v0", "cost_inputs": { "ext": "v0", - "n_instructions": 831, + "n_instructions": 801, "n_functions": 8, "n_globals": 4, "n_table_entries": 0, @@ -100,12 +100,12 @@ "n_elem_segments": 0, "n_imports": 7, "n_exports": 5, - "n_data_segment_bytes": 132 + "n_data_segment_bytes": 76 } } }, - "hash": "d31850fea406e46577bb137d5fbe2e78a574caf8b868eec8eac690449b06e9ec", - "code": "0061736d01000000012e0860017e017e60037e7e7e017e60047e7e7e7e017e60027e7e017e60027f7f0060027f7f017f60027f7e00600000022b070176013300000162016d0001016d01610002017601680001016901320000017601310003016901310000030908040405060403070705030100110621047f01418080c0000b7f00418481c0000b7f00418481c0000b7f00419081c0000b072f05066d656d6f7279020003616464000c015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030aa50e08800704017f027e017f017e23808080800041c0006b220224808080800041002d00aa80c080001a41002d008e80c080001a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a1088808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341c880c08000ad4220864204844284808080c000108180808000422088a70e0400010203050b200228021020022802141089808080000d04410021050c050b2002280210200228021410898080800041014b0d03200241186a200241086a108880808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d03200341ec80c08000ad422086420484200241186aad4220864204844284808080301082808080001a200241306a2002290318108a8080800020022802300d0320022903382104200241306a2002290320108a8080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410898080800041014b0d02200241186a200241086a108880808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410898080800041014b0d01200241186a200241086a108880808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201083808080001a200241186a2002290330108a8080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841085808080003703082001200341016a360208420021020b200020023703000b1900024020012000490d00200120006b0f0b108d80808000000b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110848080800021010b20002003370300200020013703080b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad422086420484108580808000108a8080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a200210878080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a10878080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a108b80808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a108b80808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110868080800021010b200241c0006a24808080800020010f0b108d80808000000b0900108e80808000000b0300000b0b8e010100418080c0000b8401537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f85564744155647442556474435564744438001000040000003c001000040000004000100004000000440010000400000061626300680010000100000069001000010000006a0010000100000000cf030e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea00000007001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "082ef6678547237e331161a8487a2eb11aa037114fde60f36dae3455ad72b4d3", + "code": "0061736d01000000012e0860017e017e60037e7e7e017e60047e7e7e7e017e60027e7e017e60027f7e0060027f7f0060027f7f017f600000022b070176013300000162016d0001016d01610002017601680001016901320000017601310003016901310000030908040506040503070705030100110621047f01418080c0000b7f0041cc80c0000b7f0041cc80c0000b7f0041d080c0000b072f05066d656d6f7279020003616464000c015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ad90d08d30604017f017e027f017e23808080800041c0006b220224808080800002400240200142ff018342cb00510d00200041043a00000c010b200110808080800021032002410036021020022001370308200220034220883e0214200241186a200241086a1088808080000240024002400240200229031822014202510d002001a74101710d00024020022903202201a741ff0171220441ca00460d002004410e470d010b02400240024002402001419080c08000ad4220864204844284808080c000108180808000422088a70e0400010203050b200228021020022802141089808080000d04410021050c050b2002280210200228021410898080800041014b0d03200241186a200241086a108880808000200229031822014202510d032001a74101710d0320022903202101410021040240034020044118460d01200241186a20046a4202370300200441086a21040c000b0b200142ff018342cc00520d03200141b480c08000ad422086420484200241186aad4220864204844284808080301082808080001a200241306a2002290318108a8080800020022802300d0320022903382103200241306a2002290320108a8080800020022802300d032002290328220642ff018342cb00520d0320022903382101410121050c040b2002280210200228021410898080800041014b0d02200241186a200241086a108880808000200229031822014202510d022001a74101710d022002290320220142ff01834204520d02410a410f41092001422088a72204410f461b2004410a461b22044109460d02410221050c040b2002280210200228021410898080800041014b0d01200241186a200241086a108880808000200229031822014202510d012001a74101710d012002290320220142ff018342cb00520d01410021040240034020044110460d01200241306a20046a4202370300200441086a21040c000b0b2001200241306aad4220864204844284808080201083808080001a200241186a2002290330108a8080800020022802184101460d012002290338220142ff018342cb00520d0120022903202103410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200137031020002003370308200020043a0001200020053a00000b200241c0006a2480808080000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841085808080003703082001200341016a360208420021020b200020023703000b1900024020012000490d00200120006b0f0b108d80808000000b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110848080800021010b20002003370300200020013703080b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad422086420484108580808000108a8080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bb70404027f027e017f057e23808080800041306b22022480808080002002200010878080800002400240024020022d000022034104460d002002290310210020022903082104200231000121052002200110878080800020022d000022064104460d002002290310210720022903082108200231000121094200210a4200210b024002400240024020030e0405020100050b200010808080800021012002410036022820022000370320200220014220883e022c4200210003402002200241206a108b80808000200229030022014202510d032001a74101710d0620022903082201420053200020017c2201200053470d06200121000c000b0b2005210b0c030b2000420053200420007c220b20045373450d020c030b2000420053200420007c220b20045373450d010c020b000b0240024002400240024020060e0404020100040b200710808080800021002002410036022820022007370320200220004220883e022c4200210003402002200241206a108b80808000200229030022014202510d032001a74101710d0520022903082201420053200020017c2201200053470d05200121000c000b0b2009210a0c020b2007420053200820077c220a200853730d020c010b2000420053200820007c220a200853730d010b200a420053200b200a7c2200200b53730d000240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010868080800021000b200241306a24808080800020000f0b108d80808000000b0900108e80808000000b0300000b0b550100418080c0000b4c556474415564744255647443556474440000100004000000040010000400000008001000040000000c001000040000006162630030001000010000003100100001000000320010000100000000cf030e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea00000007001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json index 58e682a0b..bc911ae78 100644 --- a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json +++ b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "4dac5a023abc307b72bce16cefe96e9809c5a46907858db23f00ae39cbbea07d" + "wasm": "1d9f19d20f3d2932f1753ac486e0126db2ca1df4d58ed6ac0c26be6793dc018d" }, "constructor_args": [] } @@ -96,7 +96,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "4dac5a023abc307b72bce16cefe96e9809c5a46907858db23f00ae39cbbea07d" + "wasm": "1d9f19d20f3d2932f1753ac486e0126db2ca1df4d58ed6ac0c26be6793dc018d" }, "storage": null } @@ -117,7 +117,7 @@ "ext": "v0", "cost_inputs": { "ext": "v0", - "n_instructions": 1383, + "n_instructions": 1380, "n_functions": 18, "n_globals": 4, "n_table_entries": 0, @@ -126,12 +126,12 @@ "n_elem_segments": 0, "n_imports": 17, "n_exports": 8, - "n_data_segment_bytes": 148 + "n_data_segment_bytes": 132 } } }, - "hash": "4dac5a023abc307b72bce16cefe96e9809c5a46907858db23f00ae39cbbea07d", - "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60037e7f7f0060017f0060027f7e0060017f017e60000060037f7f7f017f026711016d0161000001620138000101630138000101630134000101630165000101630161000101630136000201630163000201630167000201760133000101760131000201620131000001620133000201690161000101780130000201690172000201760167000203131201030405050505060207020207040808080805030100110621047f01418080c0000b7f0041c480c0000b7f00419481c0000b7f0041a081c0000b075708066d656d6f727902000c64756d6d795f76657269667900110a66725f7665635f67657400190667315f6d756c001b0667325f6d756c001c015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a931712870503027f047e017f23808080800041f0016b22012480808080004100210241002d008080c080001a0240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000419c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a0808080001a200020014190016a4130109280808000200141306a20014190016a413010a2808080001a200141306a10938080800020014190016a20012903101094808080002001280290010d00200129039801210320014190016a410041e00010a0808080001a200320014190016a41e000109280808000200141306a20014190016a41e00010a2808080001a200141306a109380808000200141306a41306a10938080800020014190016a20012903181095808080002001280290010d00200129039801210420014190016a20012903201096808080002001280290010d00200129039801210520014190016a20012903281097808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1098808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1098808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041e480c080004130109f80808000417f4a0d000f0b410e109e80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41c480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110948080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b870101017f23808080800041106b2202248080808000024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010958080800020022802004101470d020b000b109a80808000000b20022903082100200241106a24808080800020000b0b00412b109e80808000000b6501017f23808080800041106b220224808080800020022000109680808000024020022802004101460d00200229030821002002200110958080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110958080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109d80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a1808080000b0b9e010100418080c0000b940153704563563185570041dc7eb72266706670326672673167320000000e00100002000000100010000300000013001000020000001500100002000000170010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00b7030e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c00000000100000000000000000000000a44756d6d7950726f6f66000000000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d00000000a44756d6d7950726f6f6600000000000100000001001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "1d9f19d20f3d2932f1753ac486e0126db2ca1df4d58ed6ac0c26be6793dc018d", + "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60037e7f7f0060017f0060027f7e0060017f017e60000060037f7f7f017f026711016d0161000001620138000101630138000101630134000101630165000101630161000101630136000201630163000201630167000201760133000101760131000201620131000001620133000201690161000101780130000201690172000201760167000203131201030405050505060207020207040808080805030100110621047f01418080c0000b7f0041b480c0000b7f00418481c0000b7f00419081c0000b075708066d656d6f727902000c64756d6d795f76657269667900110a66725f7665635f67657400190667315f6d756c001b0667325f6d756c001c015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a891712fd0403027f047e017f23808080800041f0016b2201248080808000410021020240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000418c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a0808080001a200020014190016a4130109280808000200141306a20014190016a413010a2808080001a200141306a10938080800020014190016a20012903101094808080002001280290010d00200129039801210320014190016a410041e00010a0808080001a200320014190016a41e000109280808000200141306a20014190016a41e00010a2808080001a200141306a109380808000200141306a41306a10938080800020014190016a20012903181095808080002001280290010d00200129039801210420014190016a20012903201096808080002001280290010d00200129039801210520014190016a20012903281097808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1098808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1098808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041d480c080004130109f80808000417f4a0d000f0b410e109e80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41b480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110948080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b870101017f23808080800041106b2202248080808000024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010958080800020022802004101470d020b000b109a80808000000b20022903082100200241106a24808080800020000b0b00412b109e80808000000b6501017f23808080800041106b220224808080800020022000109680808000024020022802004101460d00200229030821002002200110958080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110958080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109d80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a1808080000b0b8e010100418080c0000b84016670667032667267316732000000100002000000020010000300000005001000020000000700100002000000090010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00b7030e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c00000000100000000000000000000000a44756d6d7950726f6f66000000000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d00000000a44756d6d7950726f6f6600000000000100000001001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0" diff --git a/tests-expanded/test_account_wasm32v1-none.rs b/tests-expanded/test_account_wasm32v1-none.rs index 3b04cdcce..1e33d378a 100644 --- a/tests-expanded/test_account_wasm32v1-none.rs +++ b/tests-expanded/test_account_wasm32v1-none.rs @@ -57,16 +57,6 @@ impl Error { *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x05Error\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x04Fail\0\0\0\x01" } } -impl soroban_sdk::SpecShakingMarker for Error { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xa8\x1f\xc4#\x9c\x8f\xeb\x88"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl TryFrom for Error { type Error = soroban_sdk::Error; #[inline(always)] diff --git a/tests-expanded/test_associated_types_contracttrait_tests.rs b/tests-expanded/test_associated_types_contracttrait_tests.rs index f147bb0b5..86e5943c4 100644 --- a/tests-expanded/test_associated_types_contracttrait_tests.rs +++ b/tests-expanded/test_associated_types_contracttrait_tests.rs @@ -795,7 +795,7 @@ mod test { mod test_with_wasm { use soroban_sdk::{Env, String}; mod contract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn exec(env: soroban_sdk::Env) -> soroban_sdk::String; fn exec2(env: soroban_sdk::Env) -> soroban_sdk::String; diff --git a/tests-expanded/test_bls_wasm32v1-none.rs b/tests-expanded/test_bls_wasm32v1-none.rs index 1bc77fcf7..5c55c7f7d 100644 --- a/tests-expanded/test_bls_wasm32v1-none.rs +++ b/tests-expanded/test_bls_wasm32v1-none.rs @@ -23,21 +23,6 @@ impl DummyProof { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\nDummyProof\0\0\0\0\0\x05\0\0\0\0\0\0\0\x02fp\0\0\0\0\x03\xee\0\0\00\0\0\0\0\0\0\0\x03fp2\0\0\0\x03\xee\0\0\0`\0\0\0\0\0\0\0\x02fr\0\0\0\0\0\x0c\0\0\0\0\0\0\0\x02g1\0\0\0\0\x03\xee\0\0\0`\0\0\0\0\0\0\0\x02g2\0\0\0\0\x03\xee\0\0\0\xc0" } } -impl soroban_sdk::SpecShakingMarker for DummyProof { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - ::spec_shaking_marker(); - ::spec_shaking_marker(); - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\x85W\0A\xdc~\xb7\""; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for DummyProof { type Error = soroban_sdk::ConversionError; fn try_from_val( diff --git a/tests-expanded/test_bn254_wasm32v1-none.rs b/tests-expanded/test_bn254_wasm32v1-none.rs index ebd06e40e..77ecd7eb3 100644 --- a/tests-expanded/test_bn254_wasm32v1-none.rs +++ b/tests-expanded/test_bn254_wasm32v1-none.rs @@ -20,18 +20,6 @@ impl MockProof { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\tMockProof\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x02g1\0\0\0\0\x03\xea\0\0\x03\xee\0\0\0@\0\0\0\0\0\0\0\x02g2\0\0\0\0\x03\xea\0\0\x03\xee\0\0\0\x80" } } -impl soroban_sdk::SpecShakingMarker for MockProof { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1:\x81\xa6\xa0\x9e\xe7\xa7\x1f"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for MockProof { type Error = soroban_sdk::ConversionError; fn try_from_val( diff --git a/tests-expanded/test_constructor_wasm32v1-none.rs b/tests-expanded/test_constructor_wasm32v1-none.rs index 871059033..d5b3ff92e 100644 --- a/tests-expanded/test_constructor_wasm32v1-none.rs +++ b/tests-expanded/test_constructor_wasm32v1-none.rs @@ -36,17 +36,6 @@ impl DataKey { *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x07DataKey\0\0\0\0\x03\0\0\0\x01\0\0\0\0\0\0\0\nPersistent\0\0\0\0\0\x01\0\0\0\x04\0\0\0\x01\0\0\0\0\0\0\0\x04Temp\0\0\0\x01\0\0\0\x04\0\0\0\x01\0\0\0\0\0\0\0\x08Instance\0\0\0\x01\0\0\0\x04" } } -impl soroban_sdk::SpecShakingMarker for DataKey { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\x14\x94}~\xec\x15\x94\x84"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for DataKey { type Error = soroban_sdk::ConversionError; #[inline(always)] diff --git a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs index fda68c440..18986d487 100644 --- a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs @@ -56,18 +56,6 @@ impl MyStruct { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x08MyStruct\0\0\0\x02\0\0\0\0\0\0\0\x01a\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x01b\0\0\0\0\0\0\x07" } } -impl soroban_sdk::SpecShakingMarker for MyStruct { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\x08\xd4\xa7b\xae1|\xdd"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for MyStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -169,16 +157,6 @@ impl MyEnumUnit { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\nMyEnumUnit\0\0\0\0\0\x02\0\0\0\0\0\0\0\x01A\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01B\0\0\0\0\0\0\x02" } } -impl soroban_sdk::SpecShakingMarker for MyEnumUnit { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - { - static MARKER: [u8; 14usize] = *b"SpEcV12E\x1b4\x1c\x83\xab\xeb"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for MyEnumUnit { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -290,18 +268,6 @@ impl MyEnumVariants { *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x0eMyEnumVariants\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x04VarA\0\0\0\x01\0\0\0\0\0\0\0\x04VarB\0\0\0\x01\0\0\x07\xd0\0\0\0\x08MyStruct\0\0\0\x01\0\0\0\0\0\0\0\x04VarC\0\0\0\x01\0\0\x07\xd0\0\0\0\nMyEnumUnit\0\0" } } -impl soroban_sdk::SpecShakingMarker for MyEnumVariants { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xceHo\xd4mpUm"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for MyEnumVariants { type Error = soroban_sdk::ConversionError; #[inline(always)] diff --git a/tests-expanded/test_errors_wasm32v1-none.rs b/tests-expanded/test_errors_wasm32v1-none.rs index 3f73508cc..c6b244de5 100644 --- a/tests-expanded/test_errors_wasm32v1-none.rs +++ b/tests-expanded/test_errors_wasm32v1-none.rs @@ -52,16 +52,6 @@ impl Flag { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x04Flag\0\0\0\x05\0\0\0\0\0\0\0\x01A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01B\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01C\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x01D\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\x01E\0\0\0\0\0\0\x04" } } -impl soroban_sdk::SpecShakingMarker for Flag { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - { - static MARKER: [u8; 14usize] = *b"SpEcV1g\x19\x8d\xc6\x8aP\xeb\xb7"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for Flag { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -140,16 +130,6 @@ impl Error { *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x05Error\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x07AnError\0\0\0\0\x01" } } -impl soroban_sdk::SpecShakingMarker for Error { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xbc\x04\x04\xea\xa4\x9e6("; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl TryFrom for Error { type Error = soroban_sdk::Error; #[inline(always)] diff --git a/tests-expanded/test_events_ref_wasm32v1-none.rs b/tests-expanded/test_events_ref_wasm32v1-none.rs index 97dafcbd9..5aca10c7d 100644 --- a/tests-expanded/test_events_ref_wasm32v1-none.rs +++ b/tests-expanded/test_events_ref_wasm32v1-none.rs @@ -37,20 +37,6 @@ impl<'a> Transfer<'a> { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x08Transfer\0\0\0\x01\0\0\0\x08transfer\0\0\0\x04\0\0\0\0\0\0\0\x04from\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x02to\0\0\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x06amount\0\0\0\0\0\x0b\0\0\0\0\0\0\0\0\0\0\0\x0bto_muxed_id\0\0\0\x03\xe8\0\0\0\x06\0\0\0\0\0\0\0\x02" } } -impl<'a> soroban_sdk::SpecShakingMarker for Transfer<'a> { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - <&'a Address as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - <&'a Address as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - <&'a i128 as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1;\xc1i\xa0H>\x8d\xf1"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl<'a> soroban_sdk::Event for Transfer<'a> { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -83,7 +69,6 @@ impl<'a> soroban_sdk::Event for Transfer<'a> { } impl<'a> Transfer<'a> { pub fn publish(&self, env: &soroban_sdk::Env) { - ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } diff --git a/tests-expanded/test_events_wasm32v1-none.rs b/tests-expanded/test_events_wasm32v1-none.rs index c7693da03..6adffa82f 100644 --- a/tests-expanded/test_events_wasm32v1-none.rs +++ b/tests-expanded/test_events_wasm32v1-none.rs @@ -37,20 +37,6 @@ impl Transfer { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x08Transfer\0\0\0\x01\0\0\0\x08transfer\0\0\0\x04\0\0\0\0\0\0\0\x04from\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x02to\0\0\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x06amount\0\0\0\0\0\x0b\0\0\0\0\0\0\0\0\0\0\0\x0bto_muxed_id\0\0\0\x03\xe8\0\0\0\x06\0\0\0\0\0\0\0\x02" } } -impl soroban_sdk::SpecShakingMarker for Transfer { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { -
::spec_shaking_marker(); -
::spec_shaking_marker(); - ::spec_shaking_marker(); - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1;\xc1i\xa0H>\x8d\xf1"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::Event for Transfer { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -83,7 +69,6 @@ impl soroban_sdk::Event for Transfer { } impl Transfer { pub fn publish(&self, env: &soroban_sdk::Env) { - ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } diff --git a/tests-expanded/test_import_contract_tests.rs b/tests-expanded/test_import_contract_tests.rs index cdc1ff099..443972700 100644 --- a/tests-expanded/test_import_contract_tests.rs +++ b/tests-expanded/test_import_contract_tests.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x05\x04\x01\x02\x03\x03\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07/\x05\x06memory\x02\x00\x03add\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8b\x02\x04]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\x9c\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01\x02@\x02@ \x00B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x06\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\x10\x84\x80\x80\x80\x00\x00\x0b\t\x00\x10\x85\x80\x80\x80\x00\x00\x0b\x03\x00\x00\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x05\x04\x01\x02\x03\x03\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07/\x05\x06memory\x02\x00\x03add\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8b\x02\x04]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\x9c\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01\x02@\x02@ \x00B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x06\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\x10\x84\x80\x80\x80\x00\x00\x0b\t\x00\x10\x85\x80\x80\x80\x00\x00\x0b\x03\x00\x00\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; } diff --git a/tests-expanded/test_import_contract_wasm32v1-none.rs b/tests-expanded/test_import_contract_wasm32v1-none.rs index 7cf04ad08..1fc04b36f 100644 --- a/tests-expanded/test_import_contract_wasm32v1-none.rs +++ b/tests-expanded/test_import_contract_wasm32v1-none.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x05\x04\x01\x02\x03\x03\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07/\x05\x06memory\x02\x00\x03add\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8b\x02\x04]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\x9c\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01\x02@\x02@ \x00B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x06\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\x10\x84\x80\x80\x80\x00\x00\x0b\t\x00\x10\x85\x80\x80\x80\x00\x00\x0b\x03\x00\x00\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x05\x04\x01\x02\x03\x03\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07/\x05\x06memory\x02\x00\x03add\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8b\x02\x04]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\x9c\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01\x02@\x02@ \x00B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x06\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\x10\x84\x80\x80\x80\x00\x00\x0b\t\x00\x10\x85\x80\x80\x80\x00\x00\x0b\x03\x00\x00\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00K\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; } diff --git a/tests-expanded/test_spec_shaking_v2_tests.rs b/tests-expanded/test_spec_shaking_v2_tests.rs index c3ae7ed1a..7003422c8 100644 --- a/tests-expanded/test_spec_shaking_v2_tests.rs +++ b/tests-expanded/test_spec_shaking_v2_tests.rs @@ -191,6 +191,14 @@ impl UsedParamStruct { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0fUsedParamStruct\0\0\0\0\x02\0\0\0\0\0\0\0\x01a\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\x06nested\0\0\0\0\x07\xd0\0\0\0\x12UsedNestedInStruct\0\0" } } +impl soroban_sdk::SpecShakingMarker for UsedParamStruct { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedParamStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -618,6 +626,14 @@ impl UsedReturnEnum { *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x0eUsedReturnEnum\0\0\0\0\0\x02\0\0\0\x01\0\0\0\0\0\0\0\x01A\0\0\0\0\0\0\x01\0\0\0\x04\0\0\0\x01\0\0\0\0\0\0\0\x01B\0\0\0\0\0\0\x01\0\0\0\x07" } } +impl soroban_sdk::SpecShakingMarker for UsedReturnEnum { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedReturnEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1126,6 +1142,11 @@ impl UsedParamIntEnum { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x10UsedParamIntEnum\0\0\0\x02\0\0\0\0\0\0\0\x01X\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01Y\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedParamIntEnum { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl soroban_sdk::TryFromVal for UsedParamIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1452,6 +1473,11 @@ impl UsedErrorEnum { *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\rUsedErrorEnum\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x08NotFound\0\0\0\x01\0\0\0\0\0\0\0\x07Invalid\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedErrorEnum { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl TryFrom for UsedErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -1607,6 +1633,13 @@ impl UsedNestedInStruct { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x12UsedNestedInStruct\0\0\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x07" } } +impl soroban_sdk::SpecShakingMarker for UsedNestedInStruct { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedNestedInStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1964,6 +1997,13 @@ impl UsedVecElement { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0eUsedVecElement\0\0\0\0\0\x01\0\0\0\0\0\0\0\x04data\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedVecElement { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedVecElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2326,6 +2366,11 @@ impl UsedMapKey { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\nUsedMapKey\0\0\0\0\0\x02\0\0\0\0\0\0\0\x02K1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02K2\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedMapKey { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl soroban_sdk::TryFromVal for UsedMapKey { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -2643,6 +2688,13 @@ impl UsedMapVal { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\nUsedMapVal\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01v\0\0\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedMapVal { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedMapVal { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2999,6 +3051,13 @@ impl UsedOptionElement { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x11UsedOptionElement\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x04data\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedOptionElement { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedOptionElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3354,6 +3413,13 @@ impl UsedResultOk { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0cUsedResultOk\0\0\0\x01\0\0\0\0\0\0\0\x04data\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedResultOk { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedResultOk { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3717,6 +3783,14 @@ impl UsedEventSimple { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x0fUsedEventSimple\0\0\0\0\x01\0\0\0\x11used_event_simple\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\x06amount\0\0\0\0\0\x0b\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventSimple { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UsedEventSimple { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -3737,6 +3811,7 @@ impl soroban_sdk::Event for UsedEventSimple { } impl UsedEventSimple { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -3790,6 +3865,11 @@ impl UsedEventTopicType { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x12UsedEventTopicType\0\0\0\0\0\x02\0\0\0\0\0\0\0\x08Transfer\0\0\0\x01\0\0\0\0\0\0\0\x04Mint\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventTopicType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl soroban_sdk::TryFromVal for UsedEventTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4122,6 +4202,14 @@ impl UsedEventWithTopicType { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x16UsedEventWithTopicType\0\0\0\0\0\x01\0\0\0\x1aused_event_with_topic_type\0\0\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\x07\xd0\0\0\0\x12UsedEventTopicType\0\0\0\0\0\x01\0\0\0\0\0\0\0\x06amount\0\0\0\0\0\x0b\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventWithTopicType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UsedEventWithTopicType { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -4145,6 +4233,7 @@ impl soroban_sdk::Event for UsedEventWithTopicType { } impl UsedEventWithTopicType { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -4200,6 +4289,14 @@ impl UsedEventDataType { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x11UsedEventDataType\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x01x\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\x01y\0\0\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedEventDataType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedEventDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4616,6 +4713,14 @@ impl UsedEventWithDataType { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x15UsedEventWithDataType\0\0\0\0\0\0\x01\0\0\0\x19used_event_with_data_type\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\x07payload\0\0\0\x07\xd0\0\0\0\x11UsedEventDataType\0\0\0\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventWithDataType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UsedEventWithDataType { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -4639,6 +4744,7 @@ impl soroban_sdk::Event for UsedEventWithDataType { } impl UsedEventWithDataType { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -4690,6 +4796,13 @@ impl UsedEventTopicOuter { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x13UsedEventTopicOuter\0\0\0\0\x01\0\0\0\0\0\0\0\x05inner\0\0\0\0\0\x07\xd0\0\0\0\x13UsedEventTopicInner\0" } } +impl soroban_sdk::SpecShakingMarker for UsedEventTopicOuter { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedEventTopicOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5057,6 +5170,13 @@ impl UsedEventTopicInner { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x13UsedEventTopicInner\0\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedEventTopicInner { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedEventTopicInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5427,6 +5547,14 @@ impl UsedEventWithNestedTopic { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x18UsedEventWithNestedTopic\0\0\0\x01\0\0\0\x1cused_event_with_nested_topic\0\0\0\x02\0\0\0\0\0\0\0\x04info\0\0\x07\xd0\0\0\0\x13UsedEventTopicOuter\0\0\0\0\x01\0\0\0\0\0\0\0\x06amount\0\0\0\0\0\x0b\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventWithNestedTopic { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UsedEventWithNestedTopic { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -5450,6 +5578,7 @@ impl soroban_sdk::Event for UsedEventWithNestedTopic { } impl UsedEventWithNestedTopic { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -5501,6 +5630,13 @@ impl UsedEventDataOuter { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x12UsedEventDataOuter\0\0\0\0\0\x01\0\0\0\0\0\0\0\x05inner\0\0\0\0\0\x07\xd0\0\0\0\x12UsedEventDataInner\0\0" } } +impl soroban_sdk::SpecShakingMarker for UsedEventDataOuter { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedEventDataOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5866,6 +6002,13 @@ impl UsedEventDataInner { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x12UsedEventDataInner\0\0\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedEventDataInner { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedEventDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -6234,6 +6377,14 @@ impl UsedEventWithNestedData { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x17UsedEventWithNestedData\0\0\0\0\x01\0\0\0\x1bused_event_with_nested_data\0\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\x07payload\0\0\0\x07\xd0\0\0\0\x12UsedEventDataOuter\0\0\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedEventWithNestedData { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UsedEventWithNestedData { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -6257,6 +6408,7 @@ impl soroban_sdk::Event for UsedEventWithNestedData { } impl UsedEventWithNestedData { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -6310,6 +6462,11 @@ impl UsedRefTopicType { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x10UsedRefTopicType\0\0\0\x02\0\0\0\0\0\0\0\x04Send\0\0\0\x01\0\0\0\0\0\0\0\x04Recv\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UsedRefTopicType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl soroban_sdk::TryFromVal for UsedRefTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6634,6 +6791,13 @@ impl UsedRefDataType { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0fUsedRefDataType\0\0\0\0\x01\0\0\0\0\0\0\0\x06nested\0\0\0\0\x07\xd0\0\0\0\x10UsedRefDataInner" } } +impl soroban_sdk::SpecShakingMarker for UsedRefDataType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedRefDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -6992,6 +7156,13 @@ impl UsedRefDataInner { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x10UsedRefDataInner\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedRefDataInner { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedRefDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -7357,6 +7528,14 @@ impl<'a> UsedEventWithRefs<'a> { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x11UsedEventWithRefs\0\0\0\0\0\0\x01\0\0\0\x14used_event_with_refs\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\x07\xd0\0\0\0\x10UsedRefTopicType\0\0\0\x01\0\0\0\0\0\0\0\x07payload\0\0\0\x07\xd0\0\0\0\x0fUsedRefDataType\0\0\0\0\0\0\0\0\x02" } } +impl<'a> soroban_sdk::SpecShakingMarker for UsedEventWithRefs<'a> { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + <&'a UsedRefTopicType as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); + <&'a UsedRefDataType as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); + } +} impl<'a> soroban_sdk::Event for UsedEventWithRefs<'a> { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -7380,6 +7559,7 @@ impl<'a> soroban_sdk::Event for UsedEventWithRefs<'a> { } impl<'a> UsedEventWithRefs<'a> { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -7426,6 +7606,13 @@ impl UsedTupleElement { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x10UsedTupleElement\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedTupleElement { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedTupleElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -7787,6 +7974,13 @@ impl UsedTupleReturnElement { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x16UsedTupleReturnElement\0\0\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UsedTupleReturnElement { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedTupleReturnElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8140,6 +8334,19 @@ impl ::core::cmp::PartialEq for UsedNonPubStruct { self.val == other.val } } +pub static __SPEC_XDR_TYPE_USEDNONPUBSTRUCT: [u8; 52usize] = UsedNonPubStruct::spec_xdr(); +impl UsedNonPubStruct { + pub const fn spec_xdr() -> [u8; 52usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x10UsedNonPubStruct\0\0\0\x01\0\0\0\0\0\0\0\x03val\0\0\0\0\x04" + } +} +impl soroban_sdk::SpecShakingMarker for UsedNonPubStruct { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UsedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8487,6 +8694,17 @@ impl ::core::cmp::PartialEq for UsedNonPubError { true } } +pub static __SPEC_XDR_TYPE_USEDNONPUBERROR: [u8; 52usize] = UsedNonPubError::spec_xdr(); +impl UsedNonPubError { + pub const fn spec_xdr() -> [u8; 52usize] { + *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x0fUsedNonPubError\0\0\0\0\x01\0\0\0\0\0\0\0\x04Fail\0\0\0\x01" + } +} +impl soroban_sdk::SpecShakingMarker for UsedNonPubError { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl TryFrom for UsedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -9273,6 +9491,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTA: [u8; 60usize] = StructA::spec_xdr(); + impl StructA { + pub const fn spec_xdr() -> [u8; 60usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x07StructA\0\0\0\0\x02\0\0\0\0\0\0\0\x02f1\0\0\0\0\0\x04\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x01" + } + } + impl soroban_sdk::SpecShakingMarker for StructA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructA { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -9699,6 +9931,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTB: [u8; 60usize] = StructB::spec_xdr(); + impl StructB { + pub const fn spec_xdr() -> [u8; 60usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x07StructB\0\0\0\0\x02\0\0\0\0\0\0\0\x02f1\0\0\0\0\0\x07\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x10" + } + } + impl soroban_sdk::SpecShakingMarker for StructB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructB { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -10125,6 +10371,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTC: [u8; 64usize] = StructC::spec_xdr(); + impl StructC { + pub const fn spec_xdr() -> [u8; 64usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x07StructC\0\0\0\0\x02\0\0\0\0\0\0\0\x02f1\0\0\0\0\x03\xea\0\0\0\x04\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x13" + } + } + impl soroban_sdk::SpecShakingMarker for StructC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructC { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -10554,6 +10814,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTTUPLEA: [u8; 64usize] = StructTupleA::spec_xdr(); + impl StructTupleA { + pub const fn spec_xdr() -> [u8; 64usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0cStructTupleA\0\0\0\x02\0\0\0\0\0\0\0\x010\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x011\0\0\0\0\0\0\x07" + } + } + impl soroban_sdk::SpecShakingMarker for StructTupleA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructTupleA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -10945,6 +11219,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTTUPLEB: [u8; 64usize] = StructTupleB::spec_xdr(); + impl StructTupleB { + pub const fn spec_xdr() -> [u8; 64usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0cStructTupleB\0\0\0\x02\0\0\0\0\0\0\0\x010\0\0\0\0\0\0\n\0\0\0\0\0\0\0\x011\0\0\0\0\0\0\n" + } + } + impl soroban_sdk::SpecShakingMarker for StructTupleB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructTupleB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -11337,6 +11625,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_STRUCTTUPLEC: [u8; 64usize] = StructTupleC::spec_xdr(); + impl StructTupleC { + pub const fn spec_xdr() -> [u8; 64usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0cStructTupleC\0\0\0\x02\0\0\0\0\0\0\0\x010\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\x011\0\0\0\0\0\0\x0b" + } + } + impl soroban_sdk::SpecShakingMarker for StructTupleC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for StructTupleC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -11733,6 +12035,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ENUMA: [u8; 76usize] = EnumA::spec_xdr(); + impl EnumA { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x05EnumA\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x02V1\0\0\0\0\0\0\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\0\0\0\0\0\0\0\0\x02V3\0\0" + } + } + impl soroban_sdk::SpecShakingMarker for EnumA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl soroban_sdk::TryFromVal for EnumA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -12244,6 +12557,19 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_ENUMB: [u8; 96usize] = EnumB::spec_xdr(); + impl EnumB { + pub const fn spec_xdr() -> [u8; 96usize] { + *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x05EnumB\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x02V1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\x01\0\0\0\x07\0\0\0\x01\0\0\0\0\0\0\0\x02V3\0\0\0\0\0\x02\0\0\0\x07\0\0\0\x07" + } + } + impl soroban_sdk::SpecShakingMarker for EnumB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for EnumB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -12871,6 +13197,20 @@ mod wasm_imported { } } } + pub static __SPEC_XDR_TYPE_ENUMC: [u8; 120usize] = EnumC::spec_xdr(); + impl EnumC { + pub const fn spec_xdr() -> [u8; 120usize] { + *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x05EnumC\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x02V1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\x01\0\0\x07\xd0\0\0\0\x07StructA\0\0\0\0\x01\0\0\0\0\0\0\0\x02V3\0\0\0\0\0\x01\0\0\x07\xd0\0\0\0\x0cStructTupleA" + } + } + impl soroban_sdk::SpecShakingMarker for EnumC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::TryFromVal for EnumC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -13426,6 +13766,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ENUMINTA: [u8; 76usize] = EnumIntA::spec_xdr(); + impl EnumIntA { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x08EnumIntA\0\0\0\x03\0\0\0\0\0\0\0\x02V1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\x02\0\0\0\0\0\0\0\x02V3\0\0\0\0\0\x03" + } + } + impl soroban_sdk::SpecShakingMarker for EnumIntA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl soroban_sdk::TryFromVal for EnumIntA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -13780,6 +14131,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ENUMINTB: [u8; 76usize] = EnumIntB::spec_xdr(); + impl EnumIntB { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x08EnumIntB\0\0\0\x03\0\0\0\0\0\0\0\x02V1\0\0\0\0\0\n\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\x14\0\0\0\0\0\0\0\x02V3\0\0\0\0\0\x1e" + } + } + impl soroban_sdk::SpecShakingMarker for EnumIntB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl soroban_sdk::TryFromVal for EnumIntB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -14134,6 +14496,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; 76usize] = EnumIntC::spec_xdr(); + impl EnumIntC { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x08EnumIntC\0\0\0\x03\0\0\0\0\0\0\0\x02V1\0\0\0\0\0d\0\0\0\0\0\0\0\x02V2\0\0\0\0\0\xc8\0\0\0\0\0\0\0\x02V3\0\0\0\0\x01," + } + } + impl soroban_sdk::SpecShakingMarker for EnumIntC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl soroban_sdk::TryFromVal for EnumIntC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -14488,6 +14861,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ERRORA: [u8; 76usize] = ErrorA::spec_xdr(); + impl ErrorA { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x06ErrorA\0\0\0\0\0\x03\0\0\0\0\0\0\0\x02E1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02E2\0\0\0\0\0\x02\0\0\0\0\0\0\0\x02E3\0\0\0\0\0\x03" + } + } + impl soroban_sdk::SpecShakingMarker for ErrorA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl TryFrom for ErrorA { type Error = soroban_sdk::Error; #[inline(always)] @@ -14663,6 +15047,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ERRORB: [u8; 76usize] = ErrorB::spec_xdr(); + impl ErrorB { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x06ErrorB\0\0\0\0\0\x03\0\0\0\0\0\0\0\x02E1\0\0\0\0\0\n\0\0\0\0\0\0\0\x02E2\0\0\0\0\0\x0b\0\0\0\0\0\0\0\x02E3\0\0\0\0\0\x0c" + } + } + impl soroban_sdk::SpecShakingMarker for ErrorB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl TryFrom for ErrorB { type Error = soroban_sdk::Error; #[inline(always)] @@ -14838,6 +15233,17 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + pub static __SPEC_XDR_TYPE_ERRORC: [u8; 76usize] = ErrorC::spec_xdr(); + impl ErrorC { + pub const fn spec_xdr() -> [u8; 76usize] { + *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x06ErrorC\0\0\0\0\0\x03\0\0\0\0\0\0\0\x02E1\0\0\0\0\0d\0\0\0\0\0\0\0\x02E2\0\0\0\0\0e\0\0\0\0\0\0\0\x02E3\0\0\0\0\0f" + } + } + impl soroban_sdk::SpecShakingMarker for ErrorC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} + } impl TryFrom for ErrorC { type Error = soroban_sdk::Error; #[inline(always)] @@ -15019,6 +15425,14 @@ mod wasm_imported { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x06EventA\0\0\0\0\0\x01\0\0\0\x07event_a\0\0\0\0\x02\0\0\0\0\0\0\0\x02f1\0\0\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x10\0\0\0\0\0\0\0\x02" } } + impl soroban_sdk::SpecShakingMarker for EventA { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::Event for EventA { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -15046,6 +15460,7 @@ mod wasm_imported { } impl EventA { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -15130,6 +15545,15 @@ mod wasm_imported { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x06EventB\0\0\0\0\0\x01\0\0\0\x07event_b\0\0\0\0\x03\0\0\0\0\0\0\0\x02f1\0\0\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x13\0\0\0\x01\0\0\0\0\0\0\0\x02f3\0\0\0\0\0\x0b\0\0\0\0\0\0\0\x02" } } + impl soroban_sdk::SpecShakingMarker for EventB { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::Event for EventB { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -15161,6 +15585,7 @@ mod wasm_imported { } impl EventB { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -15244,6 +15669,15 @@ mod wasm_imported { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x06EventC\0\0\0\0\0\x01\0\0\0\x07event_c\0\0\0\0\x03\0\0\0\0\0\0\0\x02f1\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\x02f2\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\x02f3\0\0\0\0\0\x07\0\0\0\0\0\0\0\x02" } } + impl soroban_sdk::SpecShakingMarker for EventC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } impl soroban_sdk::Event for EventC { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -15271,6 +15705,7 @@ mod wasm_imported { } impl EventC { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -15318,6 +15753,13 @@ impl UnusedStruct { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x0cUnusedStruct\0\0\0\x01\0\0\0\0\0\0\0\x01x\0\0\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UnusedStruct { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UnusedStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -15682,6 +16124,13 @@ impl UnusedEnum { *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\nUnusedEnum\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x01A\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01B\0\0\0\0\0\0\x01\0\0\0\x07" } } +impl soroban_sdk::SpecShakingMarker for UnusedEnum { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UnusedEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -16145,6 +16594,11 @@ impl UnusedIntEnum { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\rUnusedIntEnum\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x02U1\0\0\0\0\0\x01\0\0\0\0\0\0\0\x02U2\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UnusedIntEnum { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl soroban_sdk::TryFromVal for UnusedIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -16474,6 +16928,14 @@ impl UnusedEvent { *b"\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x0bUnusedEvent\0\0\0\0\x01\0\0\0\x0cunused_event\0\0\0\x02\0\0\0\0\0\0\0\x04kind\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\x04data\0\0\0\x04\0\0\0\0\0\0\0\x02" } } +impl soroban_sdk::SpecShakingMarker for UnusedEvent { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } +} impl soroban_sdk::Event for UnusedEvent { fn topics(&self, env: &soroban_sdk::Env) -> soroban_sdk::Vec { use soroban_sdk::IntoVal; @@ -16494,6 +16956,7 @@ impl soroban_sdk::Event for UnusedEvent { } impl UnusedEvent { pub fn publish(&self, env: &soroban_sdk::Env) { + ::spec_shaking_marker(); <_ as soroban_sdk::Event>::publish(self, env); } } @@ -16546,6 +17009,13 @@ impl UnusedNonContractFnParam { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x18UnusedNonContractFnParam\0\0\0\x01\0\0\0\0\0\0\0\x01x\0\0\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnParam { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnParam { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -16913,6 +17383,13 @@ impl UnusedNonContractFnReturn { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x19UnusedNonContractFnReturn\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01x\0\0\0\0\0\0\x04" } } +impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnReturn { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnReturn { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -17268,6 +17745,19 @@ impl ::core::cmp::PartialEq for UnusedNonPubStruct { self.x == other.x } } +pub static __SPEC_XDR_TYPE_UNUSEDNONPUBSTRUCT: [u8; 56usize] = UnusedNonPubStruct::spec_xdr(); +impl UnusedNonPubStruct { + pub const fn spec_xdr() -> [u8; 56usize] { + *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x12UnusedNonPubStruct\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01x\0\0\0\0\0\0\x04" + } +} +impl soroban_sdk::SpecShakingMarker for UnusedNonPubStruct { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + } +} impl soroban_sdk::TryFromVal for UnusedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -17615,6 +18105,17 @@ impl ::core::cmp::PartialEq for UnusedNonPubError { true } } +pub static __SPEC_XDR_TYPE_UNUSEDNONPUBERROR: [u8; 56usize] = UnusedNonPubError::spec_xdr(); +impl UnusedNonPubError { + pub const fn spec_xdr() -> [u8; 56usize] { + *b"\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x11UnusedNonPubError\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x03Bad\0\0\0\0\x01" + } +} +impl soroban_sdk::SpecShakingMarker for UnusedNonPubError { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() {} +} impl TryFrom for UnusedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -20490,7 +20991,6 @@ mod test { use std::collections::HashSet; use std::vec::Vec; const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01@\n`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02+\x07\x01x\x011\x00\x00\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01b\x01j\x00\x00\x01m\x019\x00\x02\x01m\x01a\x00\x03\x03\x1b\x1a\x04\x05\x00\x06\x04\x04\x04\x04\x04\x04\x04\x01\x07\x01\x01\x04\x01\x00\x04\x04\x08\t\x01\x04\x01\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xbe\x85\xc0\x00\x0b\x7f\x00A\xe0\x85\xc0\x00\x0b\x7f\x00A\xe0\x85\xc0\x00\x0b\x07\xea\x02\x17\x06memory\x02\x00\x11publish_data_type\x00\x07\x13publish_nested_data\x00\x0b\x14publish_nested_topic\x00\x0c\x11publish_ref_event\x00\x0e\x0epublish_simple\x00\x0f\x12publish_topic_type\x00\x10\nwith_error\x00\x11\x0fwith_lib_struct\x00\x12\x08with_map\x00\x14\x0cwith_non_pub\x00\x15\x12with_non_pub_error\x00\x16\x0bwith_option\x00\x17\nwith_param\x00\x18\x0bwith_result\x00\x19\x0bwith_return\x00\x1a\nwith_tuple\x00\x1d\x11with_tuple_return\x00\x1e\x08with_vec\x00\x1f\x12with_wasm_imported\x00 \x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xa6\x17\x1a\xae\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x8c\x84\xc0\x80\x00A\x06\x10\x88\x80\x80\x80\x00!\x01A\x00-\x00\xa8\x81\xc0\x80\x00\x1aA\x00-\x00\xa6\x82\xc0\x80\x00\x1aA\xd4\x84\xc0\x80\x00A\x19\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\xe4\x83\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\xb8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\x9b\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\x9c\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x0b\xc5\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xa5\x83\xc0\x80\x00A\x06\x10\x88\x80\x80\x80\x00!\x01A\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xde\x82\xc0\x80\x00\x1aA\x87\x85\xc0\x80\x00A\x1b\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xc0\x83\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x00A\xfc\x83\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\xb8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xbd\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8a\x82\xc0\x80\x00\x1aA\x00-\x00\x98\x82\xc0\x80\x00\x1aA\x00-\x00\xec\x82\xc0\x80\x00\x1aA\xa2\x85\xc0\x80\x00A\x1c\x10\x88\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xc0\x83\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x01A\xfc\x83\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x00\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\x98\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x06\x00B\x8b\xc8\x01\x0b\xc3\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8c\x81\xc0\x80\x00\x1aA\x00-\x00\xfe\x80\xc0\x80\x00\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xb6\x81\xc0\x80\x00\x1aA\xc0\x84\xc0\x80\x00A\x14\x10\x88\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xc0\x83\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x00A\xd8\x83\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\xb8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x7f\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x84\x84\xc0\x80\x00A\x08\x10\x88\x80\x80\x80\x00!\x01A\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\xa0\x84\xc0\x80\x00A\x11\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\x98\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b}\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xee\x81\xc0\x80\x00\x1aA\x00-\x00\xb4\x82\xc0\x80\x00\x1aA\xed\x84\xc0\x80\x00A\x1a\x10\x88\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\x98\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x13\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\xa0\x05\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xbe\x85\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd0\x85\xc0\x80\x00A\x02 \x01A\x02\x10\x93\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x1a\x0b(\x00A\x00-\x00\xfa\x82\xc0\x80\x00\x1aA\x00-\x00\x88\x83\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xe2\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xc0\x83\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\x93\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x12\x00A\x00-\x00\xb8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0br\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xc4\x81\xc0\x80\x00\x1a\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xcc\x83\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\x93\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x8a\x02\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03A\x00-\x00\xfc\x81\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x83\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\x93\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xc0\x83\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\x93\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x81\x80\x80\x80\x00\x1a\x0bA\x00-\x00\xf0\x80\xc0\x80\x00\x1a \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0bZ\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x96\x83\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x08A\xcc\x83\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x00A\xd4\x83\xc0\x80\x00A\x01\x10\x9b\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\x9c\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x84\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x0b\xc4\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\x9a\x81\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xc0\x83\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\x93\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xc2\x82\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x18A\xc0\x83\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x8a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\x9c\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b\x1e\x00A\x00-\x00\x9c\x80\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xd0\x82\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd0\x85\xc0\x80\x00A\x02 \x01A\x02\x10\x93\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x0b\xea\x05\x01\x00A\x80\x80\xc0\x00\x0b\xe0\x05SpEcV1Hh\xdc\xaaa\x8d\xf7\rSpEcV1\xe7\xcf\x9b1n\x15\x13\xfeSpEcV1\xe2\x01y\xc9\x9a\xf8\xedtSpEcV1v1\x0eP\xa9C\xc7*SpEcV1\xa9<\xd8+\xb7\xa7\r\x17SpEcV1X\x03\xf6t\xc7\xd0\x01\"SpEcV1\'\xbd_A\r\x9a\x89\x02SpEcV1p\x8c\x0fN!\x082\xd8SpEcV1\xc2\xf4N\xbf\xebqvpSpEcV1K\xdf\'8m/\xe8\x1dSpEcV1@\xb9LO\xf9\xd1\xe8\xe2SpEcV1\xde\x1dMa\x01\xec\xb0ASpEcV1\xc2 \x1b\xdc\xc8gxZSpEcV1[Q+\xe9\xde\xd5\xf2>SpEcV1\xb3/\x97\xd5\x06\xbd3BSpEcV1\x0c\xf0\xf6w\xfd\x1a\x1b\x94SpEcV1\'\xf2\xa2\xb9\xd0)\xc0uSpEcV1\xf5\xd4\x9b\xa3\xccI\x13\xf7SpEcV1\x84\x08Y\xae\xa0\xf128SpEcV16\x83?\xf0\xcdW\xb1/SpEcV1\x94\xc7w/_\xebXcSpEcV1q\xa3z;6\xa6R\x01SpEcV1q^\xe2&\x9di\x9d\x0eSpEcV1Y\xa66\xb3\xecxE\x13SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1 \xfbl\x04B\x82\xc0\xb4SpEcV1\xe3\xf2\x9b5%a\xfb\xd6SpEcV1[\xf4R\xdf\xdd\xb4\xb0\xbcSpEcV1\xaaX8\xde\xef\xbb6%SpEcV1k\xe4zxB\xd1+\x02anested\x00\xa4\x01\x10\x00\x01\x00\x00\x00\xa5\x01\x10\x00\x06\x00\x00\x00val\x00\xbc\x01\x10\x00\x03\x00\x00\x00data\xc8\x01\x10\x00\x04\x00\x00\x00A\x00\x00\x00\xa5\x01\x10\x00\x06\x00\x00\x00xy\x00\x00\xe0\x01\x10\x00\x01\x00\x00\x00\xe1\x01\x10\x00\x01\x00\x00\x00inner\x00\x00\x00\xf4\x01\x10\x00\x05\x00\x00\x00transfercoordsamount\x12\x02\x10\x00\x06\x00\x00\x00used_event_simplepayload1\x02\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicSpEcV1\xa3\x16\n\x8f\xc9\x92\xd2\x11f1f2\xcc\x02\x10\x00\x02\x00\x00\x00\xce\x02\x10\x00\x02\x00\x00\x00\x00\xaf6\x0econtractspecv0\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\x0cUsedResultOk\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructC\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UnusedNonPubError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UnusedNonPubStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; - const WASM_NO_ENV: &[u8] = b"\x00asm\x01\x00\x00\x00\x01@\n`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02+\x07\x01x\x011\x00\x00\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01b\x01j\x00\x00\x01m\x019\x00\x02\x01m\x01a\x00\x03\x03\x1b\x1a\x04\x05\x00\x06\x04\x04\x04\x04\x04\x04\x04\x01\x07\x01\x01\x04\x01\x00\x04\x04\x08\t\x01\x04\x01\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9a\x82\xc0\x00\x0b\x7f\x00A\xb0\x82\xc0\x00\x0b\x7f\x00A\xb0\x82\xc0\x00\x0b\x07\xea\x02\x17\x06memory\x02\x00\x11publish_data_type\x00\x07\x13publish_nested_data\x00\x0b\x14publish_nested_topic\x00\x0c\x11publish_ref_event\x00\x0e\x0epublish_simple\x00\x0f\x12publish_topic_type\x00\x10\nwith_error\x00\x11\x0fwith_lib_struct\x00\x12\x08with_map\x00\x14\x0cwith_non_pub\x00\x15\x12with_non_pub_error\x00\x16\x0bwith_option\x00\x17\nwith_param\x00\x18\x0bwith_result\x00\x19\x0bwith_return\x00\x1a\nwith_tuple\x00\x1d\x11with_tuple_return\x00\x1e\x08with_vec\x00\x1f\x12with_wasm_imported\x00 \x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xe6\x14\x1a\x9a\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\xe8\x80\xc0\x80\x00A\x06\x10\x88\x80\x80\x80\x00!\x01A\xb0\x81\xc0\x80\x00A\x19\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\xc0\x80\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\x94\x81\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\x9b\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\x9c\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x0b\xa7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x81\x80\xc0\x80\x00A\x06\x10\x88\x80\x80\x80\x00!\x01A\xe3\x81\xc0\x80\x00A\x1b\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\x9c\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x00A\xd8\x80\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\x94\x81\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x9f\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xfe\x81\xc0\x80\x00A\x1c\x10\x88\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\x9c\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x01A\xd8\x80\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x00\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\xf4\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x06\x00B\x8b\xc8\x01\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x9c\x81\xc0\x80\x00A\x14\x10\x88\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x89\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\x9c\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x007\x03\x00 \x00A\xb4\x80\xc0\x80\x00A\x01 \x00A\x01\x10\x8a\x80\x80\x80\x007\x03\x08 \x01A\x94\x81\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bu\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xe0\x80\xc0\x80\x00A\x08\x10\x88\x80\x80\x80\x00!\x01A\xfc\x80\xc0\x80\x00A\x11\x10\x88\x80\x80\x80\x00 \x01\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\xf4\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bi\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xc9\x81\xc0\x80\x00A\x1a\x10\x88\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x89\x80\x80\x80\x00!\x01 \x00\x10\x8d\x80\x80\x80\x007\x03\x08 \x01A\xf4\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\t\x00B\x84\x80\x80\x80\xa0\x05\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa0\x82\xc0\x80\x00A\x02 \x01A\x02\x10\x93\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x1a\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0b]\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x9c\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\x93\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x08\x00B\x84\x80\x80\x80\x10\x0bh\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\x93\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xec\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\x93\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x9c\x80\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\x93\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x81\x80\x80\x80\x00\x1a\x0b \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0bF\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x08A\xa8\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\xb0\x80\xc0\x80\x00A\x01\x10\x9b\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\x9c\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x84\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x0b\xba\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x9c\x80\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\x93\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x18A\x9c\x80\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x8a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\x9c\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa0\x82\xc0\x80\x00A\x02 \x01A\x02\x10\x93\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x0b\xba\x02\x01\x00A\x80\x80\xc0\x00\x0b\xb0\x02anested\x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x10\x00\x06\x00\x00\x00val\x00\x18\x00\x10\x00\x03\x00\x00\x00data$\x00\x10\x00\x04\x00\x00\x00A\x00\x00\x00\x01\x00\x10\x00\x06\x00\x00\x00xy\x00\x00<\x00\x10\x00\x01\x00\x00\x00=\x00\x10\x00\x01\x00\x00\x00inner\x00\x00\x00P\x00\x10\x00\x05\x00\x00\x00transfercoordsamountn\x00\x10\x00\x06\x00\x00\x00used_event_simplepayload\x8d\x00\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicf1f2\x00\x00\x1a\x01\x10\x00\x02\x00\x00\x00\x1c\x01\x10\x00\x02\x00\x00\x00\x00\xc3)\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\x0cUsedResultOk\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructC\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; extern crate test; #[rustc_test_marker = "test::test_spec_shaking_v2"] #[doc(hidden)] @@ -20500,9 +21000,9 @@ mod test { ignore: false, ignore_message: ::core::option::Option::None, source_file: "tests/spec_shaking_v2/src/test.rs", - start_line: 16usize, + start_line: 11usize, start_col: 4usize, - end_line: 16usize, + end_line: 11usize, end_col: 24usize, compile_fail: false, no_run: false, @@ -20654,176 +21154,6 @@ mod test { } } } - extern crate test; - #[rustc_test_marker = "test::test_spec_shaking_v2_no_env_fallback_to_v1"] - #[doc(hidden)] - pub const test_spec_shaking_v2_no_env_fallback_to_v1: test::TestDescAndFn = - test::TestDescAndFn { - desc: test::TestDesc { - name: test::StaticTestName("test::test_spec_shaking_v2_no_env_fallback_to_v1"), - ignore: false, - ignore_message: ::core::option::Option::None, - source_file: "tests/spec_shaking_v2/src/test.rs", - start_line: 173usize, - start_col: 4usize, - end_line: 173usize, - end_col: 46usize, - compile_fail: false, - no_run: false, - should_panic: test::ShouldPanic::No, - test_type: test::TestType::UnitTest, - }, - testfn: test::StaticTestFn( - #[coverage(off)] - || test::assert_test_result(test_spec_shaking_v2_no_env_fallback_to_v1()), - ), - }; - fn test_spec_shaking_v2_no_env_fallback_to_v1() { - let entries = soroban_spec::read::from_wasm(WASM_NO_ENV).unwrap(); - let markers = soroban_spec::shaking::find_all(WASM_NO_ENV); - if !markers.is_empty() { - { - ::core::panicking::panic_fmt( - format_args!( - "no markers should be present when experimental_spec_shaking_v2 is disabled due to missing env var, found {0}", - markers.len(), - ), - ); - } - } - let all_names: HashSet = - entries.iter().filter_map(entry_name).collect(); - let fn_names: Vec = entries - .iter() - .filter_map(|e| { - if let ScSpecEntry::FunctionV0(f) = e { - Some(f.name.to_utf8_string_lossy()) - } else { - None - } - }) - .collect(); - for expected_fn in [ - "with_param", - "with_return", - "with_error", - "with_vec", - "with_map", - "publish_simple", - "publish_topic_type", - "publish_data_type", - "publish_nested_topic", - "publish_nested_data", - "publish_ref_event", - "with_lib_struct", - "with_wasm_imported", - "with_option", - "with_result", - "with_non_pub", - "with_non_pub_error", - "with_tuple", - "with_tuple_return", - ] { - if !fn_names.contains(&expected_fn.into()) { - { - ::core::panicking::panic_fmt(format_args!("fn {0} missing", expected_fn)); - } - } - } - let pub_types = [ - "UsedParamStruct", - "UsedReturnEnum", - "UsedParamIntEnum", - "UsedErrorEnum", - "UsedNestedInStruct", - "UsedVecElement", - "UsedMapKey", - "UsedMapVal", - "UsedEventSimple", - "UsedEventTopicType", - "UsedEventWithTopicType", - "UsedEventDataType", - "UsedEventWithDataType", - "UsedEventTopicOuter", - "UsedEventTopicInner", - "UsedEventWithNestedTopic", - "UsedEventDataOuter", - "UsedEventDataInner", - "UsedEventWithNestedData", - "UsedRefTopicType", - "UsedRefDataType", - "UsedRefDataInner", - "UsedEventWithRefs", - "UsedOptionElement", - "UsedResultOk", - "UsedTupleElement", - "UsedTupleReturnElement", - "UnusedNonContractFnParam", - "UnusedNonContractFnReturn", - "UnusedStruct", - "UnusedEnum", - "UnusedIntEnum", - "UnusedEvent", - ]; - for name in pub_types { - if !all_names.contains(name) { - { - ::core::panicking::panic_fmt(format_args!( - "pub type/event {0} should have a spec entry without the feature", - name, - )); - } - } - } - let non_pub_types = [ - "UsedNonPubStruct", - "UsedNonPubError", - "UnusedNonPubStruct", - "UnusedNonPubError", - ]; - for name in non_pub_types { - if !!all_names.contains(name) { - { - ::core::panicking::panic_fmt(format_args!( - "non-pub type {0} should NOT have a spec entry without the feature", - name, - )); - } - } - } - let lib_imported_types = [ - "StructA", - "StructB", - "StructC", - "StructTupleA", - "StructTupleB", - "StructTupleC", - "EnumA", - "EnumB", - "EnumC", - "EnumIntA", - "EnumIntB", - "EnumIntC", - "ErrorA", - "ErrorB", - "ErrorC", - "EventA", - "EventB", - "EventC", - ]; - for name in lib_imported_types { - if !all_names.contains(name) { - { - ::core::panicking::panic_fmt( - format_args!( - "lib-imported type {0} should have a spec entry (rlib statics linked into cdylib)", - name, - ), - ); - } - } - } - } /// Extract the name from a non-function spec entry. fn entry_name(entry: &ScSpecEntry) -> Option { match entry { @@ -20841,8 +21171,5 @@ mod test { #[doc(hidden)] pub fn main() -> () { extern crate test; - test::test_main_static(&[ - &test_spec_shaking_v2, - &test_spec_shaking_v2_no_env_fallback_to_v1, - ]) + test::test_main_static(&[&test_spec_shaking_v2]) } diff --git a/tests-expanded/test_tuples_tests.rs b/tests-expanded/test_tuples_tests.rs index 2e77ef036..afede28df 100644 --- a/tests-expanded/test_tuples_tests.rs +++ b/tests-expanded/test_tuples_tests.rs @@ -640,7 +640,7 @@ mod test { use crate::{Contract, ContractClient}; use soroban_sdk::Env; mod wasm { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xcb\x01\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xcb\x01\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn tuple1(env: soroban_sdk::Env, arg: (u32,)) -> (u32,); fn tuple2(env: soroban_sdk::Env, arg: (u32, i64)) -> (u32, i64); diff --git a/tests-expanded/test_udt_wasm32v1-none.rs b/tests-expanded/test_udt_wasm32v1-none.rs index dc5a208c0..b71d72ff0 100644 --- a/tests-expanded/test_udt_wasm32v1-none.rs +++ b/tests-expanded/test_udt_wasm32v1-none.rs @@ -56,16 +56,6 @@ impl UdtEnum2 { *b"\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\x08UdtEnum2\0\0\0\x02\0\0\0\0\0\0\0\x01A\0\0\0\0\0\0\n\0\0\0\0\0\0\0\x01B\0\0\0\0\0\0\x0f" } } -impl soroban_sdk::SpecShakingMarker for UdtEnum2 { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xaf\xf7\x93\xba\x9eM\xde\x9a"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for UdtEnum2 { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -176,19 +166,6 @@ impl UdtEnum { *b"\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x07UdtEnum\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x04UdtA\0\0\0\x01\0\0\0\0\0\0\0\x04UdtB\0\0\0\x01\0\0\x07\xd0\0\0\0\tUdtStruct\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x04UdtC\0\0\0\x01\0\0\x07\xd0\0\0\0\x08UdtEnum2\0\0\0\x01\0\0\0\0\0\0\0\x04UdtD\0\0\0\x01\0\0\x07\xd0\0\0\0\x08UdtTuple" } } -impl soroban_sdk::SpecShakingMarker for UdtEnum { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xf3\xb0\xab@i\rH\xb4"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for UdtEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -341,18 +318,6 @@ impl UdtTuple { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x08UdtTuple\0\0\0\x02\0\0\0\0\0\0\0\x010\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x011\0\0\0\0\0\x03\xea\0\0\0\x07" } } -impl soroban_sdk::SpecShakingMarker for UdtTuple { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\xeb\x9f\x12&\x9av(*"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for UdtTuple { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -457,19 +422,6 @@ impl UdtStruct { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\tUdtStruct\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\x01a\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x01b\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x01c\0\0\0\0\0\x03\xea\0\0\0\x07" } } -impl soroban_sdk::SpecShakingMarker for UdtStruct { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\x16'd8\xff\xc9\xb1\xf8"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for UdtStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( diff --git a/tests-expanded/test_workspace_lib_wasm32v1-none.rs b/tests-expanded/test_workspace_lib_wasm32v1-none.rs index 616d0ad54..ccfff7e61 100644 --- a/tests-expanded/test_workspace_lib_wasm32v1-none.rs +++ b/tests-expanded/test_workspace_lib_wasm32v1-none.rs @@ -40,17 +40,6 @@ impl Value { *b"\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x05Value\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x05value\0\0\0\0\0\0\x05" } } -impl soroban_sdk::SpecShakingMarker for Value { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - { - static MARKER: [u8; 14usize] = *b"SpEcV1\x82\xf8t\xbe\t\x04b\\"; - let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; - } - } -} impl soroban_sdk::TryFromVal for Value { type Error = soroban_sdk::ConversionError; fn try_from_val( diff --git a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json index 9e96fafb8..5cc016364 100644 --- a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json +++ b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "5b61633ece44ac16e4c83604f38a43507220578262c9df06d078a39c465912d9" + "wasm": "83dbf55a7f436f851e8c0e8d55d921302138d98960c36c6ff1b7a9d3df3b6936" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "5b61633ece44ac16e4c83604f38a43507220578262c9df06d078a39c465912d9" + "wasm": "83dbf55a7f436f851e8c0e8d55d921302138d98960c36c6ff1b7a9d3df3b6936" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "5b61633ece44ac16e4c83604f38a43507220578262c9df06d078a39c465912d9", - "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c7432004b0e636f6e7472616374737065637630000000000000000000000004657865630000000000000001000000100000000000000000000000056578656332000000000000000000000100000010001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "83dbf55a7f436f851e8c0e8d55d921302138d98960c36c6ff1b7a9d3df3b6936", + "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c7432004b0e636f6e7472616374737065637630000000000000000000000004657865630000000000000001000000100000000000000000000000056578656332000000000000000000000100000010001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0" diff --git a/tests/spec_import/Cargo.toml b/tests/spec_import/Cargo.toml index 47cff6216..07dfe8aa6 100644 --- a/tests/spec_import/Cargo.toml +++ b/tests/spec_import/Cargo.toml @@ -12,5 +12,5 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = {path = "../../soroban-sdk", default-features = false} +soroban-sdk = {path = "../../soroban-sdk"} test_spec_lib = {path = "../spec_lib"} diff --git a/tests/spec_lib/Cargo.toml b/tests/spec_lib/Cargo.toml index ae63642c9..83f8d7dc0 100644 --- a/tests/spec_lib/Cargo.toml +++ b/tests/spec_lib/Cargo.toml @@ -12,7 +12,7 @@ crate-type = ["rlib"] doctest = false [dependencies] -soroban-sdk = {path = "../../soroban-sdk", default-features = false} +soroban-sdk = {path = "../../soroban-sdk"} [dev-dependencies] soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/spec_shaking_v1/Cargo.toml b/tests/spec_shaking_v1/Cargo.toml index 7d7ce0734..24749749b 100644 --- a/tests/spec_shaking_v1/Cargo.toml +++ b/tests/spec_shaking_v1/Cargo.toml @@ -12,7 +12,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = {path = "../../soroban-sdk", default-features = false} +soroban-sdk = {path = "../../soroban-sdk"} test_spec_lib = {path = "../spec_lib"} [dev-dependencies] diff --git a/tests/spec_shaking_v2/Cargo.toml b/tests/spec_shaking_v2/Cargo.toml index dd36ad7e2..db370cec6 100644 --- a/tests/spec_shaking_v2/Cargo.toml +++ b/tests/spec_shaking_v2/Cargo.toml @@ -12,7 +12,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = {path = "../../soroban-sdk"} +soroban-sdk = {path = "../../soroban-sdk", features = ["experimental_spec_shaking_v2"]} test_spec_lib = {path = "../spec_lib"} [dev-dependencies] diff --git a/tests/spec_shaking_v2/src/test.rs b/tests/spec_shaking_v2/src/test.rs index 7a7a8559f..ba359e554 100644 --- a/tests/spec_shaking_v2/src/test.rs +++ b/tests/spec_shaking_v2/src/test.rs @@ -7,11 +7,6 @@ use std::vec::Vec; const WASM: &[u8] = include_bytes!("../../../target/wasm32v1-none/release/test_spec_shaking_v2.wasm"); -// This crate is built twice during `make build-test-wasms`. The first time, it is built separately -// without the spec shaking v2 env variable set, and renamed to test_spec_shaking_v2_no_env.wasm. -const WASM_NO_ENV: &[u8] = - include_bytes!("../../../target/wasm32v1-none/release/test_spec_shaking_v2_no_env.wasm"); - #[test] fn test_spec_shaking_v2() { // Read all spec entries from the WASM. @@ -169,149 +164,6 @@ fn test_spec_shaking_v2() { } } -#[test] -fn test_spec_shaking_v2_no_env_fallback_to_v1() { - // Read all spec entries from the WASM. - let entries = soroban_spec::read::from_wasm(WASM_NO_ENV).unwrap(); - - // No markers should be embedded without the experimental feature. - let markers = soroban_spec::shaking::find_all(WASM_NO_ENV); - assert!( - markers.is_empty(), - "no markers should be present when experimental_spec_shaking_v2 is disabled due to missing env var, found {}", - markers.len() - ); - - let all_names: HashSet = entries.iter().filter_map(entry_name).collect(); - - // All functions should be present in the spec. - let fn_names: Vec = entries - .iter() - .filter_map(|e| { - if let ScSpecEntry::FunctionV0(f) = e { - Some(f.name.to_utf8_string_lossy()) - } else { - None - } - }) - .collect(); - for expected_fn in [ - "with_param", - "with_return", - "with_error", - "with_vec", - "with_map", - "publish_simple", - "publish_topic_type", - "publish_data_type", - "publish_nested_topic", - "publish_nested_data", - "publish_ref_event", - "with_lib_struct", - "with_wasm_imported", - "with_option", - "with_result", - "with_non_pub", - "with_non_pub_error", - "with_tuple", - "with_tuple_return", - ] { - assert!( - fn_names.contains(&expected_fn.into()), - "fn {expected_fn} missing" - ); - } - - // Public types should have spec entries. - let pub_types = [ - "UsedParamStruct", - "UsedReturnEnum", - "UsedParamIntEnum", - "UsedErrorEnum", - "UsedNestedInStruct", - "UsedVecElement", - "UsedMapKey", - "UsedMapVal", - "UsedEventSimple", - "UsedEventTopicType", - "UsedEventWithTopicType", - "UsedEventDataType", - "UsedEventWithDataType", - "UsedEventTopicOuter", - "UsedEventTopicInner", - "UsedEventWithNestedTopic", - "UsedEventDataOuter", - "UsedEventDataInner", - "UsedEventWithNestedData", - "UsedRefTopicType", - "UsedRefDataType", - "UsedRefDataInner", - "UsedEventWithRefs", - "UsedOptionElement", - "UsedResultOk", - "UsedTupleElement", - "UsedTupleReturnElement", - "UnusedNonContractFnParam", - "UnusedNonContractFnReturn", - "UnusedStruct", - "UnusedEnum", - "UnusedIntEnum", - "UnusedEvent", - ]; - for name in pub_types { - assert!( - all_names.contains(name), - "pub type/event {name} should have a spec entry without the feature" - ); - } - - // Non-pub types should NOT have spec entries without the feature. - let non_pub_types = [ - "UsedNonPubStruct", - "UsedNonPubError", - "UnusedNonPubStruct", - "UnusedNonPubError", - ]; - for name in non_pub_types { - assert!( - !all_names.contains(name), - "non-pub type {name} should NOT have a spec entry without the feature" - ); - } - - // Lib-imported types are in the WASM spec (rlib statics linked into cdylib). - let lib_imported_types = [ - "StructA", - "StructB", - "StructC", - "StructTupleA", - "StructTupleB", - "StructTupleC", - "EnumA", - "EnumB", - "EnumC", - "EnumIntA", - "EnumIntB", - "EnumIntC", - "ErrorA", - "ErrorB", - "ErrorC", - "EventA", - "EventB", - "EventC", - ]; - for name in lib_imported_types { - assert!( - all_names.contains(name), - "lib-imported type {name} should have a spec entry (rlib statics linked into cdylib)" - ); - } - - // WASM-imported types have export = false without the feature, so they do - // not contribute additional spec entries. (Their names overlap with - // lib-imported types above, which ARE present from rlib linking.) -} - /// Extract the name from a non-function spec entry. fn entry_name(entry: &ScSpecEntry) -> Option { match entry { diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json index 8b912ea12..a8e9861eb 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json index 8b912ea12..a8e9861eb 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_void.1.json b/tests/tuples/test_snapshots/test/test_wasm_void.1.json index 8b912ea12..a8e9861eb 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_void.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_void.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52" + "wasm": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "410dc845492e2dda43b2653584a870cd877607a840671eb5b78279747b295a52", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "158eb6314bed45b7a37db469348779866b3b33920288261662effbbeed2f8cd2", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000cb010e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f617267000000020000000100000002001e11636f6e7472616374656e766d6574617630000000000000001a00000000002b0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e300000" } }, "ext": "v0"