From e6053c0d35fc87379141c3f53aee546dd76a74ba Mon Sep 17 00:00:00 2001 From: Huan-Cheng Chang Date: Mon, 11 Nov 2024 10:55:13 +0000 Subject: [PATCH] feat(octez): implement execute_rollup_outbox_message --- crates/jstzd/src/task/octez_rollup.rs | 7 + crates/jstzd/tests/octez_baker_test.rs | 2 +- crates/jstzd/tests/octez_client_test.rs | 194 ++- crates/jstzd/tests/octez_rollup_test.rs | 10 +- .../KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json | 60 + .../Cargo.lock | 1259 +++++++++++++++++ .../Cargo.toml | 17 + .../installer.hex | 1 + ...2dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 | Bin 0 -> 3974 bytes ...c1437e74cf0faa80642568bc7b8a6adf06e0c428e3 | Bin 0 -> 4096 bytes ...e832c859a558925de10be436888c98d5fc15b55526 | Bin 0 -> 4096 bytes ...98247187a9e81268370be73f438edccf22876d1dec | Bin 0 -> 4096 bytes ...5c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 | Bin 0 -> 4096 bytes ...99886676bc968d8c83507381acf7763c3d68c059b1 | Bin 0 -> 4096 bytes ...023f65823124fe1889cb8ddab077f2d1fd4c40c80b | Bin 0 -> 4096 bytes ...438589c70fba7ce3a68b11a5fb5ce0b206791570ae | Bin 0 -> 4096 bytes ...f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 | Bin 0 -> 4096 bytes ...ca192eb088ce7b5772774efb5efbcffa56d8dd9497 | Bin 0 -> 665 bytes ...1f046a524a471b28d8863139e3bdf31c58002f2111 | Bin 0 -> 4096 bytes ...21e4e24d2b12ccd8814304fa005b9c8d4596adb5bd | Bin 0 -> 4096 bytes ...b2641721aa1a1295307814587c0c5c000bde7ea9af | Bin 0 -> 4096 bytes ...c4e544401f93876a5fa57960c0384ec450c82f466a | Bin 0 -> 4096 bytes ...b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 | Bin 0 -> 4096 bytes ...0a9044935349979f4461edc5c8d72ab8d562a240b5 | Bin 0 -> 4096 bytes ...7ee7777330d7edb8d7a5572baea82ff4f05d59aa8f | Bin 0 -> 4096 bytes ...aa82d1ddbb64fb2280ccc7ae441bf131842f5def1e | Bin 0 -> 4096 bytes ...5d740ba442de4e346884eaa87f376202fe093599dd | Bin 0 -> 4096 bytes ...d503a29987eb36b240716ba55de938e157e78fd965 | Bin 0 -> 4096 bytes ...7030fffbd6aeebfb63e6d02ef176fdb669d2d0b27d | Bin 0 -> 4096 bytes .../src/lib.rs | 61 + crates/jstzd/tests/utils.rs | 36 +- crates/octez/src/async/client.rs | 38 +- 32 files changed, 1669 insertions(+), 16 deletions(-) create mode 100644 crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00196427030da84c6763a35cc1437e74cf0faa80642568bc7b8a6adf06e0c428e3 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd9497 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0058dfbb5eee609f4b015bdf1f046a524a471b28d8863139e3bdf31c58002f2111 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/005c8b12d95a5db63be66ed021e4e24d2b12ccd8814304fa005b9c8d4596adb5bd create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c517b7a18bbfa53b013a597ee7777330d7edb8d7a5572baea82ff4f05d59aa8f create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00da54e4dcd03c77b1d1a2a6aa82d1ddbb64fb2280ccc7ae441bf131842f5def1e create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00e539ed3469bf2d6e54493a5d740ba442de4e346884eaa87f376202fe093599dd create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00ef74b1dad990f98ff261c97030fffbd6aeebfb63e6d02ef176fdb669d2d0b27d create mode 100644 crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs diff --git a/crates/jstzd/src/task/octez_rollup.rs b/crates/jstzd/src/task/octez_rollup.rs index be44db578..cc205be99 100644 --- a/crates/jstzd/src/task/octez_rollup.rs +++ b/crates/jstzd/src/task/octez_rollup.rs @@ -11,6 +11,7 @@ use anyhow::{anyhow, Result}; use async_trait::async_trait; use octez::r#async::{ directory::Directory, + endpoint::Endpoint, rollup::{OctezRollupConfig, RollupDataDir}, }; use serde::Deserialize; @@ -23,6 +24,12 @@ pub struct OctezRollup { _data_dir: Arc, } +impl OctezRollup { + pub fn rpc_endpoint(&self) -> &Endpoint { + &self.config.rpc_endpoint + } +} + #[derive(Debug, Deserialize)] struct HealthCheckResponse { healthy: bool, diff --git a/crates/jstzd/tests/octez_baker_test.rs b/crates/jstzd/tests/octez_baker_test.rs index c9b367fe1..7434531db 100644 --- a/crates/jstzd/tests/octez_baker_test.rs +++ b/crates/jstzd/tests/octez_baker_test.rs @@ -4,7 +4,7 @@ use utils::{get_block_level, setup}; #[tokio::test(flavor = "multi_thread")] async fn test_baker() { - let (mut octez_node, _, mut baker) = setup().await; + let (mut octez_node, _, mut baker) = setup(None).await; let node_endpoint = octez_node.rpc_endpoint(); let _ = baker.kill().await; diff --git a/crates/jstzd/tests/octez_client_test.rs b/crates/jstzd/tests/octez_client_test.rs index 48f62aa89..bd0635f1c 100644 --- a/crates/jstzd/tests/octez_client_test.rs +++ b/crates/jstzd/tests/octez_client_test.rs @@ -3,7 +3,12 @@ use jstzd::task::Task; use octez::r#async::{ client::{OctezClientBuilder, Signature}, endpoint::Endpoint, + protocol::{ + BootstrapContract, BootstrapSmartRollup, ProtocolParameterBuilder, ReadWritable, + SmartRollupPvmKind, + }, }; +use serde::Deserialize; use serde_json::Value; use std::{ fs::{read_to_string, remove_file}, @@ -11,11 +16,13 @@ use std::{ path::Path, }; use tempfile::{NamedTempFile, TempDir}; +use tezos_crypto_rs::hash::SmartRollupHash; +use tokio::io::AsyncWriteExt; mod utils; use std::path::PathBuf; use utils::{ activate_alpha, create_client, get_head_block_hash, get_operation_kind, get_request, - import_activator, setup, spawn_octez_node, ACTIVATOR_SECRET_KEY, + import_activator, poll, setup, spawn_octez_node, spawn_rollup, ACTIVATOR_SECRET_KEY, }; fn read_file(path: &Path) -> Value { @@ -241,7 +248,7 @@ async fn add_address() { #[tokio::test(flavor = "multi_thread")] async fn call_contract() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let bootstrap1: String = "bootstrap1".to_string(); let contract = "KT1F3MuqvT9Yz57TgCS3EkDcKNZe9HpiavUJ".to_string(); let before = octez_client.get_balance(&contract).await.unwrap(); @@ -265,7 +272,7 @@ async fn call_contract() { #[tokio::test(flavor = "multi_thread")] async fn originate_contract_and_wait_for() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let head = get_head_block_hash(&octez_node.rpc_endpoint().to_string()).await; let mut config_file = NamedTempFile::new().unwrap(); @@ -326,7 +333,7 @@ async fn originate_contract_and_wait_for() { #[tokio::test(flavor = "multi_thread")] async fn send_rollup_inbox_message() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let (block, op) = octez_client .send_rollup_inbox_message("bootstrap1", "0000", Some(0.1)) @@ -350,3 +357,182 @@ async fn send_rollup_inbox_message() { let _ = baker.kill().await; let _ = octez_node.kill().await; } + +#[derive(Deserialize)] +struct OutputProof { + pub commitment: String, + pub proof: String, +} + +#[tokio::test(flavor = "multi_thread")] +async fn execute_rollup_outbox_message() { + let rollup_address = "sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao"; + // this is the destination contract where the outbox messages target + // this address is sealed in the rollup code + let contract_address = "KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK"; + let installer_path = Path::new(std::env!("CARGO_MANIFEST_DIR")).join(format!( + "tests/resources/rollup/{rollup_address}/installer.hex" + )); + let preimages_dir = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join(format!("tests/resources/rollup/{rollup_address}/preimages")); + let contract_path = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join(format!("tests/resources/contract/{contract_address}.json")); + let param_file = set_up_parameters_for_outbox_message( + rollup_address, + contract_address, + &installer_path, + &contract_path, + ) + .await; + + let (mut octez_node, octez_client, mut baker) = setup(Some(param_file.path())).await; + let mut rollup = spawn_rollup( + &octez_node, + &octez_client, + installer_path, + preimages_dir, + Some(rollup_address), + ) + .await; + + octez_client + .send_rollup_inbox_message("bootstrap1", "0000", Some(0.1)) + .await + .unwrap(); + + // wait until outbox message is cemented + let proof = wait_for_outbox_proof(&rollup.rpc_endpoint().to_string()) + .await + .unwrap(); + + let (block, op) = octez_client + .execute_rollup_outbox_message( + &SmartRollupHash::from_base58_check(rollup_address).unwrap(), + "bootstrap1", + &proof.commitment, + &format!("0x{}", &proof.proof), + Some(0.1), + ) + .await + .unwrap(); + + tokio::time::timeout( + tokio::time::Duration::from_secs(5), + octez_client.wait_for(&op, Some(&block), None), + ) + .await + .expect("wait_for should complete soon enough") + .expect("wait_for should be able to find the operation"); + + let operation_kind = + get_operation_kind(&octez_node.rpc_endpoint().to_string(), &block, &op) + .await + .unwrap(); + assert_eq!(operation_kind, "smart_rollup_execute_outbox_message"); + + let _ = rollup.kill().await; + let _ = baker.kill().await; + let _ = octez_node.kill().await; +} + +async fn set_up_parameters_for_outbox_message( + rollup_address: &str, + contract_address: &str, + installer_path: &PathBuf, + contract_path: &PathBuf, +) -> impl ReadWritable { + let kernel = String::from_utf8( + tokio::fs::read(&installer_path) + .await + .unwrap_or_else(|e| panic!("failed to read installer file: {:?}", e)), + ) + .unwrap(); + let contract_json = serde_json::from_slice( + &tokio::fs::read(&contract_path) + .await + .unwrap_or_else(|e| panic!("failed to read contract file: {:?}", e)), + ) + .unwrap(); + let param_file = ProtocolParameterBuilder::new() + .set_bootstrap_smart_rollups([BootstrapSmartRollup::new( + rollup_address, + SmartRollupPvmKind::Wasm, + &kernel, + serde_json::json!({"prim": "bytes"}), + ) + .unwrap()]) + .set_bootstrap_contracts([BootstrapContract::new( + contract_json, + 1_000_000, + Some(contract_address), + ) + .unwrap()]) + .set_source_path( + Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join("tests/sandbox-params.json") + .to_str() + .unwrap(), + ) + .build() + .unwrap(); + + let mut content = tokio::fs::read_to_string(param_file.path()).await.unwrap(); + let mut value: serde_json::Value = serde_json::from_str(&content).unwrap(); + + // overwriting these config values so that outbox messages get cemented sooner + value.as_object_mut().unwrap().insert( + "smart_rollup_challenge_window_in_blocks".to_owned(), + serde_json::json!(8), + ); + value.as_object_mut().unwrap().insert( + "smart_rollup_commitment_period_in_blocks".to_owned(), + serde_json::json!(8), + ); + + content = serde_json::to_string(&value).unwrap(); + tokio::fs::File::create(param_file.path()) + .await + .unwrap() + .write_all(content.as_bytes()) + .await + .unwrap(); + + param_file +} + +async fn wait_for_outbox_proof(rollup_rpc_endpoint: &str) -> anyhow::Result { + #[derive(Deserialize)] + struct Message { + message_index: u32, + } + #[derive(Deserialize)] + struct Executable { + outbox_level: u32, + messages: Vec, + } + + let url = format!("{rollup_rpc_endpoint}/local/outbox/pending/executable"); + let (outbox_level, message_index) = poll(30, 1000, || async { + // response: [{"outbox_level": 1, "messages": [{"message_index": 0, ...}, {"message_index": 1, ...}]}] + if let Ok(res) = reqwest::get(&url).await { + let vs = res.json::>().await.unwrap(); + // using the first message here since any of those should work + if let Some(v) = vs.first() { + if let Some(m) = v.messages.first() { + return Some((v.outbox_level, m.message_index)); + } + } + } + None + }) + .await + .expect("should be able to find outbox message soon enough"); + + let url = format!("{rollup_rpc_endpoint}/global/block/head/helpers/proofs/outbox/{outbox_level}/messages?index={message_index}"); + if let Ok(res) = reqwest::get(&url).await { + if let Ok(v) = res.json::().await { + return Ok(v); + } + } + Err(anyhow::anyhow!("cannot find outbox proof")) +} diff --git a/crates/jstzd/tests/octez_rollup_test.rs b/crates/jstzd/tests/octez_rollup_test.rs index bbef3ef62..2ede10d39 100644 --- a/crates/jstzd/tests/octez_rollup_test.rs +++ b/crates/jstzd/tests/octez_rollup_test.rs @@ -1,11 +1,17 @@ mod utils; use jstzd::task::Task; +use std::path::Path; use utils::{setup, spawn_rollup}; #[tokio::test(flavor = "multi_thread")] async fn test_rollup() { - let (mut octez_node, client, mut baker) = setup().await; - let mut rollup = spawn_rollup(&octez_node, &client).await; + let (mut octez_node, client, mut baker) = setup(None).await; + let kernel_installer = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join("tests/toy_rollup/kernel_installer"); + let preimages_dir = + Path::new(std::env!("CARGO_MANIFEST_DIR")).join("tests/toy_rollup/preimages"); + let mut rollup = + spawn_rollup(&octez_node, &client, kernel_installer, preimages_dir, None).await; let _ = rollup.kill().await; // Should get an error since the rollup node should have been terminated let rollup_is_alive = rollup.health_check().await; diff --git a/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json b/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json new file mode 100644 index 000000000..af0acff56 --- /dev/null +++ b/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json @@ -0,0 +1,60 @@ +{ + "code": [ + { + "args": [{ "annots": ["%myEntryPoint"], "prim": "int" }], + "prim": "parameter" + }, + { + "args": [ + { + "args": [ + { "annots": ["%myParameter1"], "prim": "int" }, + { "annots": ["%myParameter2"], "prim": "int" } + ], + "prim": "pair" + } + ], + "prim": "storage" + }, + { + "args": [ + [ + { "prim": "UNPAIR" }, + { "args": [{ "prim": "int" }, { "int": "123" }], "prim": "PUSH" }, + { "args": [{ "int": "3" }], "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "COMPARE" }, + { "prim": "LE" }, + { + "args": [ + [], + [ + { + "args": [ + { "prim": "string" }, + { + "string": "Assert failure: self.data.myParameter1 <= 123" + } + ], + "prim": "PUSH" + }, + { "prim": "FAILWITH" } + ] + ], + "prim": "IF" + }, + { "prim": "SWAP" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "args": [{ "int": "2" }], "prim": "DIG" }, + { "prim": "ADD" }, + { "args": [{ "int": "1" }], "prim": "UPDATE" }, + { "args": [{ "prim": "operation" }], "prim": "NIL" }, + { "prim": "PAIR" } + ] + ], + "prim": "code" + } + ], + "storage": { "args": [{ "int": "1" }, { "int": "0" }], "prim": "Pair" } +} diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock new file mode 100644 index 000000000..e1bfd563c --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock @@ -0,0 +1,1259 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base58" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +dependencies = [ + "cc", + "glob", + "threadpool", + "which", + "zeroize", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8658c15c5d921ddf980f7fe25b1e82f4b7a4083b2c4985fea4922edb8e43e07d" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "cryptoxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version", + "subtle", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "der" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + +[[package]] +name = "dlmalloc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5e0d321d61de16390ed273b647ce51605b575916d3c25e6ddf27a1e140035" +dependencies = [ + "cfg-if", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "ecdsa" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" +dependencies = [ + "der", + "elliptic-curve", + "hmac", + "signature 1.3.2", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature 2.2.0", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "sha2 0.10.8", + "subtle", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e5c176479da93a0983f0a6fdc3c1b8e7d5be0d7fe3fe05a99f15b96582b9a8" +dependencies = [ + "crypto-bigint", + "ff", + "generic-array", + "group", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "ff" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.162" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" + +[[package]] +name = "libsecp256k1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +dependencies = [ + "arrayref", + "base64", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "outbox-kernel" +version = "0.1.0" +dependencies = [ + "tezos-smart-rollup", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "p256" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d053368e1bae4c8a672953397bd1bd7183dde1c72b0b7612a15719173148d186" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.9.9", +] + +[[package]] +name = "parse-display" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7271152b3c46c07c729698e7a5248e2744466b3446d222c97a0b1315925a97b1" +dependencies = [ + "once_cell", + "parse-display-derive", + "regex", +] + +[[package]] +name = "parse-display-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6a9f3e41b237b77c99c09686481c235964ff5878229412b226c451f3e809f4f" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "regex", + "regex-syntax 0.6.29", + "syn 1.0.109", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "rand_chacha", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" +dependencies = [ + "digest 0.9.0", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "strum" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" + +[[package]] +name = "strum_macros" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tezos-smart-rollup" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63b0f32e98d50bc647594953277c4c572a06bb1279e9ab76878539a130871b7" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-entrypoint", + "tezos-smart-rollup-host", + "tezos-smart-rollup-mock", + "tezos-smart-rollup-storage", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "tezos-smart-rollup-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13420c79af913a35b5930d2e59b5ab37898efeddbc88a5e409565a395909887" + +[[package]] +name = "tezos-smart-rollup-debug" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721471de90f4701b0b6d4ea5fbbd5f3c3500424788264185b47691ecd4ebe27f" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-host", +] + +[[package]] +name = "tezos-smart-rollup-encoding" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9d1000d1771bcb007b03bb14f900f716e70987d15855a3d5dc60ee3dbcb3ab9" +dependencies = [ + "hex", + "nom", + "num-bigint", + "num-traits", + "tezos-smart-rollup-core", + "tezos-smart-rollup-host", + "tezos_crypto_rs", + "tezos_data_encoding", + "tezos_data_encoding_derive", + "thiserror", + "time", +] + +[[package]] +name = "tezos-smart-rollup-entrypoint" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb915027ebed03d166c4e0e6b6175ccfd71a2f3426c002975238895ebd3a1a5" +dependencies = [ + "dlmalloc", + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-host", + "tezos-smart-rollup-panic-hook", +] + +[[package]] +name = "tezos-smart-rollup-host" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd641b59bc8d81ddc66696b871568e299da978648a96ced85df58a686a77b0c2" +dependencies = [ + "tezos-smart-rollup-core", + "tezos_crypto_rs", + "tezos_data_encoding", + "thiserror", +] + +[[package]] +name = "tezos-smart-rollup-mock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b112dd53d11d713b20bc2eb1a7dae5a29386cf00af851ddc0f31fc69a25d4d" +dependencies = [ + "hex", + "tezos-smart-rollup-core", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-host", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "tezos-smart-rollup-panic-hook" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53cb2b21d677546978cc2577c773c191b8a997d89c7e711a9b01299d0dd7dcb3" +dependencies = [ + "tezos-smart-rollup-core", +] + +[[package]] +name = "tezos-smart-rollup-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f0970efb8454af805ca84a7a52a60bec26d2944dee835087be3519b7cf2621" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-host", + "thiserror", +] + +[[package]] +name = "tezos_crypto_rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284fa6f4be10eff67ca5b2f9e8ec9544be81a07223f6a4c8d3a49a13aecce768" +dependencies = [ + "anyhow", + "base58", + "blst", + "byteorder", + "cryptoxide", + "ed25519-dalek", + "hex", + "libsecp256k1", + "num-bigint", + "num-traits", + "p256", + "rand 0.7.3", + "serde", + "strum", + "strum_macros", + "thiserror", + "zeroize", +] + +[[package]] +name = "tezos_data_encoding" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c34be797025fcab7a9e417a4cc374925ee796af21f8d7df5e2330cdc2595af" +dependencies = [ + "bit-vec", + "bitvec", + "hex", + "lazy_static", + "nom", + "num-bigint", + "num-traits", + "serde", + "tezos_crypto_rs", + "tezos_data_encoding_derive", + "thiserror", +] + +[[package]] +name = "tezos_data_encoding_derive" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e0c104555ce4d8c790567d725dc49f519d721e114202e38e851c1ac5769f08" +dependencies = [ + "lazy_static", + "once_cell", + "parse-display", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml new file mode 100644 index 000000000..2f41e03f4 --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2023 Marigold +# SPDX-FileCopyrightText: 2023 Nomadic Labs +# +# SPDX-License-Identifier: MIT + +[package] +name = "outbox-kernel" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[dependencies] +tezos-smart-rollup = {version = "0.2.0", features = ["testing"]} +tezos_data_encoding = {version = "0.5.0"} +tezos_crypto_rs = { version = "0.5.0", default-features = false } \ No newline at end of file diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex new file mode 100644 index 000000000..1bc097079 --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex @@ -0,0 +1 @@ +0061736d0100000001610e60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60037f7f7f0060017f0060000060087f7f7f7f7f7f7f7f0060047f7f7f7f0060067f7f7f7f7f7f017f60017f017e60057f7f7f7f7f0060037e7f7f017f02a6020911736d6172745f726f6c6c75705f636f72650b77726974655f6465627567000211736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650a73746f72655f72656164000311736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000311736d6172745f726f6c6c75705f636f72650c73746f72655f64656c657465000111736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000411736d6172745f726f6c6c75705f636f72650a73746f72655f636f7079000411736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d616765000411736d6172745f726f6c6c75705f636f72651073746f72655f76616c75655f73697a6500010341400500000301050607080602050909090502020205010602070705000a0a000303030001060602050500050501000a0b0c0101000001010001010103010d0100000405017001111105030100110619037f01418080c0000b7f0041c190c0000b7f0041d090c0000b073204066d656d6f727902000a6b65726e656c5f72756e00100a5f5f646174615f656e6403010b5f5f686561705f6261736503020916010041010b101244342b3a392d372c3b3d3e3f4041460a966840850404037f027e017f017e23808080800041e080016b22032480808080000240024002400240024020022802000e03000102000b200341106a200241046a10938080800020032802144121470d0220032802102204450d02200441026a2d00002105200441136a29000021062004290003210720042f00002108200429000b2109200341d8006a2004411b6a280000360200200341c8006a41086a2006370300200341dc006a2004411f6a2f00003b0100200341e0006a41086a22042006370300200341266a41026a20053a0000200341e0006a410e6a2205200341c8006a410e6a29010037010020032009370360200320083b0126200341266a41136a20042903003700002003413f6a20052901003700002003200329036037003120032007370029200341e0006a41004180800110c7808080001a20032002410c6a3602482003410036024c200341086a20014100200341266a200341e0006a418080014104200341c8006a109180808000200328020c2102200328020821010c030b419880c0800041002001200241046a2002410c6a108b808080001b2101412c21020c020b200341186a200241046a10938080800041c480c08000410020012002410c6a2003280218200328021c4100108c808080001b2101412a21020c010b418080c080002101411821020b2000200236020420002001360200200341e080016a2480808080000bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a880808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a780808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bcb0201027f23808080800041c0006b2205248080808000024002402003418110490d000340200541306a2001109f8080800020052802302106200541286a2001109f80808000200541386a20002006200528022c2004200241801010a580808000109b8080800002402005280238450d00200528023c22060d030b20024180106a210220044180106a210420034180706a22034180104b0d000b200541206a2001109f8080800020052802202106200541186a2001109f80808000200541386a20002006200528021c20042002200310a580808000109b80808000200528023c410020052802381b21060c010b200541106a2001109f8080800020052802102106200541086a2001109f80808000200541386a20002006200528020c20042002200310a580808000109b80808000200528023c410020052802381b21060b200541c0006a24808080800020060bc20101027f23808080800041306b2202248080808000200241206a2001109f8080800020022802202103200241186a2001109f80808000200241286a20002003200228021c10a380808000109b8080800041712103024020022802280d00200228022c417f6a41024b0d00200241106a2001109f8080800020022802102103200241086a2001109f80808000200241286a20002003200228020c10a680808000109b80808000200228022c410020022802281b21030b200241306a24808080800020030bec0101027f23808080800041306b2203248080808000200341206a2002109f8080800020032802202104200341186a2002109f80808000200341286a20012004200328021c10a380808000109b8080800002400240024020032802280d00200328022c417f6a41024b0d00200341106a2002109f8080800020032802102104200341086a2002109f80808000200341286a20012004200328020c10aa80808000109b8080800020032802280d012000200328022c360204200041003602000c020b20004281808080907e3702000c010b2000200328022c360204200041013602000b200341306a2480808080000b170041fe81c08000410e41a882c0800010b280808000000b900801077f2380808080004180056b220024808080800010a08080800010a18080800020004111360254200041ed81c08000360250200041d8006a200041f8046a200041d0006a108e808080000240024002400240024020002802580d00200028025c2101200041003602d804200041c8006a200041d0006a109f8080800020002802482102200041c0006a200041d0006a109f80808000200041d8006a200041f8046a200220002802442001417c6a200041d8046a410410a480808000109b808080002000280258450d010b4125210241b882c0800021010c010b20002802d8042101200041d8006a410041e70310c7808080001a200041d8046a200041f8046a200041d0006a108e80808000024020002802d804450d0041a483c080002101412421020c010b20002802dc0421020240200041f8046a200041d0006a418c83c08000108a80808000450d0041c883c080002101413221020c010b02402002417c6a220320016b220420034f0d00024002400340200041003602c004200041386a418c83c08000109f8080800020002802382101200041306a418c83c08000109f80808000200041d8046a200041f8046a200120002802342004200041c0046a410410a480808000109b80808000024020002802d804450d0041ec84c080002101412321020c050b20002802c004220541e8034f0d01200441046a210402402005450d00200041d8006a2106200521010340200041286a418c83c08000109f8080800020002802282102200041206a418c83c08000109f80808000200041d8046a200041f8046a2002200028022420042006200110a480808000109b80808000024020002802d804450d00419c81c080002101413321020c070b200120002802dc042202490d04200620026a2106200220046a2104200120026b22010d000b0b200041d8046a200041d8006a2005109480808000024020002802e00422014103470d0041fa83c080002101412221020c050b024020002802dc04450d0041d984c080002101411321020c050b20002802e804210220002802e4042106200020002902ec043702cc04200020023602c804200020063602c404200020013602c004200041186a200041f8046a200041c0046a1089808080000240200028021822010d00200420034f0d040c010b0b200028021c21020c030b200541e703419483c0800010b080808000000b20022001418c81c0800010af80808000000b200041f8046a418c83c08000108d80808000450d01419c84c080002101413d21020b200041f8046a2001200210a2808080000c010b200041106a41e481c08000109f8080800020002802102101200041086a41e481c08000109f80808000200041d8006a200041f8046a2001200028020c410041ec81c08000410110a580808000109b808080000b20004180056a2480808080000b910401047f23808080800041306b22082480808080000240024020022006490d0041b285c080002102412b21060c010b200841186a2001200341212004200510a980808000109b8080800002402008280218450d00419486c080002102411b21060c010b0240200828021c220920054b0d00200841186a200420091098808080000240200828021822034102470d0041dd85c080002102413721060c020b2008280220210a200828021c210b024020034101460d0020072802002105200728020421022008200a36021c2008200b360218200841086a200841186a1099808080000240200120052008280208200828020c22062002108c80808000450d00418f85c080002102412321060c030b2007200620026a360204410021020c020b2008200a3602142008200b360210200841186a200841106a109a80808000200828021c21030240024002402008280228220a4121470d00200520096b210a200420096a2104200241016a210920082802182105034020034121490d0220082001200920052004200a20062007109180808000200541216a21052003415f6a210320082802002202450d000b200828020421060c040b2003200a4f0d010b410021020c020b41fc86c080004117200841186a419487c0800041a487c0800010b880808000000b41b487c08000412341ec86c0800010b280808000000b2000200636020420002002360200200841306a2480808080000b02000b0c00200020012902003703000ba70402067f017e23808080800041206b2203248080808000024002400240024002400240024002402002450d00200141016a21042002417f6a210220012d00000e03040302010b2000428380808010370208200041186a41173a0000200041146a4100360200200041106a20013602000c060b2000428380808010370208200041186a41003a0000200041146a2002360200200041106a20043602000c050b2003200341186a2004200210958080800020032802002202450d022003280214210120032802102104200328020c21052003280208210620032802042107410221080c030b2003200341186a20042002109680808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410121080c030b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c030b2003200341186a20042002109580808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410021080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c010b200020013602182000200636020c20002008360208200020073602042000200236020020002004ad4220862005ad843702100b200341206a2480808080000bdf0201077f23808080800041306b22042480808080002004418010360214200441186a200441146a20022003109780808000200428021c210502400240024020042802182206450d0020050d0041242107410121050c010b20042802282107200428022421032004280220210220060d0002400240024020020d0041002102411721060c010b200541016a21082002417f6a2109412f2106024020052d0000220a41f2014d0d0020092102200821050c010b412421062009200a4f0d010b2000428080808010370200200041106a20063602002000410c6a2002360200200041086a20053602000c020b200441086a2008200a109c80808000200020042903083702102000200736020c2000200336020820002009200a6b36020420002008200a6a3602000c010b2000200536020420004100360200200041106a20073602002000410c6a2003360200200041086a20023602000b200441306a2480808080000bf30201057f23808080800041106b220424808080800002400240024020030d0041002103411721050c010b200241016a21062003417f6a2107412f2105024020022d0000220841f2014d0d0020072103200621020c010b4124210520072008490d00200441086a20062008109c80808000200620086a2103024002400240200720086b22020d0041172105410021020c010b200341016a21062002417f6a2107412f2105024020032d0000220841f2014d0d0020062103200721020c010b41242105200720084f0d010b2000428080808010370200200041106a20053602002000410c6a2002360200200041086a20033602000c020b200428020c210320042802082102200420062008109c80808000200020042903003702102000200336020c200020023602082000200720086b3602042000200620086a3602000c010b2000428080808010370200200041106a20053602002000410c6a2003360200200041086a20023602000b200441106a2480808080000bbf0101027f411721040240024020034104490d00200241046a21052003417c6a2103412f21042002280000220220012802004d0d01200521020b20004101360204200041106a20043602002000410c6a2003360200200041086a2002360200200041013602000f0b0240200220034b0d00200041106a20023602002000410c6a2005360200200041086a200320026b3602002000200520026a360204200041003602000f0b20004100360204200041086a200220036b360200200041013602000bcc0201037f0240024020020d000c010b0240024002400240024020012d000022030e020001050b20024105490d022001280001220341187420034180fe03714108747220034108764180fe037120034118767272220341046a22042002417f6a4b0d022003417c490d014104200441f087c0800010b380808000000b024020024105490d002001280001220341187420034180fe03714108747220034108764180fe03712003411876727222034121702104200341046a22052002417f6a4b0d0020040d002003417c4f0d0320002003360208200041013602002000200141056a3602040f0b20004102360200200041023b01040f0b20002003360208200041003602002000200141056a3602040f0b20004102360200200041023b01040f0b41042005418088c0800010b380808000000b20004102360200200041056a20033a0000200020024100473a00040b0c00200020012902003703000b3e01027f20004121360210200020012802002202360200200020012802042201412170220336020c2000200120036b22013602042000200220016a3602080b310002402001417f4a0d00200020014178200141744b1b360204200041013602000f0b20002001360204200041003602000b240020012002109d8080800041ff0171109e8080800020002002360204200020013602000bbe0301037f4100210202400240024020010e020201000b0240200120006a417f6a2d0000412f470d0041030f0b41012102200141f2014b0d014102210220002d0000412f470d01412f2102410121030340200241ff01712104200020036a2d0000210202402004412f470d00200241ff0171412f470d0041030f0b0240200241ff01712204412f460d002004412d460d00200441df00460d002004412e460d00200241506a41ff0171410a490d002002415f7141bf7f6a41ff0171411a490d0041040f0b2001200341016a2203470d000b0240024020014109460d0041062102200141094d0d0320002d000141f200470d0320002d000241e500470d0320002d000341e100470d0320002d000441e400470d0320002d000541ef00470d0320002d000641ee00470d0320002d000741ec00470d0320002d000841f900470d0320002d0009412f470d030c010b4106210220002d000141f200470d0220002d000241e500470d0220002d000341e100470d0220002d000441e400470d0220002d000541ef00470d0220002d000641ee00470d0220002d000741ec00470d0220002d000841f900470d020b41050f0b4103410220002d0000412f461b21020b20020ba40301017f23808080800041206b22012480808080000240024002400240024002400240200041ff017122004106460d0020000e06010203040506010b200141206a2480808080000f0b200141146a42003702002001410136020c200141c08cc080003602082001419088c08000360210200141086a41c88cc0800010ae80808000000b200141146a42003702002001410136020c200141fc8bc080003602082001419088c08000360210200141086a41848cc0800010ae80808000000b200141146a42003702002001410136020c200141c48bc080003602082001419088c08000360210200141086a41cc8bc0800010ae80808000000b200141146a42003702002001410136020c200141848bc080003602082001419088c08000360210200141086a418c8bc0800010ae80808000000b200141146a42003702002001410136020c200141d08ac080003602082001419088c08000360210200141086a41d88ac0800010ae80808000000b200141146a42003702002001410136020c200141b889c080003602082001419088c08000360210200141086a41d089c0800010ae80808000000b0c00200020012902003703000b02000b02000b0c00200120021080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b1200200120022003200420051083808080000b0c00200120021084808080000b100020012002200320041085808080000b100020012002200320041086808080000b100020012002200320041087808080000b0c00200120021088808080000b0d0020002802001a037f0c000b0b02000b02000b4c01017f23808080800041206b220224808080800020022000360214200241dc8cc0800036020c200241d88cc08000360208200241013a001820022001360210200241086a108f80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341bc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341dc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000bc90701087f02400240200028020022032000280208220472450d0002402004450d00200120026a21052000410c6a28020041016a2106410021072001210802400340200821042006417f6a2206450d0120042005460d020240024020042c00002209417f4c0d00200441016a2108200941ff017121090c010b20042d0001413f71210a2009411f71210802402009415f4b0d002008410674200a722109200441026a21080c010b200a41067420042d0002413f7172210a0240200941704f0d00200a2008410c74722109200441036a21080c010b200a41067420042d0003413f71722008411274418080f00071722209418080c400460d03200441046a21080b200720046b20086a21072009418080c400470d000c020b0b20042005460d00024020042c00002208417f4a0d0020084160490d0020084170490d0020042d0002413f7141067420042d0001413f71410c747220042d0003413f7172200841ff0171411274418080f0007172418080c400460d010b024002402007450d00024020072002490d004100210420072002460d010c020b41002104200120076a2c00004140480d010b200121040b2007200220041b21022004200120041b21010b024020030d00200028021420012002200041186a28020028020c118080808000000f0b200028020421070240024020024110490d002001200210c28080800021080c010b024020020d00410021080c010b2002410371210902400240200241044f0d0041002108200121040c010b2002417c71210641002108200121040340200820042c000041bf7f4a6a20042c000141bf7f4a6a20042c000241bf7f4a6a20042c000341bf7f4a6a2108200441046a21042006417c6a22060d000b0b2009450d000340200820042c000041bf7f4a6a2108200441016a21042009417f6a22090d000b0b0240200720084d0d0041002104200720086b2208210702400240024020002d00200e0402000102020b41002107200821040c010b20084101762104200841016a41017621070b200441016a2104200041186a2802002109200041146a280200210620002802102108024003402004417f6a2204450d0120062008200928021011818080800000450d000b41010f0b410121042008418080c400460d02200620012002200928020c118080808000000d02410021040340024020072004470d0020072007490f0b200441016a210420062008200928021011818080800000450d000b2004417f6a2007490f0b200028021420012002200041186a28020028020c118080808000000f0b200028021420012002200041186a28020028020c1180808080000021040b20040b5401017f23808080800041206b22032480808080002003410c6a420037020020034101360204200341d88cc080003602082003200136021c200320003602182003200341186a3602002003200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c2003419090c0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b110020003502004101200110c5808080000bca05010a7f23808080800041306b2203248080808000200341206a2001360200200341033a00282003412036021841002104200341003602242003200036021c20034100360210200341003602080240024002400240200228021022050d002002410c6a2802002200450d0120022802082101200041037421062000417f6a41ffffffff017141016a21042002280200210003400240200041046a2802002207450d00200328021c20002802002007200328022028020c118080808000000d040b2001280200200341086a200141046a280200118180808000000d03200141086a2101200041086a2100200641786a22060d000c020b0b200241146a2802002201450d00200141057421082001417f6a41ffffff3f7141016a2104200228020021004100210603400240200041046a2802002201450d00200328021c20002802002001200328022028020c118080808000000d030b2003200520066a220141106a28020036021820032001411c6a2d00003a00282003200141186a2802003602242001410c6a28020021092002280208210a4100210b41002107024002400240200141086a2802000e03010002010b2009410374210c41002107200a200c6a220c280204418480808000470d01200c28020028020021090b410121070b2003200936020c20032007360208200141046a280200210702400240024020012802000e03010002010b20074103742109200a20096a2209280204418480808000470d01200928020028020021070b4101210b0b200320073602142003200b360210200a200141146a2802004103746a2201280200200341086a2001280204118180808000000d02200041086a21002008200641206a2206470d000b0b0240200420022802044f0d00200328021c200228020020044103746a22012802002001280204200328022028020c118080808000000d010b410021010c010b410121010b200341306a24808080800020010bc40601077f024002402001450d00412b418080c400200028021c220641017122011b2107200120056a21080c010b200541016a2108200028021c2106412d21070b0240024020064104710d00410021020c010b0240024020034110490d002002200310c28080800021090c010b024020030d00410021090c010b2003410371210a02400240200341044f0d0041002109200221010c010b2003417c71210b41002109200221010340200920012c000041bf7f4a6a20012c000141bf7f4a6a20012c000241bf7f4a6a20012c000341bf7f4a6a2109200141046a2101200b417c6a220b0d000b0b200a450d000340200920012c000041bf7f4a6a2109200141016a2101200a417f6a220a0d000b0b200920086a21080b0240024020002802000d0041012101200041146a2802002209200041186a280200220020072002200310c3808080000d01200920042005200028020c118080808000000f0b024002400240024002402000280204220b20084d0d0020064108710d04200b20086b2209210820002d002022010e0403010201030b41012101200041146a2802002209200041186a280200220020072002200310c3808080000d04200920042005200028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a2101200041186a280200210a200041146a280200210b20002802102109024003402001417f6a2201450d01200b2009200a28021011818080800000450d000b41010f0b410121012009418080c400460d01200b200a20072002200310c3808080000d01200b20042005200a28020c118080808000000d014100210102400340024020082001470d00200821010c020b200141016a2101200b2009200a28021011818080800000450d000b2001417f6a21010b200120084921010c010b200028021021062000413036021020002d0020210c41012101200041013a0020200041146a2802002209200041186a280200220a20072002200310c3808080000d00200b20086b41016a2101024003402001417f6a2201450d0120094130200a28021011818080800000450d000b41010f0b41012101200920042005200a28020c118080808000000d002000200c3a00202000200636021041000f0b20010b0d00429ed883c9bebbf3f78b7f0b990101017f23808080800041c0006b22052480808080002005200136020c200520003602082005200336021420052002360210200541186a410c6a4202370200200541306a410c6a4185808080003602002005410236021c200541f08cc0800036021820054186808080003602342005200541306a3602202005200541106a3602382005200541086a360230200541186a200410ae80808000000b140020012000280200200028020410b1808080000b180020002802002001200028020428020c118180808000000bcc04010b7f2000280204210320002802002104200028020821054100210641002107410021084100210902400340200941ff01710d0102400240200820024b0d000340200120086a210a02400240200220086b220b4108490d00024002400240200a41036a417c712200200a460d002000200a6b220c450d00410021000340200a20006a2d0000410a460d05200c200041016a2200470d000b200c200b41786a220d4d0d010c020b200b41786a210d4100210c0b0340200a200c6a22092802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200941046a2802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200c41086a220c200d4d0d000b0b0240200b200c470d00200221080c040b03400240200a200c6a2d0000410a470d00200c21000c030b200b200c41016a220c470d000b200221080c030b024020082002470d00200221080c030b410021000340200a20006a2d0000410a460d01200b200041016a2200470d000b200221080c020b200820006a220041016a21080240200020024f0d00200120006a2d0000410a470d00410021092008210d200821000c030b200820024d0d000b0b410121092007210d2002210020072002460d020b0240024020052d0000450d00200441988dc080004104200328020c118080808000000d010b200120076a210c200020076b210a4100210b024020002007460d00200a200c6a417f6a2d0000410a46210b0b2005200b3a0000200d21072004200c200a200328020c11808080800000450d010b0b410121060b20060b910302057f017e23808080800041c0006b22032480808080000240024020002d0008450d0020002802002104410121050c010b200028020021040240200041046a280200220628021c22074104710d00410121052006280214419e8dc0800041a28dc0800020041b4102410120041b200641186a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021441a08dc080004102200641186a28020028020c11808080800000450d0041012105410021040c020b200628021c21070b41012105200341013a0017200341306a41808dc08000360200200320062902143703082003200341176a36021020032006290208370320200629020021082003200736023420032006280210360228200320062d00203a0038200320083703182003200341086a36022c2001200341186a200228020c118180808000000d00200328022c419c8dc080004102200328023028020c1180808080000021050b200020053a00082000200441016a360200200341c0006a24808080800020000b860201017f23808080800041106b22022480808080002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010b110020002802002001200210bb808080000b8d0201017f23808080800041106b2202248080808000200028020021002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7801017f23808080800041206b220224808080800020002802002100200241086a41106a200141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820022000360204200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010bf20601097f02400240200041036a417c71220220006b220320014b0d00200120036b22044104490d00200441037121054100210641002101024020022000460d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a0d00410021020c010b2006200a4102746a2108410021022006210003402000450d012000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002008470d000b0b200320046b2103200620096a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b0240024020060d00410021000c010b2006200a4102746a22022802002200417f73410776200041067672418182840871210020054101460d0020022802042201417f7341077620014106767241818284087120006a210020054102460d0020022802082202417f7341077620024106767241818284087120006a21000b200041087641ff811c71200041ff81fc07716a418180046c41107620076a0f0b024020010d0041000f0b2001410371210202400240200141044f0d00410021070c010b2001417c712101410021070340200720002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2107200041046a21002001417c6a22010d000b0b2002450d000340200720002c000041bf7f4a6a2107200041016a21002002417f6a22020d000b0b20070b4a01017f0240024002402002418080c400460d0041012105200020022001280210118180808000000d010b20030d01410021050b20050f0b200020032004200128020c118080808000000b960201027f23808080800041206b22022480808080002002200036020c2002200128021441b090c080004111200141186a28020028020c118080808000003a001820022001360214200241003a001920024100360210200241106a2002410c6a41a090c0800010bc80808000210120022d0018210002400240200128020022030d00200041ff017141004721010c010b41012101200041ff01710d0020022802142100024020034101470d0020022d001941ff0171450d0020002d001c4104710d0041012101200028021441a38dc080004101200041186a28020028020c118080808000000d010b200028021441d88cc080004101200041186a28020028020c1180808080000021010b200241206a24808080800020010be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e220841017441a48dc080006a2f00003b00002006417e6a2007200841e4006c6b41ffff037141017441a48dc080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff037141017441a48dc080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a200641017441a48dc080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141d88cc080004100200341096a20046a412720046b10b6808080002104200341306a24808080800020040b1200200141848fc08000410210b1808080000b0e0020002001200210c8808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0bcb100100418080c0000bc110496e76616c6964206861736820636f6e76657273696f6e2e436f756c646e2774206d6f7665207061746820647572696e6720636f6e666967206170706c69636174696f6e436f756c646e277420736574206b657920647572696e6720636f6e666967206170706c69636174696f6e696e7374616c6c65722d6b65726e656c2f7372632f696e7374722e7273006e0010001d00000025000000170000004661696c656420746f2072656164206b65726e656c20626f6f74207061746820696e20726561645f696e737472756374696f6e2f6b65726e656c2f656e762f7265626f6f74000000cf00100012000000002f6b65726e656c2f626f6f742e7761736d6578706c696369742070616e6963696e7374616c6c65722d6b65726e656c2f7372632f6c69622e7273000c0110001b0000003c000000050000004661696c656420746f20726561642073697a65206f6620636f6e6669672070726f6772616d2f5f5f696e7374616c6c65725f6b65726e656c2f617578696c696172792f6b65726e656c2f626f6f742e7761736d005d0110002e0000000c0110001b00000068000000160000004661696c656420746f2072656164206b65726e656c20626f6f7420706174682073697a654661696c656420746f20636f7079206b65726e656c20626f6f74206265666f726520636f6e66696720657865637574696f6e436f756c646e2774206465636f646520636f6e66696720696e737472756374696f6e4661696c656420746f2064656c65746520617578696c69617279206b65726e656c20626f6f7420616674657220636f6e66696720657865637574696f6e496e636f6d706c657465642070617273696e67436f756c646e277420726561642066726f6d206b65726e656c20626f6f7420706174684661696c656420746f207772697465206b65726e656c20636f6e74656e74207061676544414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c65644661696c656420746f20726574726965766520707265696d6167652f6275696c64732f74657a6f732f74657a6f732f7372632f6b65726e656c5f73646b2f656e636f64696e672f7372632f6461632f70616765732e7273002f0310003c0000003e0100001f00000047756172616e7465656420746f2062652065786163742e00010000000000000001000000020000002f0310003c0000001f0100002b000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e2829656e636f64696e672f7372632f6461632f70616765732e7273d7031000190000000201000015000000d703100019000000310100001500000050617468206d757374206e6f74207374617274206279202f726561646f6e6c792c207468697320697320612072657365727665640a2020202020202020202020202020202070617274206f66207468652073746f726167652e20557365732074686520617070726f7072696174652066756e6374696f6e20746f0a202020202020202020202020202020206c6f6f6b2076616c75657320696e20746869732073746f726167652e0010041000a7000000686f73742f7372632f706174682e7273c004100010000000cb0000000d000000506174682073746570206279746573206d7573742062652061736369695f616c7068616e756d65726963206f720a2020202020202020202020206f6e65206f662074686520666f6c6c6f77696e672073796d626f6c73202262272e2722202c202262275f2722202c202262272d272200e00410006f000000c004100010000000c50000000d00000050617468207374657073206d757374206265206e6f6e20656d707479680510001c000000c004100010000000c30000002d00000050617468206d75737420626567696e20776974682061207061746820736570617261746f720000009c05100025000000c004100010000000c2000000290000005061746820636f6e7461696e656420746f6f206d616e79206279746573000000dc0510001d000000c004100010000000c10000002800000050617468206d75737420636f6e7461696e206174206c65617374206f6e6520656d70747920737465700000001406100029000000c004100010000000c00000002600000029000000070000000000000001000000080000003a20000058061000000000006c06100002000000090000000c000000040000000a0000000b0000000c000000202020202c0a2c20280a282c30303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390900000004000000040000000d0000000e0000000f000000282972616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682000008607100012000000980710002200000072616e676520656e6420696e64657820cc071000100000009807100022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000ec07100016000000020810000d0000000900000004000000040000001000000054727946726f6d536c6963654572726f7200840106636f6e6669674200000000210000000057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd94971b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d2f000000011b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d112f6b65726e656c2f626f6f742e7761736d79000000 \ No newline at end of file diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 new file mode 100644 index 0000000000000000000000000000000000000000..916cfd6df5bd6bb12d645652462e82e19263feeb GIT binary patch literal 3974 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 literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 new file mode 100644 index 0000000000000000000000000000000000000000..f453d3b137c819af693ca59ec4b8da1f0c5c77b4 GIT binary patch literal 4096 zcmbtX&5I?~6~7-<_3BMk*(K@4FgDDo$}HYM26`c{MH1*c*g8W-#zmI-3#voNbDAc) zm~KJ*3zFa>$s(J?g*!nPCbYT=4AG#t5FrzgWD!CVkYI>7`TfqVs`o16;6j>y_oMDT z-{*JEHO6fHHw&)2V$9>lhzY)v3_tz)oFpOX+T^Lq6ot$VDkF1Ay2eP#A@TcSBpEMT zen|p`L}uZnYiD||;Ju1Jg%mg}bvU`Tk}avQSV_Hl7Q727B^N8M{>$m1zvx$MN={-&?9!QFo2;}&Fjvg)KRi1% z7bFd~J|pQiJE*`@k71V#+|9}r*h+&xYG+FaRm5JeoZE*?_wL=hxPt1fr#e}Hob_if zfY5~kmPnT_$B=<128eXT>n`l}ifk3ZN?O0h3#JHnUxqMYCw$JaemCyoxLdjs!zVw( zHYvKRZqIFF=hqbZ)vNMSi%mG@)fe~t0-|EYsbK1YbW2xb%)9WO5`Hrh{*JXL(7`U; zPU}Lwsti^*jtPaW-{G+>s$uJYZp{D4dGS;4k}r3Gn1w4_A1+3USmkg827{;(Q-4aK zL3ROC_~4GZ0Hw&%BT&>}xZn65a%IL66(!pEV=)3zI_6aG}y~8MF_*8d(7hR}3FDmnX=c6rKob-8d*BrJ!CWhE6 zri>OD%o<0!Kd;O>6@qP$44diT7}f*>_+ja;fhXemiMZNVL7)95hu*t@L}cw3QQ50z&wWq)Rjf|WFu$Q;hr{1)E$LgThwxmuM;ip%!adeh z(9R-K+qqN#7m&OI0~RtLBGVoRyQ=@D40ylAPn6mtjpKPtE<3a5VQ=x5-3`oOQ_$ay ze94dsABCiTic%U2vd!AOoM&8Uka;1-mc}U3+;#D%ciP(7aR|vxJTmJHNA{FIq zE96j10JBGJxq1ZFI;cE!$nYs-Pghw;nhGM#!|aFQxgXG*K;v70Nc%`@xh$o`w+@X&~IQs@=CNeei6~YQvB?8_1`H7jUmu=_M?Le5edbc0-nVN zoO!c)NRMtvLnr$%doY>Gln)g}ctcU;8{y6`VetV~0?N){9ZlteOuA_^XA z1&nSLezA^a7a+v&LL|+@^BPG=vTCCOy8R84XxyrO7m?y6$PB`?g#fNc`@$R(`(~Qg z@IH}V2~0AhOlhA9jY{)FbFxgJ`-W!Wjsn{sBGf4+y*|L+eM!f50ytic$(F=q%fDW- z?J_taFA5SR9beOgUz=4<8#e128d(Ol6Q?ua;KAZ6~*h~>w@>qlNks_43J2bl5AKD?+ zKX=v-wOtO|blvlcBNcLLG6V=}dMQ9)R&KyJiX;?ep_yVicG;Hq-B8AwLlg%B4+)O@ zD302`I)aDOI7^v*=OrCWUd>>LZ6Dfaw!tWQnf6=Fj6>cyh^4|84I78`yhADD4S`b#ALd^ic zA8!KiTh=Cn_3`2u8Y|{BLdw;DjZp|GTUK<)yFDq;J6ft2?mV+-;kNt!RHFw^3nC_5 zc-cd`5{}yL#OcCli?wjyqD9vS*o5s&&S|Hv{WCjNw7YzM;06*U>RH^e+VZQn6ysem z*DA}k+ow=$vg0gollUHhShn%N=5_G|PHC*c`c(XFDvl#gv#vi6C>vi_d_48fD{bpV z-%3cuD6F>eh&l+XuZ?~ic#x2je$gg9&bWhbrug%QLy!)=Lm)ncq7N*47yJ$BgLXvU z00vDdS{9t*$?u{UL2bo9W{jBz+nW6DI#+5PNl9vWDxh=3J8lPH#5c^+ZNnTi`FYqH zu}Z=o{;U5%!}R845J&NydM*iuQpj;wc?+Rrcgo QxOm(+w-3>#dM(}m09iTY9RL6T literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec new file mode 100644 index 0000000000000000000000000000000000000000..9cdd1931c4fc65fcc444f7eb3f14a8231fb436a6 GIT binary patch literal 4096 zcmcguU2I%O6`nJ5_xgJ8+B@rAr%r2$xtAc>YJ(z#)>R~=OlT7l-k{LO^@gmV*LHq3 zHk6lmL)Gp+j9NjEf-q{R3gRb1AX(4{BvMg{Jn)^FyX&8r z2nE5leCN!WGv7JqJ7;FE5Tg7~(L6RoLJ0Z_RVQg)Ov-t@3iJH93C&L`$QZmbpNmN$ zCIfFpyy|3(A?uvISe=Q@+Y^!mwbzttJf^J?fwp-1EjfV~$nVS{C&C4af{qWo@8>pKN;$yS$(r{*C z6aVFQ>*KBFbYrG9+dSBuZ3?CSL2pv1`~y;*&=;{L5)_5dL=?IQW;{~w5&f!9g+;%Y zloG`t4npakFp5I#V`v#c4oOicLkMufz>F?^3w!=Ie!R$I-@AfvrZsc8{Yfc`Q?2%))^wvicSsBu8x5wg(K>WcQQT;J ztkpcyIM6)SQnLRj2}|+5H)v}((pTy)R;q)#TpNn-jJBuuPSp3m|GxX*yXSp-n-6^G zgCF?tgD=y8?CbO;`YJs|U!*V41v*2Yrzhxf`YfHJ^YmqUjuz>2bdkPC-=}ZWC3=;X z=_>t%{z^ZkU(svyJ1V~POz$Y7z^{HDVBz$rpqoiVke8*)p0cM2fBVy7#StSH^ z%XQFmt94FmN9M~G--luv0pJ7$Gc+bgQ)%_l0iH=~AOMT>%O_BSGUJl|+Zy?oEXQRS z0Rn4}x%sG{r%owsz=30N#Vu}!=**$CayAwA!l%KDvjGWRSzmM3Z|g$kC``v%v{lz% zbN25+KDVF91AaHhor>*3*ukSV+{+w{$sncsy%eF(N&lGpA%-ukjkpy%lIhPlEvhzZ zgWTk9N3lNZ`^Tl;g9-pun(mp#rWe5G?&3W#$Pb^MN@afdq`@gF0qX|~pwdPtT`9A# z@I?Qac}WCRIxo5rakd!@pI5_aBTceb9aQY=kcbkx3T`ZA-qRo4a-a9Kvepyq*1CEX z_vpEh2fVq+FG4IZKt5IBvndy9NW!&!zW! z=cTkhlfO9S)}9iX^s0LDQBFPQ`ZQ0vRpqLXJ?qwcd~JxevuUg@?L_tXN6iswU2=1u zcX-@IxOQIL=+BvPv%TWXN}jECW*Z{-`!-dWSI39Dj4jKlRBXd}Kq5clH-b4OGjvT# zyTyd+&Z8`q`J9JS+<(82S#CX|mwE4 zelhos8{Vn)cUfU^2!8h360qei+c7xoORP=<9CM3)=!oZcn@7_E_MD{b`Gq7jEH65_ z4-zM1vV?o_Q*mKs^UA zF#*EUKj(<_OZ;AYtX5@rMY$^-chzXB-E9RztBv{2{iIugq0#YccSdk3b&O4JT1kHU3K-?v1b*DH<2$Zsk5iG>^ZfB!E+N3V5jL6MSc}{*+8n6Fd*^9l+t?%l)+6DUjc?JG*!1k=}5# z8;>CjeT6sUo^k+hP+gwp?~O6}O_^-r@oDLOo|Wu#OrDX+Rvw>}36A2Jd|W1X@pxJ$ z!=<9z3e|9~8ucDI%*<5nbfzzI(!A%fO6gt{a zUB@JBJ(1!6jmS$b_2D%{azy`a>u}et!?|rrO@%MK ZDtfN_)nTblp? literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 new file mode 100644 index 0000000000000000000000000000000000000000..275ec5d7998dde2eceff5a174c5908df16d3caad GIT binary patch literal 4096 zcmbtXO=w)#6~6bpH$V2gk*}nYtjMCh?^T5nb)l;_5D4g+CQfOgU3lR|7g=Osp0#L* zDW;^+IH+OTs^Eo_2AYKz0=tP_0#&INE}ha)R4|DlA*5*nSvakrT6iI7O0($q-TU77 zDe)q08F=UZoO{l9e(xQn)Ukid1s9t?42MIN=#K5V=yX@x>9l8O(>c44F52ViLv|*e z?^tEyTyAO5hjQ5=UCd>h^h7SNk7EOXHz(UoamL3U*iIs-z98`tq`*G3iT^9w)sb=>q9xNl%b&N;(^`H&1t4 zcBWE_)3Bps8>j5(T54?LS~^WWZrv)F7(X z4A;!zwKmt3MjDM z+X&mejj(;Tw0*v`eU1hlca5}{bm&c-x~+5Br-gmlCAw0W_Ts?;ljh0A=i(M>v<@L=-ib~fS!u>Y6Cw+}nqwL;3?D$91KOzCZ=bT9Q# zXL30Q#7Md)L6B=tfFRYr3xZ5L3xY&D1A=7w4hYinTY%Zhy<6_h|k<)B6rDs6U zlP-cR<#GX}F_1No|4|P!3 zVlj%XskW1ZZh$Z8C}4%7e4%`Z)TR{>h}u{MliNUt(`Jk94>Qz=+Z-{sm(8`X)<-?M z__1z;?d#ZX7a4NcbJm(2>SIq2qU+kJuc|-40||?+1;JwqpH7k+t*qS@R z&;S^_P_u#}=Ry2dfO`;)q=x+@uEGiS7!Cu|2n~R!`xJ*xgF&e*cDAr>>hlb^F#-c_ zjcN@yhMr6SNXm&X%vyO!DJ&Bx2w-SH`KplKs31wS9;2*JDa zJW+iGTu2eO^<&Pq`8Bu0c?aXnZzr;tk3Ps`Kim#>QBr$#iR9hz60g)HLf5CH)Nwsf z%3a@~4*0Eb!3v+AH47+p$8)~@SGST) zBoJp01)?wK(CqNI{I3q6)~3wQ7(Sm*Cnv(cRuf)pPd=f>~oTEi0pBu)jFWfQ`Y0>;KwlWCVmH<)@2s&%o#st}wwQ)CSQB7;erOhp`R+Q@wHfOB3>LKp<5;jxI-hEF?_^Ik^Q_%@J4 z(B3dV_aeBP;%x*PTeOxYcK*eLTnucu*kFa#w4iD6`YG>GOXeL&} z78Jay0_Dn=IQ}L$eIWxEIlp-#!<7Z(Z9iIn+I{i+sW31Wu0_~l;*V@2mn9JN9ArNJ z+~7r!18&5Eq@W0J%`XTNC+RhM1T^8tR2cjULIClm2V=Q`(A z&&gbbhYoWh^56`3Z+JE=kZq?fkZUzxJ)-qGLV>JZ%CPZNmw^#yF|dfc`QxSk08fM@ AEdT%j literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 new file mode 100644 index 0000000000000000000000000000000000000000..6aa51aa3d972f8ff81faa5f1f3efb04850df194c GIT binary patch literal 4096 zcmcJS&x<8j702(rRqs`idT+XBm_;)^;H`3mj$|O4bi=r???@)o8H4{qmQuZ$*EUUr zkbc1-xXdD877A{}U=kN(Xm)LDy{tZl&+PIn3*ibi4YB_eZ)c*)NKJ8`96DcnlkZS}@EVKNm!Q?=E+c z{0F0sP=}oet!up=&n%BV`T9Nas6^w_`=UvsLE;n8e3?_W;$G{n*i;H^g>?qM6($UK z-iBr?l+j(!w?oZN*`-&sS^rj|UG*35vlT{J&j@XN3|$+d|JD?y$<@E=?N=BV*!r(}ajswgT3QVGDa@DR#Z~)rQF3)YZS}mDbJrt$zN29;{cO z)hOl7n5$;=klf8Fgo{5($&t^wG--322A%`)Bqy-0x<7u1DKEuZ<6o0;9z|S&KzY}W zpO})OXfTrSamo&2-f_?r3w~KoRElT>Dz&45LM9Lq(r->ZL%kbwMcvF+{-DW-CPD&3 z7t#{d8Ab!aNd$7P%^?cg!onyB3`+6}{L2~4&fzrna53E#9;6RRqqNqg7k{nQUH#U7 z8qx>eOSf_D;Q$a5d6u>OU^BTeqTVC*?r;Tps>x$2y#eEqiMvAlVz zybRffZ2vWXS&tQJ1Hgbdn=k$5SXHLhx$2H|uYV#=uKI59NB+5?Qa!rYW_{wKpv4RZ z=&>7M0p!zbbUkdtJWD@S{=a@bz96U~tzN&goozzSO4GnRy@H2nJxwcG4--H8ot+UIpEYs5pw>-gA^tN@o-vacs74xeu zC|Ae8;#Fr^JvrFdJY#zw9{2q$T{uYd`6q6+&+vP9V~T$Tp~QO;^Sx-$ITm!Ha8&`l z=%z=N(kxF$PnsG}3smxSTSIvwm+4Y2^ImTLK)HGYYynVlFJgcdh?{GAV=8#Cm5)V- zdWM*9P|)byG%;&Xa+R4E*&nuJ1DCgmu0x~d)gCoPJum3`8?M^ARx*_+D4BCIa5<${-v zsBe_D!pd44V+mu`l*V<*keg!Js0uFpV#?vVr=Vfj>ow9YO4BaIb9rz+fS04b|B~wT zk%tlsGtFpjEX1tKtm$`THl)am{mUedV5Y9|RZ!|1;d^FLG^J4Xc73qL6P_}+dfWl! z!WX@f!%ikWM==-ZqoII((B%Q5IN}2X&!hXUjc1Flo;ro6OAu6r7H;*3q#hmo5hPld zY^^b;>!4c?=|j{0jZ@tG0I9xj{`qbYmiqMZp9d`Uee-V(+OqLKPh>t8Xl6nEe=6jv ze}$7zfw@1U$GS|PSkL6&6xF4i=FwOs|Q+-8IfeMgt>yN-5YZAPj-O75q>vd+^( zyBm~GIAKS?iWDFYT*?m{vRK~aXinqm_`QX{d0G149UhfJ&z8dk{a*cd%NeI|`tQQG z|1YwYgXlB(!YLM5r+d=3enC{DH v+)c#DrequQD=SGu=&RL6x>^+)q9G3fZ-tr(V^B~0i~%?Kgq6tS{ww!Cb=t_W literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b new file mode 100644 index 0000000000000000000000000000000000000000..dbe515b87422e32db898ce4a33f79b38a5f2c2f7 GIT binary patch literal 4096 zcmb7{O^9Vj702u2zSj@$>&y-GqBCho-J2|4y8M(T$+Hw5}8ajs#o<6H!5746_nMP=EhZ_kGM{M2Duk>ej7$ z>iqxbf6l3P&Yk(^V&Trz$tB<1dwo6st>*R5y^kl^w^erSC|B(`947z5wo4(q&uzPK z$a9>9ils7}bk(-Y?!5c;?@kx)Ec<+Oy1-OhO+&4{E>+p5(EM^(_4UKI*JfOn6Q3Le zxlm2njW@|<&q|#q?Kp*YB=^UC8XaKWHoN+c_oEYhamn|jWgcA@GF~ih zz1GECC4R3w`B>#c2(C`yg>BC{RWFwX;}>!m2W;`Yb2(m?Z+W5}oshK^2V%t*f>uXz zze=OWb&PXhN~~9_bv;drWys0XTrD45p7t$4$tQj1w_RP=MuczPE!WjoK7TfWkqTB$pylff7d`OjELgh*Dp?mjtT~P<{n!ke=_mct0%Z?6|`Snu%b*BY9=Bf~GPwL=rSX zL;_oA{1Q#}EkxVuu9)a$ipd5dKOkb9CjP7uX~hr`#}y*KM)Z5{$B%}Hno$*0Bi!KE zu!yFL**J&emPO0La79mX1E47dD6HRyQTQxkhEHZ672o*b_dy z)Gsh6p64)puBSK+84(|g(fL@jT-}iD$tL}&nm_5->3@HNzOemLi%MtVWol@;vdw%y zUZ)x>w5eGLvtBzgQn`HV@^+9<=UsKly_oMBO`qiK-?%=%`3-o=Z+=s3y{j)NzZ6YX zc+66@F)L*f_5IkiTjUy(-8s5MyDd7w^UEyB1#K;nxn z7v1uH zNAqxvH4^m|Hl`Gg4#IV277j+@ON3}uGT4r1Qvkl1gGa^%}_JWOL{yia3N8~u&chiM|} z(hZ?vmF*{e^N~?NU)WV4n}r>vm-Pv%o8>8s=Z4#l%CWwu8t;=D=nVuZ?uWf@qPgRR z1g#(vy=ji^*gCYdGgBQu2+zRZ7%NN@08qE}tw%9iDB2T$198^6$Q}_F^M$24_FVpp zvXYy@`-T&WncvmCem%mfU$VOH+J?~feNDM6F7{{wn-p=4T>cnU!%ecv@d`Tms~tJY zvH80Ua1UFu&e=aMe6N_CT5>?fz~s)rDs4@jj51slWQC#%heXYy0w%th>gt%K7uCBG zS`K-mIR3yP`k;hs^AKMSv6tl#-H^3vW{HmpazmxCtV`1JR4$S_ACO~xHX3BU2AjCsm^G=Yu{U0AcTzci$2jO%Gqb(mmP~+3YmRj^%@OUon7piO_0JS z(fB>wE^%>HJAM=@?%B8fTIqM_)dSOPe1aP!!?(Y6x}ZijOrJIY`6Dr_vJ_RuEk`}l z`k@>*c5z__9);8PFj~J{sw^IM)jV=7-H#VbZFv?&^VJ1{VO`2pkGizWl9w{vdMW8q zjqX#TwjO4bVx%gLNmMwG)&_--LSTNXcNNvuKk(p!(+N3@si7Bzd~0Z$x~vUldgcg2 z-aTgb;$QLAJUQkDk|#IqiP`SW8#hWn_cQ1IkF7iUZ$nK=Hv&=-KJwyIpZ3bLfhC5W z`h!Tqh0U=o`fD9^Fqti>P+y-nOtiE%5Z#@KlWR zKcRA$W2E^(Y4sU(!;qgs%4J*CRp-GN^9N41x|px^`QQH4{0Y&>D${pP%F+{8xAi}l n8Sr)mJm)-LzH{;gybbv_cRRX!=-Vo4*Mqjcv^I4X>*4S}*>{sW literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae new file mode 100644 index 0000000000000000000000000000000000000000..a8a3691695fa201843d292ca3fc90c152a78209c GIT binary patch literal 4096 zcma)P3JmI@A>qxOP5_*yUHcnnho959ztJC zjQ{cJ>8a`3CaKxT+4zYz{7>}@|Ch z7Ih)M)u(7-x|BVau5R95U~N3V(OpVTgj`Fd~xrBFI?vtUPcDXD3 z$T8U$@;A9E?3rhAs{FngK$t>jqa{@jCQwx@%0I`fdE}Pd`fW+~cLFj>C$# z?c=2a5mh_vbE%TbjJti|+v9#JfA=kRx8B{q8kKX!B80)jh#rSfW_Dzx|R!Ni`q%gskiF)ZSZxh&f8!=HGN;vhCM<99 z`pY#L?@idL*)>pw3Y!nY&CI_r!w$Ni zni<}>V{Y2pJkasB(mTC%-@M z)5uhCQIe#0bRw3`SrM{_&H~QU&vh9#d1!v?m zc=ViTN*uCXJy7(&Ah{C-iM$VG#9N}fiVqxmAoSulfDDWfD7xgxqm9x zWIi3p3Q3|44lZy1vT-JA1}!KsdfAGFQCz!NrlH4@q0hkQF2-h<&9nV;U=dK83qahj z1U_2bIh6u;NA|;eTWKG~TqB0*F*qMB@csH#9i|@#uVeG|b5PmwNvGE1&7S$~@4?zD zRDz^^E*+$?Rj?oV{Mg$?*Al;(8@K;beyMVb_BGg6ZanDyxSz~BE1+>UiDwi4(aV=# zT!6N*@DyMOI4a!PCuCFC;Mz)#s9C9?)UMIPl2EyS`e-;uR|`@X=rYA3b0df?Hpg@w zqpzG67-teg>aAFwh^0EDq~xyVq4@0pI&>`Ce}n+&J&EC`aV7He^{W9>u8g<=Q{cv> zpS3&W9B=un2CVs1&^6RCm|j;%wWgM;eoWUqC2@aK7T`Z_-;rBQ{exLrpCnK1I@8}b zXQ^(9D7Knin}z6VLb9ZIs5P$WMoL6#v79>s>+3>56fx@5Qjs|3Iy$`(-^w0y?uJW3 zO<#c&r1W%3Et`NH`tlKSG>PG8NJ>GggdiM;32hRX`(GRKz)jk}1~1~ZBb*j%h0EWR z{9XG-SE48kdA}>3|Cd3y)k8K=BPZ=Y<*HXyc~Kr`2Sz}vSbobR%y0V;X{Mc05Yz7Pw_-FDS6=uDCVZfm1F<_Jek^HSGc#PWR z*-RnN_RZSemBz@UZmg*x`ae4Vs1K#3auw+ynuls_F(G#CSG%#OzYvS+ zCTU>kZ9tR%AdYQ->5jc=AEMk@XP^3ab*k3BPmHKrz70KmmsRR_sq#nB8vlpyLAY+> z{{8Q>^4I)_dbYodIRfRUk+~7F78%Ee{}%ZoFkj6LI5W6|dbRR}5~jn4V8596Bma_r z%(S6@FzSN0b)w-`P@x8=WOBvO8)Z=u0JbEcl?uc$@PN)f;%t(|bS;FpVvV-~GVaAn zT84=o*1{jvAQ$wgcL92%0KL&NlyR7jnARfZ&c1|H7PxLMU@qTaP6R$;PIdGXhuZih zG!o|80kEN>@@EA(Ro9^Lg|`z2JXYpcDXabRAhRa@pDfpuQVA7cXtEc|4E9z*f(gxk`|2`gNH8_6(q+ zC$PV8S)9q41L&DloIP{9o9XygHwjd6CfT8dvgzV%u+@dSwXLC=9MIR|Xkr@%?^I*U zLmr?#Omx(0|NKWJ0HvA~)JGaWjef{~{~H~xr$qJ`b9CcxKa4jv{Mh@WIhSc4ieQ~- zxT9DZd5snzBlV#wV{R_0o+%@*;%x46d$CE`DM!|H|=>-*v SssyO(GKpypPlnCf4(>mgBhf+t literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 new file mode 100644 index 0000000000000000000000000000000000000000..37dd625543b2d3d9df44bca5e4ab628e23ef5c12 GIT binary patch literal 4096 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 L7U|gxb^PX+?f`8Q literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af new file mode 100644 index 0000000000000000000000000000000000000000..0192b923b4e9f35448cbc5b2c2b43ff8ee800ffc GIT binary patch literal 4096 zcmd6qKW`+(7R9Tp`k$E@c>)KEX3i~lS}TQ|MA;Tw=R}Xj&tj9=1=q&!$a@-@}V!&(@iWMEqJE$^I{eY-g`0n zR9s!~``~PK*@bWt%NWv2SE<~r({kNcdfT5aJa-Eoh`uYM-+Y)A;6b9ypxk8SSY& zqdgMyjJdrxBljaKxx?A)GhdX~>48FJ#haU(<}H#_q?-Ts>Yd(ST%}^81YKUFH=tw| z-J9-pza;I%be|D_nLhv8_zIaV69HWL%f5uDf4yo<)$=iB#<0XaqztM5gKB2Kw?%bL zqMnjKE+4E-uL!9}M34fv5GX2OYje6NVqs52hMkCy{-P(hyFA00)Ezb{SkfhzoW+nw zo^2$Jg2l2(EClkYsg|E?w_7(E?m`ytO*^9|{&`n1QA1;|z3Oj-HK`O`eVU$g_hyjwSHy zV4h7H<=LJUvE;j+O_-j$csACJXPc_o0W=$)O_v~Ya_~}lHnir9k!NL$UaK`L4fAL; z)4r8ZGS~5%Sg@GVwWTb_=N35I|3MIPrmlB8f)%r-%R2(0F{~ZID-W`+KOm8zpuE81hBhFzh$T&Mucg<7eK z!iDW7)l{PrQf+H%{l86ngBSoFxm?ipkJToKx@+RW z5Rlq6beFTpTSq*m=j+%`f;0?|RvK8bb}Lb~u|}ZtT@mG^)``sxV$yE`rKZ{Wst@G2 z_g7FAux}?~8M*$CZH;RUqk!Sm(2L(6>;R!PtpJ-dKsR|u@v+I8hN?O}i{U-I+*X#< zTDDj)+Kl|<6F>}P$;v+~VBR1nCCrrZ_9Em=NBm$)BVK@?zI!_h&2VT^j$+f*Mm0B= z@{&m7$QqD%uR{P9D4jXW*K&Y59l?%q>{hnTH9C|)J)XqvwntR?v^7MjSJwP2k?g8# z!%1wrgV;b9w^1xVTD4(}u4Zq>i7A=`*#XxIO~N@V+@AvK!3!jDTcu?>ikuSxcecva z5n-T`Bn%S#vFA+uz`SM?`6hck2ogJ>A~cevgq;hR5>f-JgHP0Ja*+Ty;3Vu#sb}_! zC!2TKVE2`v0=uJxR%lyEV9xyQEhYGUB}f8O_FG((nQ>8|4K~2~YfXe4cUtHXw6Zig zme-gWOFoIHn{|GW3Z9gC)!DqLn4Nj~uHGGIYaM5G41xu-Wj1)>53%Ovs9HE6oWa6` z%fva?c&zYr7=!R--v}XEJ0@3_nR`RgP6J2dz@R{%mT~}AA2^{!)oEujifF9`$+Bz9 z_N`7??H&)!#DmrEZ5~?Vp&fZ>cRVzmZ9gcj?FhvHw7G+$SZJhwpmmfFjM+-CBh3w)c)P+(J&)0l%fh>D)=JO5(l99{#oX%RF{{fy zCfA@N*J$J#O|ENmmt5TSF?;5BO zNOxSL*>{a#ZYD@jlRvt~Bjz)kZE_7yzNSBkD(eq+*r+mJ`FO{j{ApFL(?@pp3hCo5 zo$dC6&GJj_-(cm#pd9u}KYxL9FEn;l_N_njSEBejKv&1!Zsf789Ws>+{&l>w8yT5U l*|}EV(0d0=6v2p-Woy-Tt*-%^cCefW9W8SJ|NHLKzW}KE)v^Ep literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a new file mode 100644 index 0000000000000000000000000000000000000000..ef635d143a1eb876ba55c32b07b6fe676befaf36 GIT binary patch literal 4096 zcmbtXJ%|-o6rOu$-kVwHJ$4FmS%7v=8(#KIYo` z-);L;x6k{iNOAHrMPKxlMGEv#(b*%hH&+%Z&{v9HG}M$u3UrU+)_-BBDT@^7B}K0o zYRV!7dRftHhMKZSfnHVghM}e`(j|J`P+41ltG~TzTUlFwr@y^zTUlGb-{0P~t*ouT z-{0P|t*ppTe|unCS&_*8_MvTMZT*w}_OWecMSgAjlxyps_fe68jc1C!=qrm9=%J#s zUoF476)DhHy1i(qDT@^79>vJ7p{6WSpqCWAVyG#L6zF9|uNi8}A_aO?(Hn-EvPgkm zSM-*lrYusRHx<2Os40sS=xs&!4K-zv0==u~eM3!Iq(JW}`oK_A7AepJMIRYz$|42& zP|+ubnzBgQ>2bY_yVE9#yItd3|H9Plt;f3MXqbex_)*s+T`amLN74xeAM)rB z5H@RFoky86b>cVqmu~VT9I-Wad@7n`oQ!-~s)0fcU=aftYm2v2ye;oG=26aFhN$SE zmjjAA86~C6!c~Tf1w(YOM@crPqzKu+QzE2&Oxj602njw`-S$RPL_`e!-qU$n9|;8j z?jLg8oj|ljIC8=l|6vs4)uLcWl1k;XR4DQNn&c4$)_xjW*Cv1n4bBxNsw;VTS!nX z0)`wMyE5d+T@63Le(Pb0%ZME50?WlHM^bnz!F9OpEwb3+=3A&sdNV!jlj@Is16 zCv^&r;gys(%1w8N^l@vP`OV-FJBl)$M)#q_m$NJK>RSd0*V2whgd9x*%^Lo&@|COv zrj;i=bs<%%QlknoqiR?}aY>c$Q-xMw2%sues$g_Mm9JA$1=~fP(l%KMDVGr_5yoJM zR1H|Pc%HDGrAf85By=Ple1KWmk@BVIMqh%usXf}3doEYdK%(YpQH*3&3!K@Yf;Zam@lC_)emN^2@07fT3ho{#BlGIBBB(s%iu6w-$8@V5JUOWyTN&~kNNfU>$4bJ75{fO zFg}7iNvwz+qMJ5oT+k+bAQNt3g|46+5CCV-yhLCdZ71W^ zssvL`Eu$VS55BD6ZQT26f0k5VUw~KTF&2@FYb-d2%jQS=x{gzFFe~sAE(lW`hD8|KoosfYFP~y7mtlr}K$`6` z#I?qh4~YYLg%-DegyEIz$dSeh{xrymss9#q=F6RwmVExBkp{l|BoNi!>?oP!;Hsbb1^#`lEhN4z|aPWw|j@$(ICk^1^TL1t6 literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 new file mode 100644 index 0000000000000000000000000000000000000000..ab2a475e6978bb0b2ce3ca02abfea2656c0f0556 GIT binary patch literal 4096 zcmchayN(=16o#v+uQT1ljL`%ZyFpdsU=bc^k<1#c2)2S<%SMQlXXqsvV{K%yvtSW{ z#6yq(2?Bw*2;l%EBwm0BViIIxESc|AchB_f%@P5Yywz28>eQ+K{O2-CsqsH{U{yU+ z$`5ailvi$GGgt6ml@WtAua8twc+Gmwx^c?p)&$XUVfJjw(fyIKiU0VAhYRIn8*iEN z%7evX5jMOY7nU=JZiw=d6HE>`5OvocxU#U?<~6EQTka}l3zypj!C_xnrR?A?SD~(W zQ=4O}woL4d49Z2Kc+2FKYVC=Z_L%eR(SCR!H$~ixz~st%!QkRU9W>8W?6jzysRUcK zf1>AJ-5LuJhV`&8Qq85R(lfQ`<2jPZZkeh7GGJk3a&>imrFT_q1&|>0MG(@bgq#t) zj7XZ|FJqEp{m%0k2euE@VHI5q-_5II%t^$EnaVqB;ws%Tn^hLOTvYeI@`cg(ce&TpD)BBtAY_h9z2B1R;@}OFGm=>RC9YHMMY}^mEDs!3ua1BUW3N$Q) zL|)$lKaLKBEc=3G%L)x3@Jzh$O)%`V%MljKBC#wA;Sz*@`3}7B(^(SbRu_+qiO;15 zx5e0pC3sDSMCP(0uStX)X+zeywNy@6HaeCVne=#peWeLBkOP4Vt^7ydHzuyjkAi|t zmkJePAa1FUTuueH0~HvR%f#~y6;R$%Az4x(dny%R$0byV;WY$G`s{HrUJzRooDoX^ zu9M@Y*2g?Z_rMiIfpzM?Z5_*`2b_~jiceFW9XFi8Aqm8DsW^jJ@iUiWiGR^A7C+&v zCUW(>(i;Q=_8|)J+}OsmawbG1E0LevMxU|KUY82AAOc06YZV=8#K7OOw zAPowg0Rk^ErVV+%R#%h3y?PkqEMQ3dc9>u$S6~0f+KNZT95x@=h(up!C~faaU-h zj!9_@YR|j}d1bR*#Z|Vz262+OOq9D+{E7d?u1Y@>8>JOBBMp8`MJ)CD$bl<%$X5yp zgGpleghDQ$;sl1N8=kUr$R*_kb`C+l?}<>L@dWZ+#cwDUiG8UhBT7k6Z%f5%EI3Df z0I3x!o>hPx3We2^pT*zBpQ+B<@L?~i{r!1G)u$8+{R#8KD)zB_$3pi6uu=gG6A(M7 zvc{$cGiwg3+~23EL1X|}G6a^=UDTCX(%oQhZ_?ww!G>-Jln286hRWPzMU68-<5C$? zqK;lAXQ(LEL<#x6me{n3P;P+n_vb4E$Pgq7>656(*Od+d85YfQ(X@*NXU!2M2E=QZ zbN4{9?mlUl1O`C-xxGQs2b~O7n0o;v>0`(W0XQyul+EeDfWugNA9(;?tq9b&eRjkv z)1$loU8xJVz*yUx-hFaIGj7FA=q}1wG}XUoRsfTr~xlZYbtnO_Nsqtud@^ zf+vSnac$WHpLYR#BCL1Sh`K}{T{6&i<}BtlS4!vK&~0Np<$u-t^QdL#zy9WMIsoFkuK%<^fqj!zC;DXl$>XO! zdE7jC+&p>QJbC<-Cj(7sNA{T|0OJ(^eE!b>jQaq*41q4$3}9|1ZLGm|Fk< literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 new file mode 100644 index 0000000000000000000000000000000000000000..fdbc4278f12e91907742dbf6943d2a7a91324903 GIT binary patch literal 4096 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 Z3cjZfdRJo%SybFyN*$ZeTt(~H^*@QNXE*== literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 new file mode 100644 index 0000000000000000000000000000000000000000..2da0ec72db71aa222afc7148cdb2bff3f789d0f8 GIT binary patch literal 4096 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 Uah@iDKLY;(s%udf1JT<50Pabki2wiq literal 0 HcmV?d00001 diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs new file mode 100644 index 000000000..d79f3b15e --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2023 Marigold +// SPDX-FileCopyrightText: 2023 Nomadic Labs +// +// SPDX-License-Identifier: MIT + +use tezos_crypto_rs::hash::SmartRollupHash; +use tezos_data_encoding::enc::BinWriter; +use tezos_smart_rollup::{ + inbox::{InboxMessage, InternalInboxMessage}, + kernel_entry, + michelson::{Michelson, MichelsonInt}, + outbox::{OutboxMessage, OutboxMessageTransaction, OutboxMessageTransactionBatch}, + prelude::*, + types::{Contract, Entrypoint}, +}; + +const L1_CONTRACT_ADDRESS: &str = "KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK"; +const L1_CONTRACT_ENTRYPOINT: &str = "default"; + +fn read_inbox_message( + host: &mut impl Runtime, + own_address: &SmartRollupHash, +) { + loop { + match host.read_input() { + Ok(Some(message)) => { + let parsed_message = InboxMessage::::parse(message.as_ref()); + if let Ok((remaining, InboxMessage::External(_))) = parsed_message { + debug_assert!(remaining.is_empty()); + write_outbox_message(host, MichelsonInt::from(1)) + } + } + Ok(None) => break, + Err(_) => continue, + } + } +} + +fn write_outbox_message(host: &mut impl Runtime, payload: Expr) { + let destination = Contract::from_b58check(L1_CONTRACT_ADDRESS).unwrap(); + let entrypoint = Entrypoint::try_from(L1_CONTRACT_ENTRYPOINT.to_string()).unwrap(); + let transaction = OutboxMessageTransaction { + parameters: payload, + destination, + entrypoint, + }; + + let batch = OutboxMessageTransactionBatch::from(vec![transaction]); + let message = OutboxMessage::AtomicTransactionBatch(batch); + let mut output = Vec::default(); + message.bin_write(&mut output).unwrap(); + host.write_output(&output).unwrap(); +} + +pub fn entry(host: &mut impl Runtime) { + let own_address = host.reveal_metadata().address(); + read_inbox_message::(host, &own_address); + host.mark_for_reboot().unwrap(); +} + +kernel_entry!(entry); diff --git a/crates/jstzd/tests/utils.rs b/crates/jstzd/tests/utils.rs index d905d656e..f15245e2f 100644 --- a/crates/jstzd/tests/utils.rs +++ b/crates/jstzd/tests/utils.rs @@ -33,13 +33,33 @@ where false } -pub async fn setup() -> (OctezNode, OctezClient, octez_baker::OctezBaker) { +pub async fn poll<'a, F, T>( + max_attempts: u16, + interval_ms: u64, + f: impl Fn() -> F, +) -> Option +where + F: std::future::Future> + Send + 'a, +{ + let duration = tokio::time::Duration::from_millis(interval_ms); + for _ in 0..max_attempts { + tokio::time::sleep(duration).await; + if let Some(v) = f().await { + return Some(v); + } + } + None +} + +pub async fn setup( + param_file_path: Option, +) -> (OctezNode, OctezClient, octez_baker::OctezBaker) { let octez_node = spawn_octez_node().await; let octez_client = create_client(octez_node.rpc_endpoint()); import_bootstrap_keys(&octez_client).await; import_activator(&octez_client).await; - activate_alpha(&octez_client, None).await; + activate_alpha(&octez_client, param_file_path).await; let baker = spawn_baker(&octez_node, &octez_client).await; (octez_node, octez_client, baker) @@ -48,17 +68,17 @@ pub async fn setup() -> (OctezNode, OctezClient, octez_baker::OctezBaker) { pub async fn spawn_rollup( octez_node: &OctezNode, octez_client: &OctezClient, + installer_path: PathBuf, + preimages_dir: PathBuf, + rollup_address: Option<&str>, ) -> octez_rollup::OctezRollup { - let kernel_installer = Path::new(std::env!("CARGO_MANIFEST_DIR")) - .join("tests/toy_rollup/kernel_installer"); - let preimages_dir = - Path::new(std::env!("CARGO_MANIFEST_DIR")).join("tests/toy_rollup/preimages"); let config = OctezRollupConfigBuilder::new( octez_node.rpc_endpoint().clone(), octez_client.base_dir().into(), - SmartRollupHash::from_base58_check(ROLLUP_ADDRESS).unwrap(), + SmartRollupHash::from_base58_check(rollup_address.unwrap_or(ROLLUP_ADDRESS)) + .unwrap(), "bootstrap1".to_string(), - kernel_installer, + installer_path, ) .set_data_dir(RollupDataDir::TempWithPreImages { preimages_dir }) .build() diff --git a/crates/octez/src/async/client.rs b/crates/octez/src/async/client.rs index 8ca5e83bd..601113d49 100644 --- a/crates/octez/src/async/client.rs +++ b/crates/octez/src/async/client.rs @@ -9,7 +9,7 @@ use std::{ path::{Path, PathBuf}, }; use tempfile::tempdir; -use tezos_crypto_rs::hash::{BlockHash, ContractKt1Hash, OperationHash}; +use tezos_crypto_rs::hash::{BlockHash, ContractKt1Hash, OperationHash, SmartRollupHash}; use tokio::process::Command; use super::{directory::Directory, endpoint::Endpoint, node_config::OctezNodeConfig}; @@ -534,6 +534,42 @@ impl OctezClient { let output = self.spawn_and_wait_command(args).await?; Ok((parse_block_hash(&output)?, parse_operation_hash(&output)?)) } + + pub async fn execute_rollup_outbox_message( + &self, + rollup_address: &SmartRollupHash, + src: &str, + commitment_hash: &str, + output_proof: &str, + burn_cap: Option, + ) -> Result<(BlockHash, OperationHash)> { + let burn_cap_str = burn_cap.map(|v| v.to_string()); + let rollup_address_str = rollup_address.to_string(); + let mut args = vec![ + "execute", + "outbox", + "message", + "of", + "smart", + "rollup", + &rollup_address_str, + "from", + src, + "for", + "commitment", + "hash", + commitment_hash, + "and", + "output", + "proof", + output_proof, + ]; + if let Some(v) = &burn_cap_str { + args.append(&mut vec!["--burn-cap", v]); + } + let output = self.spawn_and_wait_command(args).await?; + Ok((parse_block_hash(&output)?, parse_operation_hash(&output)?)) + } } fn parse_regex(pattern_str: &str, output: &str) -> Result {