diff --git a/Cargo.lock b/Cargo.lock
index 1506f2324..fea80a931 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3698,17 +3698,11 @@ version = "0.5.0"
 dependencies = [
  "alloy",
  "eigen-aggregator",
- "eigen-client-avsregistry",
- "eigen-common",
  "eigen-crypto-bls",
- "eigen-logging",
- "eigen-testing-utils",
- "eigen-types",
+ "eigen-task-processor",
+ "eigen-utils",
  "serde",
- "serde_json",
- "tarpc",
  "tokio",
- "tracing",
 ]
 
 [[package]]
diff --git a/examples/aggregator/Cargo.toml b/examples/aggregator/Cargo.toml
index ee2060af6..185443b21 100644
--- a/examples/aggregator/Cargo.toml
+++ b/examples/aggregator/Cargo.toml
@@ -10,16 +10,9 @@ description = "aggregator example"
 
 [dependencies]
 alloy.workspace = true
-eigen-client-avsregistry.workspace = true
-eigen-crypto-bls.workspace = true
-eigen-logging.workspace = true
-eigen-testing-utils.workspace = true
-eigen-types.workspace = true
-eigen-common.workspace = true
-tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
 eigen-aggregator.workspace = true
+eigen-crypto-bls.workspace = true
+eigen-task-processor.workspace = true
+eigen-utils.workspace = true
 serde.workspace = true
-tracing.workspace = true
-serde_json.workspace = true
-
-tarpc = { version = "0.36", features = ["full"] }
+tokio.workspace = true
diff --git a/examples/aggregator/examples/aggregator.rs b/examples/aggregator/examples/aggregator.rs
deleted file mode 100644
index 9d3eabf06..000000000
--- a/examples/aggregator/examples/aggregator.rs
+++ /dev/null
@@ -1,337 +0,0 @@
-//! This is a simple example of how to use the aggregator.
-//!
-//! 1. Create a contract that emits an event when a task is created.
-//! 2. To use the aggregator, you should implement the [`TaskProcessor`] and
-//!    [`TaskResponse`] traits and create your own logic for processing the task.
-//! 3. Deploy the task contract
-//! 4. Create an operator set with a total delegated stake quorum
-//! 5. Register operators to the operator set
-//! 6. Start the aggregator
-//! 7. Emit a task with the contract
-//! 8. Send an RPC request to the aggregator with the task response and signature of both operators
-//! 9. Since the threshold is reached, the BLS aggregation service will send the aggregated response
-//!    to the aggregator
-
-use std::time::Duration;
-
-use alloy::primitives::{FixedBytes, B256};
-use alloy::sol;
-use eigen_aggregator::{
-    config::AggregatorConfig,
-    rpc_server::ProcessSignedTaskResponseClient,
-    traits::{
-        task_processor::{box_error, TaskProcessor, TaskProcessorError},
-        task_response::TaskResponse,
-    },
-    Aggregator, SignedTaskResponse,
-};
-use eigen_aggregator::{BlsAggregationServiceResponse, TaskMetadata};
-use eigen_client_avsregistry::reader::AvsRegistryChainReader;
-use eigen_common::get_signer;
-use eigen_crypto_bls::{BlsG1Point, BlsG2Point, BlsKeyPair, Signature};
-use eigen_logging::get_test_logger;
-use eigen_logging::{init_logger, log_level::LogLevel};
-use eigen_testing_utils::anvil::start_anvil_container;
-use eigen_testing_utils::anvil_constants::{
-    get_erc20_mock_strategy, get_operator_state_retriever_address,
-    get_registry_coordinator_address, get_service_manager_address, FIRST_ADDRESS,
-    FIRST_PRIVATE_KEY, OPERATOR_BLS_KEY, OPERATOR_BLS_KEY_2, SECOND_ADDRESS, SECOND_PRIVATE_KEY,
-};
-use eigen_testing_utils::chain_clients::{
-    create_total_delegated_stake_operator_set, new_test_writer,
-};
-pub use eigen_types::operator::Operator;
-use serde::{Deserialize, Serialize};
-use tarpc::tokio_serde::formats::Json;
-use tokio::sync::mpsc;
-use tracing::{error, info};
-
-// 1. Fake contract to emit event
-sol! {
-    #[allow(missing_docs)]
-    #[derive(Debug)]
-    // IF WE MODIFY THE CONTRACT, WE NEED TO UPDATE THE BYTECODE - `solc --bin <CONTRACT_NAME>.sol`
-    #[sol(rpc, bytecode = "6080604052348015600e575f5ffd5b506101868061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80635867173014610038578063a747649314610056575b5f5ffd5b610040610060565b60405161004d91906100c3565b60405180910390f35b61005e610065565b005b5f5481565b5f5f81548092919061007690610109565b91905055505f547f0308e35d068a731dcf227a01af50313408b863f815670a72362dfa93fdd0686d60405160405180910390a2565b5f819050919050565b6100bd816100ab565b82525050565b5f6020820190506100d65f8301846100b4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610113826100ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610145576101446100dc565b5b60018201905091905056fea264697066735822122066967740649d975b00c00d92c8ad08ecca35b10d89341e538ea5d4e4c3d0852b64736f6c634300081d0033")]
-    contract TaskContract {
-        uint256 public taskCounter;
-
-        event NewTask(uint256 indexed taskIndex);
-
-        function createTask() external {
-            taskCounter++;
-            emit NewTask(taskCounter);
-        }
-    }
-}
-
-// 2. Implement the `TaskResponse` trait
-#[derive(Debug, Clone, Serialize, Deserialize)]
-struct FakeResponse {
-    response: String,
-}
-
-impl FakeResponse {
-    pub fn new(response: String) -> Self {
-        Self { response }
-    }
-}
-
-impl TaskResponse for FakeResponse {
-    fn digest(&self) -> B256 {
-        B256::new([0x01; 32])
-    }
-
-    fn task_index(&self) -> u32 {
-        1
-    }
-}
-
-// 2. Implement the `TaskProcessor` trait
-#[derive(Debug, Clone)]
-struct MockTaskProcessor {
-    aggregated_response: mpsc::Sender<BlsAggregationServiceResponse>,
-}
-
-impl MockTaskProcessor {
-    fn new(sender: mpsc::Sender<BlsAggregationServiceResponse>) -> Self {
-        Self {
-            aggregated_response: sender,
-        }
-    }
-}
-impl TaskProcessor for MockTaskProcessor {
-    type NewTaskEvent = TaskContract::NewTask;
-    type TaskResponse = FakeResponse;
-
-    async fn process_new_task(
-        &mut self,
-        event: Self::NewTaskEvent,
-    ) -> Result<TaskMetadata, TaskProcessorError> {
-        Ok(TaskMetadata::new(
-            event.taskIndex.to::<u32>(),
-            12345,
-            vec![0],
-            vec![50],
-            std::time::Duration::from_secs(60),
-        )
-        .with_window_duration(Duration::from_secs(15)))
-    }
-
-    async fn process_task_response(
-        &mut self,
-        response: Self::TaskResponse,
-    ) -> Result<B256, TaskProcessorError> {
-        if response.response.is_empty() {
-            return Err(box_error(std::io::Error::new(
-                std::io::ErrorKind::InvalidInput,
-                "Empty result",
-            )));
-        }
-        Ok(response.digest())
-    }
-
-    async fn process_aggregated_response(
-        &self,
-        response: BlsAggregationServiceResponse,
-    ) -> Result<(), TaskProcessorError> {
-        info!(
-            "Aggregated response received for task {}: {:?}",
-            response.task_index, response.task_response_digest
-        );
-
-        self.aggregated_response.send(response).await.map_err(|e| {
-            box_error(std::io::Error::new(
-                std::io::ErrorKind::Other,
-                format!("Failed to send response: {}", e),
-            ))
-        })
-    }
-}
-
-const AGGREGATOR_IP_PORT_ADDRESS: &str = "127.0.0.1:8081";
-
-#[tokio::main]
-async fn main() {
-    init_logger(LogLevel::Info);
-    let (_container, http_rpc, ws_rpc) = start_anvil_container().await;
-
-    let el_chain_writer = new_test_writer(http_rpc.clone(), FIRST_PRIVATE_KEY.to_string()).await;
-    let el_chain_writer_2 = new_test_writer(http_rpc.clone(), SECOND_PRIVATE_KEY.to_string()).await;
-    let avs_registry = AvsRegistryChainReader::new(
-        get_test_logger(),
-        get_registry_coordinator_address(http_rpc.clone()).await,
-        get_operator_state_retriever_address(http_rpc.clone()).await,
-        http_rpc.clone(),
-    )
-    .await
-    .unwrap();
-
-    // 3. Deploy the task contract
-    let provider = get_signer(FIRST_PRIVATE_KEY, &http_rpc);
-    let task_contract = TaskContract::deploy(&provider).await.unwrap();
-    let avs_address = get_service_manager_address(http_rpc.clone()).await;
-
-    // 4. Create quorums and operator sets
-    create_total_delegated_stake_operator_set(
-        &http_rpc,
-        get_erc20_mock_strategy(http_rpc.clone()).await,
-        avs_address,
-    )
-    .await;
-    info!("Operator set created");
-
-    // 5. Register operator to operator set
-    let bls_key_pair = BlsKeyPair::new(OPERATOR_BLS_KEY.to_string()).unwrap();
-    el_chain_writer
-        .register_for_operator_sets(FIRST_ADDRESS, avs_address, vec![0], bls_key_pair, "socket")
-        .await
-        .unwrap();
-    info!("First operator registered to operator set");
-
-    // 5. Register second operator to operator set
-    let bls_key_pair_2 = BlsKeyPair::new(OPERATOR_BLS_KEY_2.to_string()).unwrap();
-    el_chain_writer_2
-        .register_for_operator_sets(
-            SECOND_ADDRESS,
-            avs_address,
-            vec![0],
-            bls_key_pair_2,
-            "socket",
-        )
-        .await
-        .unwrap();
-    info!("Second operator registered to operator set");
-
-    let operator_id = avs_registry.get_operator_id(FIRST_ADDRESS).await.unwrap();
-    let operator_id_2 = avs_registry.get_operator_id(SECOND_ADDRESS).await.unwrap();
-
-    // 6. Set up the aggregator config and initialize the processor
-    let registry_coordinator = get_registry_coordinator_address(http_rpc.clone()).await;
-    let operator_state_retriever = get_operator_state_retriever_address(http_rpc.clone()).await;
-    let config = AggregatorConfig {
-        server_address: AGGREGATOR_IP_PORT_ADDRESS.to_string(),
-        registry_coordinator,
-        operator_state_retriever,
-        http_rpc_url: http_rpc.clone(),
-        ws_rpc_url: ws_rpc.clone(),
-    };
-
-    let (sender, mut receiver) = mpsc::channel(1);
-    let processor = MockTaskProcessor::new(sender);
-    let aggregator = Aggregator::new(config, processor).await.unwrap();
-
-    // 6. Start the aggregator in the background
-    let aggregator_handle = tokio::spawn(aggregator.start());
-
-    // Wait for the aggregator to initialize
-    tokio::time::sleep(std::time::Duration::from_secs(5)).await;
-
-    // 7. Emit a new task event
-    let result = task_contract
-        .createTask()
-        .send()
-        .await
-        .unwrap()
-        .get_receipt()
-        .await
-        .unwrap();
-    info!("Task created: {:?}", result.transaction_hash);
-
-    tokio::time::sleep(std::time::Duration::from_secs(10)).await;
-    // Send fake response from operator
-    info!("Simulating operator response");
-
-    // 8. Send fake response from the first operator
-    let fake_response = FakeResponse::new("Hello world".to_string());
-    let bls_key_pair = BlsKeyPair::new(OPERATOR_BLS_KEY.to_string()).unwrap();
-    let bls_signature = bls_key_pair.sign_message(fake_response.digest().as_ref());
-    send_signed_task_response(fake_response, bls_signature.clone(), operator_id).await;
-    info!("Response from first operator sent");
-
-    tokio::time::sleep(std::time::Duration::from_secs(5)).await;
-
-    info!("Threshold reached but there is a window to send another response");
-
-    // 8. Send fake response from second operator
-    let fake_response_2 = FakeResponse::new("Hello world".to_string());
-    let bls_key_pair_2 = BlsKeyPair::new(OPERATOR_BLS_KEY_2.to_string()).unwrap();
-    let bls_signature_2 = bls_key_pair_2.sign_message(fake_response_2.digest().as_ref());
-    send_signed_task_response(fake_response_2, bls_signature_2.clone(), operator_id_2).await;
-    info!("Response from second operator sent");
-
-    // Aggregate the bls signatures manually
-    let quorum_apks_g1 = aggregate_g1_public_keys(&[bls_key_pair.clone(), bls_key_pair_2.clone()]);
-    let signers_apk_g2 = aggregate_g2_public_keys(&[bls_key_pair.clone(), bls_key_pair_2.clone()]);
-    let signers_agg_sig_g1 =
-        aggregate_g1_signatures(&[bls_signature.clone(), bls_signature_2.clone()]);
-
-    // Wait for the aggregator to aggregate the responses and then compare the results
-    let aggregated_response = receiver.recv().await.unwrap();
-    assert_eq!(aggregated_response.quorum_apks_g1, vec![quorum_apks_g1]);
-    assert_eq!(aggregated_response.signers_apk_g2, signers_apk_g2);
-    assert_eq!(aggregated_response.signers_agg_sig_g1, signers_agg_sig_g1);
-    info!("Compared aggregated response with manual aggregation and they are equal");
-
-    // Close the aggregator
-    aggregator_handle.abort();
-    if aggregator_handle.await.is_err() {
-        info!("Aggregator finished");
-        return;
-    }
-}
-
-async fn send_signed_task_response(
-    task_response: FakeResponse,
-    signature: Signature,
-    operator_id: FixedBytes<32>,
-) {
-    let transport = tarpc::serde_transport::tcp::connect(AGGREGATOR_IP_PORT_ADDRESS, Json::default)
-        .await
-        .unwrap();
-    let client =
-        ProcessSignedTaskResponseClient::new(tarpc::client::Config::default(), transport).spawn();
-
-    let ctx = tarpc::context::current();
-
-    let signed_task_response = SignedTaskResponse::new(task_response, signature, operator_id);
-    let signed_task_string = serde_json::to_string(&signed_task_response).unwrap();
-
-    let response = client
-        .process_signed_task_response(ctx, signed_task_string)
-        .await
-        .unwrap()
-        .unwrap();
-
-    if !response {
-        error!("Failed to send signed task response for task");
-    }
-}
-
-// Aggregate the g1 public keys
-fn aggregate_g1_public_keys(bls_key_pairs: &[BlsKeyPair]) -> BlsG1Point {
-    bls_key_pairs
-        .iter()
-        .map(|bls| bls.public_key().g1())
-        .reduce(|a, b| (a + b).into())
-        .map(BlsG1Point::new)
-        .unwrap()
-}
-
-// Aggregate the g2 public keys
-fn aggregate_g2_public_keys(bls_key_pairs: &[BlsKeyPair]) -> BlsG2Point {
-    bls_key_pairs
-        .iter()
-        .map(|bls| bls.public_key_g2().g2())
-        .reduce(|a, b| (a + b).into())
-        .map(BlsG2Point::new)
-        .unwrap()
-}
-
-fn aggregate_g1_signatures(signatures: &[Signature]) -> Signature {
-    let agg = signatures
-        .iter()
-        .map(|s| s.g1_point().g1())
-        .reduce(|a, b| (a + b).into())
-        .unwrap();
-    Signature::new(agg)
-}
diff --git a/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs b/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs
new file mode 100644
index 000000000..8a4814ebc
--- /dev/null
+++ b/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs
@@ -0,0 +1,14686 @@
+///Module containing a contract's types and functions.
+/**
+
+```solidity
+library BN254 {
+    struct G1Point { uint256 X; uint256 Y; }
+    struct G2Point { uint256[2] X; uint256[2] Y; }
+}
+```*/
+#[allow(
+    non_camel_case_types,
+    non_snake_case,
+    clippy::pub_underscore_fields,
+    clippy::style,
+    clippy::empty_structs_with_brackets
+)]
+pub mod BN254 {
+    use super::*;
+    use alloy::sol_types as alloy_sol_types;
+    /**```solidity
+    struct G1Point { uint256 X; uint256 Y; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone, Debug)]
+    pub struct G1Point {
+        #[allow(missing_docs)]
+        pub X: alloy::sol_types::private::primitives::aliases::U256,
+        #[allow(missing_docs)]
+        pub Y: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Uint<256>,
+            alloy::sol_types::sol_data::Uint<256>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::primitives::aliases::U256,
+            alloy::sol_types::private::primitives::aliases::U256,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
+            fn from(value: G1Point) -> Self {
+                (value.X, value.Y)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    X: tuple.0,
+                    Y: tuple.1,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for G1Point {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.X,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.Y,
+                    ),
+                )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for G1Point {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for G1Point {
+            const NAME: &'static str = "G1Point";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)")
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
+                      .0,
+                  <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for G1Point {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
+                  + <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Uint<
+                  256,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
+                <alloy::sol_types::sol_data::Uint<
+                  256,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    /**```solidity
+    struct G2Point { uint256[2] X; uint256[2] Y; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct G2Point {
+        #[allow(missing_docs)]
+        pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
+        #[allow(missing_docs)]
+        pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
+            alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
+            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
+            fn from(value: G2Point) -> Self {
+                (value.X, value.Y)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    X: tuple.0,
+                    Y: tuple.1,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for G2Point {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::SolType>::tokenize(&self.X),
+                    <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::SolType>::tokenize(&self.Y),
+                )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for G2Point {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for G2Point {
+            const NAME: &'static str = "G2Point";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)")
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                    <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
+                    .0,
+                    <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
+                    .0,
+                ]
+                .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for G2Point {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                    + <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                        &rust.X
+                    )
+                    + <alloy::sol_types::sol_data::FixedArray<
+                        alloy::sol_types::sol_data::Uint<256>,
+                        2usize,
+                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                        &rust.Y
+                    )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::FixedArray<
+                    alloy::sol_types::sol_data::Uint<256>,
+                    2usize,
+                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.X, out
+                );
+                <alloy::sol_types::sol_data::FixedArray<
+                    alloy::sol_types::sol_data::Uint<256>,
+                    2usize,
+                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.Y, out
+                );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    use alloy::contract as alloy_contract;
+    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
+
+    See the [wrapper's documentation](`BN254Instance`) for more details.*/
+    #[inline]
+    pub const fn new<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        address: alloy_sol_types::private::Address,
+        provider: P,
+    ) -> BN254Instance<T, P, N> {
+        BN254Instance::<T, P, N>::new(address, provider)
+    }
+    /**A [`BN254`](self) instance.
+
+    Contains type-safe methods for interacting with an on-chain instance of the
+    [`BN254`](self) contract located at a given `address`, using a given
+    provider `P`.
+
+    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
+    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
+    be used to deploy a new instance of the contract.
+
+    See the [module-level documentation](self) for all the available methods.*/
+    #[derive(Clone)]
+    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
+        address: alloy_sol_types::private::Address,
+        provider: P,
+        _network_transport: ::core::marker::PhantomData<(N, T)>,
+    }
+    #[automatically_derived]
+    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
+        #[inline]
+        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+            f.debug_tuple("BN254Instance").field(&self.address).finish()
+        }
+    }
+    /// Instantiation and getters/setters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > BN254Instance<T, P, N>
+    {
+        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
+
+        See the [wrapper's documentation](`BN254Instance`) for more details.*/
+        #[inline]
+        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
+            Self {
+                address,
+                provider,
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+        /// Returns a reference to the address.
+        #[inline]
+        pub const fn address(&self) -> &alloy_sol_types::private::Address {
+            &self.address
+        }
+        /// Sets the address.
+        #[inline]
+        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
+            self.address = address;
+        }
+        /// Sets the address and returns `self`.
+        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
+            self.set_address(address);
+            self
+        }
+        /// Returns a reference to the provider.
+        #[inline]
+        pub const fn provider(&self) -> &P {
+            &self.provider
+        }
+    }
+    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
+        /// Clones the provider and returns a new instance with the cloned provider.
+        #[inline]
+        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
+            BN254Instance {
+                address: self.address,
+                provider: ::core::clone::Clone::clone(&self.provider),
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+    }
+    /// Function calls.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > BN254Instance<T, P, N>
+    {
+        /// Creates a new call builder using this contract instance's provider and address.
+        ///
+        /// Note that the call can be any function call, not just those defined in this
+        /// contract. Prefer using the other methods for building type-safe contract calls.
+        pub fn call_builder<C: alloy_sol_types::SolCall>(
+            &self,
+            call: &C,
+        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
+            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
+        }
+    }
+    /// Event filters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > BN254Instance<T, P, N>
+    {
+        /// Creates a new event filter using this contract instance's provider and address.
+        ///
+        /// Note that the type can be any event, not just those defined in this contract.
+        /// Prefer using the other methods for building type-safe event filters.
+        pub fn event_filter<E: alloy_sol_types::SolEvent>(
+            &self,
+        ) -> alloy_contract::Event<T, &P, E, N> {
+            alloy_contract::Event::new_sol(&self.provider, &self.address)
+        }
+    }
+}
+///Module containing a contract's types and functions.
+/**
+
+```solidity
+library IBLSSignatureCheckerTypes {
+  struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
+  struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
+}
+```*/
+#[allow(
+    non_camel_case_types,
+    non_snake_case,
+    clippy::pub_underscore_fields,
+    clippy::style,
+    clippy::empty_structs_with_brackets
+)]
+pub mod IBLSSignatureCheckerTypes {
+    use super::*;
+    use alloy::sol_types as alloy_sol_types;
+    /**```solidity
+    struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct NonSignerStakesAndSignature {
+        #[allow(missing_docs)]
+        pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub nonSignerPubkeys:
+            alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
+        #[allow(missing_docs)]
+        pub quorumApks:
+            alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
+        #[allow(missing_docs)]
+        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
+        #[allow(missing_docs)]
+        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+        #[allow(missing_docs)]
+        pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub nonSignerStakeIndices:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<BN254::G1Point>,
+            alloy::sol_types::sol_data::Array<BN254::G1Point>,
+            BN254::G2Point,
+            BN254::G1Point,
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            >,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
+            alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
+            <BN254::G2Point as alloy::sol_types::SolType>::RustType,
+            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<NonSignerStakesAndSignature> for UnderlyingRustTuple<'_> {
+            fn from(value: NonSignerStakesAndSignature) -> Self {
+                (
+                    value.nonSignerQuorumBitmapIndices,
+                    value.nonSignerPubkeys,
+                    value.quorumApks,
+                    value.apkG2,
+                    value.sigma,
+                    value.quorumApkIndices,
+                    value.totalStakeIndices,
+                    value.nonSignerStakeIndices,
+                )
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NonSignerStakesAndSignature {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    nonSignerQuorumBitmapIndices: tuple.0,
+                    nonSignerPubkeys: tuple.1,
+                    quorumApks: tuple.2,
+                    apkG2: tuple.3,
+                    sigma: tuple.4,
+                    quorumApkIndices: tuple.5,
+                    totalStakeIndices: tuple.6,
+                    nonSignerStakeIndices: tuple.7,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for NonSignerStakesAndSignature {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for NonSignerStakesAndSignature {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(
+                      &self.nonSignerQuorumBitmapIndices,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys),
+                  <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::SolType>::tokenize(&self.quorumApks),
+                  <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
+                  <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
+              )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for NonSignerStakesAndSignature {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature {
+            const NAME: &'static str = "NonSignerStakesAndSignature";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                  "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
+              )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                let mut components = alloy_sol_types::private::Vec::with_capacity(4);
+                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
+                components
+                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
+                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
+                components
+                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
+                components.push(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type());
+                components
+                    .extend(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components());
+                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
+                components
+                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
+                components
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.nonSignerQuorumBitmapIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.nonSignerPubkeys,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks)
+                      .0,
+                  <BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.apkG2,
+                      )
+                      .0,
+                  <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.sigma,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.quorumApkIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.totalStakeIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.nonSignerStakeIndices,
+                      )
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.nonSignerQuorumBitmapIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.nonSignerPubkeys,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.quorumApks,
+                  )
+                  + <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.apkG2,
+                  )
+                  + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.sigma,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.quorumApkIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.totalStakeIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.nonSignerStakeIndices,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.nonSignerQuorumBitmapIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  BN254::G1Point,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.nonSignerPubkeys,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  BN254::G1Point,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.quorumApks,
+                  out,
+              );
+                <BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.apkG2,
+                    out,
+                );
+                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.sigma,
+                    out,
+                );
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.quorumApkIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.totalStakeIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.nonSignerStakeIndices,
+                    out,
+                );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    /**```solidity
+    struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct QuorumStakeTotals {
+        #[allow(missing_docs)]
+        pub signedStakeForQuorum:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
+        #[allow(missing_docs)]
+        pub totalStakeForQuorum:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
+            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<QuorumStakeTotals> for UnderlyingRustTuple<'_> {
+            fn from(value: QuorumStakeTotals) -> Self {
+                (value.signedStakeForQuorum, value.totalStakeForQuorum)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumStakeTotals {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    signedStakeForQuorum: tuple.0,
+                    totalStakeForQuorum: tuple.1,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for QuorumStakeTotals {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for QuorumStakeTotals {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum),
+              )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for QuorumStakeTotals {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for QuorumStakeTotals {
+            const NAME: &'static str = "QuorumStakeTotals";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                    "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)",
+                )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.signedStakeForQuorum,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.totalStakeForQuorum,
+                      )
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for QuorumStakeTotals {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.signedStakeForQuorum,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<96>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.totalStakeForQuorum,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<96>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.signedStakeForQuorum,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<96>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.totalStakeForQuorum,
+                  out,
+              );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    use alloy::contract as alloy_contract;
+    /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
+
+    See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
+    #[inline]
+    pub const fn new<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        address: alloy_sol_types::private::Address,
+        provider: P,
+    ) -> IBLSSignatureCheckerTypesInstance<T, P, N> {
+        IBLSSignatureCheckerTypesInstance::<T, P, N>::new(address, provider)
+    }
+    /**A [`IBLSSignatureCheckerTypes`](self) instance.
+
+    Contains type-safe methods for interacting with an on-chain instance of the
+    [`IBLSSignatureCheckerTypes`](self) contract located at a given `address`, using a given
+    provider `P`.
+
+    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
+    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
+    be used to deploy a new instance of the contract.
+
+    See the [module-level documentation](self) for all the available methods.*/
+    #[derive(Clone)]
+    pub struct IBLSSignatureCheckerTypesInstance<T, P, N = alloy_contract::private::Ethereum> {
+        address: alloy_sol_types::private::Address,
+        provider: P,
+        _network_transport: ::core::marker::PhantomData<(N, T)>,
+    }
+    #[automatically_derived]
+    impl<T, P, N> ::core::fmt::Debug for IBLSSignatureCheckerTypesInstance<T, P, N> {
+        #[inline]
+        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+            f.debug_tuple("IBLSSignatureCheckerTypesInstance")
+                .field(&self.address)
+                .finish()
+        }
+    }
+    /// Instantiation and getters/setters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IBLSSignatureCheckerTypesInstance<T, P, N>
+    {
+        /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
+
+        See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
+        #[inline]
+        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
+            Self {
+                address,
+                provider,
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+        /// Returns a reference to the address.
+        #[inline]
+        pub const fn address(&self) -> &alloy_sol_types::private::Address {
+            &self.address
+        }
+        /// Sets the address.
+        #[inline]
+        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
+            self.address = address;
+        }
+        /// Sets the address and returns `self`.
+        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
+            self.set_address(address);
+            self
+        }
+        /// Returns a reference to the provider.
+        #[inline]
+        pub const fn provider(&self) -> &P {
+            &self.provider
+        }
+    }
+    impl<T, P: ::core::clone::Clone, N> IBLSSignatureCheckerTypesInstance<T, &P, N> {
+        /// Clones the provider and returns a new instance with the cloned provider.
+        #[inline]
+        pub fn with_cloned_provider(self) -> IBLSSignatureCheckerTypesInstance<T, P, N> {
+            IBLSSignatureCheckerTypesInstance {
+                address: self.address,
+                provider: ::core::clone::Clone::clone(&self.provider),
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+    }
+    /// Function calls.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IBLSSignatureCheckerTypesInstance<T, P, N>
+    {
+        /// Creates a new call builder using this contract instance's provider and address.
+        ///
+        /// Note that the call can be any function call, not just those defined in this
+        /// contract. Prefer using the other methods for building type-safe contract calls.
+        pub fn call_builder<C: alloy_sol_types::SolCall>(
+            &self,
+            call: &C,
+        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
+            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
+        }
+    }
+    /// Event filters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IBLSSignatureCheckerTypesInstance<T, P, N>
+    {
+        /// Creates a new event filter using this contract instance's provider and address.
+        ///
+        /// Note that the type can be any event, not just those defined in this contract.
+        /// Prefer using the other methods for building type-safe event filters.
+        pub fn event_filter<E: alloy_sol_types::SolEvent>(
+            &self,
+        ) -> alloy_contract::Event<T, &P, E, N> {
+            alloy_contract::Event::new_sol(&self.provider, &self.address)
+        }
+    }
+}
+///Module containing a contract's types and functions.
+/**
+
+```solidity
+library IIncredibleSquaringTaskManager {
+  struct Task { uint256 numberToBeSquared; uint32 taskCreatedBlock; bytes quorumNumbers; uint32 quorumThresholdPercentage; }
+  struct TaskResponse { uint32 referenceTaskIndex; uint256 numberSquared; }
+  struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
+}
+```*/
+#[allow(
+    non_camel_case_types,
+    non_snake_case,
+    clippy::pub_underscore_fields,
+    clippy::style,
+    clippy::empty_structs_with_brackets
+)]
+pub mod IIncredibleSquaringTaskManager {
+    use super::*;
+    use alloy::sol_types as alloy_sol_types;
+    /**```solidity
+    struct Task { uint256 numberToBeSquared; uint32 taskCreatedBlock; bytes quorumNumbers; uint32 quorumThresholdPercentage; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone, Debug)]
+    pub struct Task {
+        #[allow(missing_docs)]
+        pub numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256,
+        #[allow(missing_docs)]
+        pub taskCreatedBlock: u32,
+        #[allow(missing_docs)]
+        pub quorumNumbers: alloy::sol_types::private::Bytes,
+        #[allow(missing_docs)]
+        pub quorumThresholdPercentage: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Uint<256>,
+            alloy::sol_types::sol_data::Uint<32>,
+            alloy::sol_types::sol_data::Bytes,
+            alloy::sol_types::sol_data::Uint<32>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::primitives::aliases::U256,
+            u32,
+            alloy::sol_types::private::Bytes,
+            u32,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<Task> for UnderlyingRustTuple<'_> {
+            fn from(value: Task) -> Self {
+                (
+                    value.numberToBeSquared,
+                    value.taskCreatedBlock,
+                    value.quorumNumbers,
+                    value.quorumThresholdPercentage,
+                )
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Task {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    numberToBeSquared: tuple.0,
+                    taskCreatedBlock: tuple.1,
+                    quorumNumbers: tuple.2,
+                    quorumThresholdPercentage: tuple.3,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for Task {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for Task {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.numberToBeSquared,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self.taskCreatedBlock,
+                    ),
+                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
+                        &self.quorumNumbers,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self.quorumThresholdPercentage,
+                    ),
+                )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for Task {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for Task {
+            const NAME: &'static str = "Task";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                  "Task(uint256 numberToBeSquared,uint32 taskCreatedBlock,bytes quorumNumbers,uint32 quorumThresholdPercentage)",
+              )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.numberToBeSquared,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.taskCreatedBlock,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.quorumNumbers,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.quorumThresholdPercentage,
+                      )
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for Task {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.numberToBeSquared,
+                  )
+                  + <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.taskCreatedBlock,
+                  )
+                  + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.quorumNumbers,
+                  )
+                  + <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.quorumThresholdPercentage,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Uint<
+                  256,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.numberToBeSquared,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.taskCreatedBlock,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.quorumNumbers,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.quorumThresholdPercentage,
+                  out,
+              );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    /**```solidity
+    struct TaskResponse { uint32 referenceTaskIndex; uint256 numberSquared; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone, Debug, Serialize, Deserialize)]
+    pub struct TaskResponse {
+        #[allow(missing_docs)]
+        pub referenceTaskIndex: u32,
+        #[allow(missing_docs)]
+        pub numberSquared: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Uint<32>,
+            alloy::sol_types::sol_data::Uint<256>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::primitives::aliases::U256);
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<TaskResponse> for UnderlyingRustTuple<'_> {
+            fn from(value: TaskResponse) -> Self {
+                (value.referenceTaskIndex, value.numberSquared)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponse {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    referenceTaskIndex: tuple.0,
+                    numberSquared: tuple.1,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for TaskResponse {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponse {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self.referenceTaskIndex,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.numberSquared,
+                    ),
+                )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for TaskResponse {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for TaskResponse {
+            const NAME: &'static str = "TaskResponse";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                    "TaskResponse(uint32 referenceTaskIndex,uint256 numberSquared)",
+                )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.referenceTaskIndex,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.numberSquared)
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for TaskResponse {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.referenceTaskIndex,
+                  )
+                  + <alloy::sol_types::sol_data::Uint<
+                      256,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.numberSquared,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.referenceTaskIndex,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Uint<
+                  256,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.numberSquared,
+                  out,
+              );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    /**```solidity
+    struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone, Debug)]
+    pub struct TaskResponseMetadata {
+        #[allow(missing_docs)]
+        pub taskResponsedBlock: u32,
+        #[allow(missing_docs)]
+        pub hashOfNonSigners: alloy::sol_types::private::FixedBytes<32>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Uint<32>,
+            alloy::sol_types::sol_data::FixedBytes<32>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>);
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<TaskResponseMetadata> for UnderlyingRustTuple<'_> {
+            fn from(value: TaskResponseMetadata) -> Self {
+                (value.taskResponsedBlock, value.hashOfNonSigners)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponseMetadata {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    taskResponsedBlock: tuple.0,
+                    hashOfNonSigners: tuple.1,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for TaskResponseMetadata {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponseMetadata {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.taskResponsedBlock),
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.hashOfNonSigners),
+              )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for TaskResponseMetadata {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for TaskResponseMetadata {
+            const NAME: &'static str = "TaskResponseMetadata";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                    "TaskResponseMetadata(uint32 taskResponsedBlock,bytes32 hashOfNonSigners)",
+                )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.taskResponsedBlock,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.hashOfNonSigners,
+                      )
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for TaskResponseMetadata {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.taskResponsedBlock,
+                  )
+                  + <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.hashOfNonSigners,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.taskResponsedBlock,
+                  out,
+              );
+                <alloy::sol_types::sol_data::FixedBytes<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.hashOfNonSigners,
+                  out,
+              );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    use alloy::contract as alloy_contract;
+    use serde::Deserialize;
+    use serde::Serialize;
+    /**Creates a new wrapper around an on-chain [`IIncredibleSquaringTaskManager`](self) contract instance.
+
+    See the [wrapper's documentation](`IIncredibleSquaringTaskManagerInstance`) for more details.*/
+    #[inline]
+    pub const fn new<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        address: alloy_sol_types::private::Address,
+        provider: P,
+    ) -> IIncredibleSquaringTaskManagerInstance<T, P, N> {
+        IIncredibleSquaringTaskManagerInstance::<T, P, N>::new(address, provider)
+    }
+    /**A [`IIncredibleSquaringTaskManager`](self) instance.
+
+    Contains type-safe methods for interacting with an on-chain instance of the
+    [`IIncredibleSquaringTaskManager`](self) contract located at a given `address`, using a given
+    provider `P`.
+
+    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
+    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
+    be used to deploy a new instance of the contract.
+
+    See the [module-level documentation](self) for all the available methods.*/
+    #[derive(Clone)]
+    pub struct IIncredibleSquaringTaskManagerInstance<T, P, N = alloy_contract::private::Ethereum> {
+        address: alloy_sol_types::private::Address,
+        provider: P,
+        _network_transport: ::core::marker::PhantomData<(N, T)>,
+    }
+    #[automatically_derived]
+    impl<T, P, N> ::core::fmt::Debug for IIncredibleSquaringTaskManagerInstance<T, P, N> {
+        #[inline]
+        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+            f.debug_tuple("IIncredibleSquaringTaskManagerInstance")
+                .field(&self.address)
+                .finish()
+        }
+    }
+    /// Instantiation and getters/setters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IIncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /**Creates a new wrapper around an on-chain [`IIncredibleSquaringTaskManager`](self) contract instance.
+
+        See the [wrapper's documentation](`IIncredibleSquaringTaskManagerInstance`) for more details.*/
+        #[inline]
+        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
+            Self {
+                address,
+                provider,
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+        /// Returns a reference to the address.
+        #[inline]
+        pub const fn address(&self) -> &alloy_sol_types::private::Address {
+            &self.address
+        }
+        /// Sets the address.
+        #[inline]
+        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
+            self.address = address;
+        }
+        /// Sets the address and returns `self`.
+        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
+            self.set_address(address);
+            self
+        }
+        /// Returns a reference to the provider.
+        #[inline]
+        pub const fn provider(&self) -> &P {
+            &self.provider
+        }
+    }
+    impl<T, P: ::core::clone::Clone, N> IIncredibleSquaringTaskManagerInstance<T, &P, N> {
+        /// Clones the provider and returns a new instance with the cloned provider.
+        #[inline]
+        pub fn with_cloned_provider(self) -> IIncredibleSquaringTaskManagerInstance<T, P, N> {
+            IIncredibleSquaringTaskManagerInstance {
+                address: self.address,
+                provider: ::core::clone::Clone::clone(&self.provider),
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+    }
+    /// Function calls.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IIncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /// Creates a new call builder using this contract instance's provider and address.
+        ///
+        /// Note that the call can be any function call, not just those defined in this
+        /// contract. Prefer using the other methods for building type-safe contract calls.
+        pub fn call_builder<C: alloy_sol_types::SolCall>(
+            &self,
+            call: &C,
+        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
+            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
+        }
+    }
+    /// Event filters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IIncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /// Creates a new event filter using this contract instance's provider and address.
+        ///
+        /// Note that the type can be any event, not just those defined in this contract.
+        /// Prefer using the other methods for building type-safe event filters.
+        pub fn event_filter<E: alloy_sol_types::SolEvent>(
+            &self,
+        ) -> alloy_contract::Event<T, &P, E, N> {
+            alloy_contract::Event::new_sol(&self.provider, &self.address)
+        }
+    }
+}
+///Module containing a contract's types and functions.
+/**
+
+```solidity
+library OperatorStateRetriever {
+  struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
+  struct Operator { address operator; bytes32 operatorId; uint96 stake; }
+}
+```*/
+#[allow(
+    non_camel_case_types,
+    non_snake_case,
+    clippy::pub_underscore_fields,
+    clippy::style,
+    clippy::empty_structs_with_brackets
+)]
+pub mod OperatorStateRetriever {
+    use super::*;
+    use alloy::sol_types as alloy_sol_types;
+    /**```solidity
+    struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct CheckSignaturesIndices {
+        #[allow(missing_docs)]
+        pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
+        #[allow(missing_docs)]
+        pub nonSignerStakeIndices:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            alloy::sol_types::sol_data::Array<
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+            >,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<u32>,
+            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<CheckSignaturesIndices> for UnderlyingRustTuple<'_> {
+            fn from(value: CheckSignaturesIndices) -> Self {
+                (
+                    value.nonSignerQuorumBitmapIndices,
+                    value.quorumApkIndices,
+                    value.totalStakeIndices,
+                    value.nonSignerStakeIndices,
+                )
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckSignaturesIndices {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    nonSignerQuorumBitmapIndices: tuple.0,
+                    quorumApkIndices: tuple.1,
+                    totalStakeIndices: tuple.2,
+                    nonSignerStakeIndices: tuple.3,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for CheckSignaturesIndices {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for CheckSignaturesIndices {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(
+                      &self.nonSignerQuorumBitmapIndices,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
+              )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for CheckSignaturesIndices {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for CheckSignaturesIndices {
+            const NAME: &'static str = "CheckSignaturesIndices";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                  "CheckSignaturesIndices(uint32[] nonSignerQuorumBitmapIndices,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
+              )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.nonSignerQuorumBitmapIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.quorumApkIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.totalStakeIndices,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.nonSignerStakeIndices,
+                      )
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for CheckSignaturesIndices {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.nonSignerQuorumBitmapIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.quorumApkIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Uint<32>,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.totalStakeIndices,
+                  )
+                  + <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Array<
+                          alloy::sol_types::sol_data::Uint<32>,
+                      >,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.nonSignerStakeIndices,
+                  )
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.nonSignerQuorumBitmapIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.quorumApkIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                  alloy::sol_types::sol_data::Uint<32>,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.totalStakeIndices,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
+                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                    &rust.nonSignerStakeIndices,
+                    out,
+                );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    /**```solidity
+    struct Operator { address operator; bytes32 operatorId; uint96 stake; }
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct Operator {
+        #[allow(missing_docs)]
+        pub operator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
+        #[allow(missing_docs)]
+        pub stake: alloy::sol_types::private::primitives::aliases::U96,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = (
+            alloy::sol_types::sol_data::Address,
+            alloy::sol_types::sol_data::FixedBytes<32>,
+            alloy::sol_types::sol_data::Uint<96>,
+        );
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = (
+            alloy::sol_types::private::Address,
+            alloy::sol_types::private::FixedBytes<32>,
+            alloy::sol_types::private::primitives::aliases::U96,
+        );
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<Operator> for UnderlyingRustTuple<'_> {
+            fn from(value: Operator) -> Self {
+                (value.operator, value.operatorId, value.stake)
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Operator {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {
+                    operator: tuple.0,
+                    operatorId: tuple.1,
+                    stake: tuple.2,
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolValue for Operator {
+            type SolType = Self;
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::SolTypeValue<Self> for Operator {
+            #[inline]
+            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.operator,
+                  ),
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
+                  <alloy::sol_types::sol_data::Uint<
+                      96,
+                  > as alloy_sol_types::SolType>::tokenize(&self.stake),
+              )
+            }
+            #[inline]
+            fn stv_abi_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
+            }
+            #[inline]
+            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
+                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
+            }
+            #[inline]
+            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
+                    &tuple, out,
+                )
+            }
+            #[inline]
+            fn stv_abi_packed_encoded_size(&self) -> usize {
+                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
+                    return size;
+                }
+                let tuple =
+                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
+                    &tuple,
+                )
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolType for Operator {
+            type RustType = Self;
+            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
+            const ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
+            const PACKED_ENCODED_SIZE: Option<usize> =
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
+            #[inline]
+            fn valid_token(token: &Self::Token<'_>) -> bool {
+                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
+            }
+            #[inline]
+            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
+                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
+                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolStruct for Operator {
+            const NAME: &'static str = "Operator";
+            #[inline]
+            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
+                alloy_sol_types::private::Cow::Borrowed(
+                    "Operator(address operator,bytes32 operatorId,uint96 stake)",
+                )
+            }
+            #[inline]
+            fn eip712_components(
+            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
+            {
+                alloy_sol_types::private::Vec::new()
+            }
+            #[inline]
+            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
+                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
+            }
+            #[inline]
+            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
+                [
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
+                          &self.operator,
+                      )
+                      .0,
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId)
+                      .0,
+                  <alloy::sol_types::sol_data::Uint<
+                      96,
+                  > as alloy_sol_types::SolType>::eip712_data_word(&self.stake)
+                      .0,
+              ]
+                  .concat()
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::EventTopic for Operator {
+            #[inline]
+            fn topic_preimage_length(rust: &Self::RustType) -> usize {
+                0usize
+                  + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.operator,
+                  )
+                  + <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(
+                      &rust.operatorId,
+                  )
+                  + <alloy::sol_types::sol_data::Uint<
+                      96,
+                  > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake)
+            }
+            #[inline]
+            fn encode_topic_preimage(
+                rust: &Self::RustType,
+                out: &mut alloy_sol_types::private::Vec<u8>,
+            ) {
+                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
+                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.operator,
+                  out,
+              );
+                <alloy::sol_types::sol_data::FixedBytes<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.operatorId,
+                  out,
+              );
+                <alloy::sol_types::sol_data::Uint<
+                  96,
+              > as alloy_sol_types::EventTopic>::encode_topic_preimage(
+                  &rust.stake,
+                  out,
+              );
+            }
+            #[inline]
+            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
+                let mut out = alloy_sol_types::private::Vec::new();
+                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
+                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
+            }
+        }
+    };
+    use alloy::contract as alloy_contract;
+    /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance.
+
+    See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/
+    #[inline]
+    pub const fn new<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        address: alloy_sol_types::private::Address,
+        provider: P,
+    ) -> OperatorStateRetrieverInstance<T, P, N> {
+        OperatorStateRetrieverInstance::<T, P, N>::new(address, provider)
+    }
+    /**A [`OperatorStateRetriever`](self) instance.
+
+    Contains type-safe methods for interacting with an on-chain instance of the
+    [`OperatorStateRetriever`](self) contract located at a given `address`, using a given
+    provider `P`.
+
+    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
+    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
+    be used to deploy a new instance of the contract.
+
+    See the [module-level documentation](self) for all the available methods.*/
+    #[derive(Clone)]
+    pub struct OperatorStateRetrieverInstance<T, P, N = alloy_contract::private::Ethereum> {
+        address: alloy_sol_types::private::Address,
+        provider: P,
+        _network_transport: ::core::marker::PhantomData<(N, T)>,
+    }
+    #[automatically_derived]
+    impl<T, P, N> ::core::fmt::Debug for OperatorStateRetrieverInstance<T, P, N> {
+        #[inline]
+        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+            f.debug_tuple("OperatorStateRetrieverInstance")
+                .field(&self.address)
+                .finish()
+        }
+    }
+    /// Instantiation and getters/setters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > OperatorStateRetrieverInstance<T, P, N>
+    {
+        /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance.
+
+        See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/
+        #[inline]
+        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
+            Self {
+                address,
+                provider,
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+        /// Returns a reference to the address.
+        #[inline]
+        pub const fn address(&self) -> &alloy_sol_types::private::Address {
+            &self.address
+        }
+        /// Sets the address.
+        #[inline]
+        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
+            self.address = address;
+        }
+        /// Sets the address and returns `self`.
+        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
+            self.set_address(address);
+            self
+        }
+        /// Returns a reference to the provider.
+        #[inline]
+        pub const fn provider(&self) -> &P {
+            &self.provider
+        }
+    }
+    impl<T, P: ::core::clone::Clone, N> OperatorStateRetrieverInstance<T, &P, N> {
+        /// Clones the provider and returns a new instance with the cloned provider.
+        #[inline]
+        pub fn with_cloned_provider(self) -> OperatorStateRetrieverInstance<T, P, N> {
+            OperatorStateRetrieverInstance {
+                address: self.address,
+                provider: ::core::clone::Clone::clone(&self.provider),
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+    }
+    /// Function calls.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > OperatorStateRetrieverInstance<T, P, N>
+    {
+        /// Creates a new call builder using this contract instance's provider and address.
+        ///
+        /// Note that the call can be any function call, not just those defined in this
+        /// contract. Prefer using the other methods for building type-safe contract calls.
+        pub fn call_builder<C: alloy_sol_types::SolCall>(
+            &self,
+            call: &C,
+        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
+            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
+        }
+    }
+    /// Event filters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > OperatorStateRetrieverInstance<T, P, N>
+    {
+        /// Creates a new event filter using this contract instance's provider and address.
+        ///
+        /// Note that the type can be any event, not just those defined in this contract.
+        /// Prefer using the other methods for building type-safe event filters.
+        pub fn event_filter<E: alloy_sol_types::SolEvent>(
+            &self,
+        ) -> alloy_contract::Event<T, &P, E, N> {
+            alloy_contract::Event::new_sol(&self.provider, &self.address)
+        }
+    }
+}
+/**
+
+Generated by the following Solidity interface...
+```solidity
+library BN254 {
+  struct G1Point {
+      uint256 X;
+      uint256 Y;
+  }
+  struct G2Point {
+      uint256[2] X;
+      uint256[2] Y;
+  }
+}
+
+library IBLSSignatureCheckerTypes {
+  struct NonSignerStakesAndSignature {
+      uint32[] nonSignerQuorumBitmapIndices;
+      BN254.G1Point[] nonSignerPubkeys;
+      BN254.G1Point[] quorumApks;
+      BN254.G2Point apkG2;
+      BN254.G1Point sigma;
+      uint32[] quorumApkIndices;
+      uint32[] totalStakeIndices;
+      uint32[][] nonSignerStakeIndices;
+  }
+  struct QuorumStakeTotals {
+      uint96[] signedStakeForQuorum;
+      uint96[] totalStakeForQuorum;
+  }
+}
+
+library IIncredibleSquaringTaskManager {
+  struct Task {
+      uint256 numberToBeSquared;
+      uint32 taskCreatedBlock;
+      bytes quorumNumbers;
+      uint32 quorumThresholdPercentage;
+  }
+  struct TaskResponse {
+      uint32 referenceTaskIndex;
+      uint256 numberSquared;
+  }
+  struct TaskResponseMetadata {
+      uint32 taskResponsedBlock;
+      bytes32 hashOfNonSigners;
+  }
+}
+
+library OperatorStateRetriever {
+  struct CheckSignaturesIndices {
+      uint32[] nonSignerQuorumBitmapIndices;
+      uint32[] quorumApkIndices;
+      uint32[] totalStakeIndices;
+      uint32[][] nonSignerStakeIndices;
+  }
+  struct Operator {
+      address operator;
+      bytes32 operatorId;
+      uint96 stake;
+  }
+}
+
+interface IncredibleSquaringTaskManager {
+  error BitmapValueTooLarge();
+  error BytesArrayLengthTooLong();
+  error BytesArrayNotOrdered();
+  error CurrentlyPaused();
+  error ECAddFailed();
+  error ECMulFailed();
+  error ExpModFailed();
+  error InputAddressZero();
+  error InputArrayLengthMismatch();
+  error InputEmptyQuorumNumbers();
+  error InputNonSignerLengthMismatch();
+  error InvalidBLSPairingKey();
+  error InvalidBLSSignature();
+  error InvalidNewPausedStatus();
+  error InvalidQuorumApkHash();
+  error InvalidReferenceBlocknumber();
+  error NonSignerPubkeysNotSorted();
+  error OnlyPauser();
+  error OnlyRegistryCoordinatorOwner();
+  error OnlyUnpauser();
+  error OperatorNotRegistered();
+  error ScalarTooLarge();
+  error StaleStakesForbidden();
+
+  event Initialized(uint8 version);
+  event NewTaskCreated(uint32 indexed taskIndex, IIncredibleSquaringTaskManager.Task task);
+  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+  event Paused(address indexed account, uint256 newPausedStatus);
+  event StaleStakesForbiddenUpdate(bool value);
+  event TaskChallengedSuccessfully(uint32 indexed taskIndex, address indexed challenger);
+  event TaskChallengedUnsuccessfully(uint32 indexed taskIndex, address indexed challenger);
+  event TaskCompleted(uint32 indexed taskIndex);
+  event TaskResponded(IIncredibleSquaringTaskManager.TaskResponse taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata taskResponseMetadata);
+  event Unpaused(address indexed account, uint256 newPausedStatus);
+
+  constructor(address _slashingRegistryCoordinator, address _pauserRegistry, uint32 _taskResponseWindowBlock, address _serviceManager);
+
+  function TASK_CHALLENGE_WINDOW_BLOCK() external view returns (uint32);
+  function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
+  function WADS_TO_SLASH() external view returns (uint256);
+  function aggregator() external view returns (address);
+  function allTaskHashes(uint32) external view returns (bytes32);
+  function allTaskResponses(uint32) external view returns (bytes32);
+  function allocationManager() external view returns (address);
+  function blsApkRegistry() external view returns (address);
+  function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
+  function createNewTask(uint256 numberToBeSquared, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
+  function delegation() external view returns (address);
+  function generator() external view returns (address);
+  function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators);
+  function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds);
+  function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (OperatorStateRetriever.CheckSignaturesIndices memory);
+  function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (OperatorStateRetriever.Operator[][] memory);
+  function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, OperatorStateRetriever.Operator[][] memory);
+  function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory);
+  function getTaskResponseWindowBlock() external view returns (uint32);
+  function initialize(address initialOwner, address _aggregator, address _generator, address _allocationManager, address _slasher) external;
+  function instantSlasher() external view returns (address);
+  function latestTaskNum() external view returns (uint32);
+  function owner() external view returns (address);
+  function pause(uint256 newPausedStatus) external;
+  function pauseAll() external;
+  function paused(uint8 index) external view returns (bool);
+  function paused() external view returns (uint256);
+  function pauserRegistry() external view returns (address);
+  function raiseAndResolveChallenge(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata memory taskResponseMetadata, BN254.G1Point[] memory pubkeysOfNonSigningOperators) external;
+  function registryCoordinator() external view returns (address);
+  function renounceOwnership() external;
+  function respondToTask(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
+  function serviceManager() external view returns (address);
+  function setStaleStakesForbidden(bool value) external;
+  function stakeRegistry() external view returns (address);
+  function staleStakesForbidden() external view returns (bool);
+  function taskNumber() external view returns (uint32);
+  function taskSuccesfullyChallenged(uint32) external view returns (bool);
+  function transferOwnership(address newOwner) external;
+  function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
+  function unpause(uint256 newPausedStatus) external;
+}
+```
+
+...which was generated by the following JSON ABI:
+```json
+[
+{
+  "type": "constructor",
+  "inputs": [
+    {
+      "name": "_slashingRegistryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "_pauserRegistry",
+      "type": "address",
+      "internalType": "contract IPauserRegistry"
+    },
+    {
+      "name": "_taskResponseWindowBlock",
+      "type": "uint32",
+      "internalType": "uint32"
+    },
+    {
+      "name": "_serviceManager",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "TASK_CHALLENGE_WINDOW_BLOCK",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "TASK_RESPONSE_WINDOW_BLOCK",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "WADS_TO_SLASH",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint256",
+      "internalType": "uint256"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "aggregator",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "allTaskHashes",
+  "inputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "allTaskResponses",
+  "inputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "allocationManager",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "blsApkRegistry",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "contract IBLSApkRegistry"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "checkSignatures",
+  "inputs": [
+    {
+      "name": "msgHash",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    },
+    {
+      "name": "quorumNumbers",
+      "type": "bytes",
+      "internalType": "bytes"
+    },
+    {
+      "name": "referenceBlockNumber",
+      "type": "uint32",
+      "internalType": "uint32"
+    },
+    {
+      "name": "params",
+      "type": "tuple",
+      "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
+      "components": [
+        {
+          "name": "nonSignerQuorumBitmapIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "nonSignerPubkeys",
+          "type": "tuple[]",
+          "internalType": "struct BN254.G1Point[]",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "quorumApks",
+          "type": "tuple[]",
+          "internalType": "struct BN254.G1Point[]",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "apkG2",
+          "type": "tuple",
+          "internalType": "struct BN254.G2Point",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256[2]",
+              "internalType": "uint256[2]"
+            },
+            {
+              "name": "Y",
+              "type": "uint256[2]",
+              "internalType": "uint256[2]"
+            }
+          ]
+        },
+        {
+          "name": "sigma",
+          "type": "tuple",
+          "internalType": "struct BN254.G1Point",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "quorumApkIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "totalStakeIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "nonSignerStakeIndices",
+          "type": "uint32[][]",
+          "internalType": "uint32[][]"
+        }
+      ]
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "tuple",
+      "internalType": "struct IBLSSignatureCheckerTypes.QuorumStakeTotals",
+      "components": [
+        {
+          "name": "signedStakeForQuorum",
+          "type": "uint96[]",
+          "internalType": "uint96[]"
+        },
+        {
+          "name": "totalStakeForQuorum",
+          "type": "uint96[]",
+          "internalType": "uint96[]"
+        }
+      ]
+    },
+    {
+      "name": "",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "createNewTask",
+  "inputs": [
+    {
+      "name": "numberToBeSquared",
+      "type": "uint256",
+      "internalType": "uint256"
+    },
+    {
+      "name": "quorumThresholdPercentage",
+      "type": "uint32",
+      "internalType": "uint32"
+    },
+    {
+      "name": "quorumNumbers",
+      "type": "bytes",
+      "internalType": "bytes"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "delegation",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "contract IDelegationManager"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "generator",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getBatchOperatorFromId",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "operatorIds",
+      "type": "bytes32[]",
+      "internalType": "bytes32[]"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "operators",
+      "type": "address[]",
+      "internalType": "address[]"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getBatchOperatorId",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "operators",
+      "type": "address[]",
+      "internalType": "address[]"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "operatorIds",
+      "type": "bytes32[]",
+      "internalType": "bytes32[]"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getCheckSignaturesIndices",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "referenceBlockNumber",
+      "type": "uint32",
+      "internalType": "uint32"
+    },
+    {
+      "name": "quorumNumbers",
+      "type": "bytes",
+      "internalType": "bytes"
+    },
+    {
+      "name": "nonSignerOperatorIds",
+      "type": "bytes32[]",
+      "internalType": "bytes32[]"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "tuple",
+      "internalType": "struct OperatorStateRetriever.CheckSignaturesIndices",
+      "components": [
+        {
+          "name": "nonSignerQuorumBitmapIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "quorumApkIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "totalStakeIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "nonSignerStakeIndices",
+          "type": "uint32[][]",
+          "internalType": "uint32[][]"
+        }
+      ]
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getOperatorState",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "quorumNumbers",
+      "type": "bytes",
+      "internalType": "bytes"
+    },
+    {
+      "name": "blockNumber",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "tuple[][]",
+      "internalType": "struct OperatorStateRetriever.Operator[][]",
+      "components": [
+        {
+          "name": "operator",
+          "type": "address",
+          "internalType": "address"
+        },
+        {
+          "name": "operatorId",
+          "type": "bytes32",
+          "internalType": "bytes32"
+        },
+        {
+          "name": "stake",
+          "type": "uint96",
+          "internalType": "uint96"
+        }
+      ]
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getOperatorState",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "operatorId",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    },
+    {
+      "name": "blockNumber",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint256",
+      "internalType": "uint256"
+    },
+    {
+      "name": "",
+      "type": "tuple[][]",
+      "internalType": "struct OperatorStateRetriever.Operator[][]",
+      "components": [
+        {
+          "name": "operator",
+          "type": "address",
+          "internalType": "address"
+        },
+        {
+          "name": "operatorId",
+          "type": "bytes32",
+          "internalType": "bytes32"
+        },
+        {
+          "name": "stake",
+          "type": "uint96",
+          "internalType": "uint96"
+        }
+      ]
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getQuorumBitmapsAtBlockNumber",
+  "inputs": [
+    {
+      "name": "registryCoordinator",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    },
+    {
+      "name": "operatorIds",
+      "type": "bytes32[]",
+      "internalType": "bytes32[]"
+    },
+    {
+      "name": "blockNumber",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint256[]",
+      "internalType": "uint256[]"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "getTaskResponseWindowBlock",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "initialize",
+  "inputs": [
+    {
+      "name": "initialOwner",
+      "type": "address",
+      "internalType": "address"
+    },
+    {
+      "name": "_aggregator",
+      "type": "address",
+      "internalType": "address"
+    },
+    {
+      "name": "_generator",
+      "type": "address",
+      "internalType": "address"
+    },
+    {
+      "name": "_allocationManager",
+      "type": "address",
+      "internalType": "address"
+    },
+    {
+      "name": "_slasher",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "instantSlasher",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "latestTaskNum",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "owner",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "pause",
+  "inputs": [
+    {
+      "name": "newPausedStatus",
+      "type": "uint256",
+      "internalType": "uint256"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "pauseAll",
+  "inputs": [],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "paused",
+  "inputs": [
+    {
+      "name": "index",
+      "type": "uint8",
+      "internalType": "uint8"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "bool",
+      "internalType": "bool"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "paused",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint256",
+      "internalType": "uint256"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "pauserRegistry",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "contract IPauserRegistry"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "raiseAndResolveChallenge",
+  "inputs": [
+    {
+      "name": "task",
+      "type": "tuple",
+      "internalType": "struct IIncredibleSquaringTaskManager.Task",
+      "components": [
+        {
+          "name": "numberToBeSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "taskCreatedBlock",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "quorumNumbers",
+          "type": "bytes",
+          "internalType": "bytes"
+        },
+        {
+          "name": "quorumThresholdPercentage",
+          "type": "uint32",
+          "internalType": "uint32"
+        }
+      ]
+    },
+    {
+      "name": "taskResponse",
+      "type": "tuple",
+      "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse",
+      "components": [
+        {
+          "name": "referenceTaskIndex",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "numberSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    },
+    {
+      "name": "taskResponseMetadata",
+      "type": "tuple",
+      "internalType": "struct IIncredibleSquaringTaskManager.TaskResponseMetadata",
+      "components": [
+        {
+          "name": "taskResponsedBlock",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "hashOfNonSigners",
+          "type": "bytes32",
+          "internalType": "bytes32"
+        }
+      ]
+    },
+    {
+      "name": "pubkeysOfNonSigningOperators",
+      "type": "tuple[]",
+      "internalType": "struct BN254.G1Point[]",
+      "components": [
+        {
+          "name": "X",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "Y",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "registryCoordinator",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "contract ISlashingRegistryCoordinator"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "renounceOwnership",
+  "inputs": [],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "respondToTask",
+  "inputs": [
+    {
+      "name": "task",
+      "type": "tuple",
+      "internalType": "struct IIncredibleSquaringTaskManager.Task",
+      "components": [
+        {
+          "name": "numberToBeSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "taskCreatedBlock",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "quorumNumbers",
+          "type": "bytes",
+          "internalType": "bytes"
+        },
+        {
+          "name": "quorumThresholdPercentage",
+          "type": "uint32",
+          "internalType": "uint32"
+        }
+      ]
+    },
+    {
+      "name": "taskResponse",
+      "type": "tuple",
+      "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse",
+      "components": [
+        {
+          "name": "referenceTaskIndex",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "numberSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    },
+    {
+      "name": "nonSignerStakesAndSignature",
+      "type": "tuple",
+      "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
+      "components": [
+        {
+          "name": "nonSignerQuorumBitmapIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "nonSignerPubkeys",
+          "type": "tuple[]",
+          "internalType": "struct BN254.G1Point[]",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "quorumApks",
+          "type": "tuple[]",
+          "internalType": "struct BN254.G1Point[]",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "apkG2",
+          "type": "tuple",
+          "internalType": "struct BN254.G2Point",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256[2]",
+              "internalType": "uint256[2]"
+            },
+            {
+              "name": "Y",
+              "type": "uint256[2]",
+              "internalType": "uint256[2]"
+            }
+          ]
+        },
+        {
+          "name": "sigma",
+          "type": "tuple",
+          "internalType": "struct BN254.G1Point",
+          "components": [
+            {
+              "name": "X",
+              "type": "uint256",
+              "internalType": "uint256"
+            },
+            {
+              "name": "Y",
+              "type": "uint256",
+              "internalType": "uint256"
+            }
+          ]
+        },
+        {
+          "name": "quorumApkIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "totalStakeIndices",
+          "type": "uint32[]",
+          "internalType": "uint32[]"
+        },
+        {
+          "name": "nonSignerStakeIndices",
+          "type": "uint32[][]",
+          "internalType": "uint32[][]"
+        }
+      ]
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "serviceManager",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "setStaleStakesForbidden",
+  "inputs": [
+    {
+      "name": "value",
+      "type": "bool",
+      "internalType": "bool"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "stakeRegistry",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "address",
+      "internalType": "contract IStakeRegistry"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "staleStakesForbidden",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "bool",
+      "internalType": "bool"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "taskNumber",
+  "inputs": [],
+  "outputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "taskSuccesfullyChallenged",
+  "inputs": [
+    {
+      "name": "",
+      "type": "uint32",
+      "internalType": "uint32"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "",
+      "type": "bool",
+      "internalType": "bool"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "transferOwnership",
+  "inputs": [
+    {
+      "name": "newOwner",
+      "type": "address",
+      "internalType": "address"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "function",
+  "name": "trySignatureAndApkVerification",
+  "inputs": [
+    {
+      "name": "msgHash",
+      "type": "bytes32",
+      "internalType": "bytes32"
+    },
+    {
+      "name": "apk",
+      "type": "tuple",
+      "internalType": "struct BN254.G1Point",
+      "components": [
+        {
+          "name": "X",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "Y",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    },
+    {
+      "name": "apkG2",
+      "type": "tuple",
+      "internalType": "struct BN254.G2Point",
+      "components": [
+        {
+          "name": "X",
+          "type": "uint256[2]",
+          "internalType": "uint256[2]"
+        },
+        {
+          "name": "Y",
+          "type": "uint256[2]",
+          "internalType": "uint256[2]"
+        }
+      ]
+    },
+    {
+      "name": "sigma",
+      "type": "tuple",
+      "internalType": "struct BN254.G1Point",
+      "components": [
+        {
+          "name": "X",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "Y",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    }
+  ],
+  "outputs": [
+    {
+      "name": "pairingSuccessful",
+      "type": "bool",
+      "internalType": "bool"
+    },
+    {
+      "name": "siganatureIsValid",
+      "type": "bool",
+      "internalType": "bool"
+    }
+  ],
+  "stateMutability": "view"
+},
+{
+  "type": "function",
+  "name": "unpause",
+  "inputs": [
+    {
+      "name": "newPausedStatus",
+      "type": "uint256",
+      "internalType": "uint256"
+    }
+  ],
+  "outputs": [],
+  "stateMutability": "nonpayable"
+},
+{
+  "type": "event",
+  "name": "Initialized",
+  "inputs": [
+    {
+      "name": "version",
+      "type": "uint8",
+      "indexed": false,
+      "internalType": "uint8"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "NewTaskCreated",
+  "inputs": [
+    {
+      "name": "taskIndex",
+      "type": "uint32",
+      "indexed": true,
+      "internalType": "uint32"
+    },
+    {
+      "name": "task",
+      "type": "tuple",
+      "indexed": false,
+      "internalType": "struct IIncredibleSquaringTaskManager.Task",
+      "components": [
+        {
+          "name": "numberToBeSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        },
+        {
+          "name": "taskCreatedBlock",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "quorumNumbers",
+          "type": "bytes",
+          "internalType": "bytes"
+        },
+        {
+          "name": "quorumThresholdPercentage",
+          "type": "uint32",
+          "internalType": "uint32"
+        }
+      ]
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "OwnershipTransferred",
+  "inputs": [
+    {
+      "name": "previousOwner",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    },
+    {
+      "name": "newOwner",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "Paused",
+  "inputs": [
+    {
+      "name": "account",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    },
+    {
+      "name": "newPausedStatus",
+      "type": "uint256",
+      "indexed": false,
+      "internalType": "uint256"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "StaleStakesForbiddenUpdate",
+  "inputs": [
+    {
+      "name": "value",
+      "type": "bool",
+      "indexed": false,
+      "internalType": "bool"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "TaskChallengedSuccessfully",
+  "inputs": [
+    {
+      "name": "taskIndex",
+      "type": "uint32",
+      "indexed": true,
+      "internalType": "uint32"
+    },
+    {
+      "name": "challenger",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "TaskChallengedUnsuccessfully",
+  "inputs": [
+    {
+      "name": "taskIndex",
+      "type": "uint32",
+      "indexed": true,
+      "internalType": "uint32"
+    },
+    {
+      "name": "challenger",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "TaskCompleted",
+  "inputs": [
+    {
+      "name": "taskIndex",
+      "type": "uint32",
+      "indexed": true,
+      "internalType": "uint32"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "TaskResponded",
+  "inputs": [
+    {
+      "name": "taskResponse",
+      "type": "tuple",
+      "indexed": false,
+      "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse",
+      "components": [
+        {
+          "name": "referenceTaskIndex",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "numberSquared",
+          "type": "uint256",
+          "internalType": "uint256"
+        }
+      ]
+    },
+    {
+      "name": "taskResponseMetadata",
+      "type": "tuple",
+      "indexed": false,
+      "internalType": "struct IIncredibleSquaringTaskManager.TaskResponseMetadata",
+      "components": [
+        {
+          "name": "taskResponsedBlock",
+          "type": "uint32",
+          "internalType": "uint32"
+        },
+        {
+          "name": "hashOfNonSigners",
+          "type": "bytes32",
+          "internalType": "bytes32"
+        }
+      ]
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "event",
+  "name": "Unpaused",
+  "inputs": [
+    {
+      "name": "account",
+      "type": "address",
+      "indexed": true,
+      "internalType": "address"
+    },
+    {
+      "name": "newPausedStatus",
+      "type": "uint256",
+      "indexed": false,
+      "internalType": "uint256"
+    }
+  ],
+  "anonymous": false
+},
+{
+  "type": "error",
+  "name": "BitmapValueTooLarge",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "BytesArrayLengthTooLong",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "BytesArrayNotOrdered",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "CurrentlyPaused",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "ECAddFailed",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "ECMulFailed",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "ExpModFailed",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InputAddressZero",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InputArrayLengthMismatch",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InputEmptyQuorumNumbers",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InputNonSignerLengthMismatch",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InvalidBLSPairingKey",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InvalidBLSSignature",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InvalidNewPausedStatus",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InvalidQuorumApkHash",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "InvalidReferenceBlocknumber",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "NonSignerPubkeysNotSorted",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "OnlyPauser",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "OnlyRegistryCoordinatorOwner",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "OnlyUnpauser",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "OperatorNotRegistered",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "ScalarTooLarge",
+  "inputs": []
+},
+{
+  "type": "error",
+  "name": "StaleStakesForbidden",
+  "inputs": []
+}
+]
+```*/
+#[allow(
+    non_camel_case_types,
+    non_snake_case,
+    clippy::pub_underscore_fields,
+    clippy::style,
+    clippy::empty_structs_with_brackets
+)]
+pub mod IncredibleSquaringTaskManager {
+    use super::*;
+    use alloy::sol_types as alloy_sol_types;
+    /// The creation / init bytecode of the contract.
+  ///
+  /// ```text
+  ///0x610140806040523461021357608081615142803803809161002082856102be565b833981010312610213578051906001600160a01b0382168083036102135760208201516001600160a01b03811693908481036102135760408401519363ffffffff8516850361021357606001516001600160a01b038116959086900361021357156102af5760805260a052604051636830483560e01b8152602081600481855afa90811561021f575f9161026c575b5060c052604051632efa2ca360e11b815290602090829060049082905afa90811561021f575f9161022a575b5060e05260c05160405163df5cf72360e01b815290602090829060049082906001600160a01b03165afa90811561021f575f916101d9575b50610100526101205260d180546001600160a01b031916919091179055604051614e4c90816102f682396080518181816102ca01528181610ea501528181611ad10152611e0e015260a051818181610a9a015281816118fe0152818161374f01528181613dc401528181613e9a015261442c015260c0518181816116db0152818161419c01526142e7015260e0518181816116970152818161367001526140d8015261010051818181611d0a0152613fad0152610120518181816106dd01526112f40152f35b90506020813d602011610217575b816101f4602093836102be565b8101031261021357516001600160a01b0381168103610213575f610113565b5f80fd5b3d91506101e7565b6040513d5f823e3d90fd5b90506020813d602011610264575b81610245602093836102be565b8101031261021357516001600160a01b0381168103610213575f6100db565b3d9150610238565b90506020813d6020116102a7575b81610287602093836102be565b8101031261021357516001600160a01b03811681036102135760046100af565b3d915061027a565b6339b190bb60e11b5f5260045ffd5b601f909101601f19168101906001600160401b038211908210176102e157604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063136439dd1461029a5780631459457a14610295578063171f1d5b146102905780631ad43189146101e6578063245a7bfc1461028b5780632cb223d5146102865780632d89f6fc1461028157806331b36bd91461027c5780633563b0d1146102775780633998fdd314610272578063416c7e5e1461026d5780634d2b57fe146102685780634f739f7414610263578063595c6a671461025e5780635a2d7f02146102595780635ac86ab7146102545780635baec9a01461024f5780635c1556621461024a5780635c975abb146102455780635decc3f5146102405780635df459461461023b57806368304835146102365780636b532e9e146102315780636b92787e1461022c5780636d14a987146102275780636efb463614610222578063715018a61461021d57806372d18e8d1461020e5780637afa1eed14610218578063886f1195146102135780638b00ce7c1461020e5780638da5cb5b146102095780639b290e9814610204578063b98d0908146101ff578063ca8aa7c7146101fa578063cefdc1d4146101f5578063df5cf723146101f0578063f2fde38b146101eb578063f5c9899d146101e6578063f63c5bab146101e15763fabc1cbc146101dc575f80fd5b611de5565b611dca565b6106c1565b611d39565b611cf5565b611bb1565b611b72565b611b50565b611b28565b611b00565b611a71565b611abc565b611a94565b611a16565b611969565b6118e9565b61177b565b61170a565b6116c6565b611682565b611644565b611627565b6114ae565b6111c9565b610f1a565b610eed565b610e7a565b610dd3565b610bc8565b610a68565b610a36565b6109bc565b610812565b61077b565b610742565b610701565b61064f565b61036f565b3461035a57602036600319011261035a5760043560405163237dfb4760e11b8152336004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103555761032492610310915f91610326575b50611ee7565b61031f60665482811614611efd565b6145a5565b005b610348915060203d60201161034e575b61034081836104dc565b810190611ec7565b5f61030a565b503d610336565b611edc565b5f80fd5b6001600160a01b0381160361035a57565b3461035a5760a036600319011261035a5760043561038c8161035e565b61040060243561039b8161035e565b6044356103a78161035e565b606435906103b48261035e565b608435926103c18461035e565b5f54956103e660ff600889901c16158098819961047f575b811561045f575b50611f13565b866103f7600160ff195f5416175f55565b61044857611f76565b61040657005b61041461ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b61045a61010061ff00195f5416175f55565b611f76565b303b15915081610471575b505f6103e0565b60ff1660011490505f61046a565b600160ff82161091506103d9565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176104bc57604052565b61048d565b608081019081106001600160401b038211176104bc57604052565b90601f801991011681019081106001600160401b038211176104bc57604052565b6040519061050d610100836104dc565b565b6040519061050d6040836104dc565b6040519061050d6060836104dc565b6040519061050d60a0836104dc565b9061050d60405192836104dc565b60409060e319011261035a5760405190610563826104a1565b60e4358252610104356020830152565b919082604091031261035a5760405161058b816104a1565b6020808294803584520135910152565b9080601f8301121561035a57604051916105b66040846104dc565b82906040810192831161035a57905b8282106105d25750505090565b81358152602091820191016105c5565b90608060631983011261035a576040516105fb816104a1565b6020610616829461060d81606461059b565b845260a461059b565b910152565b919060808382031261035a57602061061660405192610639846104a1565b60408496610647838261059b565b86520161059b565b3461035a5761012036600319011261035a57600435604036602319011261035a576106a76040918251610681816104a1565b60243581526044356020820152610697366105e2565b906106a13661054a565b9261202b565b8251911515825215156020820152f35b5f91031261035a57565b3461035a575f36600319011261035a57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a5760cd546040516001600160a01b039091168152602090f35b63ffffffff81160361035a57565b359061050d82610729565b3461035a57602036600319011261035a5763ffffffff60043561076481610729565b165f5260cb602052602060405f2054604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561079d81610729565b165f5260ca602052602060405f2054604051908152f35b6001600160401b0381116104bc5760051b60200190565b90602080835192838152019201905f5b8181106107e85750505090565b82518452602093840193909201916001016107db565b90602061080f9281815201906107cb565b90565b3461035a57604036600319011261035a5760043561082f8161035e565b602435906001600160401b03821161035a573660238301121561035a5781600401359161085b836107b4565b9261086960405194856104dc565b8084526024602085019160051b8301019136831161035a57602401905b8282106108aa576108a661089a8686612195565b604051918291826107fe565b0390f35b6020809183356108b98161035e565b815201910190610886565b6001600160401b0381116104bc57601f01601f191660200190565b9291926108eb826108c4565b916108f960405193846104dc565b82948184528183011161035a578281602093845f960137010152565b9080602083519182815201916020808360051b8301019401925f915b83831061094057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b8082106109805750505060208060019297019301930191939290610931565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610961565b3461035a57606036600319011261035a576004356109d98161035e565b6024356001600160401b03811161035a573660238201121561035a576108a691610a10610a229236906024816004013591016108df565b60443591610a1d83610729565b6123d3565b604051918291602083526020830190610915565b3461035a575f36600319011261035a5760d1546040516001600160a01b039091168152602090f35b8015150361035a57565b3461035a57602036600319011261035a57600435610a8581610a5e565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91610afa575b506001600160a01b03163303610aeb5761032490614a80565b637070f3b160e11b5f5260045ffd5b610b1c915060203d602011610b22575b610b1481836104dc565b81019061225a565b5f610ad2565b503d610b0a565b9080601f8301121561035a578135610b40816107b4565b92610b4e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610b765750505090565b8135815260209182019101610b69565b60206040818301928281528451809452019201905f5b818110610ba95750505090565b82516001600160a01b0316845260209384019390920191600101610b9c565b3461035a57604036600319011261035a57600435610be58161035e565b6024356001600160401b03811161035a57610c04903690600401610b29565b610c0e8151612133565b916001600160a01b03165f5b8251811015610cab57806020610c33610c539386612172565b5160405180948192630a5aec1960e21b8352600483019190602083019252565b0381865afa91821561035557600192610c87915f91610c8d575b50610c788388612172565b6001600160a01b039091169052565b01610c1a565b610ca5915060203d8111610b2257610b1481836104dc565b5f610c6d565b604051806108a68682610b86565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b90602080835192838152019201905f5b818110610d035750505090565b825163ffffffff16845260209384019390920191600101610cf6565b90602082526060610d6d610d58610d4284516080602088015260a0870190610ce6565b6020850151868203601f19016040880152610ce6565b6040840151858203601f190184870152610ce6565b910151916080601f1982840301910152815180825260208201916020808360051b8301019401925f915b838310610da657505050505090565b9091929394602080610dc4600193601f198682030187528951610ce6565b97019301930191939290610d97565b3461035a57608036600319011261035a57600435610df08161035e565b60243590610dfd82610729565b6044356001600160401b03811161035a57610e1c903690600401610cb9565b91606435926001600160401b03841161035a573660238501121561035a578360040135926001600160401b03841161035a573660248560051b8701011161035a576108a6956024610e6e9601936128e7565b60405191829182610d1f565b3461035a575f36600319011261035a5760405163237dfb4760e11b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557610ee5915f916103265750611ee7565b610324614571565b3461035a575f36600319011261035a57602060405167016345785d8a00008152f35b60ff81160361035a57565b3461035a57602036600319011261035a576020600160ff600435610f3d81610f0f565b161b806066541614604051908152f35b9081608091031261035a5790565b604090602319011261035a57602490565b9080601f8301121561035a578135610f83816107b4565b92610f9160405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610fb95750505090565b602080918335610fc881610729565b815201910190610fac565b81601f8201121561035a578035610fe9816107b4565b92610ff760405194856104dc565b81845260208085019260061b8401019281841161035a57602001915b838310611021575050505090565b60206040916110308486610573565b815201920191611013565b9080601f8301121561035a578135611052816107b4565b9261106060405194856104dc565b81845260208085019260051b8201019183831161035a5760208201905b83821061108c57505050505090565b81356001600160401b03811161035a576020916110ae87848094880101610f6c565b81520191019061107d565b9190916101808184031261035a576110cf6104fd565b9281356001600160401b03811161035a57816110ec918401610f6c565b845260208201356001600160401b03811161035a578161110d918401610fd3565b602085015260408201356001600160401b03811161035a5781611131918401610fd3565b6040850152611143816060840161061b565b60608501526111558160e08401610573565b60808501526101208201356001600160401b03811161035a578161117a918401610f6c565b60a08501526101408201356001600160401b03811161035a578161119f918401610f6c565b60c08501526101608201356001600160401b03811161035a576111c2920161103b565b60e0830152565b3461035a57608036600319011261035a576004356001600160401b03811161035a576111f9903690600401610f4d565b61120236610f5b565b906064356001600160401b03811161035a576112229036906004016110b9565b60cd549092906001600160a01b0316330361143057611245602083949301612d4f565b916113486112566040860186612d59565b9290946112b661126860608901612d4f565b9760405161128c8161127e602082019485612d8b565b03601f1981018352826104dc565b5190206112af61129b88612d4f565b63ffffffff165f5260ca60205260405f2090565b5414612e12565b6112e06112d96112c587612d4f565b63ffffffff165f5260cb60205260405f2090565b5415612e84565b8363ffffffff43169661132a6113226113197f000000000000000000000000000000000000000000000000000000000000000086612f15565b63ffffffff1690565b891115612f2f565b60405160208101906113408161127e8b85612faf565b519020613ce7565b919060ff5f9616955b8281106113ce577f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a86868661139361138761050f565b63ffffffff9094168452565b602083015260405160208101906113af8161127e868686613092565b5190206113be6112c583612d4f565b5561044360405192839283613092565b8061142a6114066114016113f56113e86001968851612172565b516001600160601b031690565b6001600160601b031690565b612fbf565b6114236113f58b61141e6113e88760208b0151612172565b612ffe565b1115613021565b01611351565b60405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606490fd5b60206040818301928281528451809452019201905f5b8181106114985750505090565b825184526020938401939092019160010161148b565b3461035a57606036600319011261035a576004356114cb8161035e565b6024356001600160401b03811161035a576114ea903690600401610b29565b604435916114f783610729565b6040516361c8a12f60e11b8152906001600160a01b03165f828061151f8688600484016130bc565b0381845afa918215610355575f92611603575b5061153d8351612133565b935f5b84518110156115f5576115538186612172565b519060208361156f6115658489612172565b5163ffffffff1690565b6040516304ec635160e01b8152600481019590955263ffffffff918216602486015216604484015282606481875afa8015610355576001925f916115c7575b50828060c01b03166115c08289612172565b5201611540565b6115e8915060203d81116115ee575b6115e081836104dc565b81019061285e565b5f6115ae565b503d6115d6565b604051806108a68882611475565b6116209192503d805f833e61161881836104dc565b81019061272d565b905f611532565b3461035a575f36600319011261035a576020606654604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561166681610729565b165f5260cc602052602060ff60405f2054166040519015158152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a5760c036600319011261035a576004356001600160401b03811161035a5761173a903690600401610f4d565b61174336610f5b565b90604036606319011261035a5760a4356001600160401b03811161035a57610324926117756064923690600401610fd3565b9261350a565b3461035a57606036600319011261035a5760243560043561179b82610729565b6044356001600160401b03811161035a576117ba903690600401610cb9565b60ce5491939092916001600160a01b0316330361189a57610324936118849361180461180b936117e8613ae9565b9586524363ffffffff16602087015263ffffffff166060860152565b36916108df565b604082015260405160208101906118268161127e8585613b0d565b51902061183b61129b60c95463ffffffff1690565b5560c95463ffffffff16907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c486040518061187c63ffffffff86169482613b0d565b0390a2612ee5565b63ffffffff1663ffffffff1960c954161760c955565b60405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608490fd5b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b81811061194a5750505090565b82516001600160601b031684526020938401939092019160010161193d565b3461035a57608036600319011261035a576004356024356001600160401b03811161035a5761199c903690600401610cb9565b90916044356119aa81610729565b606435926001600160401b03841161035a57611a0c946119d16119d79536906004016110b9565b93613ce7565b6040519283926040845260206119f88251604080880152608087019061192d565b910151848203603f1901606086015261192d565b9060208301520390f35b3461035a575f36600319011261035a57611a2e614c5c565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461035a575f36600319011261035a57602063ffffffff60c95416604051908152f35b3461035a575f36600319011261035a5760ce546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576033546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a5760cf546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a57602060ff609754166040519015158152f35b3461035a575f36600319011261035a5760d0546040516001600160a01b039091168152602090f35b60409061080f939281528160208201520190610915565b3461035a57606036600319011261035a57600435611bce8161035e565b602435604435611bdd81610729565b611c1e611be8612111565b9280611bf385612165565b526040516361c8a12f60e11b81526001600160a01b0386169490925f918491829187600484016130bc565b0381875afa9384156103555783611c48611319611565611c7d986020975f91611cdb575b50612165565b92604051968794859384936304ec635160e01b85526004850163ffffffff604092959493606083019683521660208201520152565b03915afa801561035557611cac925f91611cbc575b506001600160c01b031692611ca684614cb4565b906123d3565b906108a660405192839283611b9a565b611cd5915060203d6020116115ee576115e081836104dc565b5f611c92565b611cef91503d805f833e61161881836104dc565b5f611c42565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a57600435611d568161035e565b611d5e614c5c565b6001600160a01b03811615611d7657610324906145d7565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461035a575f36600319011261035a57602060405160648152f35b3461035a57602036600319011261035a5760043560405163755b36bd60e11b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91611ea8575b506001600160a01b03163303611e9957611e67606654198219811614611efd565b806066556040519081527f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c60203392a2005b63794821ff60e01b5f5260045ffd5b611ec1915060203d602011610b2257610b1481836104dc565b5f611e46565b9081602091031261035a575161080f81610a5e565b6040513d5f823e3d90fd5b15611eee57565b631d77d47760e21b5f5260045ffd5b15611f0457565b63c61dca5d60e01b5f5260045ffd5b15611f1a57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b611f7f906145d7565b60018060a01b03166001600160601b0360a01b60cd54161760cd5560018060a01b03166001600160601b0360a01b60ce54161760ce5560018060a01b03166001600160601b0360a01b60d054161760d05560018060a01b03166001600160601b0360a01b60cf54161760cf55565b634e487b7160e01b5f52603260045260245ffd5b9060028110156120125760051b0190565b611fed565b634e487b7160e01b5f52601260045260245ffd5b6121076120e461210d956120de6120d785875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e08401526101008301526120ae81610120840103601f1981018352826104dc565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614663565b906146a9565b926120de6120f96120f361470b565b94614802565b9161210261491e565b614663565b91614952565b9091565b6040805190919061212283826104dc565b6001815291601f1901366020840137565b9061213d826107b4565b61214a60405191826104dc565b828152809261215b601f19916107b4565b0190602036910137565b8051156120125760200190565b80518210156120125760209160051b010190565b9081602091031261035a575190565b9190916121a28351612133565b925f5b8151811015612255578060206121ce6121c16121f79486612172565b516001600160a01b031690565b6040516309aa152760e11b81526001600160a01b03909116600482015292839081906024820190565b03816001600160a01b0388165afa8015610355576001925f91612227575b506122208288612172565b52016121a5565b612248915060203d811161224e575b61224081836104dc565b810190612186565b5f612215565b503d612236565b505050565b9081602091031261035a575161080f8161035e565b90612279826107b4565b61228660405191826104dc565b82815260208193612299601f19916107b4565b0191015f5b8281106122aa57505050565b60608282015260200161229e565b908151811015612012570160200190565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516122fc816107b4565b9261230a60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106123325750505090565b8151815260209182019101612325565b9061234c826107b4565b61235960405191826104dc565b828152809261236a601f19916107b4565b015f5b81811061237957505050565b6040519060608201918083106001600160401b038411176104bc576020926040525f81525f838201525f60408201528282860101520161236d565b9081602091031261035a57516001600160601b038116810361035a5790565b604051636830483560e01b815293919291906001600160a01b0316602085600481845afa948515610355575f956126e8575b50604051634f4c91e160e11b815294602086600481855afa918215610355576004965f936126c6575b5060209060405197888092632efa2ca360e11b82525afa958615610355575f966126a5575b50612461859392955161226f565b945f935b805185101561269b5761249261248c61247e87846122b8565b516001600160f81b03191690565b60f81c90565b604051638902624560e01b815260ff8216600482015263ffffffff88166024820152909490925f846044816001600160a01b0385165afa938415610355575f94612677575b506124e28451612342565b6124ec888b612172565b526124f7878a612172565b505f5b8451811015612666578060206125136125359388612172565b518d60405180809681946308f6629d60e31b8352600483019190602083019252565b03916001600160a01b03165afa918215610355575f92612646575b5061255b8187612172565b518a60208a61256a858b612172565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff929092166044830152816064816001600160a01b038d165afa938415610355576125fd8c8f6125f860019861260f9789975f92612616575b506125e36125d461051e565b6001600160a01b039098168852565b60208701526001600160601b03166040860152565b612172565b51906126098383612172565b52612172565b50016124fa565b61263891925060203d811161263f575b61263081836104dc565b8101906123b4565b905f6125c8565b503d612626565b61265f91925060203d8111610b2257610b1481836104dc565b905f612550565b506001909601959094509150612465565b6126949194503d805f833e61268c81836104dc565b8101906122c9565b925f6124d7565b5050509350505090565b6126bf91965060203d602011610b2257610b1481836104dc565b945f612453565b60209193506126e190823d8411610b2257610b1481836104dc565b929061242e565b61270291955060203d602011610b2257610b1481836104dc565b935f612405565b60405190612716826104c1565b606080838181528160208201528160408201520152565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a578151612760816107b4565b9261276e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106127965750505090565b6020809183516127a581610729565b815201910190612789565b63ffffffff909116815260406020820181905281018390526001600160fb1b03831161035a5760609260051b809284830137010190565b908060209392818452848401375f828201840152601f01601f1916010190565b60409063ffffffff61080f959316815281602082015201916127e7565b634e487b7160e01b5f52601160045260245ffd5b60ff1660ff81146128495760010190565b612824565b91908110156120125760051b0190565b9081602091031261035a57516001600160c01b038116810361035a5790565b1561288457565b6325ec6c1f60e01b5f5260045ffd5b90821015612012570190565b9081602091031261035a575161080f81610729565b5f1981146128495760010190565b916128e060209263ffffffff929695966040865260408601916127e7565b9416910152565b95939495929091926128f7612709565b50604051636830483560e01b8152936001600160a01b03919091169190602085600481865afa948515610355575f95612d2e575b50612934612709565b946040516361c8a12f60e11b81525f81806129548d8d8b600485016127b0565b0381885afa908115610355575f91612d14575b5086526040516340e03a8160e11b81526001600160a01b039190911692905f818061299785878b60048501612807565b0381875afa908115610355575f91612cfa575b5060408701526129b98161226f565b9860608701998a525f5b60ff811683811015612c4557885f6129ec838f6129df88612133565b9051906126098383612172565b505f8a868f5b818410612a6f575050505090508c612a0982612133565b915f5b818110612a3657505091612a2b91612a31949351906126098383612172565b50612838565b6129c3565b80612a69612a54611565600194612a4e8a8951612172565b51612172565b612a5e8388612172565b9063ffffffff169052565b01612a0c565b61156584612a848160209695612a8c9561284e565b359751612172565b6040516304ec635160e01b8152600481019690965263ffffffff9182166024870152166044850152836064818d5afa801561035557888f888a918f94612b316001612b2481938d809d5f92612c19575b5061248c612b00612b0e92612af9878060c01b038616151561287d565b8b8d612893565b356001600160f81b03191690565b6001600160c01b0391821660ff919091161c1690565b166001600160c01b031690565b14612b4d575b5050505050600191925001908a918a868f6129f2565b8597612b6f93612b68602097999861248c95612b009561284e565b3595612893565b60405163dd9846b960e01b8152600481019290925260ff16602482015263ffffffff939093166044840152826064818c5afa908115610355578f612bcd90612bd29383886001975f93612be1575b50612a4e90612a5e939451612172565b6128b4565b905082918a888f888a91612b37565b612a5e935090612c0a612a4e9260203d8111612c12575b612c0281836104dc565b81019061289f565b935090612bbd565b503d612bf8565b612b0e919250612b00612c3c61248c9260203d81116115ee576115e081836104dc565b93925050612adc565b505050929095975060049496506020915060405194858092632efa2ca360e11b82525afa90811561035557612c9b945f948593612cd9575b5060405163354952a360e21b815295869485938493600485016128c2565b03916001600160a01b03165afa908115610355575f91612cbf575b50602082015290565b612cd391503d805f833e61161881836104dc565b5f612cb6565b612cf391935060203d602011610b2257610b1481836104dc565b915f612c7d565b612d0e91503d805f833e61161881836104dc565b5f6129aa565b612d2891503d805f833e61161881836104dc565b5f612967565b612d4891955060203d602011610b2257610b1481836104dc565b935f61292b565b3561080f81610729565b903590601e198136030182121561035a57018035906001600160401b03821161035a5760200191813603831361035a57565b602081528135602082015263ffffffff6020830135612da981610729565b1660408201526040820135601e198336030181121561035a578201906020823592016001600160401b03831161035a57823603811361035a57612e076060612e0060809361080f96858488015260a08701916127e7565b9501610737565b63ffffffff16910152565b15612e1957565b60405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b15612e8b57565b60405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608490fd5b63ffffffff60019116019063ffffffff821161284957565b63ffffffff60649116019063ffffffff821161284957565b9063ffffffff8091169116019063ffffffff821161284957565b15612f3657565b60405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608490fd5b6020809163ffffffff8135612fa581610729565b1684520135910152565b60408101929161050d9190612f91565b9060648202918083046064149015171561284957565b9060068202918083046006149015171561284957565b8181029291811591840414171561284957565b906001600160601b03809116911602906001600160601b03821691820361284957565b1561302857565b608460405162461bcd60e51b815260206004820152604060248201527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152fd5b90929160206060916130a8846080810197612f91565b63ffffffff81511660408501520151910152565b60409063ffffffff61080f949316815281602082015201906107cb565b156130e057565b60405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608490fd5b9092916020606091613145846080810197612f91565b63ffffffff813561315581610729565b1660408501520135910152565b1561316957565b60405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b156131db57565b60405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a490fd5b1561325957565b60405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b8181106132ee5750505090565b82518452602093840193909201916001016132e1565b1561330b57565b60405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a490fd5b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516133c2816107b4565b926133d060405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106133f85750505090565b6020809183516134078161035e565b8152019101906133eb565b604051906134216040836104dc565b601282527139b630b9b42fba3432afb7b832b930ba37b960711b6020830152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91906020835260c083019260018060a01b03825116602082015263ffffffff602083015116604082015260408201519360a060608301528451809152602060e083019501905f5b8181106134eb5750505060806134d661080f94956060850151601f1985830301848601526107cb565b9201519060a0601f1982850301910152613442565b82516001600160a01b03168752602096870196909201916001016134ad565b9392919092600161351a85612d4f565b9460206135d6883561354561353d8a63ffffffff165f5260cb60205260405f2090565b5415156130d9565b6135806135608a63ffffffff165f5260cb60205260405f2090565b54604051858101906135778161127e8d8b8661312f565b51902014613162565b6135ab6135a561359e8b63ffffffff165f5260cc60205260405f2090565b5460ff1690565b156131d4565b6135d06135c26113196135bd8a612d4f565b612efd565b63ffffffff43161115613252565b80612feb565b9101351414613ab7576135e98351612133565b935f5b8451811015613629578061361861360560019388612172565b5180515f526020015160205260405f2090565b6136228289612172565b52016135ec565b5090929391946136636020820196602061364289612d4f565b6040516136578161127e8a86830195866132c4565b51902091013514613304565b61366d8551612133565b957f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316945f5b875181101561371d578060206136b46136d49389612172565b516040518094819263745dcd7360e11b8352600483019190602083019252565b03818b5afa918215610355576001926136f9915f916136ff575b50610c78838d612172565b0161369b565b613717915060203d8111610b2257610b1481836104dc565b5f6136ee565b509296955092509261377c61374561374d604087019561373d8789612d59565b939091612d4f565b9236916108df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123d3565b905f915b8051831015613a59575f935b6137968483612172565b5151851015613a4c576137d6986020806137b488612a4e8988612172565b510151604051809c81926308f6629d60e31b8352600483019190602083019252565b0381875afa998a15610355575f9a613a2c575b505f5b8951811015613a1b576138116138056121c1838d612172565b6001600160a01b031690565b6001600160a01b038c1614613828576001016137ec565b50969790916138e4959693925b5f8a61388f60ff61386761248c612b008c6138618d61385b60d15460018060a01b031690565b98612d59565b90612893565b61388161387261050f565b6001600160a01b039095168552565b1663ffffffff166020830152565b60d0546138a690613805906001600160a01b031681565b60405163105dea1f60e21b815282516001600160a01b0316600482015260209092015163ffffffff1660248301529098899190829081906044820190565b03915afa968715610355575f976139f7575b506139018751612133565b985f5b8a5181101561392a578067016345785d8a00006139236001938e612172565b5201613904565b509a929998909661396860ff61394f61248c612b008b8f8c9f999b9c61386191612d59565b61395a6125d461052d565b1663ffffffff166020860152565b6040840152606083015261397a613412565b608083015260cf5461399690613805906001600160a01b031681565b803b1561035a57604051636a669b4160e01b8152925f9184918290849082906139c29060048301613466565b03925af1918215610355576001926139dd575b50019361378c565b806139eb5f6139f1936104dc565b806106b7565b5f6139d5565b613a149197503d805f833e613a0c81836104dc565b81019061338f565b955f6138f6565b50969790916138e495969392613835565b613a45919a5060203d8111610b2257610b1481836104dc565b985f6137e9565b9350600190920191613780565b5050509392505050613a89613a7c8263ffffffff165f5260cc60205260405f2090565b805460ff19166001179055565b63ffffffff3391167fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec5f80a3565b9350505063ffffffff3391167ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb055f80a3565b60405190613af6826104c1565b5f6060838281528260208201528160408201520152565b602081528151602082015263ffffffff6020830151166040820152608063ffffffff6060613b486040860151848387015260a0860190613442565b9401511691015290565b60405190613b5f826104a1565b60606020838281520152565b15613b7257565b62f8202d60e51b5f5260045ffd5b15613b8757565b6343714afd60e01b5f5260045ffd5b15613b9d57565b635f832f4160e01b5f5260045ffd5b15613bb357565b634b874f4560e01b5f5260045ffd5b9081602091031261035a575161080f81610f0f565b5f1981019190821161284957565b15613bec57565b633fdc650560e21b5f5260045ffd5b906001820180921161284957565b906002820180921161284957565b906003820180921161284957565b906004820180921161284957565b906005820180921161284957565b9190820180921161284957565b15613c5557565b63affc5edb60e01b5f5260045ffd5b9081602091031261035a575167ffffffffffffffff198116810361035a5790565b15613c8c57565b63e1310aed60e01b5f5260045ffd5b906001600160601b03809116911603906001600160601b03821161284957565b15613cc257565b6367988d3360e01b5f5260045ffd5b15613cd857565b63ab1b236b60e01b5f5260045ffd5b949392909193613cf5613b52565b50613d01851515613b6b565b604084015151851480614563575b80614555575b80614547575b613d2490613b80565b613d3660208501515185515114613b96565b613d4d63ffffffff431663ffffffff841610613bac565b613d5561050f565b5f81525f602082015292613d67613b52565b613d7087612133565b6020820152613d7e87612133565b8152613d88613b52565b92613d97602088015151612133565b8452613da7602088015151612133565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557613e10915f91614518575b50613e0b368b876108df565b614abe565b985f965b60208901518051891015613f6f57602088613e646115658c613e5c8f96868e613e41613605868095612172565b613e4e8484840151612172565b5282613f3c575b0151612172565b519551612172565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa918215610355576120de8a613f118f613f0a8f8460208f92613f0193613ef98460019e613f179e5f91613f1f575b508f8060c01b03169251612172565b520151612172565b51938d51612172565b5116614ae9565b90614b1a565b970196613e14565b613f369150863d81116115ee576115e081836104dc565b5f613eea565b613f6a613f4c8484840151612172565b51613f6384840151613f5d87613bd7565b90612172565b5110613be5565b613e55565b50909597949650613f84919893929950614bd7565b91613f9160975460ff1690565b908115614510576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f916144f1575b5091905b5f925b8184106140425750505050509261402961402461401d61403c958561127e986080606060209901519201519261202b565b9190613cbb565b613cd1565b01516040519283916020830195866132c4565b51902090565b92989596909399919794878b888c888d6143eb575b6115658260a061409761248c612b008461409f976140916140836136058f9c604060209f9e0151612172565b67ffffffffffffffff191690565b9b612893565b970151612172565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141636115658f958f9061415b8f978f96848f61415560c09661414e848f60209f90613e55612b009960409361248c9c5f916143bd575b5067ffffffffffffffff19918216911614613c85565b51906146a9565b9c612893565b960151612172565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141f0918c8f925f92614399575b5060206141e292930151612172565b906001600160601b03169052565b6142108c6141e28c6142096113e8826020860151612172565b9251612172565b5f985f5b60208a015151811015614380578b8d6142528961424561248c612b00868f8961423d9151612172565b519487612893565b60ff161c60019081161490565b614261575b5050600101614214565b8a8a6142e3859f948f9686612a4e8f9360e061429a61156595602061429261248c612b00839f6142a39c8991612893565b9a0151612172565b519b0151612172565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355578f61434f908f936001959486955f9261435a575b506143496141e2929351936143446113e88487612172565b613c9b565b92612172565b019a90508b8d614257565b6141e292506143796143499160203d811161263f5761263081836104dc565b925061432c565b5093919796996001919699509a94929a01929190613fec565b6141e292506143b6602091823d811161263f5761263081836104dc565b92506141d3565b60206143de92503d81116143e4575b6143d681836104dc565b810190613c64565b5f614138565b503d6143cc565b6144289450614405925061248c91612b0091602095612893565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103555760208961409f8f938f60a08f9761248c612b008f8f906140916140836136058f60408b96918f88936115659f6144ac906144b2936140979f5f926144c8575b5063ffffffff809116931690613c41565b11613c4e565b5050505050509750505050505092935050614057565b602063ffffffff92935082916144e9913d811161224e5761224081836104dc565b92915061449b565b61450a915060203d602011612c1257612c0281836104dc565b5f613fe5565b5f9190613fe9565b61453a915060203d602011614540575b61453281836104dc565b810190613bc2565b5f613dff565b503d614528565b5060e0840151518514613d1b565b5060c0840151518514613d15565b5060a0840151518514613d0f565b5f196066556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b806066556040519081527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6040519061462c826104a1565b5f6020838281520152565b6040519061018061464881846104dc565b368337565b6040519061465c6020836104dc565b6020368337565b9190604090606061467261461f565b948592602085519261468485856104dc565b8436853780518452015160208301528482015260076107cf195a01fa156146a757565bfe5b6020929160806040926146ba61461f565b958693818651936146cb86866104dc565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa80156146a757156146fc57565b63d4b68fd760e01b5f5260045ffd5b604051614717816104a1565b604090815161472683826104dc565b823682378152602082519161473b84846104dc565b833684370152805161474d82826104dc565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60208201528151906147a383836104dc565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526147f8835193846104dc565b8252602082015290565b5f516020614df75f395f51905f529061481961461f565b505f919006602060c0835b614919575f935f516020614df75f395f51905f526003818681818009090860405161484f85826104dc565b8436823784818560405161486382826104dc565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614df75f395f51905f5260a082015260056107cf195a01fa80156146a7576148cd90614de0565b5191614919575f516020614df75f395f51905f528280091461490457505f516020614df75f395f51905f5260015f94089293614824565b9293505061491061050f565b92835282015290565b612017565b61492661461f565b50604051614933816104a1565b600181526002602082015290565b90600c8110156120125760051b0190565b93929091614960604061053c565b9485526020850152614972604061053c565b9182526020820152614982614637565b925f5b600281106149af5750505060206101809261499e61464d565b93849160086201d4c0fa9151151590565b806149bb600192612fd5565b6149c58285612001565b51516149d18289614941565b5260206149de8386612001565b5101516149f36149ed83613bfb565b89614941565b526149fe8286612001565b515151614a0d6149ed83613c09565b52614a23614a1b8387612001565b515160200190565b51614a306149ed83613c17565b526020614a3d8387612001565b51015151614a4d6149ed83613c25565b52614a79614a73614a6c6020614a63868a612001565b51015160200190565b5192613c33565b88614941565b5201614985565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b906001614acc60ff93614d68565b928392161b1115614ada5790565b63ca95733360e01b5f5260045ffd5b805f915b614af5575090565b5f1981018181116128495761ffff9116911661ffff8114612849576001019080614aed565b90614b2361461f565b5061ffff811690610200821015614bc85760018214614bc357614b4461050f565b5f81525f602082015292906001905f925b61ffff8316851015614b6957505050505090565b600161ffff831660ff86161c811614614ba3575b6001614b99614b8e8360ff946146a9565b9460011b61fffe1690565b9401169291614b55565b946001614b99614b8e614bb88960ff956146a9565b989350505050614b7d565b505090565b637fc4ea7d60e11b5f5260045ffd5b614bdf61461f565b50805190811580614c50575b15614c0c575050604051614c006040826104dc565b5f81525f602082015290565b60205f516020614df75f395f51905f52910151065f516020614df75f395f51905f52035f516020614df75f395f51905f52811161284957604051916147f8836104a1565b50602081015115614beb565b6033546001600160a01b03163303614c7057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff614cc082614ae9565b16614cca816108c4565b90614cd860405192836104dc565b808252614ce7601f19916108c4565b013660208301375f5f5b8251821080614d47575b15614d40576001811b8416614d19575b614d14906128b4565b614cf1565b906001614d149160ff60f81b8460f81b165f1a614d3682876122b8565b5301919050614d0b565b5050905090565b506101008110614cfb565b15614d5957565b631019106960e31b5f5260045ffd5b90610100825111614dd157815115614dcc57602082015160019060f81c81901b5b8351821015614dc757600190614db2614da861248c61247e86896122b8565b60ff600191161b90565b90614dbe818311614d52565b17910190614d89565b925050565b5f9150565b637da54e4760e11b5f5260045ffd5b15614de757565b63d51edae360e01b5f5260045ffdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bc7e56e7001d31fed036cf53564fe2861a94feeed917b3c5dc5c111a0d36872164736f6c634300081b0033
+  /// ```
+  #[rustfmt::skip]
+  #[allow(clippy::all)]
+  pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
+      b"a\x01@\x80`@R4a\x02\x13W`\x80\x81aQB\x808\x03\x80\x91a\0 \x82\x85a\x02\xBEV[\x839\x81\x01\x03\x12a\x02\x13W\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x80\x83\x03a\x02\x13W` \x82\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x93\x90\x84\x81\x03a\x02\x13W`@\x84\x01Q\x93c\xFF\xFF\xFF\xFF\x85\x16\x85\x03a\x02\x13W``\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x95\x90\x86\x90\x03a\x02\x13W\x15a\x02\xAFW`\x80R`\xA0R`@Qch0H5`\xE0\x1B\x81R` \x81`\x04\x81\x85Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x02lW[P`\xC0R`@Qc.\xFA,\xA3`\xE1\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x02*W[P`\xE0R`\xC0Q`@Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x01\xD9W[Pa\x01\0Ra\x01 R`\xD1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@QaNL\x90\x81a\x02\xF6\x829`\x80Q\x81\x81\x81a\x02\xCA\x01R\x81\x81a\x0E\xA5\x01R\x81\x81a\x1A\xD1\x01Ra\x1E\x0E\x01R`\xA0Q\x81\x81\x81a\n\x9A\x01R\x81\x81a\x18\xFE\x01R\x81\x81a7O\x01R\x81\x81a=\xC4\x01R\x81\x81a>\x9A\x01RaD,\x01R`\xC0Q\x81\x81\x81a\x16\xDB\x01R\x81\x81aA\x9C\x01RaB\xE7\x01R`\xE0Q\x81\x81\x81a\x16\x97\x01R\x81\x81a6p\x01Ra@\xD8\x01Ra\x01\0Q\x81\x81\x81a\x1D\n\x01Ra?\xAD\x01Ra\x01 Q\x81\x81\x81a\x06\xDD\x01Ra\x12\xF4\x01R\xF3[\x90P` \x81=` \x11a\x02\x17W[\x81a\x01\xF4` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W_a\x01\x13V[_\x80\xFD[=\x91Pa\x01\xE7V[`@Q=_\x82>=\x90\xFD[\x90P` \x81=` \x11a\x02dW[\x81a\x02E` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W_a\0\xDBV[=\x91Pa\x028V[\x90P` \x81=` \x11a\x02\xA7W[\x81a\x02\x87` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W`\x04a\0\xAFV[=\x91Pa\x02zV[c9\xB1\x90\xBB`\xE1\x1B_R`\x04_\xFD[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17a\x02\xE1W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x13d9\xDD\x14a\x02\x9AW\x80c\x14YEz\x14a\x02\x95W\x80c\x17\x1F\x1D[\x14a\x02\x90W\x80c\x1A\xD41\x89\x14a\x01\xE6W\x80c$Z{\xFC\x14a\x02\x8BW\x80c,\xB2#\xD5\x14a\x02\x86W\x80c-\x89\xF6\xFC\x14a\x02\x81W\x80c1\xB3k\xD9\x14a\x02|W\x80c5c\xB0\xD1\x14a\x02wW\x80c9\x98\xFD\xD3\x14a\x02rW\x80cAl~^\x14a\x02mW\x80cM+W\xFE\x14a\x02hW\x80cOs\x9Ft\x14a\x02cW\x80cY\\jg\x14a\x02^W\x80cZ-\x7F\x02\x14a\x02YW\x80cZ\xC8j\xB7\x14a\x02TW\x80c[\xAE\xC9\xA0\x14a\x02OW\x80c\\\x15Vb\x14a\x02JW\x80c\\\x97Z\xBB\x14a\x02EW\x80c]\xEC\xC3\xF5\x14a\x02@W\x80c]\xF4YF\x14a\x02;W\x80ch0H5\x14a\x026W\x80ckS.\x9E\x14a\x021W\x80ck\x92x~\x14a\x02,W\x80cm\x14\xA9\x87\x14a\x02'W\x80cn\xFBF6\x14a\x02\"W\x80cqP\x18\xA6\x14a\x02\x1DW\x80cr\xD1\x8E\x8D\x14a\x02\x0EW\x80cz\xFA\x1E\xED\x14a\x02\x18W\x80c\x88o\x11\x95\x14a\x02\x13W\x80c\x8B\0\xCE|\x14a\x02\x0EW\x80c\x8D\xA5\xCB[\x14a\x02\tW\x80c\x9B)\x0E\x98\x14a\x02\x04W\x80c\xB9\x8D\t\x08\x14a\x01\xFFW\x80c\xCA\x8A\xA7\xC7\x14a\x01\xFAW\x80c\xCE\xFD\xC1\xD4\x14a\x01\xF5W\x80c\xDF\\\xF7#\x14a\x01\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xEBW\x80c\xF5\xC9\x89\x9D\x14a\x01\xE6W\x80c\xF6<[\xAB\x14a\x01\xE1Wc\xFA\xBC\x1C\xBC\x14a\x01\xDCW_\x80\xFD[a\x1D\xE5V[a\x1D\xCAV[a\x06\xC1V[a\x1D9V[a\x1C\xF5V[a\x1B\xB1V[a\x1BrV[a\x1BPV[a\x1B(V[a\x1B\0V[a\x1AqV[a\x1A\xBCV[a\x1A\x94V[a\x1A\x16V[a\x19iV[a\x18\xE9V[a\x17{V[a\x17\nV[a\x16\xC6V[a\x16\x82V[a\x16DV[a\x16'V[a\x14\xAEV[a\x11\xC9V[a\x0F\x1AV[a\x0E\xEDV[a\x0EzV[a\r\xD3V[a\x0B\xC8V[a\nhV[a\n6V[a\t\xBCV[a\x08\x12V[a\x07{V[a\x07BV[a\x07\x01V[a\x06OV[a\x03oV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\x90` \x82`$\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UWa\x03$\x92a\x03\x10\x91_\x91a\x03&W[Pa\x1E\xE7V[a\x03\x1F`fT\x82\x81\x16\x14a\x1E\xFDV[aE\xA5V[\0[a\x03H\x91P` =` \x11a\x03NW[a\x03@\x81\x83a\x04\xDCV[\x81\x01\x90a\x1E\xC7V[_a\x03\nV[P=a\x036V[a\x1E\xDCV[_\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03ZWV[4a\x03ZW`\xA06`\x03\x19\x01\x12a\x03ZW`\x045a\x03\x8C\x81a\x03^V[a\x04\0`$5a\x03\x9B\x81a\x03^V[`D5a\x03\xA7\x81a\x03^V[`d5\x90a\x03\xB4\x82a\x03^V[`\x845\x92a\x03\xC1\x84a\x03^V[_T\x95a\x03\xE6`\xFF`\x08\x89\x90\x1C\x16\x15\x80\x98\x81\x99a\x04\x7FW[\x81\x15a\x04_W[Pa\x1F\x13V[\x86a\x03\xF7`\x01`\xFF\x19_T\x16\x17_UV[a\x04HWa\x1FvV[a\x04\x06W\0[a\x04\x14a\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90\x80` \x81\x01[\x03\x90\xA1\0[a\x04Za\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x1FvV[0;\x15\x91P\x81a\x04qW[P_a\x03\xE0V[`\xFF\x16`\x01\x14\x90P_a\x04jV[`\x01`\xFF\x82\x16\x10\x91Pa\x03\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[a\x04\x8DV[`\x80\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[`@Q\x90a\x05\ra\x01\0\x83a\x04\xDCV[V[`@Q\x90a\x05\r`@\x83a\x04\xDCV[`@Q\x90a\x05\r``\x83a\x04\xDCV[`@Q\x90a\x05\r`\xA0\x83a\x04\xDCV[\x90a\x05\r`@Q\x92\x83a\x04\xDCV[`@\x90`\xE3\x19\x01\x12a\x03ZW`@Q\x90a\x05c\x82a\x04\xA1V[`\xE45\x82Ra\x01\x045` \x83\x01RV[\x91\x90\x82`@\x91\x03\x12a\x03ZW`@Qa\x05\x8B\x81a\x04\xA1V[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW`@Q\x91a\x05\xB6`@\x84a\x04\xDCV[\x82\x90`@\x81\x01\x92\x83\x11a\x03ZW\x90[\x82\x82\x10a\x05\xD2WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x05\xC5V[\x90`\x80`c\x19\x83\x01\x12a\x03ZW`@Qa\x05\xFB\x81a\x04\xA1V[` a\x06\x16\x82\x94a\x06\r\x81`da\x05\x9BV[\x84R`\xA4a\x05\x9BV[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x03ZW` a\x06\x16`@Q\x92a\x069\x84a\x04\xA1V[`@\x84\x96a\x06G\x83\x82a\x05\x9BV[\x86R\x01a\x05\x9BV[4a\x03ZWa\x01 6`\x03\x19\x01\x12a\x03ZW`\x045`@6`#\x19\x01\x12a\x03ZWa\x06\xA7`@\x91\x82Qa\x06\x81\x81a\x04\xA1V[`$5\x81R`D5` \x82\x01Ra\x06\x976a\x05\xE2V[\x90a\x06\xA16a\x05JV[\x92a +V[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[_\x91\x03\x12a\x03ZWV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qc\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCDT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[c\xFF\xFF\xFF\xFF\x81\x16\x03a\x03ZWV[5\x90a\x05\r\x82a\x07)V[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07d\x81a\x07)V[\x16_R`\xCB` R` `@_ T`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07\x9D\x81a\x07)V[\x16_R`\xCA` R` `@_ T`@Q\x90\x81R\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x05\x1B` \x01\x90V[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x07\xE8WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x07\xDBV[\x90` a\x08\x0F\x92\x81\x81R\x01\x90a\x07\xCBV[\x90V[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x08/\x81a\x03^V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW6`#\x83\x01\x12\x15a\x03ZW\x81`\x04\x015\x91a\x08[\x83a\x07\xB4V[\x92a\x08i`@Q\x94\x85a\x04\xDCV[\x80\x84R`$` \x85\x01\x91`\x05\x1B\x83\x01\x01\x916\x83\x11a\x03ZW`$\x01\x90[\x82\x82\x10a\x08\xAAWa\x08\xA6a\x08\x9A\x86\x86a!\x95V[`@Q\x91\x82\x91\x82a\x07\xFEV[\x03\x90\xF3[` \x80\x91\x835a\x08\xB9\x81a\x03^V[\x81R\x01\x91\x01\x90a\x08\x86V[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x08\xEB\x82a\x08\xC4V[\x91a\x08\xF9`@Q\x93\x84a\x04\xDCV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x03ZW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80` \x83Q\x91\x82\x81R\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\t@WPPPPP\x90V[\x90\x91\x92\x93\x94`\x1F\x19\x82\x82\x03\x01\x83R\x85Q\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_\x90[\x80\x82\x10a\t\x80WPPP` \x80`\x01\x92\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\t1V[\x90\x91\x92` ```\x01\x92`\x01`\x01``\x1B\x03`@\x88Q\x86\x80`\xA0\x1B\x03\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x16`@\x82\x01R\x01\x94\x01\x92\x01\x90a\taV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\t\xD9\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW6`#\x82\x01\x12\x15a\x03ZWa\x08\xA6\x91a\n\x10a\n\"\x926\x90`$\x81`\x04\x015\x91\x01a\x08\xDFV[`D5\x91a\n\x1D\x83a\x07)V[a#\xD3V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\t\x15V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD1T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x80\x15\x15\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\n\x85\x81a\n^V[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a\n\xFAW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\n\xEBWa\x03$\x90aJ\x80V[cpp\xF3\xB1`\xE1\x1B_R`\x04_\xFD[a\x0B\x1C\x91P` =` \x11a\x0B\"W[a\x0B\x14\x81\x83a\x04\xDCV[\x81\x01\x90a\"ZV[_a\n\xD2V[P=a\x0B\nV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0B@\x81a\x07\xB4V[\x92a\x0BN`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0BvWPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x0BiV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x0B\xA9WPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0B\x9CV[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x0B\xE5\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0C\x04\x906\x90`\x04\x01a\x0B)V[a\x0C\x0E\x81Qa!3V[\x91`\x01`\x01`\xA0\x1B\x03\x16_[\x82Q\x81\x10\x15a\x0C\xABW\x80` a\x0C3a\x0CS\x93\x86a!rV[Q`@Q\x80\x94\x81\x92c\nZ\xEC\x19`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x86Z\xFA\x91\x82\x15a\x03UW`\x01\x92a\x0C\x87\x91_\x91a\x0C\x8DW[Pa\x0Cx\x83\x88a!rV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[\x01a\x0C\x1AV[a\x0C\xA5\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x0CmV[`@Q\x80a\x08\xA6\x86\x82a\x0B\x86V[\x91\x81`\x1F\x84\x01\x12\x15a\x03ZW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW` \x83\x81\x86\x01\x95\x01\x01\x11a\x03ZWV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\r\x03WPPP\x90V[\x82Qc\xFF\xFF\xFF\xFF\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xF6V[\x90` \x82R``a\rma\rXa\rB\x84Q`\x80` \x88\x01R`\xA0\x87\x01\x90a\x0C\xE6V[` \x85\x01Q\x86\x82\x03`\x1F\x19\x01`@\x88\x01Ra\x0C\xE6V[`@\x84\x01Q\x85\x82\x03`\x1F\x19\x01\x84\x87\x01Ra\x0C\xE6V[\x91\x01Q\x91`\x80`\x1F\x19\x82\x84\x03\x01\x91\x01R\x81Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\r\xA6WPPPPP\x90V[\x90\x91\x92\x93\x94` \x80a\r\xC4`\x01\x93`\x1F\x19\x86\x82\x03\x01\x87R\x89Qa\x0C\xE6V[\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\r\x97V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045a\r\xF0\x81a\x03^V[`$5\x90a\r\xFD\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0E\x1C\x906\x90`\x04\x01a\x0C\xB9V[\x91`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`#\x85\x01\x12\x15a\x03ZW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`$\x85`\x05\x1B\x87\x01\x01\x11a\x03ZWa\x08\xA6\x95`$a\x0En\x96\x01\x93a(\xE7V[`@Q\x91\x82\x91\x82a\r\x1FV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R` \x81`$\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UWa\x0E\xE5\x91_\x91a\x03&WPa\x1E\xE7V[a\x03$aEqV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qg\x01cEx]\x8A\0\0\x81R\xF3[`\xFF\x81\x16\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW` `\x01`\xFF`\x045a\x0F=\x81a\x0F\x0FV[\x16\x1B\x80`fT\x16\x14`@Q\x90\x81R\xF3[\x90\x81`\x80\x91\x03\x12a\x03ZW\x90V[`@\x90`#\x19\x01\x12a\x03ZW`$\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0F\x83\x81a\x07\xB4V[\x92a\x0F\x91`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0F\xB9WPPP\x90V[` \x80\x91\x835a\x0F\xC8\x81a\x07)V[\x81R\x01\x91\x01\x90a\x0F\xACV[\x81`\x1F\x82\x01\x12\x15a\x03ZW\x805a\x0F\xE9\x81a\x07\xB4V[\x92a\x0F\xF7`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x03ZW` \x01\x91[\x83\x83\x10a\x10!WPPPP\x90V[` `@\x91a\x100\x84\x86a\x05sV[\x81R\x01\x92\x01\x91a\x10\x13V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x10R\x81a\x07\xB4V[\x92a\x10``@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x03ZW` \x82\x01\x90[\x83\x82\x10a\x10\x8CWPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW` \x91a\x10\xAE\x87\x84\x80\x94\x88\x01\x01a\x0FlV[\x81R\x01\x91\x01\x90a\x10}V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x03ZWa\x10\xCFa\x04\xFDV[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x10\xEC\x91\x84\x01a\x0FlV[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\r\x91\x84\x01a\x0F\xD3V[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x111\x91\x84\x01a\x0F\xD3V[`@\x85\x01Ra\x11C\x81``\x84\x01a\x06\x1BV[``\x85\x01Ra\x11U\x81`\xE0\x84\x01a\x05sV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11z\x91\x84\x01a\x0FlV[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\x9F\x91\x84\x01a\x0FlV[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xC2\x92\x01a\x10;V[`\xE0\x83\x01RV[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xF9\x906\x90`\x04\x01a\x0FMV[a\x12\x026a\x0F[V[\x90`d5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x12\"\x906\x90`\x04\x01a\x10\xB9V[`\xCDT\x90\x92\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x140Wa\x12E` \x83\x94\x93\x01a-OV[\x91a\x13Ha\x12V`@\x86\x01\x86a-YV[\x92\x90\x94a\x12\xB6a\x12h``\x89\x01a-OV[\x97`@Qa\x12\x8C\x81a\x12~` \x82\x01\x94\x85a-\x8BV[\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 a\x12\xAFa\x12\x9B\x88a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCA` R`@_ \x90V[T\x14a.\x12V[a\x12\xE0a\x12\xD9a\x12\xC5\x87a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15a.\x84V[\x83c\xFF\xFF\xFF\xFFC\x16\x96a\x13*a\x13\"a\x13\x19\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86a/\x15V[c\xFF\xFF\xFF\xFF\x16\x90V[\x89\x11\x15a//V[`@Q` \x81\x01\x90a\x13@\x81a\x12~\x8B\x85a/\xAFV[Q\x90 a<\xE7V[\x91\x90`\xFF_\x96\x16\x95[\x82\x81\x10a\x13\xCEW\x7F4\x9C\x1E\xE6\x0EN\x89r\xEE\x9D\xBAd,\x17tT=\\A6\x87\x9B\x7FL\xAA\xF0K\xF8\x1AHz*\x86\x86\x86a\x13\x93a\x13\x87a\x05\x0FV[c\xFF\xFF\xFF\xFF\x90\x94\x16\x84RV[` \x83\x01R`@Q` \x81\x01\x90a\x13\xAF\x81a\x12~\x86\x86\x86a0\x92V[Q\x90 a\x13\xBEa\x12\xC5\x83a-OV[Ua\x04C`@Q\x92\x83\x92\x83a0\x92V[\x80a\x14*a\x14\x06a\x14\x01a\x13\xF5a\x13\xE8`\x01\x96\x88Qa!rV[Q`\x01`\x01``\x1B\x03\x16\x90V[`\x01`\x01``\x1B\x03\x16\x90V[a/\xBFV[a\x14#a\x13\xF5\x8Ba\x14\x1Ea\x13\xE8\x87` \x8B\x01Qa!rV[a/\xFEV[\x11\x15a0!V[\x01a\x13QV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAggregator must be the caller\0\0\0`D\x82\x01R`d\x90\xFD[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x14\x98WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x14\x8BV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x14\xCB\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x14\xEA\x906\x90`\x04\x01a\x0B)V[`D5\x91a\x14\xF7\x83a\x07)V[`@Qca\xC8\xA1/`\xE1\x1B\x81R\x90`\x01`\x01`\xA0\x1B\x03\x16_\x82\x80a\x15\x1F\x86\x88`\x04\x84\x01a0\xBCV[\x03\x81\x84Z\xFA\x91\x82\x15a\x03UW_\x92a\x16\x03W[Pa\x15=\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a\x15\xF5Wa\x15S\x81\x86a!rV[Q\x90` \x83a\x15oa\x15e\x84\x89a!rV[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x95\x90\x95Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81\x87Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\x15\xC7W[P\x82\x80`\xC0\x1B\x03\x16a\x15\xC0\x82\x89a!rV[R\x01a\x15@V[a\x15\xE8\x91P` =\x81\x11a\x15\xEEW[a\x15\xE0\x81\x83a\x04\xDCV[\x81\x01\x90a(^V[_a\x15\xAEV[P=a\x15\xD6V[`@Q\x80a\x08\xA6\x88\x82a\x14uV[a\x16 \x91\x92P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[\x81\x01\x90a'-V[\x90_a\x152V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `fT`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x16f\x81a\x07)V[\x16_R`\xCC` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW`\xC06`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17:\x906\x90`\x04\x01a\x0FMV[a\x17C6a\x0F[V[\x90`@6`c\x19\x01\x12a\x03ZW`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x03$\x92a\x17u`d\x926\x90`\x04\x01a\x0F\xD3V[\x92a5\nV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`$5`\x045a\x17\x9B\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17\xBA\x906\x90`\x04\x01a\x0C\xB9V[`\xCET\x91\x93\x90\x92\x91`\x01`\x01`\xA0\x1B\x03\x163\x03a\x18\x9AWa\x03$\x93a\x18\x84\x93a\x18\x04a\x18\x0B\x93a\x17\xE8a:\xE9V[\x95\x86RCc\xFF\xFF\xFF\xFF\x16` \x87\x01Rc\xFF\xFF\xFF\xFF\x16``\x86\x01RV[6\x91a\x08\xDFV[`@\x82\x01R`@Q` \x81\x01\x90a\x18&\x81a\x12~\x85\x85a;\rV[Q\x90 a\x18;a\x12\x9B`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90V[U`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90\x7F\x16\x95\xB8\xD0n\xC8\0\xB4a^t\\\xFB[\xD0\x0C\x1F(ua]B\x92\\;Z\xFAT;\xB2LH`@Q\x80a\x18|c\xFF\xFF\xFF\xFF\x86\x16\x94\x82a;\rV[\x03\x90\xA2a.\xE5V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x19`\xC9T\x16\x17`\xC9UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask generator must be the calle`D\x82\x01R`9`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x19JWPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x19=V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x19\x9C\x906\x90`\x04\x01a\x0C\xB9V[\x90\x91`D5a\x19\xAA\x81a\x07)V[`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZWa\x1A\x0C\x94a\x19\xD1a\x19\xD7\x956\x90`\x04\x01a\x10\xB9V[\x93a<\xE7V[`@Q\x92\x83\x92`@\x84R` a\x19\xF8\x82Q`@\x80\x88\x01R`\x80\x87\x01\x90a\x19-V[\x91\x01Q\x84\x82\x03`?\x19\x01``\x86\x01Ra\x19-V[\x90` \x83\x01R\x03\x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZWa\x1A.aL\\V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` c\xFF\xFF\xFF\xFF`\xC9T\x16`@Q\x90\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCFT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@\x90a\x08\x0F\x93\x92\x81R\x81` \x82\x01R\x01\x90a\t\x15V[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x1B\xCE\x81a\x03^V[`$5`D5a\x1B\xDD\x81a\x07)V[a\x1C\x1Ea\x1B\xE8a!\x11V[\x92\x80a\x1B\xF3\x85a!eV[R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x94\x90\x92_\x91\x84\x91\x82\x91\x87`\x04\x84\x01a0\xBCV[\x03\x81\x87Z\xFA\x93\x84\x15a\x03UW\x83a\x1CHa\x13\x19a\x15ea\x1C}\x98` \x97_\x91a\x1C\xDBW[Pa!eV[\x92`@Q\x96\x87\x94\x85\x93\x84\x93c\x04\xECcQ`\xE0\x1B\x85R`\x04\x85\x01c\xFF\xFF\xFF\xFF`@\x92\x95\x94\x93``\x83\x01\x96\x83R\x16` \x82\x01R\x01RV[\x03\x91Z\xFA\x80\x15a\x03UWa\x1C\xAC\x92_\x91a\x1C\xBCW[P`\x01`\x01`\xC0\x1B\x03\x16\x92a\x1C\xA6\x84aL\xB4V[\x90a#\xD3V[\x90a\x08\xA6`@Q\x92\x83\x92\x83a\x1B\x9AV[a\x1C\xD5\x91P` =` \x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a\x1C\x92V[a\x1C\xEF\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a\x1CBV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\x1DV\x81a\x03^V[a\x1D^aL\\V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1DvWa\x03$\x90aE\xD7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Q`d\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qcu[6\xBD`\xE1\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a\x1E\xA8W[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x1E\x99Wa\x1Eg`fT\x19\x82\x19\x81\x16\x14a\x1E\xFDV[\x80`fU`@Q\x90\x81R\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C` 3\x92\xA2\0[cyH!\xFF`\xE0\x1B_R`\x04_\xFD[a\x1E\xC1\x91P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x1EFV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\n^V[`@Q=_\x82>=\x90\xFD[\x15a\x1E\xEEWV[c\x1Dw\xD4w`\xE2\x1B_R`\x04_\xFD[\x15a\x1F\x04WV[c\xC6\x1D\xCA]`\xE0\x1B_R`\x04_\xFD[\x15a\x1F\x1AWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[a\x1F\x7F\x90aE\xD7V[`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCDT\x16\x17`\xCDU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCET\x16\x17`\xCEU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xD0T\x16\x17`\xD0U`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCFT\x16\x17`\xCFUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[a\x1F\xEDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a!\x07a \xE4a!\r\x95a \xDEa \xD7\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra \xAE\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96aFcV[\x90aF\xA9V[\x92a \xDEa \xF9a \xF3aG\x0BV[\x94aH\x02V[\x91a!\x02aI\x1EV[aFcV[\x91aIRV[\x90\x91V[`@\x80Q\x90\x91\x90a!\"\x83\x82a\x04\xDCV[`\x01\x81R\x91`\x1F\x19\x016` \x84\x017V[\x90a!=\x82a\x07\xB4V[a!J`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a![`\x1F\x19\x91a\x07\xB4V[\x01\x90` 6\x91\x017V[\x80Q\x15a \x12W` \x01\x90V[\x80Q\x82\x10\x15a \x12W` \x91`\x05\x1B\x01\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ\x90V[\x91\x90\x91a!\xA2\x83Qa!3V[\x92_[\x81Q\x81\x10\x15a\"UW\x80` a!\xCEa!\xC1a!\xF7\x94\x86a!rV[Q`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x92\x83\x90\x81\x90`$\x82\x01\x90V[\x03\x81`\x01`\x01`\xA0\x1B\x03\x88\x16Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\"'W[Pa\" \x82\x88a!rV[R\x01a!\xA5V[a\"H\x91P` =\x81\x11a\"NW[a\"@\x81\x83a\x04\xDCV[\x81\x01\x90a!\x86V[_a\"\x15V[P=a\"6V[PPPV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x03^V[\x90a\"y\x82a\x07\xB4V[a\"\x86`@Q\x91\x82a\x04\xDCV[\x82\x81R` \x81\x93a\"\x99`\x1F\x19\x91a\x07\xB4V[\x01\x91\x01_[\x82\x81\x10a\"\xAAWPPPV[``\x82\x82\x01R` \x01a\"\x9EV[\x90\x81Q\x81\x10\x15a \x12W\x01` \x01\x90V[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa\"\xFC\x81a\x07\xB4V[\x92a#\n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a#2WPPP\x90V[\x81Q\x81R` \x91\x82\x01\x91\x01a#%V[\x90a#L\x82a\x07\xB4V[a#Y`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a#j`\x1F\x19\x91a\x07\xB4V[\x01_[\x81\x81\x10a#yWPPPV[`@Q\x90``\x82\x01\x91\x80\x83\x10`\x01`\x01`@\x1B\x03\x84\x11\x17a\x04\xBCW` \x92`@R_\x81R_\x83\x82\x01R_`@\x82\x01R\x82\x82\x86\x01\x01R\x01a#mV[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01``\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[`@Qch0H5`\xE0\x1B\x81R\x93\x91\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16` \x85`\x04\x81\x84Z\xFA\x94\x85\x15a\x03UW_\x95a&\xE8W[P`@QcOL\x91\xE1`\xE1\x1B\x81R\x94` \x86`\x04\x81\x85Z\xFA\x91\x82\x15a\x03UW`\x04\x96_\x93a&\xC6W[P` \x90`@Q\x97\x88\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x95\x86\x15a\x03UW_\x96a&\xA5W[Pa$a\x85\x93\x92\x95Qa\"oV[\x94_\x93[\x80Q\x85\x10\x15a&\x9BWa$\x92a$\x8Ca$~\x87\x84a\"\xB8V[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc\x89\x02bE`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x88\x16`$\x82\x01R\x90\x94\x90\x92_\x84`D\x81`\x01`\x01`\xA0\x1B\x03\x85\x16Z\xFA\x93\x84\x15a\x03UW_\x94a&wW[Pa$\xE2\x84Qa#BV[a$\xEC\x88\x8Ba!rV[Ra$\xF7\x87\x8Aa!rV[P_[\x84Q\x81\x10\x15a&fW\x80` a%\x13a%5\x93\x88a!rV[Q\x8D`@Q\x80\x80\x96\x81\x94c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UW_\x92a&FW[Pa%[\x81\x87a!rV[Q\x8A` \x8Aa%j\x85\x8Ba!rV[Q`@Qc\xFA(\xC6'`\xE0\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x91\x90\x91\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x92\x90\x92\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x8D\x16Z\xFA\x93\x84\x15a\x03UWa%\xFD\x8C\x8Fa%\xF8`\x01\x98a&\x0F\x97\x89\x97_\x92a&\x16W[Pa%\xE3a%\xD4a\x05\x1EV[`\x01`\x01`\xA0\x1B\x03\x90\x98\x16\x88RV[` \x87\x01R`\x01`\x01``\x1B\x03\x16`@\x86\x01RV[a!rV[Q\x90a&\t\x83\x83a!rV[Ra!rV[P\x01a$\xFAV[a&8\x91\x92P` =\x81\x11a&?W[a&0\x81\x83a\x04\xDCV[\x81\x01\x90a#\xB4V[\x90_a%\xC8V[P=a&&V[a&_\x91\x92P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x90_a%PV[P`\x01\x90\x96\x01\x95\x90\x94P\x91Pa$eV[a&\x94\x91\x94P=\x80_\x83>a&\x8C\x81\x83a\x04\xDCV[\x81\x01\x90a\"\xC9V[\x92_a$\xD7V[PPP\x93PPP\x90V[a&\xBF\x91\x96P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x94_a$SV[` \x91\x93Pa&\xE1\x90\x82=\x84\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x92\x90a$.V[a'\x02\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a$\x05V[`@Q\x90a'\x16\x82a\x04\xC1V[``\x80\x83\x81\x81R\x81` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa'`\x81a\x07\xB4V[\x92a'n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a'\x96WPPP\x90V[` \x80\x91\x83Qa'\xA5\x81a\x07)V[\x81R\x01\x91\x01\x90a'\x89V[c\xFF\xFF\xFF\xFF\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x01`\x01`\xFB\x1B\x03\x83\x11a\x03ZW``\x92`\x05\x1B\x80\x92\x84\x83\x017\x01\x01\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a'\xE7V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\xFF\x16`\xFF\x81\x14a(IW`\x01\x01\x90V[a($V[\x91\x90\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[\x15a(\x84WV[c%\xECl\x1F`\xE0\x1B_R`\x04_\xFD[\x90\x82\x10\x15a \x12W\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x07)V[_\x19\x81\x14a(IW`\x01\x01\x90V[\x91a(\xE0` \x92c\xFF\xFF\xFF\xFF\x92\x96\x95\x96`@\x86R`@\x86\x01\x91a'\xE7V[\x94\x16\x91\x01RV[\x95\x93\x94\x95\x92\x90\x91\x92a(\xF7a'\tV[P`@Qch0H5`\xE0\x1B\x81R\x93`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x91\x90` \x85`\x04\x81\x86Z\xFA\x94\x85\x15a\x03UW_\x95a-.W[Pa)4a'\tV[\x94`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x81\x80a)T\x8D\x8D\x8B`\x04\x85\x01a'\xB0V[\x03\x81\x88Z\xFA\x90\x81\x15a\x03UW_\x91a-\x14W[P\x86R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x92\x90_\x81\x80a)\x97\x85\x87\x8B`\x04\x85\x01a(\x07V[\x03\x81\x87Z\xFA\x90\x81\x15a\x03UW_\x91a,\xFAW[P`@\x87\x01Ra)\xB9\x81a\"oV[\x98``\x87\x01\x99\x8AR_[`\xFF\x81\x16\x83\x81\x10\x15a,EW\x88_a)\xEC\x83\x8Fa)\xDF\x88a!3V[\x90Q\x90a&\t\x83\x83a!rV[P_\x8A\x86\x8F[\x81\x84\x10a*oWPPPP\x90P\x8Ca*\t\x82a!3V[\x91_[\x81\x81\x10a*6WPP\x91a*+\x91a*1\x94\x93Q\x90a&\t\x83\x83a!rV[Pa(8V[a)\xC3V[\x80a*ia*Ta\x15e`\x01\x94a*N\x8A\x89Qa!rV[Qa!rV[a*^\x83\x88a!rV[\x90c\xFF\xFF\xFF\xFF\x16\x90RV[\x01a*\x0CV[a\x15e\x84a*\x84\x81` \x96\x95a*\x8C\x95a(NV[5\x97Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x96\x90\x96Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x87\x01R\x16`D\x85\x01R\x83`d\x81\x8DZ\xFA\x80\x15a\x03UW\x88\x8F\x88\x8A\x91\x8F\x94a+1`\x01a+$\x81\x93\x8D\x80\x9D_\x92a,\x19W[Pa$\x8Ca+\0a+\x0E\x92a*\xF9\x87\x80`\xC0\x1B\x03\x86\x16\x15\x15a(}V[\x8B\x8Da(\x93V[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\x01`\x01`\xC0\x1B\x03\x91\x82\x16`\xFF\x91\x90\x91\x16\x1C\x16\x90V[\x16`\x01`\x01`\xC0\x1B\x03\x16\x90V[\x14a+MW[PPPPP`\x01\x91\x92P\x01\x90\x8A\x91\x8A\x86\x8Fa)\xF2V[\x85\x97a+o\x93a+h` \x97\x99\x98a$\x8C\x95a+\0\x95a(NV[5\x95a(\x93V[`@Qc\xDD\x98F\xB9`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\xFF\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x93\x90\x93\x16`D\x84\x01R\x82`d\x81\x8CZ\xFA\x90\x81\x15a\x03UW\x8Fa+\xCD\x90a+\xD2\x93\x83\x88`\x01\x97_\x93a+\xE1W[Pa*N\x90a*^\x93\x94Qa!rV[a(\xB4V[\x90P\x82\x91\x8A\x88\x8F\x88\x8A\x91a+7V[a*^\x93P\x90a,\na*N\x92` =\x81\x11a,\x12W[a,\x02\x81\x83a\x04\xDCV[\x81\x01\x90a(\x9FV[\x93P\x90a+\xBDV[P=a+\xF8V[a+\x0E\x91\x92Pa+\0a,<a$\x8C\x92` =\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[\x93\x92PPa*\xDCV[PPP\x92\x90\x95\x97P`\x04\x94\x96P` \x91P`@Q\x94\x85\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x90\x81\x15a\x03UWa,\x9B\x94_\x94\x85\x93a,\xD9W[P`@Qc5IR\xA3`\xE2\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a(\xC2V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a,\xBFW[P` \x82\x01R\x90V[a,\xD3\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a,\xB6V[a,\xF3\x91\x93P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x91_a,}V[a-\x0E\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)\xAAV[a-(\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)gV[a-H\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a)+V[5a\x08\x0F\x81a\x07)V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x03ZW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW` \x01\x91\x816\x03\x83\x13a\x03ZWV[` \x81R\x815` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x015a-\xA9\x81a\x07)V[\x16`@\x82\x01R`@\x82\x015`\x1E\x19\x836\x03\x01\x81\x12\x15a\x03ZW\x82\x01\x90` \x825\x92\x01`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW\x826\x03\x81\x13a\x03ZWa.\x07``a.\0`\x80\x93a\x08\x0F\x96\x85\x84\x88\x01R`\xA0\x87\x01\x91a'\xE7V[\x95\x01a\x077V[c\xFF\xFF\xFF\xFF\x16\x91\x01RV[\x15a.\x19WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7Fsupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a.\x8BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x90\xFD[c\xFF\xFF\xFF\xFF`\x01\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[c\xFF\xFF\xFF\xFF`d\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x90c\xFF\xFF\xFF\xFF\x80\x91\x16\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x15a/6WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FAggregator has responded to the `D\x82\x01Rltask too late`\x98\x1B`d\x82\x01R`\x84\x90\xFD[` \x80\x91c\xFF\xFF\xFF\xFF\x815a/\xA5\x81a\x07)V[\x16\x84R\x015\x91\x01RV[`@\x81\x01\x92\x91a\x05\r\x91\x90a/\x91V[\x90`d\x82\x02\x91\x80\x83\x04`d\x14\x90\x15\x17\x15a(IWV[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a(IWV[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a(IWV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x02\x90`\x01`\x01``\x1B\x03\x82\x16\x91\x82\x03a(IWV[\x15a0(WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R\xFD[\x90\x92\x91` ``\x91a0\xA8\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x81Q\x16`@\x85\x01R\x01Q\x91\x01RV[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x94\x93\x16\x81R\x81` \x82\x01R\x01\x90a\x07\xCBV[\x15a0\xE0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask hasn't been responded to ye`D\x82\x01R`\x1D`\xFA\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x92\x91` ``\x91a1E\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x815a1U\x81a\x07)V[\x16`@\x85\x01R\x015\x91\x01RV[\x15a1iWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FTask response does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a1\xDBWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FThe response to this task has al`D\x82\x01R\x7Fready been challenged successful`d\x82\x01Rb6<\x97`\xE9\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a2YWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FThe challenge period for this ta`D\x82\x01R\x7Fsk has already expired.\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a2\xEEWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a2\xE1V[\x15a3\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FThe pubkeys of non-signing opera`D\x82\x01R\x7Ftors supplied by the challenger `d\x82\x01Ro0\xB92\x9077\xBA\x101\xB7\xB992\xB1\xBA\x17`\x81\x1B`\x84\x82\x01R`\xA4\x90\xFD[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa3\xC2\x81a\x07\xB4V[\x92a3\xD0`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a3\xF8WPPP\x90V[` \x80\x91\x83Qa4\x07\x81a\x03^V[\x81R\x01\x91\x01\x90a3\xEBV[`@Q\x90a4!`@\x83a\x04\xDCV[`\x12\x82Rq9\xB60\xB9\xB4/\xBA42\xAF\xB7\xB82\xB90\xBA7\xB9`q\x1B` \x83\x01RV[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90` \x83R`\xC0\x83\x01\x92`\x01\x80`\xA0\x1B\x03\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`@\x82\x01Q\x93`\xA0``\x83\x01R\x84Q\x80\x91R` `\xE0\x83\x01\x95\x01\x90_[\x81\x81\x10a4\xEBWPPP`\x80a4\xD6a\x08\x0F\x94\x95``\x85\x01Q`\x1F\x19\x85\x83\x03\x01\x84\x86\x01Ra\x07\xCBV[\x92\x01Q\x90`\xA0`\x1F\x19\x82\x85\x03\x01\x91\x01Ra4BV[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x87R` \x96\x87\x01\x96\x90\x92\x01\x91`\x01\x01a4\xADV[\x93\x92\x91\x90\x92`\x01a5\x1A\x85a-OV[\x94` a5\xD6\x885a5Ea5=\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15\x15a0\xD9V[a5\x80a5`\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T`@Q\x85\x81\x01\x90a5w\x81a\x12~\x8D\x8B\x86a1/V[Q\x90 \x14a1bV[a5\xABa5\xA5a5\x9E\x8Bc\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[T`\xFF\x16\x90V[\x15a1\xD4V[a5\xD0a5\xC2a\x13\x19a5\xBD\x8Aa-OV[a.\xFDV[c\xFF\xFF\xFF\xFFC\x16\x11\x15a2RV[\x80a/\xEBV[\x91\x015\x14\x14a:\xB7Wa5\xE9\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a6)W\x80a6\x18a6\x05`\x01\x93\x88a!rV[Q\x80Q_R` \x01Q` R`@_ \x90V[a6\"\x82\x89a!rV[R\x01a5\xECV[P\x90\x92\x93\x91\x94a6c` \x82\x01\x96` a6B\x89a-OV[`@Qa6W\x81a\x12~\x8A\x86\x83\x01\x95\x86a2\xC4V[Q\x90 \x91\x015\x14a3\x04V[a6m\x85Qa!3V[\x95\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x94_[\x87Q\x81\x10\x15a7\x1DW\x80` a6\xB4a6\xD4\x93\x89a!rV[Q`@Q\x80\x94\x81\x92ct]\xCDs`\xE1\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8BZ\xFA\x91\x82\x15a\x03UW`\x01\x92a6\xF9\x91_\x91a6\xFFW[Pa\x0Cx\x83\x8Da!rV[\x01a6\x9BV[a7\x17\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a6\xEEV[P\x92\x96\x95P\x92P\x92a7|a7Ea7M`@\x87\x01\x95a7=\x87\x89a-YV[\x93\x90\x91a-OV[\x926\x91a\x08\xDFV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a#\xD3V[\x90_\x91[\x80Q\x83\x10\x15a:YW_\x93[a7\x96\x84\x83a!rV[QQ\x85\x10\x15a:LWa7\xD6\x98` \x80a7\xB4\x88a*N\x89\x88a!rV[Q\x01Q`@Q\x80\x9C\x81\x92c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x87Z\xFA\x99\x8A\x15a\x03UW_\x9Aa:,W[P_[\x89Q\x81\x10\x15a:\x1BWa8\x11a8\x05a!\xC1\x83\x8Da!rV[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x8C\x16\x14a8(W`\x01\x01a7\xECV[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92[_\x8Aa8\x8F`\xFFa8ga$\x8Ca+\0\x8Ca8a\x8Da8[`\xD1T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x98a-YV[\x90a(\x93V[a8\x81a8ra\x05\x0FV[`\x01`\x01`\xA0\x1B\x03\x90\x95\x16\x85RV[\x16c\xFF\xFF\xFF\xFF\x16` \x83\x01RV[`\xD0Ta8\xA6\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc\x10]\xEA\x1F`\xE2\x1B\x81R\x82Q`\x01`\x01`\xA0\x1B\x03\x16`\x04\x82\x01R` \x90\x92\x01Qc\xFF\xFF\xFF\xFF\x16`$\x83\x01R\x90\x98\x89\x91\x90\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x91Z\xFA\x96\x87\x15a\x03UW_\x97a9\xF7W[Pa9\x01\x87Qa!3V[\x98_[\x8AQ\x81\x10\x15a9*W\x80g\x01cEx]\x8A\0\0a9#`\x01\x93\x8Ea!rV[R\x01a9\x04V[P\x9A\x92\x99\x98\x90\x96a9h`\xFFa9Oa$\x8Ca+\0\x8B\x8F\x8C\x9F\x99\x9B\x9Ca8a\x91a-YV[a9Za%\xD4a\x05-V[\x16c\xFF\xFF\xFF\xFF\x16` \x86\x01RV[`@\x84\x01R``\x83\x01Ra9za4\x12V[`\x80\x83\x01R`\xCFTa9\x96\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80;\x15a\x03ZW`@Qcjf\x9BA`\xE0\x1B\x81R\x92_\x91\x84\x91\x82\x90\x84\x90\x82\x90a9\xC2\x90`\x04\x83\x01a4fV[\x03\x92Z\xF1\x91\x82\x15a\x03UW`\x01\x92a9\xDDW[P\x01\x93a7\x8CV[\x80a9\xEB_a9\xF1\x93a\x04\xDCV[\x80a\x06\xB7V[_a9\xD5V[a:\x14\x91\x97P=\x80_\x83>a:\x0C\x81\x83a\x04\xDCV[\x81\x01\x90a3\x8FV[\x95_a8\xF6V[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92a85V[a:E\x91\x9AP` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x98_a7\xE9V[\x93P`\x01\x90\x92\x01\x91a7\x80V[PPP\x93\x92PPPa:\x89a:|\x82c\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[\x80T`\xFF\x19\x16`\x01\x17\x90UV[c\xFF\xFF\xFF\xFF3\x91\x16\x7F\xC2\r\x1B\xB0\xF1b6\x800k\x83\xD4\xFFK\xB9\x9A+\xEB\x9D\x86\xD9x2\xF3\xCA@\xFD\x13\xA2\x9D\xF1\xEC_\x80\xA3V[\x93PPPc\xFF\xFF\xFF\xFF3\x91\x16\x7F\xFD>&\xBE\xEBYg\xFCZW\xA0Di\x14\xEA\xBCE\xB4\xAAGLg\xA5\x1BKQ`\xCA\xC6\r\xDB\x05_\x80\xA3V[`@Q\x90a:\xF6\x82a\x04\xC1V[_``\x83\x82\x81R\x82` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81R\x81Q` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`\x80c\xFF\xFF\xFF\xFF``a;H`@\x86\x01Q\x84\x83\x87\x01R`\xA0\x86\x01\x90a4BV[\x94\x01Q\x16\x91\x01R\x90V[`@Q\x90a;_\x82a\x04\xA1V[``` \x83\x82\x81R\x01RV[\x15a;rWV[b\xF8 -`\xE5\x1B_R`\x04_\xFD[\x15a;\x87WV[cCqJ\xFD`\xE0\x1B_R`\x04_\xFD[\x15a;\x9DWV[c_\x83/A`\xE0\x1B_R`\x04_\xFD[\x15a;\xB3WV[cK\x87OE`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x0F\x0FV[_\x19\x81\x01\x91\x90\x82\x11a(IWV[\x15a;\xECWV[c?\xDCe\x05`\xE2\x1B_R`\x04_\xFD[\x90`\x01\x82\x01\x80\x92\x11a(IWV[\x90`\x02\x82\x01\x80\x92\x11a(IWV[\x90`\x03\x82\x01\x80\x92\x11a(IWV[\x90`\x04\x82\x01\x80\x92\x11a(IWV[\x90`\x05\x82\x01\x80\x92\x11a(IWV[\x91\x90\x82\x01\x80\x92\x11a(IWV[\x15a<UWV[c\xAF\xFC^\xDB`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x03ZW\x90V[\x15a<\x8CWV[c\xE11\n\xED`\xE0\x1B_R`\x04_\xFD[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a(IWV[\x15a<\xC2WV[cg\x98\x8D3`\xE0\x1B_R`\x04_\xFD[\x15a<\xD8WV[c\xAB\x1B#k`\xE0\x1B_R`\x04_\xFD[\x94\x93\x92\x90\x91\x93a<\xF5a;RV[Pa=\x01\x85\x15\x15a;kV[`@\x84\x01QQ\x85\x14\x80aEcW[\x80aEUW[\x80aEGW[a=$\x90a;\x80V[a=6` \x85\x01QQ\x85QQ\x14a;\x96V[a=Mc\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a;\xACV[a=Ua\x05\x0FV[_\x81R_` \x82\x01R\x92a=ga;RV[a=p\x87a!3V[` \x82\x01Ra=~\x87a!3V[\x81Ra=\x88a;RV[\x92a=\x97` \x88\x01QQa!3V[\x84Ra=\xA7` \x88\x01QQa!3V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UWa>\x10\x91_\x91aE\x18W[Pa>\x0B6\x8B\x87a\x08\xDFV[aJ\xBEV[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a?oW` \x88a>da\x15e\x8Ca>\\\x8F\x96\x86\x8Ea>Aa6\x05\x86\x80\x95a!rV[a>N\x84\x84\x84\x01Qa!rV[R\x82a?<W[\x01Qa!rV[Q\x95Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x91\x82\x15a\x03UWa \xDE\x8Aa?\x11\x8Fa?\n\x8F\x84` \x8F\x92a?\x01\x93a>\xF9\x84`\x01\x9Ea?\x17\x9E_\x91a?\x1FW[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa!rV[R\x01Qa!rV[Q\x93\x8DQa!rV[Q\x16aJ\xE9V[\x90aK\x1AV[\x97\x01\x96a>\x14V[a?6\x91P\x86=\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a>\xEAV[a?ja?L\x84\x84\x84\x01Qa!rV[Qa?c\x84\x84\x01Qa?]\x87a;\xD7V[\x90a!rV[Q\x10a;\xE5V[a>UV[P\x90\x95\x97\x94\x96Pa?\x84\x91\x98\x93\x92\x99PaK\xD7V[\x91a?\x91`\x97T`\xFF\x16\x90V[\x90\x81\x15aE\x10W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91aD\xF1W[P\x91\x90[_\x92[\x81\x84\x10a@BWPPPPP\x92a@)a@$a@\x1Da@<\x95\x85a\x12~\x98`\x80``` \x99\x01Q\x92\x01Q\x92a +V[\x91\x90a<\xBBV[a<\xD1V[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a2\xC4V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8DaC\xEBW[a\x15e\x82`\xA0a@\x97a$\x8Ca+\0\x84a@\x9F\x97a@\x91a@\x83a6\x05\x8F\x9C`@` \x9F\x9E\x01Qa!rV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba(\x93V[\x97\x01Qa!rV[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x03UWaAca\x15e\x8F\x95\x8F\x90aA[\x8F\x97\x8F\x96\x84\x8FaAU`\xC0\x96aAN\x84\x8F` \x9F\x90a>Ua+\0\x99`@\x93a$\x8C\x9C_\x91aC\xBDW[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a<\x85V[Q\x90aF\xA9V[\x9Ca(\x93V[\x96\x01Qa!rV[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x03UWaA\xF0\x91\x8C\x8F\x92_\x92aC\x99W[P` aA\xE2\x92\x93\x01Qa!rV[\x90`\x01`\x01``\x1B\x03\x16\x90RV[aB\x10\x8CaA\xE2\x8CaB\ta\x13\xE8\x82` \x86\x01Qa!rV[\x92Qa!rV[_\x98_[` \x8A\x01QQ\x81\x10\x15aC\x80W\x8B\x8DaBR\x89aBEa$\x8Ca+\0\x86\x8F\x89aB=\x91Qa!rV[Q\x94\x87a(\x93V[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[aBaW[PP`\x01\x01aB\x14V[\x8A\x8AaB\xE3\x85\x9F\x94\x8F\x96\x86a*N\x8F\x93`\xE0aB\x9Aa\x15e\x95` aB\x92a$\x8Ca+\0\x83\x9FaB\xA3\x9C\x89\x91a(\x93V[\x9A\x01Qa!rV[Q\x9B\x01Qa!rV[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW\x8FaCO\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92aCZW[PaCIaA\xE2\x92\x93Q\x93aCDa\x13\xE8\x84\x87a!rV[a<\x9BV[\x92a!rV[\x01\x9A\x90P\x8B\x8DaBWV[aA\xE2\x92PaCyaCI\x91` =\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaC,V[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a?\xECV[aA\xE2\x92PaC\xB6` \x91\x82=\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaA\xD3V[` aC\xDE\x92P=\x81\x11aC\xE4W[aC\xD6\x81\x83a\x04\xDCV[\x81\x01\x90a<dV[_aA8V[P=aC\xCCV[aD(\x94PaD\x05\x92Pa$\x8C\x91a+\0\x91` \x95a(\x93V[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UW` \x89a@\x9F\x8F\x93\x8F`\xA0\x8F\x97a$\x8Ca+\0\x8F\x8F\x90a@\x91a@\x83a6\x05\x8F`@\x8B\x96\x91\x8F\x88\x93a\x15e\x9FaD\xAC\x90aD\xB2\x93a@\x97\x9F_\x92aD\xC8W[Pc\xFF\xFF\xFF\xFF\x80\x91\x16\x93\x16\x90a<AV[\x11a<NV[PPPPPP\x97PPPPPP\x92\x93PPa@WV[` c\xFF\xFF\xFF\xFF\x92\x93P\x82\x91aD\xE9\x91=\x81\x11a\"NWa\"@\x81\x83a\x04\xDCV[\x92\x91PaD\x9BV[aE\n\x91P` =` \x11a,\x12Wa,\x02\x81\x83a\x04\xDCV[_a?\xE5V[_\x91\x90a?\xE9V[aE:\x91P` =` \x11aE@W[aE2\x81\x83a\x04\xDCV[\x81\x01\x90a;\xC2V[_a=\xFFV[P=aE(V[P`\xE0\x84\x01QQ\x85\x14a=\x1BV[P`\xC0\x84\x01QQ\x85\x14a=\x15V[P`\xA0\x84\x01QQ\x85\x14a=\x0FV[_\x19`fU`@Q_\x19\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[\x80`fU`@Q\x90\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`@Q\x90aF,\x82a\x04\xA1V[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80aFH\x81\x84a\x04\xDCV[6\x837V[`@Q\x90aF\\` \x83a\x04\xDCV[` 6\x837V[\x91\x90`@\x90``aFraF\x1FV[\x94\x85\x92` \x85Q\x92aF\x84\x85\x85a\x04\xDCV[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15aF\xA7WV[\xFE[` \x92\x91`\x80`@\x92aF\xBAaF\x1FV[\x95\x86\x93\x81\x86Q\x93aF\xCB\x86\x86a\x04\xDCV[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7W\x15aF\xFCWV[c\xD4\xB6\x8F\xD7`\xE0\x1B_R`\x04_\xFD[`@QaG\x17\x81a\x04\xA1V[`@\x90\x81QaG&\x83\x82a\x04\xDCV[\x826\x827\x81R` \x82Q\x91aG;\x84\x84a\x04\xDCV[\x836\x847\x01R\x80QaGM\x82\x82a\x04\xDCV[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90aG\xA3\x83\x83a\x04\xDCV[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01RaG\xF8\x83Q\x93\x84a\x04\xDCV[\x82R` \x82\x01R\x90V[_Q` aM\xF7_9_Q\x90_R\x90aH\x19aF\x1FV[P_\x91\x90\x06` `\xC0\x83[aI\x19W_\x93_Q` aM\xF7_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@QaHO\x85\x82a\x04\xDCV[\x846\x827\x84\x81\x85`@QaHc\x82\x82a\x04\xDCV[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` aM\xF7_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7WaH\xCD\x90aM\xE0V[Q\x91aI\x19W_Q` aM\xF7_9_Q\x90_R\x82\x80\t\x14aI\x04WP_Q` aM\xF7_9_Q\x90_R`\x01_\x94\x08\x92\x93aH$V[\x92\x93PPaI\x10a\x05\x0FV[\x92\x83R\x82\x01R\x90V[a \x17V[aI&aF\x1FV[P`@QaI3\x81a\x04\xA1V[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x0C\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x93\x92\x90\x91aI``@a\x05<V[\x94\x85R` \x85\x01RaIr`@a\x05<V[\x91\x82R` \x82\x01RaI\x82aF7V[\x92_[`\x02\x81\x10aI\xAFWPPP` a\x01\x80\x92aI\x9EaFMV[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80aI\xBB`\x01\x92a/\xD5V[aI\xC5\x82\x85a \x01V[QQaI\xD1\x82\x89aIAV[R` aI\xDE\x83\x86a \x01V[Q\x01QaI\xF3aI\xED\x83a;\xFBV[\x89aIAV[RaI\xFE\x82\x86a \x01V[QQQaJ\raI\xED\x83a<\tV[RaJ#aJ\x1B\x83\x87a \x01V[QQ` \x01\x90V[QaJ0aI\xED\x83a<\x17V[R` aJ=\x83\x87a \x01V[Q\x01QQaJMaI\xED\x83a<%V[RaJyaJsaJl` aJc\x86\x8Aa \x01V[Q\x01Q` \x01\x90V[Q\x92a<3V[\x88aIAV[R\x01aI\x85V[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01aJ\xCC`\xFF\x93aMhV[\x92\x83\x92\x16\x1B\x11\x15aJ\xDAW\x90V[c\xCA\x95s3`\xE0\x1B_R`\x04_\xFD[\x80_\x91[aJ\xF5WP\x90V[_\x19\x81\x01\x81\x81\x11a(IWa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a(IW`\x01\x01\x90\x80aJ\xEDV[\x90aK#aF\x1FV[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15aK\xC8W`\x01\x82\x14aK\xC3WaKDa\x05\x0FV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15aKiWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14aK\xA3W[`\x01aK\x99aK\x8E\x83`\xFF\x94aF\xA9V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91aKUV[\x94`\x01aK\x99aK\x8EaK\xB8\x89`\xFF\x95aF\xA9V[\x98\x93PPPPaK}V[PP\x90V[c\x7F\xC4\xEA}`\xE1\x1B_R`\x04_\xFD[aK\xDFaF\x1FV[P\x80Q\x90\x81\x15\x80aLPW[\x15aL\x0CWPP`@QaL\0`@\x82a\x04\xDCV[_\x81R_` \x82\x01R\x90V[` _Q` aM\xF7_9_Q\x90_R\x91\x01Q\x06_Q` aM\xF7_9_Q\x90_R\x03_Q` aM\xF7_9_Q\x90_R\x81\x11a(IW`@Q\x91aG\xF8\x83a\x04\xA1V[P` \x81\x01Q\x15aK\xEBV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03aLpWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[a\xFF\xFFaL\xC0\x82aJ\xE9V[\x16aL\xCA\x81a\x08\xC4V[\x90aL\xD8`@Q\x92\x83a\x04\xDCV[\x80\x82RaL\xE7`\x1F\x19\x91a\x08\xC4V[\x016` \x83\x017__[\x82Q\x82\x10\x80aMGW[\x15aM@W`\x01\x81\x1B\x84\x16aM\x19W[aM\x14\x90a(\xB4V[aL\xF1V[\x90`\x01aM\x14\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1AaM6\x82\x87a\"\xB8V[S\x01\x91\x90PaM\x0BV[PP\x90P\x90V[Pa\x01\0\x81\x10aL\xFBV[\x15aMYWV[c\x10\x19\x10i`\xE3\x1B_R`\x04_\xFD[\x90a\x01\0\x82Q\x11aM\xD1W\x81Q\x15aM\xCCW` \x82\x01Q`\x01\x90`\xF8\x1C\x81\x90\x1B[\x83Q\x82\x10\x15aM\xC7W`\x01\x90aM\xB2aM\xA8a$\x8Ca$~\x86\x89a\"\xB8V[`\xFF`\x01\x91\x16\x1B\x90V[\x90aM\xBE\x81\x83\x11aMRV[\x17\x91\x01\x90aM\x89V[\x92PPV[_\x91PV[c}\xA5NG`\xE1\x1B_R`\x04_\xFD[\x15aM\xE7WV[c\xD5\x1E\xDA\xE3`\xE0\x1B_R`\x04_\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xBC~V\xE7\0\x1D1\xFE\xD06\xCFSVO\xE2\x86\x1A\x94\xFE\xEE\xD9\x17\xB3\xC5\xDC\\\x11\x1A\r6\x87!dsolcC\0\x08\x1B\x003",
+  );
+    /// The runtime bytecode of the contract, as deployed on the network.
+  ///
+  /// ```text
+  ///0x60806040526004361015610011575f80fd5b5f3560e01c8063136439dd1461029a5780631459457a14610295578063171f1d5b146102905780631ad43189146101e6578063245a7bfc1461028b5780632cb223d5146102865780632d89f6fc1461028157806331b36bd91461027c5780633563b0d1146102775780633998fdd314610272578063416c7e5e1461026d5780634d2b57fe146102685780634f739f7414610263578063595c6a671461025e5780635a2d7f02146102595780635ac86ab7146102545780635baec9a01461024f5780635c1556621461024a5780635c975abb146102455780635decc3f5146102405780635df459461461023b57806368304835146102365780636b532e9e146102315780636b92787e1461022c5780636d14a987146102275780636efb463614610222578063715018a61461021d57806372d18e8d1461020e5780637afa1eed14610218578063886f1195146102135780638b00ce7c1461020e5780638da5cb5b146102095780639b290e9814610204578063b98d0908146101ff578063ca8aa7c7146101fa578063cefdc1d4146101f5578063df5cf723146101f0578063f2fde38b146101eb578063f5c9899d146101e6578063f63c5bab146101e15763fabc1cbc146101dc575f80fd5b611de5565b611dca565b6106c1565b611d39565b611cf5565b611bb1565b611b72565b611b50565b611b28565b611b00565b611a71565b611abc565b611a94565b611a16565b611969565b6118e9565b61177b565b61170a565b6116c6565b611682565b611644565b611627565b6114ae565b6111c9565b610f1a565b610eed565b610e7a565b610dd3565b610bc8565b610a68565b610a36565b6109bc565b610812565b61077b565b610742565b610701565b61064f565b61036f565b3461035a57602036600319011261035a5760043560405163237dfb4760e11b8152336004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103555761032492610310915f91610326575b50611ee7565b61031f60665482811614611efd565b6145a5565b005b610348915060203d60201161034e575b61034081836104dc565b810190611ec7565b5f61030a565b503d610336565b611edc565b5f80fd5b6001600160a01b0381160361035a57565b3461035a5760a036600319011261035a5760043561038c8161035e565b61040060243561039b8161035e565b6044356103a78161035e565b606435906103b48261035e565b608435926103c18461035e565b5f54956103e660ff600889901c16158098819961047f575b811561045f575b50611f13565b866103f7600160ff195f5416175f55565b61044857611f76565b61040657005b61041461ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b61045a61010061ff00195f5416175f55565b611f76565b303b15915081610471575b505f6103e0565b60ff1660011490505f61046a565b600160ff82161091506103d9565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176104bc57604052565b61048d565b608081019081106001600160401b038211176104bc57604052565b90601f801991011681019081106001600160401b038211176104bc57604052565b6040519061050d610100836104dc565b565b6040519061050d6040836104dc565b6040519061050d6060836104dc565b6040519061050d60a0836104dc565b9061050d60405192836104dc565b60409060e319011261035a5760405190610563826104a1565b60e4358252610104356020830152565b919082604091031261035a5760405161058b816104a1565b6020808294803584520135910152565b9080601f8301121561035a57604051916105b66040846104dc565b82906040810192831161035a57905b8282106105d25750505090565b81358152602091820191016105c5565b90608060631983011261035a576040516105fb816104a1565b6020610616829461060d81606461059b565b845260a461059b565b910152565b919060808382031261035a57602061061660405192610639846104a1565b60408496610647838261059b565b86520161059b565b3461035a5761012036600319011261035a57600435604036602319011261035a576106a76040918251610681816104a1565b60243581526044356020820152610697366105e2565b906106a13661054a565b9261202b565b8251911515825215156020820152f35b5f91031261035a57565b3461035a575f36600319011261035a57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a5760cd546040516001600160a01b039091168152602090f35b63ffffffff81160361035a57565b359061050d82610729565b3461035a57602036600319011261035a5763ffffffff60043561076481610729565b165f5260cb602052602060405f2054604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561079d81610729565b165f5260ca602052602060405f2054604051908152f35b6001600160401b0381116104bc5760051b60200190565b90602080835192838152019201905f5b8181106107e85750505090565b82518452602093840193909201916001016107db565b90602061080f9281815201906107cb565b90565b3461035a57604036600319011261035a5760043561082f8161035e565b602435906001600160401b03821161035a573660238301121561035a5781600401359161085b836107b4565b9261086960405194856104dc565b8084526024602085019160051b8301019136831161035a57602401905b8282106108aa576108a661089a8686612195565b604051918291826107fe565b0390f35b6020809183356108b98161035e565b815201910190610886565b6001600160401b0381116104bc57601f01601f191660200190565b9291926108eb826108c4565b916108f960405193846104dc565b82948184528183011161035a578281602093845f960137010152565b9080602083519182815201916020808360051b8301019401925f915b83831061094057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b8082106109805750505060208060019297019301930191939290610931565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610961565b3461035a57606036600319011261035a576004356109d98161035e565b6024356001600160401b03811161035a573660238201121561035a576108a691610a10610a229236906024816004013591016108df565b60443591610a1d83610729565b6123d3565b604051918291602083526020830190610915565b3461035a575f36600319011261035a5760d1546040516001600160a01b039091168152602090f35b8015150361035a57565b3461035a57602036600319011261035a57600435610a8581610a5e565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91610afa575b506001600160a01b03163303610aeb5761032490614a80565b637070f3b160e11b5f5260045ffd5b610b1c915060203d602011610b22575b610b1481836104dc565b81019061225a565b5f610ad2565b503d610b0a565b9080601f8301121561035a578135610b40816107b4565b92610b4e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610b765750505090565b8135815260209182019101610b69565b60206040818301928281528451809452019201905f5b818110610ba95750505090565b82516001600160a01b0316845260209384019390920191600101610b9c565b3461035a57604036600319011261035a57600435610be58161035e565b6024356001600160401b03811161035a57610c04903690600401610b29565b610c0e8151612133565b916001600160a01b03165f5b8251811015610cab57806020610c33610c539386612172565b5160405180948192630a5aec1960e21b8352600483019190602083019252565b0381865afa91821561035557600192610c87915f91610c8d575b50610c788388612172565b6001600160a01b039091169052565b01610c1a565b610ca5915060203d8111610b2257610b1481836104dc565b5f610c6d565b604051806108a68682610b86565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b90602080835192838152019201905f5b818110610d035750505090565b825163ffffffff16845260209384019390920191600101610cf6565b90602082526060610d6d610d58610d4284516080602088015260a0870190610ce6565b6020850151868203601f19016040880152610ce6565b6040840151858203601f190184870152610ce6565b910151916080601f1982840301910152815180825260208201916020808360051b8301019401925f915b838310610da657505050505090565b9091929394602080610dc4600193601f198682030187528951610ce6565b97019301930191939290610d97565b3461035a57608036600319011261035a57600435610df08161035e565b60243590610dfd82610729565b6044356001600160401b03811161035a57610e1c903690600401610cb9565b91606435926001600160401b03841161035a573660238501121561035a578360040135926001600160401b03841161035a573660248560051b8701011161035a576108a6956024610e6e9601936128e7565b60405191829182610d1f565b3461035a575f36600319011261035a5760405163237dfb4760e11b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557610ee5915f916103265750611ee7565b610324614571565b3461035a575f36600319011261035a57602060405167016345785d8a00008152f35b60ff81160361035a57565b3461035a57602036600319011261035a576020600160ff600435610f3d81610f0f565b161b806066541614604051908152f35b9081608091031261035a5790565b604090602319011261035a57602490565b9080601f8301121561035a578135610f83816107b4565b92610f9160405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610fb95750505090565b602080918335610fc881610729565b815201910190610fac565b81601f8201121561035a578035610fe9816107b4565b92610ff760405194856104dc565b81845260208085019260061b8401019281841161035a57602001915b838310611021575050505090565b60206040916110308486610573565b815201920191611013565b9080601f8301121561035a578135611052816107b4565b9261106060405194856104dc565b81845260208085019260051b8201019183831161035a5760208201905b83821061108c57505050505090565b81356001600160401b03811161035a576020916110ae87848094880101610f6c565b81520191019061107d565b9190916101808184031261035a576110cf6104fd565b9281356001600160401b03811161035a57816110ec918401610f6c565b845260208201356001600160401b03811161035a578161110d918401610fd3565b602085015260408201356001600160401b03811161035a5781611131918401610fd3565b6040850152611143816060840161061b565b60608501526111558160e08401610573565b60808501526101208201356001600160401b03811161035a578161117a918401610f6c565b60a08501526101408201356001600160401b03811161035a578161119f918401610f6c565b60c08501526101608201356001600160401b03811161035a576111c2920161103b565b60e0830152565b3461035a57608036600319011261035a576004356001600160401b03811161035a576111f9903690600401610f4d565b61120236610f5b565b906064356001600160401b03811161035a576112229036906004016110b9565b60cd549092906001600160a01b0316330361143057611245602083949301612d4f565b916113486112566040860186612d59565b9290946112b661126860608901612d4f565b9760405161128c8161127e602082019485612d8b565b03601f1981018352826104dc565b5190206112af61129b88612d4f565b63ffffffff165f5260ca60205260405f2090565b5414612e12565b6112e06112d96112c587612d4f565b63ffffffff165f5260cb60205260405f2090565b5415612e84565b8363ffffffff43169661132a6113226113197f000000000000000000000000000000000000000000000000000000000000000086612f15565b63ffffffff1690565b891115612f2f565b60405160208101906113408161127e8b85612faf565b519020613ce7565b919060ff5f9616955b8281106113ce577f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a86868661139361138761050f565b63ffffffff9094168452565b602083015260405160208101906113af8161127e868686613092565b5190206113be6112c583612d4f565b5561044360405192839283613092565b8061142a6114066114016113f56113e86001968851612172565b516001600160601b031690565b6001600160601b031690565b612fbf565b6114236113f58b61141e6113e88760208b0151612172565b612ffe565b1115613021565b01611351565b60405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606490fd5b60206040818301928281528451809452019201905f5b8181106114985750505090565b825184526020938401939092019160010161148b565b3461035a57606036600319011261035a576004356114cb8161035e565b6024356001600160401b03811161035a576114ea903690600401610b29565b604435916114f783610729565b6040516361c8a12f60e11b8152906001600160a01b03165f828061151f8688600484016130bc565b0381845afa918215610355575f92611603575b5061153d8351612133565b935f5b84518110156115f5576115538186612172565b519060208361156f6115658489612172565b5163ffffffff1690565b6040516304ec635160e01b8152600481019590955263ffffffff918216602486015216604484015282606481875afa8015610355576001925f916115c7575b50828060c01b03166115c08289612172565b5201611540565b6115e8915060203d81116115ee575b6115e081836104dc565b81019061285e565b5f6115ae565b503d6115d6565b604051806108a68882611475565b6116209192503d805f833e61161881836104dc565b81019061272d565b905f611532565b3461035a575f36600319011261035a576020606654604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561166681610729565b165f5260cc602052602060ff60405f2054166040519015158152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a5760c036600319011261035a576004356001600160401b03811161035a5761173a903690600401610f4d565b61174336610f5b565b90604036606319011261035a5760a4356001600160401b03811161035a57610324926117756064923690600401610fd3565b9261350a565b3461035a57606036600319011261035a5760243560043561179b82610729565b6044356001600160401b03811161035a576117ba903690600401610cb9565b60ce5491939092916001600160a01b0316330361189a57610324936118849361180461180b936117e8613ae9565b9586524363ffffffff16602087015263ffffffff166060860152565b36916108df565b604082015260405160208101906118268161127e8585613b0d565b51902061183b61129b60c95463ffffffff1690565b5560c95463ffffffff16907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c486040518061187c63ffffffff86169482613b0d565b0390a2612ee5565b63ffffffff1663ffffffff1960c954161760c955565b60405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608490fd5b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b81811061194a5750505090565b82516001600160601b031684526020938401939092019160010161193d565b3461035a57608036600319011261035a576004356024356001600160401b03811161035a5761199c903690600401610cb9565b90916044356119aa81610729565b606435926001600160401b03841161035a57611a0c946119d16119d79536906004016110b9565b93613ce7565b6040519283926040845260206119f88251604080880152608087019061192d565b910151848203603f1901606086015261192d565b9060208301520390f35b3461035a575f36600319011261035a57611a2e614c5c565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461035a575f36600319011261035a57602063ffffffff60c95416604051908152f35b3461035a575f36600319011261035a5760ce546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576033546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a5760cf546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a57602060ff609754166040519015158152f35b3461035a575f36600319011261035a5760d0546040516001600160a01b039091168152602090f35b60409061080f939281528160208201520190610915565b3461035a57606036600319011261035a57600435611bce8161035e565b602435604435611bdd81610729565b611c1e611be8612111565b9280611bf385612165565b526040516361c8a12f60e11b81526001600160a01b0386169490925f918491829187600484016130bc565b0381875afa9384156103555783611c48611319611565611c7d986020975f91611cdb575b50612165565b92604051968794859384936304ec635160e01b85526004850163ffffffff604092959493606083019683521660208201520152565b03915afa801561035557611cac925f91611cbc575b506001600160c01b031692611ca684614cb4565b906123d3565b906108a660405192839283611b9a565b611cd5915060203d6020116115ee576115e081836104dc565b5f611c92565b611cef91503d805f833e61161881836104dc565b5f611c42565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a57600435611d568161035e565b611d5e614c5c565b6001600160a01b03811615611d7657610324906145d7565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461035a575f36600319011261035a57602060405160648152f35b3461035a57602036600319011261035a5760043560405163755b36bd60e11b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91611ea8575b506001600160a01b03163303611e9957611e67606654198219811614611efd565b806066556040519081527f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c60203392a2005b63794821ff60e01b5f5260045ffd5b611ec1915060203d602011610b2257610b1481836104dc565b5f611e46565b9081602091031261035a575161080f81610a5e565b6040513d5f823e3d90fd5b15611eee57565b631d77d47760e21b5f5260045ffd5b15611f0457565b63c61dca5d60e01b5f5260045ffd5b15611f1a57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b611f7f906145d7565b60018060a01b03166001600160601b0360a01b60cd54161760cd5560018060a01b03166001600160601b0360a01b60ce54161760ce5560018060a01b03166001600160601b0360a01b60d054161760d05560018060a01b03166001600160601b0360a01b60cf54161760cf55565b634e487b7160e01b5f52603260045260245ffd5b9060028110156120125760051b0190565b611fed565b634e487b7160e01b5f52601260045260245ffd5b6121076120e461210d956120de6120d785875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e08401526101008301526120ae81610120840103601f1981018352826104dc565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614663565b906146a9565b926120de6120f96120f361470b565b94614802565b9161210261491e565b614663565b91614952565b9091565b6040805190919061212283826104dc565b6001815291601f1901366020840137565b9061213d826107b4565b61214a60405191826104dc565b828152809261215b601f19916107b4565b0190602036910137565b8051156120125760200190565b80518210156120125760209160051b010190565b9081602091031261035a575190565b9190916121a28351612133565b925f5b8151811015612255578060206121ce6121c16121f79486612172565b516001600160a01b031690565b6040516309aa152760e11b81526001600160a01b03909116600482015292839081906024820190565b03816001600160a01b0388165afa8015610355576001925f91612227575b506122208288612172565b52016121a5565b612248915060203d811161224e575b61224081836104dc565b810190612186565b5f612215565b503d612236565b505050565b9081602091031261035a575161080f8161035e565b90612279826107b4565b61228660405191826104dc565b82815260208193612299601f19916107b4565b0191015f5b8281106122aa57505050565b60608282015260200161229e565b908151811015612012570160200190565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516122fc816107b4565b9261230a60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106123325750505090565b8151815260209182019101612325565b9061234c826107b4565b61235960405191826104dc565b828152809261236a601f19916107b4565b015f5b81811061237957505050565b6040519060608201918083106001600160401b038411176104bc576020926040525f81525f838201525f60408201528282860101520161236d565b9081602091031261035a57516001600160601b038116810361035a5790565b604051636830483560e01b815293919291906001600160a01b0316602085600481845afa948515610355575f956126e8575b50604051634f4c91e160e11b815294602086600481855afa918215610355576004965f936126c6575b5060209060405197888092632efa2ca360e11b82525afa958615610355575f966126a5575b50612461859392955161226f565b945f935b805185101561269b5761249261248c61247e87846122b8565b516001600160f81b03191690565b60f81c90565b604051638902624560e01b815260ff8216600482015263ffffffff88166024820152909490925f846044816001600160a01b0385165afa938415610355575f94612677575b506124e28451612342565b6124ec888b612172565b526124f7878a612172565b505f5b8451811015612666578060206125136125359388612172565b518d60405180809681946308f6629d60e31b8352600483019190602083019252565b03916001600160a01b03165afa918215610355575f92612646575b5061255b8187612172565b518a60208a61256a858b612172565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff929092166044830152816064816001600160a01b038d165afa938415610355576125fd8c8f6125f860019861260f9789975f92612616575b506125e36125d461051e565b6001600160a01b039098168852565b60208701526001600160601b03166040860152565b612172565b51906126098383612172565b52612172565b50016124fa565b61263891925060203d811161263f575b61263081836104dc565b8101906123b4565b905f6125c8565b503d612626565b61265f91925060203d8111610b2257610b1481836104dc565b905f612550565b506001909601959094509150612465565b6126949194503d805f833e61268c81836104dc565b8101906122c9565b925f6124d7565b5050509350505090565b6126bf91965060203d602011610b2257610b1481836104dc565b945f612453565b60209193506126e190823d8411610b2257610b1481836104dc565b929061242e565b61270291955060203d602011610b2257610b1481836104dc565b935f612405565b60405190612716826104c1565b606080838181528160208201528160408201520152565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a578151612760816107b4565b9261276e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106127965750505090565b6020809183516127a581610729565b815201910190612789565b63ffffffff909116815260406020820181905281018390526001600160fb1b03831161035a5760609260051b809284830137010190565b908060209392818452848401375f828201840152601f01601f1916010190565b60409063ffffffff61080f959316815281602082015201916127e7565b634e487b7160e01b5f52601160045260245ffd5b60ff1660ff81146128495760010190565b612824565b91908110156120125760051b0190565b9081602091031261035a57516001600160c01b038116810361035a5790565b1561288457565b6325ec6c1f60e01b5f5260045ffd5b90821015612012570190565b9081602091031261035a575161080f81610729565b5f1981146128495760010190565b916128e060209263ffffffff929695966040865260408601916127e7565b9416910152565b95939495929091926128f7612709565b50604051636830483560e01b8152936001600160a01b03919091169190602085600481865afa948515610355575f95612d2e575b50612934612709565b946040516361c8a12f60e11b81525f81806129548d8d8b600485016127b0565b0381885afa908115610355575f91612d14575b5086526040516340e03a8160e11b81526001600160a01b039190911692905f818061299785878b60048501612807565b0381875afa908115610355575f91612cfa575b5060408701526129b98161226f565b9860608701998a525f5b60ff811683811015612c4557885f6129ec838f6129df88612133565b9051906126098383612172565b505f8a868f5b818410612a6f575050505090508c612a0982612133565b915f5b818110612a3657505091612a2b91612a31949351906126098383612172565b50612838565b6129c3565b80612a69612a54611565600194612a4e8a8951612172565b51612172565b612a5e8388612172565b9063ffffffff169052565b01612a0c565b61156584612a848160209695612a8c9561284e565b359751612172565b6040516304ec635160e01b8152600481019690965263ffffffff9182166024870152166044850152836064818d5afa801561035557888f888a918f94612b316001612b2481938d809d5f92612c19575b5061248c612b00612b0e92612af9878060c01b038616151561287d565b8b8d612893565b356001600160f81b03191690565b6001600160c01b0391821660ff919091161c1690565b166001600160c01b031690565b14612b4d575b5050505050600191925001908a918a868f6129f2565b8597612b6f93612b68602097999861248c95612b009561284e565b3595612893565b60405163dd9846b960e01b8152600481019290925260ff16602482015263ffffffff939093166044840152826064818c5afa908115610355578f612bcd90612bd29383886001975f93612be1575b50612a4e90612a5e939451612172565b6128b4565b905082918a888f888a91612b37565b612a5e935090612c0a612a4e9260203d8111612c12575b612c0281836104dc565b81019061289f565b935090612bbd565b503d612bf8565b612b0e919250612b00612c3c61248c9260203d81116115ee576115e081836104dc565b93925050612adc565b505050929095975060049496506020915060405194858092632efa2ca360e11b82525afa90811561035557612c9b945f948593612cd9575b5060405163354952a360e21b815295869485938493600485016128c2565b03916001600160a01b03165afa908115610355575f91612cbf575b50602082015290565b612cd391503d805f833e61161881836104dc565b5f612cb6565b612cf391935060203d602011610b2257610b1481836104dc565b915f612c7d565b612d0e91503d805f833e61161881836104dc565b5f6129aa565b612d2891503d805f833e61161881836104dc565b5f612967565b612d4891955060203d602011610b2257610b1481836104dc565b935f61292b565b3561080f81610729565b903590601e198136030182121561035a57018035906001600160401b03821161035a5760200191813603831361035a57565b602081528135602082015263ffffffff6020830135612da981610729565b1660408201526040820135601e198336030181121561035a578201906020823592016001600160401b03831161035a57823603811361035a57612e076060612e0060809361080f96858488015260a08701916127e7565b9501610737565b63ffffffff16910152565b15612e1957565b60405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b15612e8b57565b60405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608490fd5b63ffffffff60019116019063ffffffff821161284957565b63ffffffff60649116019063ffffffff821161284957565b9063ffffffff8091169116019063ffffffff821161284957565b15612f3657565b60405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608490fd5b6020809163ffffffff8135612fa581610729565b1684520135910152565b60408101929161050d9190612f91565b9060648202918083046064149015171561284957565b9060068202918083046006149015171561284957565b8181029291811591840414171561284957565b906001600160601b03809116911602906001600160601b03821691820361284957565b1561302857565b608460405162461bcd60e51b815260206004820152604060248201527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152fd5b90929160206060916130a8846080810197612f91565b63ffffffff81511660408501520151910152565b60409063ffffffff61080f949316815281602082015201906107cb565b156130e057565b60405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608490fd5b9092916020606091613145846080810197612f91565b63ffffffff813561315581610729565b1660408501520135910152565b1561316957565b60405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b156131db57565b60405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a490fd5b1561325957565b60405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b8181106132ee5750505090565b82518452602093840193909201916001016132e1565b1561330b57565b60405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a490fd5b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516133c2816107b4565b926133d060405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106133f85750505090565b6020809183516134078161035e565b8152019101906133eb565b604051906134216040836104dc565b601282527139b630b9b42fba3432afb7b832b930ba37b960711b6020830152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91906020835260c083019260018060a01b03825116602082015263ffffffff602083015116604082015260408201519360a060608301528451809152602060e083019501905f5b8181106134eb5750505060806134d661080f94956060850151601f1985830301848601526107cb565b9201519060a0601f1982850301910152613442565b82516001600160a01b03168752602096870196909201916001016134ad565b9392919092600161351a85612d4f565b9460206135d6883561354561353d8a63ffffffff165f5260cb60205260405f2090565b5415156130d9565b6135806135608a63ffffffff165f5260cb60205260405f2090565b54604051858101906135778161127e8d8b8661312f565b51902014613162565b6135ab6135a561359e8b63ffffffff165f5260cc60205260405f2090565b5460ff1690565b156131d4565b6135d06135c26113196135bd8a612d4f565b612efd565b63ffffffff43161115613252565b80612feb565b9101351414613ab7576135e98351612133565b935f5b8451811015613629578061361861360560019388612172565b5180515f526020015160205260405f2090565b6136228289612172565b52016135ec565b5090929391946136636020820196602061364289612d4f565b6040516136578161127e8a86830195866132c4565b51902091013514613304565b61366d8551612133565b957f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316945f5b875181101561371d578060206136b46136d49389612172565b516040518094819263745dcd7360e11b8352600483019190602083019252565b03818b5afa918215610355576001926136f9915f916136ff575b50610c78838d612172565b0161369b565b613717915060203d8111610b2257610b1481836104dc565b5f6136ee565b509296955092509261377c61374561374d604087019561373d8789612d59565b939091612d4f565b9236916108df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123d3565b905f915b8051831015613a59575f935b6137968483612172565b5151851015613a4c576137d6986020806137b488612a4e8988612172565b510151604051809c81926308f6629d60e31b8352600483019190602083019252565b0381875afa998a15610355575f9a613a2c575b505f5b8951811015613a1b576138116138056121c1838d612172565b6001600160a01b031690565b6001600160a01b038c1614613828576001016137ec565b50969790916138e4959693925b5f8a61388f60ff61386761248c612b008c6138618d61385b60d15460018060a01b031690565b98612d59565b90612893565b61388161387261050f565b6001600160a01b039095168552565b1663ffffffff166020830152565b60d0546138a690613805906001600160a01b031681565b60405163105dea1f60e21b815282516001600160a01b0316600482015260209092015163ffffffff1660248301529098899190829081906044820190565b03915afa968715610355575f976139f7575b506139018751612133565b985f5b8a5181101561392a578067016345785d8a00006139236001938e612172565b5201613904565b509a929998909661396860ff61394f61248c612b008b8f8c9f999b9c61386191612d59565b61395a6125d461052d565b1663ffffffff166020860152565b6040840152606083015261397a613412565b608083015260cf5461399690613805906001600160a01b031681565b803b1561035a57604051636a669b4160e01b8152925f9184918290849082906139c29060048301613466565b03925af1918215610355576001926139dd575b50019361378c565b806139eb5f6139f1936104dc565b806106b7565b5f6139d5565b613a149197503d805f833e613a0c81836104dc565b81019061338f565b955f6138f6565b50969790916138e495969392613835565b613a45919a5060203d8111610b2257610b1481836104dc565b985f6137e9565b9350600190920191613780565b5050509392505050613a89613a7c8263ffffffff165f5260cc60205260405f2090565b805460ff19166001179055565b63ffffffff3391167fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec5f80a3565b9350505063ffffffff3391167ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb055f80a3565b60405190613af6826104c1565b5f6060838281528260208201528160408201520152565b602081528151602082015263ffffffff6020830151166040820152608063ffffffff6060613b486040860151848387015260a0860190613442565b9401511691015290565b60405190613b5f826104a1565b60606020838281520152565b15613b7257565b62f8202d60e51b5f5260045ffd5b15613b8757565b6343714afd60e01b5f5260045ffd5b15613b9d57565b635f832f4160e01b5f5260045ffd5b15613bb357565b634b874f4560e01b5f5260045ffd5b9081602091031261035a575161080f81610f0f565b5f1981019190821161284957565b15613bec57565b633fdc650560e21b5f5260045ffd5b906001820180921161284957565b906002820180921161284957565b906003820180921161284957565b906004820180921161284957565b906005820180921161284957565b9190820180921161284957565b15613c5557565b63affc5edb60e01b5f5260045ffd5b9081602091031261035a575167ffffffffffffffff198116810361035a5790565b15613c8c57565b63e1310aed60e01b5f5260045ffd5b906001600160601b03809116911603906001600160601b03821161284957565b15613cc257565b6367988d3360e01b5f5260045ffd5b15613cd857565b63ab1b236b60e01b5f5260045ffd5b949392909193613cf5613b52565b50613d01851515613b6b565b604084015151851480614563575b80614555575b80614547575b613d2490613b80565b613d3660208501515185515114613b96565b613d4d63ffffffff431663ffffffff841610613bac565b613d5561050f565b5f81525f602082015292613d67613b52565b613d7087612133565b6020820152613d7e87612133565b8152613d88613b52565b92613d97602088015151612133565b8452613da7602088015151612133565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557613e10915f91614518575b50613e0b368b876108df565b614abe565b985f965b60208901518051891015613f6f57602088613e646115658c613e5c8f96868e613e41613605868095612172565b613e4e8484840151612172565b5282613f3c575b0151612172565b519551612172565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa918215610355576120de8a613f118f613f0a8f8460208f92613f0193613ef98460019e613f179e5f91613f1f575b508f8060c01b03169251612172565b520151612172565b51938d51612172565b5116614ae9565b90614b1a565b970196613e14565b613f369150863d81116115ee576115e081836104dc565b5f613eea565b613f6a613f4c8484840151612172565b51613f6384840151613f5d87613bd7565b90612172565b5110613be5565b613e55565b50909597949650613f84919893929950614bd7565b91613f9160975460ff1690565b908115614510576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f916144f1575b5091905b5f925b8184106140425750505050509261402961402461401d61403c958561127e986080606060209901519201519261202b565b9190613cbb565b613cd1565b01516040519283916020830195866132c4565b51902090565b92989596909399919794878b888c888d6143eb575b6115658260a061409761248c612b008461409f976140916140836136058f9c604060209f9e0151612172565b67ffffffffffffffff191690565b9b612893565b970151612172565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141636115658f958f9061415b8f978f96848f61415560c09661414e848f60209f90613e55612b009960409361248c9c5f916143bd575b5067ffffffffffffffff19918216911614613c85565b51906146a9565b9c612893565b960151612172565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141f0918c8f925f92614399575b5060206141e292930151612172565b906001600160601b03169052565b6142108c6141e28c6142096113e8826020860151612172565b9251612172565b5f985f5b60208a015151811015614380578b8d6142528961424561248c612b00868f8961423d9151612172565b519487612893565b60ff161c60019081161490565b614261575b5050600101614214565b8a8a6142e3859f948f9686612a4e8f9360e061429a61156595602061429261248c612b00839f6142a39c8991612893565b9a0151612172565b519b0151612172565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355578f61434f908f936001959486955f9261435a575b506143496141e2929351936143446113e88487612172565b613c9b565b92612172565b019a90508b8d614257565b6141e292506143796143499160203d811161263f5761263081836104dc565b925061432c565b5093919796996001919699509a94929a01929190613fec565b6141e292506143b6602091823d811161263f5761263081836104dc565b92506141d3565b60206143de92503d81116143e4575b6143d681836104dc565b810190613c64565b5f614138565b503d6143cc565b6144289450614405925061248c91612b0091602095612893565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103555760208961409f8f938f60a08f9761248c612b008f8f906140916140836136058f60408b96918f88936115659f6144ac906144b2936140979f5f926144c8575b5063ffffffff809116931690613c41565b11613c4e565b5050505050509750505050505092935050614057565b602063ffffffff92935082916144e9913d811161224e5761224081836104dc565b92915061449b565b61450a915060203d602011612c1257612c0281836104dc565b5f613fe5565b5f9190613fe9565b61453a915060203d602011614540575b61453281836104dc565b810190613bc2565b5f613dff565b503d614528565b5060e0840151518514613d1b565b5060c0840151518514613d15565b5060a0840151518514613d0f565b5f196066556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b806066556040519081527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6040519061462c826104a1565b5f6020838281520152565b6040519061018061464881846104dc565b368337565b6040519061465c6020836104dc565b6020368337565b9190604090606061467261461f565b948592602085519261468485856104dc565b8436853780518452015160208301528482015260076107cf195a01fa156146a757565bfe5b6020929160806040926146ba61461f565b958693818651936146cb86866104dc565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa80156146a757156146fc57565b63d4b68fd760e01b5f5260045ffd5b604051614717816104a1565b604090815161472683826104dc565b823682378152602082519161473b84846104dc565b833684370152805161474d82826104dc565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60208201528151906147a383836104dc565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526147f8835193846104dc565b8252602082015290565b5f516020614df75f395f51905f529061481961461f565b505f919006602060c0835b614919575f935f516020614df75f395f51905f526003818681818009090860405161484f85826104dc565b8436823784818560405161486382826104dc565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614df75f395f51905f5260a082015260056107cf195a01fa80156146a7576148cd90614de0565b5191614919575f516020614df75f395f51905f528280091461490457505f516020614df75f395f51905f5260015f94089293614824565b9293505061491061050f565b92835282015290565b612017565b61492661461f565b50604051614933816104a1565b600181526002602082015290565b90600c8110156120125760051b0190565b93929091614960604061053c565b9485526020850152614972604061053c565b9182526020820152614982614637565b925f5b600281106149af5750505060206101809261499e61464d565b93849160086201d4c0fa9151151590565b806149bb600192612fd5565b6149c58285612001565b51516149d18289614941565b5260206149de8386612001565b5101516149f36149ed83613bfb565b89614941565b526149fe8286612001565b515151614a0d6149ed83613c09565b52614a23614a1b8387612001565b515160200190565b51614a306149ed83613c17565b526020614a3d8387612001565b51015151614a4d6149ed83613c25565b52614a79614a73614a6c6020614a63868a612001565b51015160200190565b5192613c33565b88614941565b5201614985565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b906001614acc60ff93614d68565b928392161b1115614ada5790565b63ca95733360e01b5f5260045ffd5b805f915b614af5575090565b5f1981018181116128495761ffff9116911661ffff8114612849576001019080614aed565b90614b2361461f565b5061ffff811690610200821015614bc85760018214614bc357614b4461050f565b5f81525f602082015292906001905f925b61ffff8316851015614b6957505050505090565b600161ffff831660ff86161c811614614ba3575b6001614b99614b8e8360ff946146a9565b9460011b61fffe1690565b9401169291614b55565b946001614b99614b8e614bb88960ff956146a9565b989350505050614b7d565b505090565b637fc4ea7d60e11b5f5260045ffd5b614bdf61461f565b50805190811580614c50575b15614c0c575050604051614c006040826104dc565b5f81525f602082015290565b60205f516020614df75f395f51905f52910151065f516020614df75f395f51905f52035f516020614df75f395f51905f52811161284957604051916147f8836104a1565b50602081015115614beb565b6033546001600160a01b03163303614c7057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff614cc082614ae9565b16614cca816108c4565b90614cd860405192836104dc565b808252614ce7601f19916108c4565b013660208301375f5f5b8251821080614d47575b15614d40576001811b8416614d19575b614d14906128b4565b614cf1565b906001614d149160ff60f81b8460f81b165f1a614d3682876122b8565b5301919050614d0b565b5050905090565b506101008110614cfb565b15614d5957565b631019106960e31b5f5260045ffd5b90610100825111614dd157815115614dcc57602082015160019060f81c81901b5b8351821015614dc757600190614db2614da861248c61247e86896122b8565b60ff600191161b90565b90614dbe818311614d52565b17910190614d89565b925050565b5f9150565b637da54e4760e11b5f5260045ffd5b15614de757565b63d51edae360e01b5f5260045ffdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bc7e56e7001d31fed036cf53564fe2861a94feeed917b3c5dc5c111a0d36872164736f6c634300081b0033
+  /// ```
+  #[rustfmt::skip]
+  #[allow(clippy::all)]
+  pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
+      b"`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x13d9\xDD\x14a\x02\x9AW\x80c\x14YEz\x14a\x02\x95W\x80c\x17\x1F\x1D[\x14a\x02\x90W\x80c\x1A\xD41\x89\x14a\x01\xE6W\x80c$Z{\xFC\x14a\x02\x8BW\x80c,\xB2#\xD5\x14a\x02\x86W\x80c-\x89\xF6\xFC\x14a\x02\x81W\x80c1\xB3k\xD9\x14a\x02|W\x80c5c\xB0\xD1\x14a\x02wW\x80c9\x98\xFD\xD3\x14a\x02rW\x80cAl~^\x14a\x02mW\x80cM+W\xFE\x14a\x02hW\x80cOs\x9Ft\x14a\x02cW\x80cY\\jg\x14a\x02^W\x80cZ-\x7F\x02\x14a\x02YW\x80cZ\xC8j\xB7\x14a\x02TW\x80c[\xAE\xC9\xA0\x14a\x02OW\x80c\\\x15Vb\x14a\x02JW\x80c\\\x97Z\xBB\x14a\x02EW\x80c]\xEC\xC3\xF5\x14a\x02@W\x80c]\xF4YF\x14a\x02;W\x80ch0H5\x14a\x026W\x80ckS.\x9E\x14a\x021W\x80ck\x92x~\x14a\x02,W\x80cm\x14\xA9\x87\x14a\x02'W\x80cn\xFBF6\x14a\x02\"W\x80cqP\x18\xA6\x14a\x02\x1DW\x80cr\xD1\x8E\x8D\x14a\x02\x0EW\x80cz\xFA\x1E\xED\x14a\x02\x18W\x80c\x88o\x11\x95\x14a\x02\x13W\x80c\x8B\0\xCE|\x14a\x02\x0EW\x80c\x8D\xA5\xCB[\x14a\x02\tW\x80c\x9B)\x0E\x98\x14a\x02\x04W\x80c\xB9\x8D\t\x08\x14a\x01\xFFW\x80c\xCA\x8A\xA7\xC7\x14a\x01\xFAW\x80c\xCE\xFD\xC1\xD4\x14a\x01\xF5W\x80c\xDF\\\xF7#\x14a\x01\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xEBW\x80c\xF5\xC9\x89\x9D\x14a\x01\xE6W\x80c\xF6<[\xAB\x14a\x01\xE1Wc\xFA\xBC\x1C\xBC\x14a\x01\xDCW_\x80\xFD[a\x1D\xE5V[a\x1D\xCAV[a\x06\xC1V[a\x1D9V[a\x1C\xF5V[a\x1B\xB1V[a\x1BrV[a\x1BPV[a\x1B(V[a\x1B\0V[a\x1AqV[a\x1A\xBCV[a\x1A\x94V[a\x1A\x16V[a\x19iV[a\x18\xE9V[a\x17{V[a\x17\nV[a\x16\xC6V[a\x16\x82V[a\x16DV[a\x16'V[a\x14\xAEV[a\x11\xC9V[a\x0F\x1AV[a\x0E\xEDV[a\x0EzV[a\r\xD3V[a\x0B\xC8V[a\nhV[a\n6V[a\t\xBCV[a\x08\x12V[a\x07{V[a\x07BV[a\x07\x01V[a\x06OV[a\x03oV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\x90` \x82`$\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UWa\x03$\x92a\x03\x10\x91_\x91a\x03&W[Pa\x1E\xE7V[a\x03\x1F`fT\x82\x81\x16\x14a\x1E\xFDV[aE\xA5V[\0[a\x03H\x91P` =` \x11a\x03NW[a\x03@\x81\x83a\x04\xDCV[\x81\x01\x90a\x1E\xC7V[_a\x03\nV[P=a\x036V[a\x1E\xDCV[_\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03ZWV[4a\x03ZW`\xA06`\x03\x19\x01\x12a\x03ZW`\x045a\x03\x8C\x81a\x03^V[a\x04\0`$5a\x03\x9B\x81a\x03^V[`D5a\x03\xA7\x81a\x03^V[`d5\x90a\x03\xB4\x82a\x03^V[`\x845\x92a\x03\xC1\x84a\x03^V[_T\x95a\x03\xE6`\xFF`\x08\x89\x90\x1C\x16\x15\x80\x98\x81\x99a\x04\x7FW[\x81\x15a\x04_W[Pa\x1F\x13V[\x86a\x03\xF7`\x01`\xFF\x19_T\x16\x17_UV[a\x04HWa\x1FvV[a\x04\x06W\0[a\x04\x14a\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90\x80` \x81\x01[\x03\x90\xA1\0[a\x04Za\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x1FvV[0;\x15\x91P\x81a\x04qW[P_a\x03\xE0V[`\xFF\x16`\x01\x14\x90P_a\x04jV[`\x01`\xFF\x82\x16\x10\x91Pa\x03\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[a\x04\x8DV[`\x80\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[`@Q\x90a\x05\ra\x01\0\x83a\x04\xDCV[V[`@Q\x90a\x05\r`@\x83a\x04\xDCV[`@Q\x90a\x05\r``\x83a\x04\xDCV[`@Q\x90a\x05\r`\xA0\x83a\x04\xDCV[\x90a\x05\r`@Q\x92\x83a\x04\xDCV[`@\x90`\xE3\x19\x01\x12a\x03ZW`@Q\x90a\x05c\x82a\x04\xA1V[`\xE45\x82Ra\x01\x045` \x83\x01RV[\x91\x90\x82`@\x91\x03\x12a\x03ZW`@Qa\x05\x8B\x81a\x04\xA1V[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW`@Q\x91a\x05\xB6`@\x84a\x04\xDCV[\x82\x90`@\x81\x01\x92\x83\x11a\x03ZW\x90[\x82\x82\x10a\x05\xD2WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x05\xC5V[\x90`\x80`c\x19\x83\x01\x12a\x03ZW`@Qa\x05\xFB\x81a\x04\xA1V[` a\x06\x16\x82\x94a\x06\r\x81`da\x05\x9BV[\x84R`\xA4a\x05\x9BV[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x03ZW` a\x06\x16`@Q\x92a\x069\x84a\x04\xA1V[`@\x84\x96a\x06G\x83\x82a\x05\x9BV[\x86R\x01a\x05\x9BV[4a\x03ZWa\x01 6`\x03\x19\x01\x12a\x03ZW`\x045`@6`#\x19\x01\x12a\x03ZWa\x06\xA7`@\x91\x82Qa\x06\x81\x81a\x04\xA1V[`$5\x81R`D5` \x82\x01Ra\x06\x976a\x05\xE2V[\x90a\x06\xA16a\x05JV[\x92a +V[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[_\x91\x03\x12a\x03ZWV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qc\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCDT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[c\xFF\xFF\xFF\xFF\x81\x16\x03a\x03ZWV[5\x90a\x05\r\x82a\x07)V[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07d\x81a\x07)V[\x16_R`\xCB` R` `@_ T`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07\x9D\x81a\x07)V[\x16_R`\xCA` R` `@_ T`@Q\x90\x81R\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x05\x1B` \x01\x90V[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x07\xE8WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x07\xDBV[\x90` a\x08\x0F\x92\x81\x81R\x01\x90a\x07\xCBV[\x90V[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x08/\x81a\x03^V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW6`#\x83\x01\x12\x15a\x03ZW\x81`\x04\x015\x91a\x08[\x83a\x07\xB4V[\x92a\x08i`@Q\x94\x85a\x04\xDCV[\x80\x84R`$` \x85\x01\x91`\x05\x1B\x83\x01\x01\x916\x83\x11a\x03ZW`$\x01\x90[\x82\x82\x10a\x08\xAAWa\x08\xA6a\x08\x9A\x86\x86a!\x95V[`@Q\x91\x82\x91\x82a\x07\xFEV[\x03\x90\xF3[` \x80\x91\x835a\x08\xB9\x81a\x03^V[\x81R\x01\x91\x01\x90a\x08\x86V[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x08\xEB\x82a\x08\xC4V[\x91a\x08\xF9`@Q\x93\x84a\x04\xDCV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x03ZW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80` \x83Q\x91\x82\x81R\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\t@WPPPPP\x90V[\x90\x91\x92\x93\x94`\x1F\x19\x82\x82\x03\x01\x83R\x85Q\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_\x90[\x80\x82\x10a\t\x80WPPP` \x80`\x01\x92\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\t1V[\x90\x91\x92` ```\x01\x92`\x01`\x01``\x1B\x03`@\x88Q\x86\x80`\xA0\x1B\x03\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x16`@\x82\x01R\x01\x94\x01\x92\x01\x90a\taV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\t\xD9\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW6`#\x82\x01\x12\x15a\x03ZWa\x08\xA6\x91a\n\x10a\n\"\x926\x90`$\x81`\x04\x015\x91\x01a\x08\xDFV[`D5\x91a\n\x1D\x83a\x07)V[a#\xD3V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\t\x15V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD1T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x80\x15\x15\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\n\x85\x81a\n^V[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a\n\xFAW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\n\xEBWa\x03$\x90aJ\x80V[cpp\xF3\xB1`\xE1\x1B_R`\x04_\xFD[a\x0B\x1C\x91P` =` \x11a\x0B\"W[a\x0B\x14\x81\x83a\x04\xDCV[\x81\x01\x90a\"ZV[_a\n\xD2V[P=a\x0B\nV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0B@\x81a\x07\xB4V[\x92a\x0BN`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0BvWPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x0BiV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x0B\xA9WPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0B\x9CV[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x0B\xE5\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0C\x04\x906\x90`\x04\x01a\x0B)V[a\x0C\x0E\x81Qa!3V[\x91`\x01`\x01`\xA0\x1B\x03\x16_[\x82Q\x81\x10\x15a\x0C\xABW\x80` a\x0C3a\x0CS\x93\x86a!rV[Q`@Q\x80\x94\x81\x92c\nZ\xEC\x19`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x86Z\xFA\x91\x82\x15a\x03UW`\x01\x92a\x0C\x87\x91_\x91a\x0C\x8DW[Pa\x0Cx\x83\x88a!rV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[\x01a\x0C\x1AV[a\x0C\xA5\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x0CmV[`@Q\x80a\x08\xA6\x86\x82a\x0B\x86V[\x91\x81`\x1F\x84\x01\x12\x15a\x03ZW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW` \x83\x81\x86\x01\x95\x01\x01\x11a\x03ZWV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\r\x03WPPP\x90V[\x82Qc\xFF\xFF\xFF\xFF\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xF6V[\x90` \x82R``a\rma\rXa\rB\x84Q`\x80` \x88\x01R`\xA0\x87\x01\x90a\x0C\xE6V[` \x85\x01Q\x86\x82\x03`\x1F\x19\x01`@\x88\x01Ra\x0C\xE6V[`@\x84\x01Q\x85\x82\x03`\x1F\x19\x01\x84\x87\x01Ra\x0C\xE6V[\x91\x01Q\x91`\x80`\x1F\x19\x82\x84\x03\x01\x91\x01R\x81Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\r\xA6WPPPPP\x90V[\x90\x91\x92\x93\x94` \x80a\r\xC4`\x01\x93`\x1F\x19\x86\x82\x03\x01\x87R\x89Qa\x0C\xE6V[\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\r\x97V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045a\r\xF0\x81a\x03^V[`$5\x90a\r\xFD\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0E\x1C\x906\x90`\x04\x01a\x0C\xB9V[\x91`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`#\x85\x01\x12\x15a\x03ZW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`$\x85`\x05\x1B\x87\x01\x01\x11a\x03ZWa\x08\xA6\x95`$a\x0En\x96\x01\x93a(\xE7V[`@Q\x91\x82\x91\x82a\r\x1FV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R` \x81`$\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UWa\x0E\xE5\x91_\x91a\x03&WPa\x1E\xE7V[a\x03$aEqV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qg\x01cEx]\x8A\0\0\x81R\xF3[`\xFF\x81\x16\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW` `\x01`\xFF`\x045a\x0F=\x81a\x0F\x0FV[\x16\x1B\x80`fT\x16\x14`@Q\x90\x81R\xF3[\x90\x81`\x80\x91\x03\x12a\x03ZW\x90V[`@\x90`#\x19\x01\x12a\x03ZW`$\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0F\x83\x81a\x07\xB4V[\x92a\x0F\x91`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0F\xB9WPPP\x90V[` \x80\x91\x835a\x0F\xC8\x81a\x07)V[\x81R\x01\x91\x01\x90a\x0F\xACV[\x81`\x1F\x82\x01\x12\x15a\x03ZW\x805a\x0F\xE9\x81a\x07\xB4V[\x92a\x0F\xF7`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x03ZW` \x01\x91[\x83\x83\x10a\x10!WPPPP\x90V[` `@\x91a\x100\x84\x86a\x05sV[\x81R\x01\x92\x01\x91a\x10\x13V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x10R\x81a\x07\xB4V[\x92a\x10``@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x03ZW` \x82\x01\x90[\x83\x82\x10a\x10\x8CWPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW` \x91a\x10\xAE\x87\x84\x80\x94\x88\x01\x01a\x0FlV[\x81R\x01\x91\x01\x90a\x10}V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x03ZWa\x10\xCFa\x04\xFDV[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x10\xEC\x91\x84\x01a\x0FlV[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\r\x91\x84\x01a\x0F\xD3V[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x111\x91\x84\x01a\x0F\xD3V[`@\x85\x01Ra\x11C\x81``\x84\x01a\x06\x1BV[``\x85\x01Ra\x11U\x81`\xE0\x84\x01a\x05sV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11z\x91\x84\x01a\x0FlV[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\x9F\x91\x84\x01a\x0FlV[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xC2\x92\x01a\x10;V[`\xE0\x83\x01RV[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xF9\x906\x90`\x04\x01a\x0FMV[a\x12\x026a\x0F[V[\x90`d5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x12\"\x906\x90`\x04\x01a\x10\xB9V[`\xCDT\x90\x92\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x140Wa\x12E` \x83\x94\x93\x01a-OV[\x91a\x13Ha\x12V`@\x86\x01\x86a-YV[\x92\x90\x94a\x12\xB6a\x12h``\x89\x01a-OV[\x97`@Qa\x12\x8C\x81a\x12~` \x82\x01\x94\x85a-\x8BV[\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 a\x12\xAFa\x12\x9B\x88a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCA` R`@_ \x90V[T\x14a.\x12V[a\x12\xE0a\x12\xD9a\x12\xC5\x87a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15a.\x84V[\x83c\xFF\xFF\xFF\xFFC\x16\x96a\x13*a\x13\"a\x13\x19\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86a/\x15V[c\xFF\xFF\xFF\xFF\x16\x90V[\x89\x11\x15a//V[`@Q` \x81\x01\x90a\x13@\x81a\x12~\x8B\x85a/\xAFV[Q\x90 a<\xE7V[\x91\x90`\xFF_\x96\x16\x95[\x82\x81\x10a\x13\xCEW\x7F4\x9C\x1E\xE6\x0EN\x89r\xEE\x9D\xBAd,\x17tT=\\A6\x87\x9B\x7FL\xAA\xF0K\xF8\x1AHz*\x86\x86\x86a\x13\x93a\x13\x87a\x05\x0FV[c\xFF\xFF\xFF\xFF\x90\x94\x16\x84RV[` \x83\x01R`@Q` \x81\x01\x90a\x13\xAF\x81a\x12~\x86\x86\x86a0\x92V[Q\x90 a\x13\xBEa\x12\xC5\x83a-OV[Ua\x04C`@Q\x92\x83\x92\x83a0\x92V[\x80a\x14*a\x14\x06a\x14\x01a\x13\xF5a\x13\xE8`\x01\x96\x88Qa!rV[Q`\x01`\x01``\x1B\x03\x16\x90V[`\x01`\x01``\x1B\x03\x16\x90V[a/\xBFV[a\x14#a\x13\xF5\x8Ba\x14\x1Ea\x13\xE8\x87` \x8B\x01Qa!rV[a/\xFEV[\x11\x15a0!V[\x01a\x13QV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAggregator must be the caller\0\0\0`D\x82\x01R`d\x90\xFD[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x14\x98WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x14\x8BV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x14\xCB\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x14\xEA\x906\x90`\x04\x01a\x0B)V[`D5\x91a\x14\xF7\x83a\x07)V[`@Qca\xC8\xA1/`\xE1\x1B\x81R\x90`\x01`\x01`\xA0\x1B\x03\x16_\x82\x80a\x15\x1F\x86\x88`\x04\x84\x01a0\xBCV[\x03\x81\x84Z\xFA\x91\x82\x15a\x03UW_\x92a\x16\x03W[Pa\x15=\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a\x15\xF5Wa\x15S\x81\x86a!rV[Q\x90` \x83a\x15oa\x15e\x84\x89a!rV[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x95\x90\x95Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81\x87Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\x15\xC7W[P\x82\x80`\xC0\x1B\x03\x16a\x15\xC0\x82\x89a!rV[R\x01a\x15@V[a\x15\xE8\x91P` =\x81\x11a\x15\xEEW[a\x15\xE0\x81\x83a\x04\xDCV[\x81\x01\x90a(^V[_a\x15\xAEV[P=a\x15\xD6V[`@Q\x80a\x08\xA6\x88\x82a\x14uV[a\x16 \x91\x92P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[\x81\x01\x90a'-V[\x90_a\x152V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `fT`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x16f\x81a\x07)V[\x16_R`\xCC` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW`\xC06`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17:\x906\x90`\x04\x01a\x0FMV[a\x17C6a\x0F[V[\x90`@6`c\x19\x01\x12a\x03ZW`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x03$\x92a\x17u`d\x926\x90`\x04\x01a\x0F\xD3V[\x92a5\nV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`$5`\x045a\x17\x9B\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17\xBA\x906\x90`\x04\x01a\x0C\xB9V[`\xCET\x91\x93\x90\x92\x91`\x01`\x01`\xA0\x1B\x03\x163\x03a\x18\x9AWa\x03$\x93a\x18\x84\x93a\x18\x04a\x18\x0B\x93a\x17\xE8a:\xE9V[\x95\x86RCc\xFF\xFF\xFF\xFF\x16` \x87\x01Rc\xFF\xFF\xFF\xFF\x16``\x86\x01RV[6\x91a\x08\xDFV[`@\x82\x01R`@Q` \x81\x01\x90a\x18&\x81a\x12~\x85\x85a;\rV[Q\x90 a\x18;a\x12\x9B`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90V[U`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90\x7F\x16\x95\xB8\xD0n\xC8\0\xB4a^t\\\xFB[\xD0\x0C\x1F(ua]B\x92\\;Z\xFAT;\xB2LH`@Q\x80a\x18|c\xFF\xFF\xFF\xFF\x86\x16\x94\x82a;\rV[\x03\x90\xA2a.\xE5V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x19`\xC9T\x16\x17`\xC9UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask generator must be the calle`D\x82\x01R`9`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x19JWPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x19=V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x19\x9C\x906\x90`\x04\x01a\x0C\xB9V[\x90\x91`D5a\x19\xAA\x81a\x07)V[`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZWa\x1A\x0C\x94a\x19\xD1a\x19\xD7\x956\x90`\x04\x01a\x10\xB9V[\x93a<\xE7V[`@Q\x92\x83\x92`@\x84R` a\x19\xF8\x82Q`@\x80\x88\x01R`\x80\x87\x01\x90a\x19-V[\x91\x01Q\x84\x82\x03`?\x19\x01``\x86\x01Ra\x19-V[\x90` \x83\x01R\x03\x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZWa\x1A.aL\\V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` c\xFF\xFF\xFF\xFF`\xC9T\x16`@Q\x90\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCFT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@\x90a\x08\x0F\x93\x92\x81R\x81` \x82\x01R\x01\x90a\t\x15V[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x1B\xCE\x81a\x03^V[`$5`D5a\x1B\xDD\x81a\x07)V[a\x1C\x1Ea\x1B\xE8a!\x11V[\x92\x80a\x1B\xF3\x85a!eV[R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x94\x90\x92_\x91\x84\x91\x82\x91\x87`\x04\x84\x01a0\xBCV[\x03\x81\x87Z\xFA\x93\x84\x15a\x03UW\x83a\x1CHa\x13\x19a\x15ea\x1C}\x98` \x97_\x91a\x1C\xDBW[Pa!eV[\x92`@Q\x96\x87\x94\x85\x93\x84\x93c\x04\xECcQ`\xE0\x1B\x85R`\x04\x85\x01c\xFF\xFF\xFF\xFF`@\x92\x95\x94\x93``\x83\x01\x96\x83R\x16` \x82\x01R\x01RV[\x03\x91Z\xFA\x80\x15a\x03UWa\x1C\xAC\x92_\x91a\x1C\xBCW[P`\x01`\x01`\xC0\x1B\x03\x16\x92a\x1C\xA6\x84aL\xB4V[\x90a#\xD3V[\x90a\x08\xA6`@Q\x92\x83\x92\x83a\x1B\x9AV[a\x1C\xD5\x91P` =` \x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a\x1C\x92V[a\x1C\xEF\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a\x1CBV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\x1DV\x81a\x03^V[a\x1D^aL\\V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1DvWa\x03$\x90aE\xD7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Q`d\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qcu[6\xBD`\xE1\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a\x1E\xA8W[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x1E\x99Wa\x1Eg`fT\x19\x82\x19\x81\x16\x14a\x1E\xFDV[\x80`fU`@Q\x90\x81R\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C` 3\x92\xA2\0[cyH!\xFF`\xE0\x1B_R`\x04_\xFD[a\x1E\xC1\x91P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x1EFV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\n^V[`@Q=_\x82>=\x90\xFD[\x15a\x1E\xEEWV[c\x1Dw\xD4w`\xE2\x1B_R`\x04_\xFD[\x15a\x1F\x04WV[c\xC6\x1D\xCA]`\xE0\x1B_R`\x04_\xFD[\x15a\x1F\x1AWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[a\x1F\x7F\x90aE\xD7V[`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCDT\x16\x17`\xCDU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCET\x16\x17`\xCEU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xD0T\x16\x17`\xD0U`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCFT\x16\x17`\xCFUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[a\x1F\xEDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a!\x07a \xE4a!\r\x95a \xDEa \xD7\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra \xAE\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96aFcV[\x90aF\xA9V[\x92a \xDEa \xF9a \xF3aG\x0BV[\x94aH\x02V[\x91a!\x02aI\x1EV[aFcV[\x91aIRV[\x90\x91V[`@\x80Q\x90\x91\x90a!\"\x83\x82a\x04\xDCV[`\x01\x81R\x91`\x1F\x19\x016` \x84\x017V[\x90a!=\x82a\x07\xB4V[a!J`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a![`\x1F\x19\x91a\x07\xB4V[\x01\x90` 6\x91\x017V[\x80Q\x15a \x12W` \x01\x90V[\x80Q\x82\x10\x15a \x12W` \x91`\x05\x1B\x01\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ\x90V[\x91\x90\x91a!\xA2\x83Qa!3V[\x92_[\x81Q\x81\x10\x15a\"UW\x80` a!\xCEa!\xC1a!\xF7\x94\x86a!rV[Q`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x92\x83\x90\x81\x90`$\x82\x01\x90V[\x03\x81`\x01`\x01`\xA0\x1B\x03\x88\x16Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\"'W[Pa\" \x82\x88a!rV[R\x01a!\xA5V[a\"H\x91P` =\x81\x11a\"NW[a\"@\x81\x83a\x04\xDCV[\x81\x01\x90a!\x86V[_a\"\x15V[P=a\"6V[PPPV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x03^V[\x90a\"y\x82a\x07\xB4V[a\"\x86`@Q\x91\x82a\x04\xDCV[\x82\x81R` \x81\x93a\"\x99`\x1F\x19\x91a\x07\xB4V[\x01\x91\x01_[\x82\x81\x10a\"\xAAWPPPV[``\x82\x82\x01R` \x01a\"\x9EV[\x90\x81Q\x81\x10\x15a \x12W\x01` \x01\x90V[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa\"\xFC\x81a\x07\xB4V[\x92a#\n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a#2WPPP\x90V[\x81Q\x81R` \x91\x82\x01\x91\x01a#%V[\x90a#L\x82a\x07\xB4V[a#Y`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a#j`\x1F\x19\x91a\x07\xB4V[\x01_[\x81\x81\x10a#yWPPPV[`@Q\x90``\x82\x01\x91\x80\x83\x10`\x01`\x01`@\x1B\x03\x84\x11\x17a\x04\xBCW` \x92`@R_\x81R_\x83\x82\x01R_`@\x82\x01R\x82\x82\x86\x01\x01R\x01a#mV[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01``\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[`@Qch0H5`\xE0\x1B\x81R\x93\x91\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16` \x85`\x04\x81\x84Z\xFA\x94\x85\x15a\x03UW_\x95a&\xE8W[P`@QcOL\x91\xE1`\xE1\x1B\x81R\x94` \x86`\x04\x81\x85Z\xFA\x91\x82\x15a\x03UW`\x04\x96_\x93a&\xC6W[P` \x90`@Q\x97\x88\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x95\x86\x15a\x03UW_\x96a&\xA5W[Pa$a\x85\x93\x92\x95Qa\"oV[\x94_\x93[\x80Q\x85\x10\x15a&\x9BWa$\x92a$\x8Ca$~\x87\x84a\"\xB8V[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc\x89\x02bE`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x88\x16`$\x82\x01R\x90\x94\x90\x92_\x84`D\x81`\x01`\x01`\xA0\x1B\x03\x85\x16Z\xFA\x93\x84\x15a\x03UW_\x94a&wW[Pa$\xE2\x84Qa#BV[a$\xEC\x88\x8Ba!rV[Ra$\xF7\x87\x8Aa!rV[P_[\x84Q\x81\x10\x15a&fW\x80` a%\x13a%5\x93\x88a!rV[Q\x8D`@Q\x80\x80\x96\x81\x94c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UW_\x92a&FW[Pa%[\x81\x87a!rV[Q\x8A` \x8Aa%j\x85\x8Ba!rV[Q`@Qc\xFA(\xC6'`\xE0\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x91\x90\x91\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x92\x90\x92\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x8D\x16Z\xFA\x93\x84\x15a\x03UWa%\xFD\x8C\x8Fa%\xF8`\x01\x98a&\x0F\x97\x89\x97_\x92a&\x16W[Pa%\xE3a%\xD4a\x05\x1EV[`\x01`\x01`\xA0\x1B\x03\x90\x98\x16\x88RV[` \x87\x01R`\x01`\x01``\x1B\x03\x16`@\x86\x01RV[a!rV[Q\x90a&\t\x83\x83a!rV[Ra!rV[P\x01a$\xFAV[a&8\x91\x92P` =\x81\x11a&?W[a&0\x81\x83a\x04\xDCV[\x81\x01\x90a#\xB4V[\x90_a%\xC8V[P=a&&V[a&_\x91\x92P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x90_a%PV[P`\x01\x90\x96\x01\x95\x90\x94P\x91Pa$eV[a&\x94\x91\x94P=\x80_\x83>a&\x8C\x81\x83a\x04\xDCV[\x81\x01\x90a\"\xC9V[\x92_a$\xD7V[PPP\x93PPP\x90V[a&\xBF\x91\x96P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x94_a$SV[` \x91\x93Pa&\xE1\x90\x82=\x84\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x92\x90a$.V[a'\x02\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a$\x05V[`@Q\x90a'\x16\x82a\x04\xC1V[``\x80\x83\x81\x81R\x81` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa'`\x81a\x07\xB4V[\x92a'n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a'\x96WPPP\x90V[` \x80\x91\x83Qa'\xA5\x81a\x07)V[\x81R\x01\x91\x01\x90a'\x89V[c\xFF\xFF\xFF\xFF\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x01`\x01`\xFB\x1B\x03\x83\x11a\x03ZW``\x92`\x05\x1B\x80\x92\x84\x83\x017\x01\x01\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a'\xE7V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\xFF\x16`\xFF\x81\x14a(IW`\x01\x01\x90V[a($V[\x91\x90\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[\x15a(\x84WV[c%\xECl\x1F`\xE0\x1B_R`\x04_\xFD[\x90\x82\x10\x15a \x12W\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x07)V[_\x19\x81\x14a(IW`\x01\x01\x90V[\x91a(\xE0` \x92c\xFF\xFF\xFF\xFF\x92\x96\x95\x96`@\x86R`@\x86\x01\x91a'\xE7V[\x94\x16\x91\x01RV[\x95\x93\x94\x95\x92\x90\x91\x92a(\xF7a'\tV[P`@Qch0H5`\xE0\x1B\x81R\x93`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x91\x90` \x85`\x04\x81\x86Z\xFA\x94\x85\x15a\x03UW_\x95a-.W[Pa)4a'\tV[\x94`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x81\x80a)T\x8D\x8D\x8B`\x04\x85\x01a'\xB0V[\x03\x81\x88Z\xFA\x90\x81\x15a\x03UW_\x91a-\x14W[P\x86R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x92\x90_\x81\x80a)\x97\x85\x87\x8B`\x04\x85\x01a(\x07V[\x03\x81\x87Z\xFA\x90\x81\x15a\x03UW_\x91a,\xFAW[P`@\x87\x01Ra)\xB9\x81a\"oV[\x98``\x87\x01\x99\x8AR_[`\xFF\x81\x16\x83\x81\x10\x15a,EW\x88_a)\xEC\x83\x8Fa)\xDF\x88a!3V[\x90Q\x90a&\t\x83\x83a!rV[P_\x8A\x86\x8F[\x81\x84\x10a*oWPPPP\x90P\x8Ca*\t\x82a!3V[\x91_[\x81\x81\x10a*6WPP\x91a*+\x91a*1\x94\x93Q\x90a&\t\x83\x83a!rV[Pa(8V[a)\xC3V[\x80a*ia*Ta\x15e`\x01\x94a*N\x8A\x89Qa!rV[Qa!rV[a*^\x83\x88a!rV[\x90c\xFF\xFF\xFF\xFF\x16\x90RV[\x01a*\x0CV[a\x15e\x84a*\x84\x81` \x96\x95a*\x8C\x95a(NV[5\x97Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x96\x90\x96Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x87\x01R\x16`D\x85\x01R\x83`d\x81\x8DZ\xFA\x80\x15a\x03UW\x88\x8F\x88\x8A\x91\x8F\x94a+1`\x01a+$\x81\x93\x8D\x80\x9D_\x92a,\x19W[Pa$\x8Ca+\0a+\x0E\x92a*\xF9\x87\x80`\xC0\x1B\x03\x86\x16\x15\x15a(}V[\x8B\x8Da(\x93V[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\x01`\x01`\xC0\x1B\x03\x91\x82\x16`\xFF\x91\x90\x91\x16\x1C\x16\x90V[\x16`\x01`\x01`\xC0\x1B\x03\x16\x90V[\x14a+MW[PPPPP`\x01\x91\x92P\x01\x90\x8A\x91\x8A\x86\x8Fa)\xF2V[\x85\x97a+o\x93a+h` \x97\x99\x98a$\x8C\x95a+\0\x95a(NV[5\x95a(\x93V[`@Qc\xDD\x98F\xB9`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\xFF\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x93\x90\x93\x16`D\x84\x01R\x82`d\x81\x8CZ\xFA\x90\x81\x15a\x03UW\x8Fa+\xCD\x90a+\xD2\x93\x83\x88`\x01\x97_\x93a+\xE1W[Pa*N\x90a*^\x93\x94Qa!rV[a(\xB4V[\x90P\x82\x91\x8A\x88\x8F\x88\x8A\x91a+7V[a*^\x93P\x90a,\na*N\x92` =\x81\x11a,\x12W[a,\x02\x81\x83a\x04\xDCV[\x81\x01\x90a(\x9FV[\x93P\x90a+\xBDV[P=a+\xF8V[a+\x0E\x91\x92Pa+\0a,<a$\x8C\x92` =\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[\x93\x92PPa*\xDCV[PPP\x92\x90\x95\x97P`\x04\x94\x96P` \x91P`@Q\x94\x85\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x90\x81\x15a\x03UWa,\x9B\x94_\x94\x85\x93a,\xD9W[P`@Qc5IR\xA3`\xE2\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a(\xC2V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a,\xBFW[P` \x82\x01R\x90V[a,\xD3\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a,\xB6V[a,\xF3\x91\x93P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x91_a,}V[a-\x0E\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)\xAAV[a-(\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)gV[a-H\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a)+V[5a\x08\x0F\x81a\x07)V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x03ZW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW` \x01\x91\x816\x03\x83\x13a\x03ZWV[` \x81R\x815` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x015a-\xA9\x81a\x07)V[\x16`@\x82\x01R`@\x82\x015`\x1E\x19\x836\x03\x01\x81\x12\x15a\x03ZW\x82\x01\x90` \x825\x92\x01`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW\x826\x03\x81\x13a\x03ZWa.\x07``a.\0`\x80\x93a\x08\x0F\x96\x85\x84\x88\x01R`\xA0\x87\x01\x91a'\xE7V[\x95\x01a\x077V[c\xFF\xFF\xFF\xFF\x16\x91\x01RV[\x15a.\x19WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7Fsupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a.\x8BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x90\xFD[c\xFF\xFF\xFF\xFF`\x01\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[c\xFF\xFF\xFF\xFF`d\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x90c\xFF\xFF\xFF\xFF\x80\x91\x16\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x15a/6WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FAggregator has responded to the `D\x82\x01Rltask too late`\x98\x1B`d\x82\x01R`\x84\x90\xFD[` \x80\x91c\xFF\xFF\xFF\xFF\x815a/\xA5\x81a\x07)V[\x16\x84R\x015\x91\x01RV[`@\x81\x01\x92\x91a\x05\r\x91\x90a/\x91V[\x90`d\x82\x02\x91\x80\x83\x04`d\x14\x90\x15\x17\x15a(IWV[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a(IWV[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a(IWV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x02\x90`\x01`\x01``\x1B\x03\x82\x16\x91\x82\x03a(IWV[\x15a0(WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R\xFD[\x90\x92\x91` ``\x91a0\xA8\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x81Q\x16`@\x85\x01R\x01Q\x91\x01RV[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x94\x93\x16\x81R\x81` \x82\x01R\x01\x90a\x07\xCBV[\x15a0\xE0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask hasn't been responded to ye`D\x82\x01R`\x1D`\xFA\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x92\x91` ``\x91a1E\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x815a1U\x81a\x07)V[\x16`@\x85\x01R\x015\x91\x01RV[\x15a1iWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FTask response does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a1\xDBWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FThe response to this task has al`D\x82\x01R\x7Fready been challenged successful`d\x82\x01Rb6<\x97`\xE9\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a2YWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FThe challenge period for this ta`D\x82\x01R\x7Fsk has already expired.\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a2\xEEWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a2\xE1V[\x15a3\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FThe pubkeys of non-signing opera`D\x82\x01R\x7Ftors supplied by the challenger `d\x82\x01Ro0\xB92\x9077\xBA\x101\xB7\xB992\xB1\xBA\x17`\x81\x1B`\x84\x82\x01R`\xA4\x90\xFD[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa3\xC2\x81a\x07\xB4V[\x92a3\xD0`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a3\xF8WPPP\x90V[` \x80\x91\x83Qa4\x07\x81a\x03^V[\x81R\x01\x91\x01\x90a3\xEBV[`@Q\x90a4!`@\x83a\x04\xDCV[`\x12\x82Rq9\xB60\xB9\xB4/\xBA42\xAF\xB7\xB82\xB90\xBA7\xB9`q\x1B` \x83\x01RV[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90` \x83R`\xC0\x83\x01\x92`\x01\x80`\xA0\x1B\x03\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`@\x82\x01Q\x93`\xA0``\x83\x01R\x84Q\x80\x91R` `\xE0\x83\x01\x95\x01\x90_[\x81\x81\x10a4\xEBWPPP`\x80a4\xD6a\x08\x0F\x94\x95``\x85\x01Q`\x1F\x19\x85\x83\x03\x01\x84\x86\x01Ra\x07\xCBV[\x92\x01Q\x90`\xA0`\x1F\x19\x82\x85\x03\x01\x91\x01Ra4BV[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x87R` \x96\x87\x01\x96\x90\x92\x01\x91`\x01\x01a4\xADV[\x93\x92\x91\x90\x92`\x01a5\x1A\x85a-OV[\x94` a5\xD6\x885a5Ea5=\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15\x15a0\xD9V[a5\x80a5`\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T`@Q\x85\x81\x01\x90a5w\x81a\x12~\x8D\x8B\x86a1/V[Q\x90 \x14a1bV[a5\xABa5\xA5a5\x9E\x8Bc\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[T`\xFF\x16\x90V[\x15a1\xD4V[a5\xD0a5\xC2a\x13\x19a5\xBD\x8Aa-OV[a.\xFDV[c\xFF\xFF\xFF\xFFC\x16\x11\x15a2RV[\x80a/\xEBV[\x91\x015\x14\x14a:\xB7Wa5\xE9\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a6)W\x80a6\x18a6\x05`\x01\x93\x88a!rV[Q\x80Q_R` \x01Q` R`@_ \x90V[a6\"\x82\x89a!rV[R\x01a5\xECV[P\x90\x92\x93\x91\x94a6c` \x82\x01\x96` a6B\x89a-OV[`@Qa6W\x81a\x12~\x8A\x86\x83\x01\x95\x86a2\xC4V[Q\x90 \x91\x015\x14a3\x04V[a6m\x85Qa!3V[\x95\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x94_[\x87Q\x81\x10\x15a7\x1DW\x80` a6\xB4a6\xD4\x93\x89a!rV[Q`@Q\x80\x94\x81\x92ct]\xCDs`\xE1\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8BZ\xFA\x91\x82\x15a\x03UW`\x01\x92a6\xF9\x91_\x91a6\xFFW[Pa\x0Cx\x83\x8Da!rV[\x01a6\x9BV[a7\x17\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a6\xEEV[P\x92\x96\x95P\x92P\x92a7|a7Ea7M`@\x87\x01\x95a7=\x87\x89a-YV[\x93\x90\x91a-OV[\x926\x91a\x08\xDFV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a#\xD3V[\x90_\x91[\x80Q\x83\x10\x15a:YW_\x93[a7\x96\x84\x83a!rV[QQ\x85\x10\x15a:LWa7\xD6\x98` \x80a7\xB4\x88a*N\x89\x88a!rV[Q\x01Q`@Q\x80\x9C\x81\x92c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x87Z\xFA\x99\x8A\x15a\x03UW_\x9Aa:,W[P_[\x89Q\x81\x10\x15a:\x1BWa8\x11a8\x05a!\xC1\x83\x8Da!rV[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x8C\x16\x14a8(W`\x01\x01a7\xECV[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92[_\x8Aa8\x8F`\xFFa8ga$\x8Ca+\0\x8Ca8a\x8Da8[`\xD1T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x98a-YV[\x90a(\x93V[a8\x81a8ra\x05\x0FV[`\x01`\x01`\xA0\x1B\x03\x90\x95\x16\x85RV[\x16c\xFF\xFF\xFF\xFF\x16` \x83\x01RV[`\xD0Ta8\xA6\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc\x10]\xEA\x1F`\xE2\x1B\x81R\x82Q`\x01`\x01`\xA0\x1B\x03\x16`\x04\x82\x01R` \x90\x92\x01Qc\xFF\xFF\xFF\xFF\x16`$\x83\x01R\x90\x98\x89\x91\x90\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x91Z\xFA\x96\x87\x15a\x03UW_\x97a9\xF7W[Pa9\x01\x87Qa!3V[\x98_[\x8AQ\x81\x10\x15a9*W\x80g\x01cEx]\x8A\0\0a9#`\x01\x93\x8Ea!rV[R\x01a9\x04V[P\x9A\x92\x99\x98\x90\x96a9h`\xFFa9Oa$\x8Ca+\0\x8B\x8F\x8C\x9F\x99\x9B\x9Ca8a\x91a-YV[a9Za%\xD4a\x05-V[\x16c\xFF\xFF\xFF\xFF\x16` \x86\x01RV[`@\x84\x01R``\x83\x01Ra9za4\x12V[`\x80\x83\x01R`\xCFTa9\x96\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80;\x15a\x03ZW`@Qcjf\x9BA`\xE0\x1B\x81R\x92_\x91\x84\x91\x82\x90\x84\x90\x82\x90a9\xC2\x90`\x04\x83\x01a4fV[\x03\x92Z\xF1\x91\x82\x15a\x03UW`\x01\x92a9\xDDW[P\x01\x93a7\x8CV[\x80a9\xEB_a9\xF1\x93a\x04\xDCV[\x80a\x06\xB7V[_a9\xD5V[a:\x14\x91\x97P=\x80_\x83>a:\x0C\x81\x83a\x04\xDCV[\x81\x01\x90a3\x8FV[\x95_a8\xF6V[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92a85V[a:E\x91\x9AP` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x98_a7\xE9V[\x93P`\x01\x90\x92\x01\x91a7\x80V[PPP\x93\x92PPPa:\x89a:|\x82c\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[\x80T`\xFF\x19\x16`\x01\x17\x90UV[c\xFF\xFF\xFF\xFF3\x91\x16\x7F\xC2\r\x1B\xB0\xF1b6\x800k\x83\xD4\xFFK\xB9\x9A+\xEB\x9D\x86\xD9x2\xF3\xCA@\xFD\x13\xA2\x9D\xF1\xEC_\x80\xA3V[\x93PPPc\xFF\xFF\xFF\xFF3\x91\x16\x7F\xFD>&\xBE\xEBYg\xFCZW\xA0Di\x14\xEA\xBCE\xB4\xAAGLg\xA5\x1BKQ`\xCA\xC6\r\xDB\x05_\x80\xA3V[`@Q\x90a:\xF6\x82a\x04\xC1V[_``\x83\x82\x81R\x82` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81R\x81Q` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`\x80c\xFF\xFF\xFF\xFF``a;H`@\x86\x01Q\x84\x83\x87\x01R`\xA0\x86\x01\x90a4BV[\x94\x01Q\x16\x91\x01R\x90V[`@Q\x90a;_\x82a\x04\xA1V[``` \x83\x82\x81R\x01RV[\x15a;rWV[b\xF8 -`\xE5\x1B_R`\x04_\xFD[\x15a;\x87WV[cCqJ\xFD`\xE0\x1B_R`\x04_\xFD[\x15a;\x9DWV[c_\x83/A`\xE0\x1B_R`\x04_\xFD[\x15a;\xB3WV[cK\x87OE`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x0F\x0FV[_\x19\x81\x01\x91\x90\x82\x11a(IWV[\x15a;\xECWV[c?\xDCe\x05`\xE2\x1B_R`\x04_\xFD[\x90`\x01\x82\x01\x80\x92\x11a(IWV[\x90`\x02\x82\x01\x80\x92\x11a(IWV[\x90`\x03\x82\x01\x80\x92\x11a(IWV[\x90`\x04\x82\x01\x80\x92\x11a(IWV[\x90`\x05\x82\x01\x80\x92\x11a(IWV[\x91\x90\x82\x01\x80\x92\x11a(IWV[\x15a<UWV[c\xAF\xFC^\xDB`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x03ZW\x90V[\x15a<\x8CWV[c\xE11\n\xED`\xE0\x1B_R`\x04_\xFD[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a(IWV[\x15a<\xC2WV[cg\x98\x8D3`\xE0\x1B_R`\x04_\xFD[\x15a<\xD8WV[c\xAB\x1B#k`\xE0\x1B_R`\x04_\xFD[\x94\x93\x92\x90\x91\x93a<\xF5a;RV[Pa=\x01\x85\x15\x15a;kV[`@\x84\x01QQ\x85\x14\x80aEcW[\x80aEUW[\x80aEGW[a=$\x90a;\x80V[a=6` \x85\x01QQ\x85QQ\x14a;\x96V[a=Mc\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a;\xACV[a=Ua\x05\x0FV[_\x81R_` \x82\x01R\x92a=ga;RV[a=p\x87a!3V[` \x82\x01Ra=~\x87a!3V[\x81Ra=\x88a;RV[\x92a=\x97` \x88\x01QQa!3V[\x84Ra=\xA7` \x88\x01QQa!3V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UWa>\x10\x91_\x91aE\x18W[Pa>\x0B6\x8B\x87a\x08\xDFV[aJ\xBEV[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a?oW` \x88a>da\x15e\x8Ca>\\\x8F\x96\x86\x8Ea>Aa6\x05\x86\x80\x95a!rV[a>N\x84\x84\x84\x01Qa!rV[R\x82a?<W[\x01Qa!rV[Q\x95Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x91\x82\x15a\x03UWa \xDE\x8Aa?\x11\x8Fa?\n\x8F\x84` \x8F\x92a?\x01\x93a>\xF9\x84`\x01\x9Ea?\x17\x9E_\x91a?\x1FW[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa!rV[R\x01Qa!rV[Q\x93\x8DQa!rV[Q\x16aJ\xE9V[\x90aK\x1AV[\x97\x01\x96a>\x14V[a?6\x91P\x86=\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a>\xEAV[a?ja?L\x84\x84\x84\x01Qa!rV[Qa?c\x84\x84\x01Qa?]\x87a;\xD7V[\x90a!rV[Q\x10a;\xE5V[a>UV[P\x90\x95\x97\x94\x96Pa?\x84\x91\x98\x93\x92\x99PaK\xD7V[\x91a?\x91`\x97T`\xFF\x16\x90V[\x90\x81\x15aE\x10W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91aD\xF1W[P\x91\x90[_\x92[\x81\x84\x10a@BWPPPPP\x92a@)a@$a@\x1Da@<\x95\x85a\x12~\x98`\x80``` \x99\x01Q\x92\x01Q\x92a +V[\x91\x90a<\xBBV[a<\xD1V[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a2\xC4V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8DaC\xEBW[a\x15e\x82`\xA0a@\x97a$\x8Ca+\0\x84a@\x9F\x97a@\x91a@\x83a6\x05\x8F\x9C`@` \x9F\x9E\x01Qa!rV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba(\x93V[\x97\x01Qa!rV[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x03UWaAca\x15e\x8F\x95\x8F\x90aA[\x8F\x97\x8F\x96\x84\x8FaAU`\xC0\x96aAN\x84\x8F` \x9F\x90a>Ua+\0\x99`@\x93a$\x8C\x9C_\x91aC\xBDW[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a<\x85V[Q\x90aF\xA9V[\x9Ca(\x93V[\x96\x01Qa!rV[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x03UWaA\xF0\x91\x8C\x8F\x92_\x92aC\x99W[P` aA\xE2\x92\x93\x01Qa!rV[\x90`\x01`\x01``\x1B\x03\x16\x90RV[aB\x10\x8CaA\xE2\x8CaB\ta\x13\xE8\x82` \x86\x01Qa!rV[\x92Qa!rV[_\x98_[` \x8A\x01QQ\x81\x10\x15aC\x80W\x8B\x8DaBR\x89aBEa$\x8Ca+\0\x86\x8F\x89aB=\x91Qa!rV[Q\x94\x87a(\x93V[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[aBaW[PP`\x01\x01aB\x14V[\x8A\x8AaB\xE3\x85\x9F\x94\x8F\x96\x86a*N\x8F\x93`\xE0aB\x9Aa\x15e\x95` aB\x92a$\x8Ca+\0\x83\x9FaB\xA3\x9C\x89\x91a(\x93V[\x9A\x01Qa!rV[Q\x9B\x01Qa!rV[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW\x8FaCO\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92aCZW[PaCIaA\xE2\x92\x93Q\x93aCDa\x13\xE8\x84\x87a!rV[a<\x9BV[\x92a!rV[\x01\x9A\x90P\x8B\x8DaBWV[aA\xE2\x92PaCyaCI\x91` =\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaC,V[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a?\xECV[aA\xE2\x92PaC\xB6` \x91\x82=\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaA\xD3V[` aC\xDE\x92P=\x81\x11aC\xE4W[aC\xD6\x81\x83a\x04\xDCV[\x81\x01\x90a<dV[_aA8V[P=aC\xCCV[aD(\x94PaD\x05\x92Pa$\x8C\x91a+\0\x91` \x95a(\x93V[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03UW` \x89a@\x9F\x8F\x93\x8F`\xA0\x8F\x97a$\x8Ca+\0\x8F\x8F\x90a@\x91a@\x83a6\x05\x8F`@\x8B\x96\x91\x8F\x88\x93a\x15e\x9FaD\xAC\x90aD\xB2\x93a@\x97\x9F_\x92aD\xC8W[Pc\xFF\xFF\xFF\xFF\x80\x91\x16\x93\x16\x90a<AV[\x11a<NV[PPPPPP\x97PPPPPP\x92\x93PPa@WV[` c\xFF\xFF\xFF\xFF\x92\x93P\x82\x91aD\xE9\x91=\x81\x11a\"NWa\"@\x81\x83a\x04\xDCV[\x92\x91PaD\x9BV[aE\n\x91P` =` \x11a,\x12Wa,\x02\x81\x83a\x04\xDCV[_a?\xE5V[_\x91\x90a?\xE9V[aE:\x91P` =` \x11aE@W[aE2\x81\x83a\x04\xDCV[\x81\x01\x90a;\xC2V[_a=\xFFV[P=aE(V[P`\xE0\x84\x01QQ\x85\x14a=\x1BV[P`\xC0\x84\x01QQ\x85\x14a=\x15V[P`\xA0\x84\x01QQ\x85\x14a=\x0FV[_\x19`fU`@Q_\x19\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[\x80`fU`@Q\x90\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`@Q\x90aF,\x82a\x04\xA1V[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80aFH\x81\x84a\x04\xDCV[6\x837V[`@Q\x90aF\\` \x83a\x04\xDCV[` 6\x837V[\x91\x90`@\x90``aFraF\x1FV[\x94\x85\x92` \x85Q\x92aF\x84\x85\x85a\x04\xDCV[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15aF\xA7WV[\xFE[` \x92\x91`\x80`@\x92aF\xBAaF\x1FV[\x95\x86\x93\x81\x86Q\x93aF\xCB\x86\x86a\x04\xDCV[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7W\x15aF\xFCWV[c\xD4\xB6\x8F\xD7`\xE0\x1B_R`\x04_\xFD[`@QaG\x17\x81a\x04\xA1V[`@\x90\x81QaG&\x83\x82a\x04\xDCV[\x826\x827\x81R` \x82Q\x91aG;\x84\x84a\x04\xDCV[\x836\x847\x01R\x80QaGM\x82\x82a\x04\xDCV[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90aG\xA3\x83\x83a\x04\xDCV[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01RaG\xF8\x83Q\x93\x84a\x04\xDCV[\x82R` \x82\x01R\x90V[_Q` aM\xF7_9_Q\x90_R\x90aH\x19aF\x1FV[P_\x91\x90\x06` `\xC0\x83[aI\x19W_\x93_Q` aM\xF7_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@QaHO\x85\x82a\x04\xDCV[\x846\x827\x84\x81\x85`@QaHc\x82\x82a\x04\xDCV[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` aM\xF7_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7WaH\xCD\x90aM\xE0V[Q\x91aI\x19W_Q` aM\xF7_9_Q\x90_R\x82\x80\t\x14aI\x04WP_Q` aM\xF7_9_Q\x90_R`\x01_\x94\x08\x92\x93aH$V[\x92\x93PPaI\x10a\x05\x0FV[\x92\x83R\x82\x01R\x90V[a \x17V[aI&aF\x1FV[P`@QaI3\x81a\x04\xA1V[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x0C\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x93\x92\x90\x91aI``@a\x05<V[\x94\x85R` \x85\x01RaIr`@a\x05<V[\x91\x82R` \x82\x01RaI\x82aF7V[\x92_[`\x02\x81\x10aI\xAFWPPP` a\x01\x80\x92aI\x9EaFMV[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80aI\xBB`\x01\x92a/\xD5V[aI\xC5\x82\x85a \x01V[QQaI\xD1\x82\x89aIAV[R` aI\xDE\x83\x86a \x01V[Q\x01QaI\xF3aI\xED\x83a;\xFBV[\x89aIAV[RaI\xFE\x82\x86a \x01V[QQQaJ\raI\xED\x83a<\tV[RaJ#aJ\x1B\x83\x87a \x01V[QQ` \x01\x90V[QaJ0aI\xED\x83a<\x17V[R` aJ=\x83\x87a \x01V[Q\x01QQaJMaI\xED\x83a<%V[RaJyaJsaJl` aJc\x86\x8Aa \x01V[Q\x01Q` \x01\x90V[Q\x92a<3V[\x88aIAV[R\x01aI\x85V[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01aJ\xCC`\xFF\x93aMhV[\x92\x83\x92\x16\x1B\x11\x15aJ\xDAW\x90V[c\xCA\x95s3`\xE0\x1B_R`\x04_\xFD[\x80_\x91[aJ\xF5WP\x90V[_\x19\x81\x01\x81\x81\x11a(IWa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a(IW`\x01\x01\x90\x80aJ\xEDV[\x90aK#aF\x1FV[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15aK\xC8W`\x01\x82\x14aK\xC3WaKDa\x05\x0FV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15aKiWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14aK\xA3W[`\x01aK\x99aK\x8E\x83`\xFF\x94aF\xA9V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91aKUV[\x94`\x01aK\x99aK\x8EaK\xB8\x89`\xFF\x95aF\xA9V[\x98\x93PPPPaK}V[PP\x90V[c\x7F\xC4\xEA}`\xE1\x1B_R`\x04_\xFD[aK\xDFaF\x1FV[P\x80Q\x90\x81\x15\x80aLPW[\x15aL\x0CWPP`@QaL\0`@\x82a\x04\xDCV[_\x81R_` \x82\x01R\x90V[` _Q` aM\xF7_9_Q\x90_R\x91\x01Q\x06_Q` aM\xF7_9_Q\x90_R\x03_Q` aM\xF7_9_Q\x90_R\x81\x11a(IW`@Q\x91aG\xF8\x83a\x04\xA1V[P` \x81\x01Q\x15aK\xEBV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03aLpWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[a\xFF\xFFaL\xC0\x82aJ\xE9V[\x16aL\xCA\x81a\x08\xC4V[\x90aL\xD8`@Q\x92\x83a\x04\xDCV[\x80\x82RaL\xE7`\x1F\x19\x91a\x08\xC4V[\x016` \x83\x017__[\x82Q\x82\x10\x80aMGW[\x15aM@W`\x01\x81\x1B\x84\x16aM\x19W[aM\x14\x90a(\xB4V[aL\xF1V[\x90`\x01aM\x14\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1AaM6\x82\x87a\"\xB8V[S\x01\x91\x90PaM\x0BV[PP\x90P\x90V[Pa\x01\0\x81\x10aL\xFBV[\x15aMYWV[c\x10\x19\x10i`\xE3\x1B_R`\x04_\xFD[\x90a\x01\0\x82Q\x11aM\xD1W\x81Q\x15aM\xCCW` \x82\x01Q`\x01\x90`\xF8\x1C\x81\x90\x1B[\x83Q\x82\x10\x15aM\xC7W`\x01\x90aM\xB2aM\xA8a$\x8Ca$~\x86\x89a\"\xB8V[`\xFF`\x01\x91\x16\x1B\x90V[\x90aM\xBE\x81\x83\x11aMRV[\x17\x91\x01\x90aM\x89V[\x92PPV[_\x91PV[c}\xA5NG`\xE1\x1B_R`\x04_\xFD[\x15aM\xE7WV[c\xD5\x1E\xDA\xE3`\xE0\x1B_R`\x04_\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xBC~V\xE7\0\x1D1\xFE\xD06\xCFSVO\xE2\x86\x1A\x94\xFE\xEE\xD9\x17\xB3\xC5\xDC\\\x11\x1A\r6\x87!dsolcC\0\x08\x1B\x003",
+  );
+    /**Custom error with signature `BitmapValueTooLarge()` and selector `0xca957333`.
+    ```solidity
+    error BitmapValueTooLarge();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct BitmapValueTooLarge {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<BitmapValueTooLarge> for UnderlyingRustTuple<'_> {
+            fn from(value: BitmapValueTooLarge) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BitmapValueTooLarge {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for BitmapValueTooLarge {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "BitmapValueTooLarge()";
+            const SELECTOR: [u8; 4] = [202u8, 149u8, 115u8, 51u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `BytesArrayLengthTooLong()` and selector `0xfb4a9c8e`.
+    ```solidity
+    error BytesArrayLengthTooLong();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct BytesArrayLengthTooLong {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<BytesArrayLengthTooLong> for UnderlyingRustTuple<'_> {
+            fn from(value: BytesArrayLengthTooLong) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayLengthTooLong {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for BytesArrayLengthTooLong {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "BytesArrayLengthTooLong()";
+            const SELECTOR: [u8; 4] = [251u8, 74u8, 156u8, 142u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `BytesArrayNotOrdered()` and selector `0x80c88348`.
+    ```solidity
+    error BytesArrayNotOrdered();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct BytesArrayNotOrdered {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<BytesArrayNotOrdered> for UnderlyingRustTuple<'_> {
+            fn from(value: BytesArrayNotOrdered) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayNotOrdered {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for BytesArrayNotOrdered {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "BytesArrayNotOrdered()";
+            const SELECTOR: [u8; 4] = [128u8, 200u8, 131u8, 72u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
+    ```solidity
+    error CurrentlyPaused();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct CurrentlyPaused {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
+            fn from(value: CurrentlyPaused) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for CurrentlyPaused {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "CurrentlyPaused()";
+            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `ECAddFailed()` and selector `0xd4b68fd7`.
+    ```solidity
+    error ECAddFailed();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ECAddFailed {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<ECAddFailed> for UnderlyingRustTuple<'_> {
+            fn from(value: ECAddFailed) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECAddFailed {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for ECAddFailed {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "ECAddFailed()";
+            const SELECTOR: [u8; 4] = [212u8, 182u8, 143u8, 215u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `ECMulFailed()` and selector `0x4633be32`.
+    ```solidity
+    error ECMulFailed();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ECMulFailed {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<ECMulFailed> for UnderlyingRustTuple<'_> {
+            fn from(value: ECMulFailed) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECMulFailed {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for ECMulFailed {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "ECMulFailed()";
+            const SELECTOR: [u8; 4] = [70u8, 51u8, 190u8, 50u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `ExpModFailed()` and selector `0xd51edae3`.
+    ```solidity
+    error ExpModFailed();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ExpModFailed {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<ExpModFailed> for UnderlyingRustTuple<'_> {
+            fn from(value: ExpModFailed) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpModFailed {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for ExpModFailed {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "ExpModFailed()";
+            const SELECTOR: [u8; 4] = [213u8, 30u8, 218u8, 227u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
+    ```solidity
+    error InputAddressZero();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InputAddressZero {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
+            fn from(value: InputAddressZero) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InputAddressZero {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InputAddressZero()";
+            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
+    ```solidity
+    error InputArrayLengthMismatch();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InputArrayLengthMismatch {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InputArrayLengthMismatch> for UnderlyingRustTuple<'_> {
+            fn from(value: InputArrayLengthMismatch) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthMismatch {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
+            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InputEmptyQuorumNumbers()` and selector `0x1f0405a0`.
+    ```solidity
+    error InputEmptyQuorumNumbers();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InputEmptyQuorumNumbers {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InputEmptyQuorumNumbers> for UnderlyingRustTuple<'_> {
+            fn from(value: InputEmptyQuorumNumbers) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputEmptyQuorumNumbers {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InputEmptyQuorumNumbers {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InputEmptyQuorumNumbers()";
+            const SELECTOR: [u8; 4] = [31u8, 4u8, 5u8, 160u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InputNonSignerLengthMismatch()` and selector `0x5f832f41`.
+    ```solidity
+    error InputNonSignerLengthMismatch();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InputNonSignerLengthMismatch {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InputNonSignerLengthMismatch> for UnderlyingRustTuple<'_> {
+            fn from(value: InputNonSignerLengthMismatch) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputNonSignerLengthMismatch {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InputNonSignerLengthMismatch {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InputNonSignerLengthMismatch()";
+            const SELECTOR: [u8; 4] = [95u8, 131u8, 47u8, 65u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InvalidBLSPairingKey()` and selector `0x67988d33`.
+    ```solidity
+    error InvalidBLSPairingKey();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InvalidBLSPairingKey {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InvalidBLSPairingKey> for UnderlyingRustTuple<'_> {
+            fn from(value: InvalidBLSPairingKey) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSPairingKey {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InvalidBLSPairingKey {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InvalidBLSPairingKey()";
+            const SELECTOR: [u8; 4] = [103u8, 152u8, 141u8, 51u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InvalidBLSSignature()` and selector `0xab1b236b`.
+    ```solidity
+    error InvalidBLSSignature();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InvalidBLSSignature {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InvalidBLSSignature> for UnderlyingRustTuple<'_> {
+            fn from(value: InvalidBLSSignature) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSSignature {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InvalidBLSSignature {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InvalidBLSSignature()";
+            const SELECTOR: [u8; 4] = [171u8, 27u8, 35u8, 107u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
+    ```solidity
+    error InvalidNewPausedStatus();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InvalidNewPausedStatus {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
+            fn from(value: InvalidNewPausedStatus) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
+            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InvalidQuorumApkHash()` and selector `0xe1310aed`.
+    ```solidity
+    error InvalidQuorumApkHash();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InvalidQuorumApkHash {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InvalidQuorumApkHash> for UnderlyingRustTuple<'_> {
+            fn from(value: InvalidQuorumApkHash) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidQuorumApkHash {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InvalidQuorumApkHash {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InvalidQuorumApkHash()";
+            const SELECTOR: [u8; 4] = [225u8, 49u8, 10u8, 237u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `InvalidReferenceBlocknumber()` and selector `0x4b874f45`.
+    ```solidity
+    error InvalidReferenceBlocknumber();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct InvalidReferenceBlocknumber {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<InvalidReferenceBlocknumber> for UnderlyingRustTuple<'_> {
+            fn from(value: InvalidReferenceBlocknumber) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidReferenceBlocknumber {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for InvalidReferenceBlocknumber {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "InvalidReferenceBlocknumber()";
+            const SELECTOR: [u8; 4] = [75u8, 135u8, 79u8, 69u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `NonSignerPubkeysNotSorted()` and selector `0xff719414`.
+    ```solidity
+    error NonSignerPubkeysNotSorted();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct NonSignerPubkeysNotSorted {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<NonSignerPubkeysNotSorted> for UnderlyingRustTuple<'_> {
+            fn from(value: NonSignerPubkeysNotSorted) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NonSignerPubkeysNotSorted {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for NonSignerPubkeysNotSorted {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "NonSignerPubkeysNotSorted()";
+            const SELECTOR: [u8; 4] = [255u8, 113u8, 148u8, 20u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
+    ```solidity
+    error OnlyPauser();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct OnlyPauser {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
+            fn from(value: OnlyPauser) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for OnlyPauser {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "OnlyPauser()";
+            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `OnlyRegistryCoordinatorOwner()` and selector `0xe0e1e762`.
+    ```solidity
+    error OnlyRegistryCoordinatorOwner();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct OnlyRegistryCoordinatorOwner {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<OnlyRegistryCoordinatorOwner> for UnderlyingRustTuple<'_> {
+            fn from(value: OnlyRegistryCoordinatorOwner) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRegistryCoordinatorOwner {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for OnlyRegistryCoordinatorOwner {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "OnlyRegistryCoordinatorOwner()";
+            const SELECTOR: [u8; 4] = [224u8, 225u8, 231u8, 98u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
+    ```solidity
+    error OnlyUnpauser();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct OnlyUnpauser {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
+            fn from(value: OnlyUnpauser) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for OnlyUnpauser {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "OnlyUnpauser()";
+            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`.
+    ```solidity
+    error OperatorNotRegistered();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct OperatorNotRegistered {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> {
+            fn from(value: OperatorNotRegistered) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for OperatorNotRegistered {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "OperatorNotRegistered()";
+            const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `ScalarTooLarge()` and selector `0xff89d4fa`.
+    ```solidity
+    error ScalarTooLarge();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ScalarTooLarge {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<ScalarTooLarge> for UnderlyingRustTuple<'_> {
+            fn from(value: ScalarTooLarge) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ScalarTooLarge {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for ScalarTooLarge {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "ScalarTooLarge()";
+            const SELECTOR: [u8; 4] = [255u8, 137u8, 212u8, 250u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Custom error with signature `StaleStakesForbidden()` and selector `0xaffc5edb`.
+    ```solidity
+    error StaleStakesForbidden();
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct StaleStakesForbidden {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[doc(hidden)]
+        type UnderlyingSolTuple<'a> = ();
+        #[doc(hidden)]
+        type UnderlyingRustTuple<'a> = ();
+        #[cfg(test)]
+        #[allow(dead_code, unreachable_patterns)]
+        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+            match _t {
+                alloy_sol_types::private::AssertTypeEq::<
+                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                >(_) => {}
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<StaleStakesForbidden> for UnderlyingRustTuple<'_> {
+            fn from(value: StaleStakesForbidden) -> Self {
+                ()
+            }
+        }
+        #[automatically_derived]
+        #[doc(hidden)]
+        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StaleStakesForbidden {
+            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                Self {}
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolError for StaleStakesForbidden {
+            type Parameters<'a> = UnderlyingSolTuple<'a>;
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "StaleStakesForbidden()";
+            const SELECTOR: [u8; 4] = [175u8, 252u8, 94u8, 219u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+        }
+    };
+    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
+    ```solidity
+    event Initialized(uint8 version);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct Initialized {
+        #[allow(missing_docs)]
+        pub version: u8,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for Initialized {
+            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
+            const SIGNATURE: &'static str = "Initialized(uint8)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8,
+                    56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8,
+                    96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self { version: data.0 }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
+                        &self.version,
+                    ),
+                )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(),)
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for Initialized {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&Initialized> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `NewTaskCreated(uint32,(uint256,uint32,bytes,uint32))` and selector `0x1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c48`.
+    ```solidity
+    event NewTaskCreated(uint32 indexed taskIndex, IIncredibleSquaringTaskManager.Task task);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct NewTaskCreated {
+        #[allow(missing_docs)]
+        pub taskIndex: u32,
+        #[allow(missing_docs)]
+        pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for NewTaskCreated {
+            type DataTuple<'a> = (IIncredibleSquaringTaskManager::Task,);
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            const SIGNATURE: &'static str = "NewTaskCreated(uint32,(uint256,uint32,bytes,uint32))";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    22u8, 149u8, 184u8, 208u8, 110u8, 200u8, 0u8, 180u8, 97u8, 94u8, 116u8, 92u8,
+                    251u8, 91u8, 208u8, 12u8, 31u8, 40u8, 117u8, 97u8, 93u8, 66u8, 146u8, 92u8,
+                    59u8, 90u8, 250u8, 84u8, 59u8, 178u8, 76u8, 72u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    taskIndex: topics.1,
+                    task: data.0,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                    <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize(
+                        &self.task,
+                    ),
+                )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(), self.taskIndex.clone())
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for NewTaskCreated {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&NewTaskCreated> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &NewTaskCreated) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
+    ```solidity
+    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct OwnershipTransferred {
+        #[allow(missing_docs)]
+        pub previousOwner: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub newOwner: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for OwnershipTransferred {
+            type DataTuple<'a> = ();
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+            );
+            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
+                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
+                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    previousOwner: topics.1,
+                    newOwner: topics.2,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                ()
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (
+                    Self::SIGNATURE_HASH.into(),
+                    self.previousOwner.clone(),
+                    self.newOwner.clone(),
+                )
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.previousOwner,
+              );
+                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.newOwner,
+              );
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
+    ```solidity
+    event Paused(address indexed account, uint256 newPausedStatus);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct Paused {
+        #[allow(missing_docs)]
+        pub account: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for Paused {
+            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            const SIGNATURE: &'static str = "Paused(address,uint256)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
+                    152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
+                    224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    account: topics.1,
+                    newPausedStatus: data.0,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.newPausedStatus,
+                    ),
+                )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(), self.account.clone())
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.account,
+              );
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for Paused {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&Paused> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`.
+    ```solidity
+    event StaleStakesForbiddenUpdate(bool value);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct StaleStakesForbiddenUpdate {
+        #[allow(missing_docs)]
+        pub value: bool,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate {
+            type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
+            const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8,
+                    87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8,
+                    48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self { value: data.0 }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
+                        &self.value,
+                    ),
+                )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(),)
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `TaskChallengedSuccessfully(uint32,address)` and selector `0xc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec`.
+    ```solidity
+    event TaskChallengedSuccessfully(uint32 indexed taskIndex, address indexed challenger);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct TaskChallengedSuccessfully {
+        #[allow(missing_docs)]
+        pub taskIndex: u32,
+        #[allow(missing_docs)]
+        pub challenger: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for TaskChallengedSuccessfully {
+            type DataTuple<'a> = ();
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            const SIGNATURE: &'static str = "TaskChallengedSuccessfully(uint32,address)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    194u8, 13u8, 27u8, 176u8, 241u8, 98u8, 54u8, 128u8, 48u8, 107u8, 131u8, 212u8,
+                    255u8, 75u8, 185u8, 154u8, 43u8, 235u8, 157u8, 134u8, 217u8, 120u8, 50u8,
+                    243u8, 202u8, 64u8, 253u8, 19u8, 162u8, 157u8, 241u8, 236u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    taskIndex: topics.1,
+                    challenger: topics.2,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                ()
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (
+                    Self::SIGNATURE_HASH.into(),
+                    self.taskIndex.clone(),
+                    self.challenger.clone(),
+                )
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
+                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.challenger,
+              );
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for TaskChallengedSuccessfully {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&TaskChallengedSuccessfully> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &TaskChallengedSuccessfully) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `TaskChallengedUnsuccessfully(uint32,address)` and selector `0xfd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb05`.
+    ```solidity
+    event TaskChallengedUnsuccessfully(uint32 indexed taskIndex, address indexed challenger);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct TaskChallengedUnsuccessfully {
+        #[allow(missing_docs)]
+        pub taskIndex: u32,
+        #[allow(missing_docs)]
+        pub challenger: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for TaskChallengedUnsuccessfully {
+            type DataTuple<'a> = ();
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            const SIGNATURE: &'static str = "TaskChallengedUnsuccessfully(uint32,address)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    253u8, 62u8, 38u8, 190u8, 235u8, 89u8, 103u8, 252u8, 90u8, 87u8, 160u8, 68u8,
+                    105u8, 20u8, 234u8, 188u8, 69u8, 180u8, 170u8, 71u8, 76u8, 103u8, 165u8, 27u8,
+                    75u8, 81u8, 96u8, 202u8, 198u8, 13u8, 219u8, 5u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    taskIndex: topics.1,
+                    challenger: topics.2,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                ()
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (
+                    Self::SIGNATURE_HASH.into(),
+                    self.taskIndex.clone(),
+                    self.challenger.clone(),
+                )
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
+                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.challenger,
+              );
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for TaskChallengedUnsuccessfully {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&TaskChallengedUnsuccessfully> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &TaskChallengedUnsuccessfully) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `TaskCompleted(uint32)` and selector `0x9a144f228a931b9d0d1696fbcdaf310b24b5d2d21e799db623fc986a0f547430`.
+    ```solidity
+    event TaskCompleted(uint32 indexed taskIndex);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct TaskCompleted {
+        #[allow(missing_docs)]
+        pub taskIndex: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for TaskCompleted {
+            type DataTuple<'a> = ();
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            const SIGNATURE: &'static str = "TaskCompleted(uint32)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    154u8, 20u8, 79u8, 34u8, 138u8, 147u8, 27u8, 157u8, 13u8, 22u8, 150u8, 251u8,
+                    205u8, 175u8, 49u8, 11u8, 36u8, 181u8, 210u8, 210u8, 30u8, 121u8, 157u8, 182u8,
+                    35u8, 252u8, 152u8, 106u8, 15u8, 84u8, 116u8, 48u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    taskIndex: topics.1,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                ()
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(), self.taskIndex.clone())
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Uint<
+                  32,
+              > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for TaskCompleted {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&TaskCompleted> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &TaskCompleted) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `TaskResponded((uint32,uint256),(uint32,bytes32))` and selector `0x349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a`.
+    ```solidity
+    event TaskResponded(IIncredibleSquaringTaskManager.TaskResponse taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata taskResponseMetadata);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct TaskResponded {
+      #[allow(missing_docs)]
+      pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
+  }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for TaskResponded {
+            type DataTuple<'a> = (
+                IIncredibleSquaringTaskManager::TaskResponse,
+                IIncredibleSquaringTaskManager::TaskResponseMetadata,
+            );
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
+            const SIGNATURE: &'static str = "TaskResponded((uint32,uint256),(uint32,bytes32))";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    52u8, 156u8, 30u8, 230u8, 14u8, 78u8, 137u8, 114u8, 238u8, 157u8, 186u8, 100u8,
+                    44u8, 23u8, 116u8, 84u8, 61u8, 92u8, 65u8, 54u8, 135u8, 155u8, 127u8, 76u8,
+                    170u8, 240u8, 75u8, 248u8, 26u8, 72u8, 122u8, 42u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    taskResponse: data.0,
+                    taskResponseMetadata: data.1,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                  <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
+                      &self.taskResponse,
+                  ),
+                  <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize(
+                      &self.taskResponseMetadata,
+                  ),
+              )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(),)
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for TaskResponded {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&TaskResponded> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &TaskResponded) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
+    ```solidity
+    event Unpaused(address indexed account, uint256 newPausedStatus);
+    ```*/
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    #[derive(Clone)]
+    pub struct Unpaused {
+        #[allow(missing_docs)]
+        pub account: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        #[automatically_derived]
+        impl alloy_sol_types::SolEvent for Unpaused {
+            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type TopicList = (
+                alloy_sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
+            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
+                alloy_sol_types::private::B256::new([
+                    53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
+                    188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
+                    107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
+                ]);
+            const ANONYMOUS: bool = false;
+            #[allow(unused_variables)]
+            #[inline]
+            fn new(
+                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
+                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                Self {
+                    account: topics.1,
+                    newPausedStatus: data.0,
+                }
+            }
+            #[inline]
+            fn check_signature(
+                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
+            ) -> alloy_sol_types::Result<()> {
+                if topics.0 != Self::SIGNATURE_HASH {
+                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
+                        Self::SIGNATURE,
+                        topics.0,
+                        Self::SIGNATURE_HASH,
+                    ));
+                }
+                Ok(())
+            }
+            #[inline]
+            fn tokenize_body(&self) -> Self::DataToken<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.newPausedStatus,
+                    ),
+                )
+            }
+            #[inline]
+            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
+                (Self::SIGNATURE_HASH.into(), self.account.clone())
+            }
+            #[inline]
+            fn encode_topics_raw(
+                &self,
+                out: &mut [alloy_sol_types::abi::token::WordToken],
+            ) -> alloy_sol_types::Result<()> {
+                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
+                    return Err(alloy_sol_types::Error::Overrun);
+                }
+                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
+                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
+                  &self.account,
+              );
+                Ok(())
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::private::IntoLogData for Unpaused {
+            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+                From::from(self)
+            }
+            fn into_log_data(self) -> alloy_sol_types::private::LogData {
+                From::from(&self)
+            }
+        }
+        #[automatically_derived]
+        impl From<&Unpaused> for alloy_sol_types::private::LogData {
+            #[inline]
+            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
+                alloy_sol_types::SolEvent::encode_log_data(this)
+            }
+        }
+    };
+    /**Constructor`.
+    ```solidity
+    constructor(address _slashingRegistryCoordinator, address _pauserRegistry, uint32 _taskResponseWindowBlock, address _serviceManager);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct constructorCall {
+        #[allow(missing_docs)]
+        pub _slashingRegistryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _pauserRegistry: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _taskResponseWindowBlock: u32,
+        #[allow(missing_docs)]
+        pub _serviceManager: alloy::sol_types::private::Address,
+    }
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Address,
+                u32,
+                alloy::sol_types::private::Address,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
+                fn from(value: constructorCall) -> Self {
+                    (
+                        value._slashingRegistryCoordinator,
+                        value._pauserRegistry,
+                        value._taskResponseWindowBlock,
+                        value._serviceManager,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        _slashingRegistryCoordinator: tuple.0,
+                        _pauserRegistry: tuple.1,
+                        _taskResponseWindowBlock: tuple.2,
+                        _serviceManager: tuple.3,
+                    }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolConstructor for constructorCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Address,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._slashingRegistryCoordinator,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._pauserRegistry,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self._taskResponseWindowBlock,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._serviceManager,
+                    ),
+                )
+            }
+        }
+    };
+    /**Function with signature `TASK_CHALLENGE_WINDOW_BLOCK()` and selector `0xf63c5bab`.
+    ```solidity
+    function TASK_CHALLENGE_WINDOW_BLOCK() external view returns (uint32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct TASK_CHALLENGE_WINDOW_BLOCKCall {}
+    ///Container type for the return parameters of the [`TASK_CHALLENGE_WINDOW_BLOCK()`](TASK_CHALLENGE_WINDOW_BLOCKCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct TASK_CHALLENGE_WINDOW_BLOCKReturn {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<TASK_CHALLENGE_WINDOW_BLOCKCall> for UnderlyingRustTuple<'_> {
+                fn from(value: TASK_CHALLENGE_WINDOW_BLOCKCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_CHALLENGE_WINDOW_BLOCKCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<TASK_CHALLENGE_WINDOW_BLOCKReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: TASK_CHALLENGE_WINDOW_BLOCKReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_CHALLENGE_WINDOW_BLOCKReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for TASK_CHALLENGE_WINDOW_BLOCKCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = TASK_CHALLENGE_WINDOW_BLOCKReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "TASK_CHALLENGE_WINDOW_BLOCK()";
+            const SELECTOR: [u8; 4] = [246u8, 60u8, 91u8, 171u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `TASK_RESPONSE_WINDOW_BLOCK()` and selector `0x1ad43189`.
+    ```solidity
+    function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct TASK_RESPONSE_WINDOW_BLOCKCall {}
+    ///Container type for the return parameters of the [`TASK_RESPONSE_WINDOW_BLOCK()`](TASK_RESPONSE_WINDOW_BLOCKCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct TASK_RESPONSE_WINDOW_BLOCKReturn {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKCall> for UnderlyingRustTuple<'_> {
+                fn from(value: TASK_RESPONSE_WINDOW_BLOCKCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_RESPONSE_WINDOW_BLOCKCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: TASK_RESPONSE_WINDOW_BLOCKReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_RESPONSE_WINDOW_BLOCKReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for TASK_RESPONSE_WINDOW_BLOCKCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = TASK_RESPONSE_WINDOW_BLOCKReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "TASK_RESPONSE_WINDOW_BLOCK()";
+            const SELECTOR: [u8; 4] = [26u8, 212u8, 49u8, 137u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `WADS_TO_SLASH()` and selector `0x5a2d7f02`.
+    ```solidity
+    function WADS_TO_SLASH() external view returns (uint256);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct WADS_TO_SLASHCall {}
+    ///Container type for the return parameters of the [`WADS_TO_SLASH()`](WADS_TO_SLASHCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct WADS_TO_SLASHReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<WADS_TO_SLASHCall> for UnderlyingRustTuple<'_> {
+                fn from(value: WADS_TO_SLASHCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for WADS_TO_SLASHCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<WADS_TO_SLASHReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: WADS_TO_SLASHReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for WADS_TO_SLASHReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for WADS_TO_SLASHCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = WADS_TO_SLASHReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "WADS_TO_SLASH()";
+            const SELECTOR: [u8; 4] = [90u8, 45u8, 127u8, 2u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `aggregator()` and selector `0x245a7bfc`.
+    ```solidity
+    function aggregator() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct aggregatorCall {}
+    ///Container type for the return parameters of the [`aggregator()`](aggregatorCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct aggregatorReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<aggregatorCall> for UnderlyingRustTuple<'_> {
+                fn from(value: aggregatorCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<aggregatorReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: aggregatorReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for aggregatorCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = aggregatorReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "aggregator()";
+            const SELECTOR: [u8; 4] = [36u8, 90u8, 123u8, 252u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `allTaskHashes(uint32)` and selector `0x2d89f6fc`.
+    ```solidity
+    function allTaskHashes(uint32) external view returns (bytes32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allTaskHashesCall {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    ///Container type for the return parameters of the [`allTaskHashes(uint32)`](allTaskHashesCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allTaskHashesReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::FixedBytes<32>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allTaskHashesCall> for UnderlyingRustTuple<'_> {
+                fn from(value: allTaskHashesCall) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allTaskHashesReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: allTaskHashesReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for allTaskHashesCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = allTaskHashesReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "allTaskHashes(uint32)";
+            const SELECTOR: [u8; 4] = [45u8, 137u8, 246u8, 252u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self._0,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `allTaskResponses(uint32)` and selector `0x2cb223d5`.
+    ```solidity
+    function allTaskResponses(uint32) external view returns (bytes32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allTaskResponsesCall {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    ///Container type for the return parameters of the [`allTaskResponses(uint32)`](allTaskResponsesCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allTaskResponsesReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::FixedBytes<32>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allTaskResponsesCall> for UnderlyingRustTuple<'_> {
+                fn from(value: allTaskResponsesCall) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskResponsesCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allTaskResponsesReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: allTaskResponsesReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskResponsesReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for allTaskResponsesCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = allTaskResponsesReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "allTaskResponses(uint32)";
+            const SELECTOR: [u8; 4] = [44u8, 178u8, 35u8, 213u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self._0,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
+    ```solidity
+    function allocationManager() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allocationManagerCall {}
+    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct allocationManagerReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allocationManagerCall> for UnderlyingRustTuple<'_> {
+                fn from(value: allocationManagerCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<allocationManagerReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: allocationManagerReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for allocationManagerCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = allocationManagerReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "allocationManager()";
+            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `blsApkRegistry()` and selector `0x5df45946`.
+    ```solidity
+    function blsApkRegistry() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct blsApkRegistryCall {}
+    ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct blsApkRegistryReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<blsApkRegistryCall> for UnderlyingRustTuple<'_> {
+                fn from(value: blsApkRegistryCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<blsApkRegistryReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: blsApkRegistryReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for blsApkRegistryCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = blsApkRegistryReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "blsApkRegistry()";
+            const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`.
+    ```solidity
+    function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct checkSignaturesCall {
+      #[allow(missing_docs)]
+      pub msgHash: alloy::sol_types::private::FixedBytes<32>,
+      #[allow(missing_docs)]
+      pub quorumNumbers: alloy::sol_types::private::Bytes,
+      #[allow(missing_docs)]
+      pub referenceBlockNumber: u32,
+      #[allow(missing_docs)]
+      pub params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+  }
+    ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct checkSignaturesReturn {
+        #[allow(missing_docs)]
+        pub _0:
+            <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
+        #[allow(missing_docs)]
+        pub _1: alloy::sol_types::private::FixedBytes<32>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Uint<32>,
+                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+              alloy::sol_types::private::FixedBytes<32>,
+              alloy::sol_types::private::Bytes,
+              u32,
+              <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+          );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<checkSignaturesCall> for UnderlyingRustTuple<'_> {
+                fn from(value: checkSignaturesCall) -> Self {
+                    (
+                        value.msgHash,
+                        value.quorumNumbers,
+                        value.referenceBlockNumber,
+                        value.params,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        msgHash: tuple.0,
+                        quorumNumbers: tuple.1,
+                        referenceBlockNumber: tuple.2,
+                        params: tuple.3,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                IBLSSignatureCheckerTypes::QuorumStakeTotals,
+                alloy::sol_types::sol_data::FixedBytes<32>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+              <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
+              alloy::sol_types::private::FixedBytes<32>,
+          );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<checkSignaturesReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: checkSignaturesReturn) -> Self {
+                    (value._0, value._1)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        _0: tuple.0,
+                        _1: tuple.1,
+                    }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for checkSignaturesCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Uint<32>,
+                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = checkSignaturesReturn;
+            type ReturnTuple<'a> = (
+                IBLSSignatureCheckerTypes::QuorumStakeTotals,
+                alloy::sol_types::sol_data::FixedBytes<32>,
+            );
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
+            const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
+                  <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
+                      &self.quorumNumbers,
+                  ),
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
+                  <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
+                      &self.params,
+                  ),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `createNewTask(uint256,uint32,bytes)` and selector `0x6b92787e`.
+    ```solidity
+    function createNewTask(uint256 numberToBeSquared, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct createNewTaskCall {
+        #[allow(missing_docs)]
+        pub numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256,
+        #[allow(missing_docs)]
+        pub quorumThresholdPercentage: u32,
+        #[allow(missing_docs)]
+        pub quorumNumbers: alloy::sol_types::private::Bytes,
+    }
+    ///Container type for the return parameters of the [`createNewTask(uint256,uint32,bytes)`](createNewTaskCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct createNewTaskReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Uint<256>,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Bytes,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::primitives::aliases::U256,
+                u32,
+                alloy::sol_types::private::Bytes,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<createNewTaskCall> for UnderlyingRustTuple<'_> {
+                fn from(value: createNewTaskCall) -> Self {
+                    (
+                        value.numberToBeSquared,
+                        value.quorumThresholdPercentage,
+                        value.quorumNumbers,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for createNewTaskCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        numberToBeSquared: tuple.0,
+                        quorumThresholdPercentage: tuple.1,
+                        quorumNumbers: tuple.2,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<createNewTaskReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: createNewTaskReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for createNewTaskReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for createNewTaskCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Uint<256>,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Bytes,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = createNewTaskReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "createNewTask(uint256,uint32,bytes)";
+            const SELECTOR: [u8; 4] = [107u8, 146u8, 120u8, 126u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.numberToBeSquared,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self.quorumThresholdPercentage,
+                    ),
+                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
+                        &self.quorumNumbers,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `delegation()` and selector `0xdf5cf723`.
+    ```solidity
+    function delegation() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct delegationCall {}
+    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct delegationReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
+                fn from(value: delegationCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: delegationReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for delegationCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = delegationReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "delegation()";
+            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `generator()` and selector `0x7afa1eed`.
+    ```solidity
+    function generator() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct generatorCall {}
+    ///Container type for the return parameters of the [`generator()`](generatorCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct generatorReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<generatorCall> for UnderlyingRustTuple<'_> {
+                fn from(value: generatorCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<generatorReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: generatorReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for generatorCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = generatorReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "generator()";
+            const SELECTOR: [u8; 4] = [122u8, 250u8, 30u8, 237u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getBatchOperatorFromId(address,bytes32[])` and selector `0x4d2b57fe`.
+    ```solidity
+    function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getBatchOperatorFromIdCall {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+    }
+    ///Container type for the return parameters of the [`getBatchOperatorFromId(address,bytes32[])`](getBatchOperatorFromIdCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getBatchOperatorFromIdReturn {
+        #[allow(missing_docs)]
+        pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getBatchOperatorFromIdCall> for UnderlyingRustTuple<'_> {
+                fn from(value: getBatchOperatorFromIdCall) -> Self {
+                    (value.registryCoordinator, value.operatorIds)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        operatorIds: tuple.1,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> =
+                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getBatchOperatorFromIdReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: getBatchOperatorFromIdReturn) -> Self {
+                    (value.operators,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { operators: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getBatchOperatorFromIdCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getBatchOperatorFromIdReturn;
+            type ReturnTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "getBatchOperatorFromId(address,bytes32[])";
+            const SELECTOR: [u8; 4] = [77u8, 43u8, 87u8, 254u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.registryCoordinator,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::FixedBytes<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getBatchOperatorId(address,address[])` and selector `0x31b36bd9`.
+    ```solidity
+    function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getBatchOperatorIdCall {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
+    }
+    ///Container type for the return parameters of the [`getBatchOperatorId(address,address[])`](getBatchOperatorIdCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getBatchOperatorIdReturn {
+        #[allow(missing_docs)]
+        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getBatchOperatorIdCall> for UnderlyingRustTuple<'_> {
+                fn from(value: getBatchOperatorIdCall) -> Self {
+                    (value.registryCoordinator, value.operators)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        operators: tuple.1,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> =
+                (alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getBatchOperatorIdReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: getBatchOperatorIdReturn) -> Self {
+                    (value.operatorIds,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        operatorIds: tuple.0,
+                    }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getBatchOperatorIdCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getBatchOperatorIdReturn;
+            type ReturnTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "getBatchOperatorId(address,address[])";
+            const SELECTOR: [u8; 4] = [49u8, 179u8, 107u8, 217u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.registryCoordinator,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::Address,
+                  > as alloy_sol_types::SolType>::tokenize(&self.operators),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getCheckSignaturesIndices(address,uint32,bytes,bytes32[])` and selector `0x4f739f74`.
+    ```solidity
+    function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (OperatorStateRetriever.CheckSignaturesIndices memory);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getCheckSignaturesIndicesCall {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub referenceBlockNumber: u32,
+        #[allow(missing_docs)]
+        pub quorumNumbers: alloy::sol_types::private::Bytes,
+        #[allow(missing_docs)]
+        pub nonSignerOperatorIds:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+    }
+    ///Container type for the return parameters of the [`getCheckSignaturesIndices(address,uint32,bytes,bytes32[])`](getCheckSignaturesIndicesCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getCheckSignaturesIndicesReturn {
+        #[allow(missing_docs)]
+        pub _0:
+            <OperatorStateRetriever::CheckSignaturesIndices as alloy::sol_types::SolType>::RustType,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                u32,
+                alloy::sol_types::private::Bytes,
+                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getCheckSignaturesIndicesCall> for UnderlyingRustTuple<'_> {
+                fn from(value: getCheckSignaturesIndicesCall) -> Self {
+                    (
+                        value.registryCoordinator,
+                        value.referenceBlockNumber,
+                        value.quorumNumbers,
+                        value.nonSignerOperatorIds,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        referenceBlockNumber: tuple.1,
+                        quorumNumbers: tuple.2,
+                        nonSignerOperatorIds: tuple.3,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (OperatorStateRetriever::CheckSignaturesIndices,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+              <OperatorStateRetriever::CheckSignaturesIndices as alloy::sol_types::SolType>::RustType,
+          );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getCheckSignaturesIndicesReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: getCheckSignaturesIndicesReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getCheckSignaturesIndicesCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Uint<32>,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getCheckSignaturesIndicesReturn;
+            type ReturnTuple<'a> = (OperatorStateRetriever::CheckSignaturesIndices,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str =
+                "getCheckSignaturesIndices(address,uint32,bytes,bytes32[])";
+            const SELECTOR: [u8; 4] = [79u8, 115u8, 159u8, 116u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.registryCoordinator,
+                  ),
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
+                  <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
+                      &self.quorumNumbers,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::FixedBytes<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.nonSignerOperatorIds),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getOperatorState(address,bytes,uint32)` and selector `0x3563b0d1`.
+    ```solidity
+    function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (OperatorStateRetriever.Operator[][] memory);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getOperatorState_0Call {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub quorumNumbers: alloy::sol_types::private::Bytes,
+        #[allow(missing_docs)]
+        pub blockNumber: u32,
+    }
+    ///Container type for the return parameters of the [`getOperatorState(address,bytes,uint32)`](getOperatorState_0Call) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getOperatorState_0Return {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Vec<
+            alloy::sol_types::private::Vec<
+                <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType,
+            >,
+        >,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Bytes,
+                u32,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getOperatorState_0Call> for UnderlyingRustTuple<'_> {
+                fn from(value: getOperatorState_0Call) -> Self {
+                    (
+                        value.registryCoordinator,
+                        value.quorumNumbers,
+                        value.blockNumber,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Call {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        quorumNumbers: tuple.1,
+                        blockNumber: tuple.2,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>,
+                >,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Vec<
+                    alloy::sol_types::private::Vec<
+                        <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType,
+                    >,
+                >,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getOperatorState_0Return> for UnderlyingRustTuple<'_> {
+                fn from(value: getOperatorState_0Return) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Return {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getOperatorState_0Call {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Bytes,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getOperatorState_0Return;
+            type ReturnTuple<'a> = (
+                alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>,
+                >,
+            );
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "getOperatorState(address,bytes,uint32)";
+            const SELECTOR: [u8; 4] = [53u8, 99u8, 176u8, 209u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self.registryCoordinator,
+                    ),
+                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
+                        &self.quorumNumbers,
+                    ),
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self.blockNumber,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getOperatorState(address,bytes32,uint32)` and selector `0xcefdc1d4`.
+    ```solidity
+    function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, OperatorStateRetriever.Operator[][] memory);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getOperatorState_1Call {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
+        #[allow(missing_docs)]
+        pub blockNumber: u32,
+    }
+    ///Container type for the return parameters of the [`getOperatorState(address,bytes32,uint32)`](getOperatorState_1Call) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getOperatorState_1Return {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::primitives::aliases::U256,
+        #[allow(missing_docs)]
+        pub _1: alloy::sol_types::private::Vec<
+            alloy::sol_types::private::Vec<
+                <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType,
+            >,
+        >,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::FixedBytes<32>,
+                u32,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getOperatorState_1Call> for UnderlyingRustTuple<'_> {
+                fn from(value: getOperatorState_1Call) -> Self {
+                    (
+                        value.registryCoordinator,
+                        value.operatorId,
+                        value.blockNumber,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Call {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        operatorId: tuple.1,
+                        blockNumber: tuple.2,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Uint<256>,
+                alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>,
+                >,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::primitives::aliases::U256,
+                alloy::sol_types::private::Vec<
+                    alloy::sol_types::private::Vec<
+                        <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType,
+                    >,
+                >,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getOperatorState_1Return> for UnderlyingRustTuple<'_> {
+                fn from(value: getOperatorState_1Return) -> Self {
+                    (value._0, value._1)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Return {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        _0: tuple.0,
+                        _1: tuple.1,
+                    }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getOperatorState_1Call {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getOperatorState_1Return;
+            type ReturnTuple<'a> = (
+                alloy::sol_types::sol_data::Uint<256>,
+                alloy::sol_types::sol_data::Array<
+                    alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>,
+                >,
+            );
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "getOperatorState(address,bytes32,uint32)";
+            const SELECTOR: [u8; 4] = [206u8, 253u8, 193u8, 212u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.registryCoordinator,
+                  ),
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)` and selector `0x5c155662`.
+    ```solidity
+    function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getQuorumBitmapsAtBlockNumberCall {
+        #[allow(missing_docs)]
+        pub registryCoordinator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+        #[allow(missing_docs)]
+        pub blockNumber: u32,
+    }
+    ///Container type for the return parameters of the [`getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)`](getQuorumBitmapsAtBlockNumberCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getQuorumBitmapsAtBlockNumberReturn {
+        #[allow(missing_docs)]
+        pub _0:
+            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+                u32,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getQuorumBitmapsAtBlockNumberCall> for UnderlyingRustTuple<'_> {
+                fn from(value: getQuorumBitmapsAtBlockNumberCall) -> Self {
+                    (
+                        value.registryCoordinator,
+                        value.operatorIds,
+                        value.blockNumber,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        registryCoordinator: tuple.0,
+                        operatorIds: tuple.1,
+                        blockNumber: tuple.2,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Vec<
+                    alloy::sol_types::private::primitives::aliases::U256,
+                >,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getQuorumBitmapsAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: getQuorumBitmapsAtBlockNumberReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getQuorumBitmapsAtBlockNumberCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
+                alloy::sol_types::sol_data::Uint<32>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getQuorumBitmapsAtBlockNumberReturn;
+            type ReturnTuple<'a> =
+                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str =
+                "getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)";
+            const SELECTOR: [u8; 4] = [92u8, 21u8, 86u8, 98u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                      &self.registryCoordinator,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      alloy::sol_types::sol_data::FixedBytes<32>,
+                  > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
+                  <alloy::sol_types::sol_data::Uint<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `getTaskResponseWindowBlock()` and selector `0xf5c9899d`.
+    ```solidity
+    function getTaskResponseWindowBlock() external view returns (uint32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getTaskResponseWindowBlockCall {}
+    ///Container type for the return parameters of the [`getTaskResponseWindowBlock()`](getTaskResponseWindowBlockCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct getTaskResponseWindowBlockReturn {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getTaskResponseWindowBlockCall> for UnderlyingRustTuple<'_> {
+                fn from(value: getTaskResponseWindowBlockCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTaskResponseWindowBlockCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<getTaskResponseWindowBlockReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: getTaskResponseWindowBlockReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTaskResponseWindowBlockReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for getTaskResponseWindowBlockCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = getTaskResponseWindowBlockReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "getTaskResponseWindowBlock()";
+            const SELECTOR: [u8; 4] = [245u8, 201u8, 137u8, 157u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `initialize(address,address,address,address,address)` and selector `0x1459457a`.
+    ```solidity
+    function initialize(address initialOwner, address _aggregator, address _generator, address _allocationManager, address _slasher) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct initializeCall {
+        #[allow(missing_docs)]
+        pub initialOwner: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _aggregator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _generator: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _allocationManager: alloy::sol_types::private::Address,
+        #[allow(missing_docs)]
+        pub _slasher: alloy::sol_types::private::Address,
+    }
+    ///Container type for the return parameters of the [`initialize(address,address,address,address,address)`](initializeCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct initializeReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Address,
+                alloy::sol_types::private::Address,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
+                fn from(value: initializeCall) -> Self {
+                    (
+                        value.initialOwner,
+                        value._aggregator,
+                        value._generator,
+                        value._allocationManager,
+                        value._slasher,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        initialOwner: tuple.0,
+                        _aggregator: tuple.1,
+                        _generator: tuple.2,
+                        _allocationManager: tuple.3,
+                        _slasher: tuple.4,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: initializeReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for initializeCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+                alloy::sol_types::sol_data::Address,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = initializeReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "initialize(address,address,address,address,address)";
+            const SELECTOR: [u8; 4] = [20u8, 89u8, 69u8, 122u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self.initialOwner,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._aggregator,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._generator,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._allocationManager,
+                    ),
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self._slasher,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `instantSlasher()` and selector `0x9b290e98`.
+    ```solidity
+    function instantSlasher() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct instantSlasherCall {}
+    ///Container type for the return parameters of the [`instantSlasher()`](instantSlasherCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct instantSlasherReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<instantSlasherCall> for UnderlyingRustTuple<'_> {
+                fn from(value: instantSlasherCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for instantSlasherCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<instantSlasherReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: instantSlasherReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for instantSlasherReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for instantSlasherCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = instantSlasherReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "instantSlasher()";
+            const SELECTOR: [u8; 4] = [155u8, 41u8, 14u8, 152u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `latestTaskNum()` and selector `0x8b00ce7c`.
+    ```solidity
+    function latestTaskNum() external view returns (uint32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct latestTaskNumCall {}
+    ///Container type for the return parameters of the [`latestTaskNum()`](latestTaskNumCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct latestTaskNumReturn {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<latestTaskNumCall> for UnderlyingRustTuple<'_> {
+                fn from(value: latestTaskNumCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<latestTaskNumReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: latestTaskNumReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for latestTaskNumCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = latestTaskNumReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "latestTaskNum()";
+            const SELECTOR: [u8; 4] = [139u8, 0u8, 206u8, 124u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `owner()` and selector `0x8da5cb5b`.
+    ```solidity
+    function owner() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ownerCall {}
+    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct ownerReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
+                fn from(value: ownerCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: ownerReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for ownerCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = ownerReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "owner()";
+            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
+    ```solidity
+    function pause(uint256 newPausedStatus) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauseCall {
+        #[allow(missing_docs)]
+        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauseReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
+                fn from(value: pauseCall) -> Self {
+                    (value.newPausedStatus,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        newPausedStatus: tuple.0,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: pauseReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for pauseCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = pauseReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "pause(uint256)";
+            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.newPausedStatus,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
+    ```solidity
+    function pauseAll() external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauseAllCall {}
+    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauseAllReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
+                fn from(value: pauseAllCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: pauseAllReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for pauseAllCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = pauseAllReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "pauseAll()";
+            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
+    ```solidity
+    function paused(uint8 index) external view returns (bool);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct paused_0Call {
+        #[allow(missing_docs)]
+        pub index: u8,
+    }
+    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct paused_0Return {
+        #[allow(missing_docs)]
+        pub _0: bool,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u8,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
+                fn from(value: paused_0Call) -> Self {
+                    (value.index,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { index: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (bool,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
+                fn from(value: paused_0Return) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for paused_0Call {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = paused_0Return;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "paused(uint8)";
+            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
+                        &self.index,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `paused()` and selector `0x5c975abb`.
+    ```solidity
+    function paused() external view returns (uint256);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct paused_1Call {}
+    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct paused_1Return {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
+                fn from(value: paused_1Call) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
+                fn from(value: paused_1Return) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for paused_1Call {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = paused_1Return;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "paused()";
+            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
+    ```solidity
+    function pauserRegistry() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauserRegistryCall {}
+    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct pauserRegistryReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
+                fn from(value: pauserRegistryCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<pauserRegistryReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: pauserRegistryReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for pauserRegistryCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = pauserRegistryReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "pauserRegistry()";
+            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])` and selector `0x6b532e9e`.
+    ```solidity
+    function raiseAndResolveChallenge(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata memory taskResponseMetadata, BN254.G1Point[] memory pubkeysOfNonSigningOperators) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct raiseAndResolveChallengeCall {
+      #[allow(missing_docs)]
+      pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub pubkeysOfNonSigningOperators: alloy::sol_types::private::Vec<
+          <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+      >,
+  }
+    ///Container type for the return parameters of the [`raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])`](raiseAndResolveChallengeCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct raiseAndResolveChallengeReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                IIncredibleSquaringTaskManager::Task,
+                IIncredibleSquaringTaskManager::TaskResponse,
+                IIncredibleSquaringTaskManager::TaskResponseMetadata,
+                alloy::sol_types::sol_data::Array<BN254::G1Point>,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+              <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+              <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+              <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
+              alloy::sol_types::private::Vec<
+                  <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+              >,
+          );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<raiseAndResolveChallengeCall> for UnderlyingRustTuple<'_> {
+                fn from(value: raiseAndResolveChallengeCall) -> Self {
+                    (
+                        value.task,
+                        value.taskResponse,
+                        value.taskResponseMetadata,
+                        value.pubkeysOfNonSigningOperators,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for raiseAndResolveChallengeCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        task: tuple.0,
+                        taskResponse: tuple.1,
+                        taskResponseMetadata: tuple.2,
+                        pubkeysOfNonSigningOperators: tuple.3,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<raiseAndResolveChallengeReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: raiseAndResolveChallengeReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for raiseAndResolveChallengeReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for raiseAndResolveChallengeCall {
+            type Parameters<'a> = (
+                IIncredibleSquaringTaskManager::Task,
+                IIncredibleSquaringTaskManager::TaskResponse,
+                IIncredibleSquaringTaskManager::TaskResponseMetadata,
+                alloy::sol_types::sol_data::Array<BN254::G1Point>,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = raiseAndResolveChallengeReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])";
+            const SELECTOR: [u8; 4] = [107u8, 83u8, 46u8, 158u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize(
+                      &self.task,
+                  ),
+                  <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
+                      &self.taskResponse,
+                  ),
+                  <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize(
+                      &self.taskResponseMetadata,
+                  ),
+                  <alloy::sol_types::sol_data::Array<
+                      BN254::G1Point,
+                  > as alloy_sol_types::SolType>::tokenize(
+                      &self.pubkeysOfNonSigningOperators,
+                  ),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
+    ```solidity
+    function registryCoordinator() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct registryCoordinatorCall {}
+    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct registryCoordinatorReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<registryCoordinatorCall> for UnderlyingRustTuple<'_> {
+                fn from(value: registryCoordinatorCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<registryCoordinatorReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: registryCoordinatorReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for registryCoordinatorCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = registryCoordinatorReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "registryCoordinator()";
+            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
+    ```solidity
+    function renounceOwnership() external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct renounceOwnershipCall {}
+    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct renounceOwnershipReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
+                fn from(value: renounceOwnershipCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: renounceOwnershipReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for renounceOwnershipCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = renounceOwnershipReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "renounceOwnership()";
+            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x5baec9a0`.
+    ```solidity
+    function respondToTask(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct respondToTaskCall {
+      #[allow(missing_docs)]
+      pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+      #[allow(missing_docs)]
+      pub nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+  }
+    ///Container type for the return parameters of the [`respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](respondToTaskCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct respondToTaskReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                IIncredibleSquaringTaskManager::Task,
+                IIncredibleSquaringTaskManager::TaskResponse,
+                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+              <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+              <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+              <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+          );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<respondToTaskCall> for UnderlyingRustTuple<'_> {
+                fn from(value: respondToTaskCall) -> Self {
+                    (
+                        value.task,
+                        value.taskResponse,
+                        value.nonSignerStakesAndSignature,
+                    )
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for respondToTaskCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        task: tuple.0,
+                        taskResponse: tuple.1,
+                        nonSignerStakesAndSignature: tuple.2,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<respondToTaskReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: respondToTaskReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for respondToTaskReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for respondToTaskCall {
+            type Parameters<'a> = (
+                IIncredibleSquaringTaskManager::Task,
+                IIncredibleSquaringTaskManager::TaskResponse,
+                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = respondToTaskReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
+            const SELECTOR: [u8; 4] = [91u8, 174u8, 201u8, 160u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize(
+                      &self.task,
+                  ),
+                  <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
+                      &self.taskResponse,
+                  ),
+                  <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
+                      &self.nonSignerStakesAndSignature,
+                  ),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `serviceManager()` and selector `0x3998fdd3`.
+    ```solidity
+    function serviceManager() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct serviceManagerCall {}
+    ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct serviceManagerReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<serviceManagerCall> for UnderlyingRustTuple<'_> {
+                fn from(value: serviceManagerCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for serviceManagerCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<serviceManagerReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: serviceManagerReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for serviceManagerReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for serviceManagerCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = serviceManagerReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "serviceManager()";
+            const SELECTOR: [u8; 4] = [57u8, 152u8, 253u8, 211u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`.
+    ```solidity
+    function setStaleStakesForbidden(bool value) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct setStaleStakesForbiddenCall {
+        #[allow(missing_docs)]
+        pub value: bool,
+    }
+    ///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct setStaleStakesForbiddenReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (bool,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<setStaleStakesForbiddenCall> for UnderlyingRustTuple<'_> {
+                fn from(value: setStaleStakesForbiddenCall) -> Self {
+                    (value.value,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { value: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<setStaleStakesForbiddenReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: setStaleStakesForbiddenReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = setStaleStakesForbiddenReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)";
+            const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
+                        &self.value,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `stakeRegistry()` and selector `0x68304835`.
+    ```solidity
+    function stakeRegistry() external view returns (address);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct stakeRegistryCall {}
+    ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct stakeRegistryReturn {
+        #[allow(missing_docs)]
+        pub _0: alloy::sol_types::private::Address,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<stakeRegistryCall> for UnderlyingRustTuple<'_> {
+                fn from(value: stakeRegistryCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<stakeRegistryReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: stakeRegistryReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for stakeRegistryCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = stakeRegistryReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "stakeRegistry()";
+            const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`.
+    ```solidity
+    function staleStakesForbidden() external view returns (bool);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct staleStakesForbiddenCall {}
+    ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct staleStakesForbiddenReturn {
+        #[allow(missing_docs)]
+        pub _0: bool,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<staleStakesForbiddenCall> for UnderlyingRustTuple<'_> {
+                fn from(value: staleStakesForbiddenCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (bool,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<staleStakesForbiddenReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: staleStakesForbiddenReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for staleStakesForbiddenCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = staleStakesForbiddenReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "staleStakesForbidden()";
+            const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `taskNumber()` and selector `0x72d18e8d`.
+    ```solidity
+    function taskNumber() external view returns (uint32);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct taskNumberCall {}
+    ///Container type for the return parameters of the [`taskNumber()`](taskNumberCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct taskNumberReturn {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<taskNumberCall> for UnderlyingRustTuple<'_> {
+                fn from(value: taskNumberCall) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskNumberCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<taskNumberReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: taskNumberReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskNumberReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for taskNumberCall {
+            type Parameters<'a> = ();
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = taskNumberReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "taskNumber()";
+            const SELECTOR: [u8; 4] = [114u8, 209u8, 142u8, 141u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                ()
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `taskSuccesfullyChallenged(uint32)` and selector `0x5decc3f5`.
+    ```solidity
+    function taskSuccesfullyChallenged(uint32) external view returns (bool);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct taskSuccesfullyChallengedCall {
+        #[allow(missing_docs)]
+        pub _0: u32,
+    }
+    ///Container type for the return parameters of the [`taskSuccesfullyChallenged(uint32)`](taskSuccesfullyChallengedCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct taskSuccesfullyChallengedReturn {
+        #[allow(missing_docs)]
+        pub _0: bool,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (u32,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<taskSuccesfullyChallengedCall> for UnderlyingRustTuple<'_> {
+                fn from(value: taskSuccesfullyChallengedCall) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskSuccesfullyChallengedCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (bool,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<taskSuccesfullyChallengedReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: taskSuccesfullyChallengedReturn) -> Self {
+                    (value._0,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskSuccesfullyChallengedReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { _0: tuple.0 }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for taskSuccesfullyChallengedCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = taskSuccesfullyChallengedReturn;
+            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "taskSuccesfullyChallenged(uint32)";
+            const SELECTOR: [u8; 4] = [93u8, 236u8, 195u8, 245u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
+                        &self._0,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
+    ```solidity
+    function transferOwnership(address newOwner) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct transferOwnershipCall {
+        #[allow(missing_docs)]
+        pub newOwner: alloy::sol_types::private::Address,
+    }
+    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct transferOwnershipReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
+                fn from(value: transferOwnershipCall) -> Self {
+                    (value.newOwner,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self { newOwner: tuple.0 }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: transferOwnershipReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for transferOwnershipCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = transferOwnershipReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "transferOwnership(address)";
+            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
+                        &self.newOwner,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`.
+    ```solidity
+    function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct trySignatureAndApkVerificationCall {
+        #[allow(missing_docs)]
+        pub msgHash: alloy::sol_types::private::FixedBytes<32>,
+        #[allow(missing_docs)]
+        pub apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+        #[allow(missing_docs)]
+        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
+        #[allow(missing_docs)]
+        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+    }
+    ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct trySignatureAndApkVerificationReturn {
+        #[allow(missing_docs)]
+        pub pairingSuccessful: bool,
+        #[allow(missing_docs)]
+        pub siganatureIsValid: bool,
+    }
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                BN254::G1Point,
+                BN254::G2Point,
+                BN254::G1Point,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (
+                alloy::sol_types::private::FixedBytes<32>,
+                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
+                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+            );
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<trySignatureAndApkVerificationCall> for UnderlyingRustTuple<'_> {
+                fn from(value: trySignatureAndApkVerificationCall) -> Self {
+                    (value.msgHash, value.apk, value.apkG2, value.sigma)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        msgHash: tuple.0,
+                        apk: tuple.1,
+                        apkG2: tuple.2,
+                        sigma: tuple.3,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (
+                alloy::sol_types::sol_data::Bool,
+                alloy::sol_types::sol_data::Bool,
+            );
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (bool, bool);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<trySignatureAndApkVerificationReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: trySignatureAndApkVerificationReturn) -> Self {
+                    (value.pairingSuccessful, value.siganatureIsValid)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        pairingSuccessful: tuple.0,
+                        siganatureIsValid: tuple.1,
+                    }
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall {
+            type Parameters<'a> = (
+                alloy::sol_types::sol_data::FixedBytes<32>,
+                BN254::G1Point,
+                BN254::G2Point,
+                BN254::G1Point,
+            );
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = trySignatureAndApkVerificationReturn;
+            type ReturnTuple<'a> = (
+                alloy::sol_types::sol_data::Bool,
+                alloy::sol_types::sol_data::Bool,
+            );
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))";
+            const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                  <alloy::sol_types::sol_data::FixedBytes<
+                      32,
+                  > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
+                  <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.apk),
+                  <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
+                  <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
+              )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
+    ```solidity
+    function unpause(uint256 newPausedStatus) external;
+    ```*/
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct unpauseCall {
+        #[allow(missing_docs)]
+        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+    }
+    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
+    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
+    #[derive(Clone)]
+    pub struct unpauseReturn {}
+    #[allow(
+        non_camel_case_types,
+        non_snake_case,
+        clippy::pub_underscore_fields,
+        clippy::style
+    )]
+    const _: () = {
+        use alloy::sol_types as alloy_sol_types;
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
+                fn from(value: unpauseCall) -> Self {
+                    (value.newPausedStatus,)
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {
+                        newPausedStatus: tuple.0,
+                    }
+                }
+            }
+        }
+        {
+            #[doc(hidden)]
+            type UnderlyingSolTuple<'a> = ();
+            #[doc(hidden)]
+            type UnderlyingRustTuple<'a> = ();
+            #[cfg(test)]
+            #[allow(dead_code, unreachable_patterns)]
+            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
+                match _t {
+                    alloy_sol_types::private::AssertTypeEq::<
+                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
+                    >(_) => {}
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
+                fn from(value: unpauseReturn) -> Self {
+                    ()
+                }
+            }
+            #[automatically_derived]
+            #[doc(hidden)]
+            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
+                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
+                    Self {}
+                }
+            }
+        }
+        #[automatically_derived]
+        impl alloy_sol_types::SolCall for unpauseCall {
+            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
+            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
+            type Return = unpauseReturn;
+            type ReturnTuple<'a> = ();
+            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
+            const SIGNATURE: &'static str = "unpause(uint256)";
+            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
+            #[inline]
+            fn new<'a>(
+                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
+            ) -> Self {
+                tuple.into()
+            }
+            #[inline]
+            fn tokenize(&self) -> Self::Token<'_> {
+                (
+                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
+                        &self.newPausedStatus,
+                    ),
+                )
+            }
+            #[inline]
+            fn abi_decode_returns(
+                data: &[u8],
+                validate: bool,
+            ) -> alloy_sol_types::Result<Self::Return> {
+                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
+                    data, validate,
+                )
+                .map(Into::into)
+            }
+        }
+    };
+    ///Container for all the [`IncredibleSquaringTaskManager`](self) function calls.
+    pub enum IncredibleSquaringTaskManagerCalls {
+        #[allow(missing_docs)]
+        TASK_CHALLENGE_WINDOW_BLOCK(TASK_CHALLENGE_WINDOW_BLOCKCall),
+        #[allow(missing_docs)]
+        TASK_RESPONSE_WINDOW_BLOCK(TASK_RESPONSE_WINDOW_BLOCKCall),
+        #[allow(missing_docs)]
+        WADS_TO_SLASH(WADS_TO_SLASHCall),
+        #[allow(missing_docs)]
+        aggregator(aggregatorCall),
+        #[allow(missing_docs)]
+        allTaskHashes(allTaskHashesCall),
+        #[allow(missing_docs)]
+        allTaskResponses(allTaskResponsesCall),
+        #[allow(missing_docs)]
+        allocationManager(allocationManagerCall),
+        #[allow(missing_docs)]
+        blsApkRegistry(blsApkRegistryCall),
+        #[allow(missing_docs)]
+        checkSignatures(checkSignaturesCall),
+        #[allow(missing_docs)]
+        createNewTask(createNewTaskCall),
+        #[allow(missing_docs)]
+        delegation(delegationCall),
+        #[allow(missing_docs)]
+        generator(generatorCall),
+        #[allow(missing_docs)]
+        getBatchOperatorFromId(getBatchOperatorFromIdCall),
+        #[allow(missing_docs)]
+        getBatchOperatorId(getBatchOperatorIdCall),
+        #[allow(missing_docs)]
+        getCheckSignaturesIndices(getCheckSignaturesIndicesCall),
+        #[allow(missing_docs)]
+        getOperatorState_0(getOperatorState_0Call),
+        #[allow(missing_docs)]
+        getOperatorState_1(getOperatorState_1Call),
+        #[allow(missing_docs)]
+        getQuorumBitmapsAtBlockNumber(getQuorumBitmapsAtBlockNumberCall),
+        #[allow(missing_docs)]
+        getTaskResponseWindowBlock(getTaskResponseWindowBlockCall),
+        #[allow(missing_docs)]
+        initialize(initializeCall),
+        #[allow(missing_docs)]
+        instantSlasher(instantSlasherCall),
+        #[allow(missing_docs)]
+        latestTaskNum(latestTaskNumCall),
+        #[allow(missing_docs)]
+        owner(ownerCall),
+        #[allow(missing_docs)]
+        pause(pauseCall),
+        #[allow(missing_docs)]
+        pauseAll(pauseAllCall),
+        #[allow(missing_docs)]
+        paused_0(paused_0Call),
+        #[allow(missing_docs)]
+        paused_1(paused_1Call),
+        #[allow(missing_docs)]
+        pauserRegistry(pauserRegistryCall),
+        #[allow(missing_docs)]
+        raiseAndResolveChallenge(raiseAndResolveChallengeCall),
+        #[allow(missing_docs)]
+        registryCoordinator(registryCoordinatorCall),
+        #[allow(missing_docs)]
+        renounceOwnership(renounceOwnershipCall),
+        #[allow(missing_docs)]
+        respondToTask(respondToTaskCall),
+        #[allow(missing_docs)]
+        serviceManager(serviceManagerCall),
+        #[allow(missing_docs)]
+        setStaleStakesForbidden(setStaleStakesForbiddenCall),
+        #[allow(missing_docs)]
+        stakeRegistry(stakeRegistryCall),
+        #[allow(missing_docs)]
+        staleStakesForbidden(staleStakesForbiddenCall),
+        #[allow(missing_docs)]
+        taskNumber(taskNumberCall),
+        #[allow(missing_docs)]
+        taskSuccesfullyChallenged(taskSuccesfullyChallengedCall),
+        #[allow(missing_docs)]
+        transferOwnership(transferOwnershipCall),
+        #[allow(missing_docs)]
+        trySignatureAndApkVerification(trySignatureAndApkVerificationCall),
+        #[allow(missing_docs)]
+        unpause(unpauseCall),
+    }
+    #[automatically_derived]
+    impl IncredibleSquaringTaskManagerCalls {
+        /// All the selectors of this enum.
+        ///
+        /// Note that the selectors might not be in the same order as the variants.
+        /// No guarantees are made about the order of the selectors.
+        ///
+        /// Prefer using `SolInterface` methods instead.
+        pub const SELECTORS: &'static [[u8; 4usize]] = &[
+            [19u8, 100u8, 57u8, 221u8],
+            [20u8, 89u8, 69u8, 122u8],
+            [23u8, 31u8, 29u8, 91u8],
+            [26u8, 212u8, 49u8, 137u8],
+            [36u8, 90u8, 123u8, 252u8],
+            [44u8, 178u8, 35u8, 213u8],
+            [45u8, 137u8, 246u8, 252u8],
+            [49u8, 179u8, 107u8, 217u8],
+            [53u8, 99u8, 176u8, 209u8],
+            [57u8, 152u8, 253u8, 211u8],
+            [65u8, 108u8, 126u8, 94u8],
+            [77u8, 43u8, 87u8, 254u8],
+            [79u8, 115u8, 159u8, 116u8],
+            [89u8, 92u8, 106u8, 103u8],
+            [90u8, 45u8, 127u8, 2u8],
+            [90u8, 200u8, 106u8, 183u8],
+            [91u8, 174u8, 201u8, 160u8],
+            [92u8, 21u8, 86u8, 98u8],
+            [92u8, 151u8, 90u8, 187u8],
+            [93u8, 236u8, 195u8, 245u8],
+            [93u8, 244u8, 89u8, 70u8],
+            [104u8, 48u8, 72u8, 53u8],
+            [107u8, 83u8, 46u8, 158u8],
+            [107u8, 146u8, 120u8, 126u8],
+            [109u8, 20u8, 169u8, 135u8],
+            [110u8, 251u8, 70u8, 54u8],
+            [113u8, 80u8, 24u8, 166u8],
+            [114u8, 209u8, 142u8, 141u8],
+            [122u8, 250u8, 30u8, 237u8],
+            [136u8, 111u8, 17u8, 149u8],
+            [139u8, 0u8, 206u8, 124u8],
+            [141u8, 165u8, 203u8, 91u8],
+            [155u8, 41u8, 14u8, 152u8],
+            [185u8, 141u8, 9u8, 8u8],
+            [202u8, 138u8, 167u8, 199u8],
+            [206u8, 253u8, 193u8, 212u8],
+            [223u8, 92u8, 247u8, 35u8],
+            [242u8, 253u8, 227u8, 139u8],
+            [245u8, 201u8, 137u8, 157u8],
+            [246u8, 60u8, 91u8, 171u8],
+            [250u8, 188u8, 28u8, 188u8],
+        ];
+    }
+    #[automatically_derived]
+    impl alloy_sol_types::SolInterface for IncredibleSquaringTaskManagerCalls {
+        const NAME: &'static str = "IncredibleSquaringTaskManagerCalls";
+        const MIN_DATA_LENGTH: usize = 0usize;
+        const COUNT: usize = 41usize;
+        #[inline]
+        fn selector(&self) -> [u8; 4] {
+            match self {
+                Self::TASK_CHALLENGE_WINDOW_BLOCK(_) => {
+                    <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::TASK_RESPONSE_WINDOW_BLOCK(_) => {
+                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::WADS_TO_SLASH(_) => <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::aggregator(_) => <aggregatorCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::allTaskHashes(_) => <allTaskHashesCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::allTaskResponses(_) => {
+                    <allTaskResponsesCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::allocationManager(_) => {
+                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::blsApkRegistry(_) => {
+                    <blsApkRegistryCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::checkSignatures(_) => {
+                    <checkSignaturesCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::createNewTask(_) => <createNewTaskCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::delegation(_) => <delegationCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::generator(_) => <generatorCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::getBatchOperatorFromId(_) => {
+                    <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getBatchOperatorId(_) => {
+                    <getBatchOperatorIdCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getCheckSignaturesIndices(_) => {
+                    <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getOperatorState_0(_) => {
+                    <getOperatorState_0Call as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getOperatorState_1(_) => {
+                    <getOperatorState_1Call as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getQuorumBitmapsAtBlockNumber(_) => {
+                    <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::getTaskResponseWindowBlock(_) => {
+                    <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::instantSlasher(_) => {
+                    <instantSlasherCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::latestTaskNum(_) => <latestTaskNumCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
+                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
+                Self::pauserRegistry(_) => {
+                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::raiseAndResolveChallenge(_) => {
+                    <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::registryCoordinator(_) => {
+                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::renounceOwnership(_) => {
+                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::respondToTask(_) => <respondToTaskCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::serviceManager(_) => {
+                    <serviceManagerCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::setStaleStakesForbidden(_) => {
+                    <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::stakeRegistry(_) => <stakeRegistryCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::staleStakesForbidden(_) => {
+                    <staleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::taskNumber(_) => <taskNumberCall as alloy_sol_types::SolCall>::SELECTOR,
+                Self::taskSuccesfullyChallenged(_) => {
+                    <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::transferOwnership(_) => {
+                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::trySignatureAndApkVerification(_) => {
+                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::SELECTOR
+                }
+                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
+            }
+        }
+        #[inline]
+        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
+            Self::SELECTORS.get(i).copied()
+        }
+        #[inline]
+        fn valid_selector(selector: [u8; 4]) -> bool {
+            Self::SELECTORS.binary_search(&selector).is_ok()
+        }
+        #[inline]
+        #[allow(non_snake_case)]
+        fn abi_decode_raw(
+            selector: [u8; 4],
+            data: &[u8],
+            validate: bool,
+        ) -> alloy_sol_types::Result<Self> {
+            static DECODE_SHIMS: &[fn(
+                &[u8],
+                bool,
+            ) -> alloy_sol_types::Result<
+                IncredibleSquaringTaskManagerCalls,
+            >] = &[
+                {
+                    fn pause(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::pause)
+                    }
+                    pause
+                },
+                {
+                    fn initialize(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::initialize)
+                    }
+                    initialize
+                },
+                {
+                    fn trySignatureAndApkVerification(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                              data,
+                              validate,
+                          )
+                          .map(
+                              IncredibleSquaringTaskManagerCalls::trySignatureAndApkVerification,
+                          )
+                    }
+                    trySignatureAndApkVerification
+                },
+                {
+                    fn TASK_RESPONSE_WINDOW_BLOCK(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                              data,
+                              validate,
+                          )
+                          .map(
+                              IncredibleSquaringTaskManagerCalls::TASK_RESPONSE_WINDOW_BLOCK,
+                          )
+                    }
+                    TASK_RESPONSE_WINDOW_BLOCK
+                },
+                {
+                    fn aggregator(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <aggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::aggregator)
+                    }
+                    aggregator
+                },
+                {
+                    fn allTaskResponses(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::allTaskResponses)
+                    }
+                    allTaskResponses
+                },
+                {
+                    fn allTaskHashes(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <allTaskHashesCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::allTaskHashes)
+                    }
+                    allTaskHashes
+                },
+                {
+                    fn getBatchOperatorId(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::getBatchOperatorId)
+                    }
+                    getBatchOperatorId
+                },
+                {
+                    fn getOperatorState_0(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::getOperatorState_0)
+                    }
+                    getOperatorState_0
+                },
+                {
+                    fn serviceManager(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <serviceManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::serviceManager)
+                    }
+                    serviceManager
+                },
+                {
+                    fn setStaleStakesForbidden(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::setStaleStakesForbidden)
+                    }
+                    setStaleStakesForbidden
+                },
+                {
+                    fn getBatchOperatorFromId(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::getBatchOperatorFromId)
+                    }
+                    getBatchOperatorFromId
+                },
+                {
+                    fn getCheckSignaturesIndices(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::getCheckSignaturesIndices)
+                    }
+                    getCheckSignaturesIndices
+                },
+                {
+                    fn pauseAll(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::pauseAll)
+                    }
+                    pauseAll
+                },
+                {
+                    fn WADS_TO_SLASH(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::WADS_TO_SLASH)
+                    }
+                    WADS_TO_SLASH
+                },
+                {
+                    fn paused_0(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::paused_0)
+                    }
+                    paused_0
+                },
+                {
+                    fn respondToTask(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <respondToTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::respondToTask)
+                    }
+                    respondToTask
+                },
+                {
+                    fn getQuorumBitmapsAtBlockNumber(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                              data,
+                              validate,
+                          )
+                          .map(
+                              IncredibleSquaringTaskManagerCalls::getQuorumBitmapsAtBlockNumber,
+                          )
+                    }
+                    getQuorumBitmapsAtBlockNumber
+                },
+                {
+                    fn paused_1(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::paused_1)
+                    }
+                    paused_1
+                },
+                {
+                    fn taskSuccesfullyChallenged(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::taskSuccesfullyChallenged)
+                    }
+                    taskSuccesfullyChallenged
+                },
+                {
+                    fn blsApkRegistry(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::blsApkRegistry)
+                    }
+                    blsApkRegistry
+                },
+                {
+                    fn stakeRegistry(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::stakeRegistry)
+                    }
+                    stakeRegistry
+                },
+                {
+                    fn raiseAndResolveChallenge(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::raiseAndResolveChallenge)
+                    }
+                    raiseAndResolveChallenge
+                },
+                {
+                    fn createNewTask(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <createNewTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::createNewTask)
+                    }
+                    createNewTask
+                },
+                {
+                    fn registryCoordinator(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::registryCoordinator)
+                    }
+                    registryCoordinator
+                },
+                {
+                    fn checkSignatures(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::checkSignatures)
+                    }
+                    checkSignatures
+                },
+                {
+                    fn renounceOwnership(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::renounceOwnership)
+                    }
+                    renounceOwnership
+                },
+                {
+                    fn taskNumber(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <taskNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::taskNumber)
+                    }
+                    taskNumber
+                },
+                {
+                    fn generator(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <generatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::generator)
+                    }
+                    generator
+                },
+                {
+                    fn pauserRegistry(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::pauserRegistry)
+                    }
+                    pauserRegistry
+                },
+                {
+                    fn latestTaskNum(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <latestTaskNumCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::latestTaskNum)
+                    }
+                    latestTaskNum
+                },
+                {
+                    fn owner(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::owner)
+                    }
+                    owner
+                },
+                {
+                    fn instantSlasher(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <instantSlasherCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::instantSlasher)
+                    }
+                    instantSlasher
+                },
+                {
+                    fn staleStakesForbidden(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::staleStakesForbidden)
+                    }
+                    staleStakesForbidden
+                },
+                {
+                    fn allocationManager(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::allocationManager)
+                    }
+                    allocationManager
+                },
+                {
+                    fn getOperatorState_1(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::getOperatorState_1)
+                    }
+                    getOperatorState_1
+                },
+                {
+                    fn delegation(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::delegation)
+                    }
+                    delegation
+                },
+                {
+                    fn transferOwnership(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerCalls::transferOwnership)
+                    }
+                    transferOwnership
+                },
+                {
+                    fn getTaskResponseWindowBlock(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                              data,
+                              validate,
+                          )
+                          .map(
+                              IncredibleSquaringTaskManagerCalls::getTaskResponseWindowBlock,
+                          )
+                    }
+                    getTaskResponseWindowBlock
+                },
+                {
+                    fn TASK_CHALLENGE_WINDOW_BLOCK(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw(
+                              data,
+                              validate,
+                          )
+                          .map(
+                              IncredibleSquaringTaskManagerCalls::TASK_CHALLENGE_WINDOW_BLOCK,
+                          )
+                    }
+                    TASK_CHALLENGE_WINDOW_BLOCK
+                },
+                {
+                    fn unpause(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls>
+                    {
+                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerCalls::unpause)
+                    }
+                    unpause
+                },
+            ];
+            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
+                return Err(alloy_sol_types::Error::unknown_selector(
+                    <Self as alloy_sol_types::SolInterface>::NAME,
+                    selector,
+                ));
+            };
+            DECODE_SHIMS[idx](data, validate)
+        }
+        #[inline]
+        fn abi_encoded_size(&self) -> usize {
+            match self {
+              Self::TASK_CHALLENGE_WINDOW_BLOCK(inner) => {
+                  <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
+                  <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::WADS_TO_SLASH(inner) => {
+                  <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::aggregator(inner) => {
+                  <aggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::allTaskHashes(inner) => {
+                  <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::allTaskResponses(inner) => {
+                  <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::allocationManager(inner) => {
+                  <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::blsApkRegistry(inner) => {
+                  <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::checkSignatures(inner) => {
+                  <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::createNewTask(inner) => {
+                  <createNewTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::delegation(inner) => {
+                  <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::generator(inner) => {
+                  <generatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::getBatchOperatorFromId(inner) => {
+                  <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getBatchOperatorId(inner) => {
+                  <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getCheckSignaturesIndices(inner) => {
+                  <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getOperatorState_0(inner) => {
+                  <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getOperatorState_1(inner) => {
+                  <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getQuorumBitmapsAtBlockNumber(inner) => {
+                  <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::getTaskResponseWindowBlock(inner) => {
+                  <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::initialize(inner) => {
+                  <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::instantSlasher(inner) => {
+                  <instantSlasherCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::latestTaskNum(inner) => {
+                  <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::owner(inner) => {
+                  <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::pause(inner) => {
+                  <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::pauseAll(inner) => {
+                  <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::paused_0(inner) => {
+                  <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::paused_1(inner) => {
+                  <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::pauserRegistry(inner) => {
+                  <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::raiseAndResolveChallenge(inner) => {
+                  <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::registryCoordinator(inner) => {
+                  <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::renounceOwnership(inner) => {
+                  <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::respondToTask(inner) => {
+                  <respondToTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::serviceManager(inner) => {
+                  <serviceManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::setStaleStakesForbidden(inner) => {
+                  <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::stakeRegistry(inner) => {
+                  <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::staleStakesForbidden(inner) => {
+                  <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::taskNumber(inner) => {
+                  <taskNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+              Self::taskSuccesfullyChallenged(inner) => {
+                  <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::transferOwnership(inner) => {
+                  <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::trySignatureAndApkVerification(inner) => {
+                  <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encoded_size(
+                      inner,
+                  )
+              }
+              Self::unpause(inner) => {
+                  <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
+              }
+          }
+        }
+        #[inline]
+        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+            match self {
+                Self::TASK_CHALLENGE_WINDOW_BLOCK(inner) => {
+                    <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
+                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::WADS_TO_SLASH(inner) => {
+                    <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::aggregator(inner) => {
+                    <aggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::allTaskHashes(inner) => {
+                    <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::allTaskResponses(inner) => {
+                    <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::allocationManager(inner) => {
+                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::blsApkRegistry(inner) => {
+                    <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::checkSignatures(inner) => {
+                    <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::createNewTask(inner) => {
+                    <createNewTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::delegation(inner) => {
+                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::generator(inner) => {
+                    <generatorCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::getBatchOperatorFromId(inner) => {
+                    <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::getBatchOperatorId(inner) => {
+                    <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::getCheckSignaturesIndices(inner) => {
+                    <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::getOperatorState_0(inner) => {
+                    <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::getOperatorState_1(inner) => {
+                    <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::getQuorumBitmapsAtBlockNumber(inner) => {
+                    <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::getTaskResponseWindowBlock(inner) => {
+                    <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::initialize(inner) => {
+                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::instantSlasher(inner) => {
+                    <instantSlasherCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::latestTaskNum(inner) => {
+                    <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::owner(inner) => {
+                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::pause(inner) => {
+                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::pauseAll(inner) => {
+                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::paused_0(inner) => {
+                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::paused_1(inner) => {
+                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::pauserRegistry(inner) => {
+                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::raiseAndResolveChallenge(inner) => {
+                    <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::registryCoordinator(inner) => {
+                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::renounceOwnership(inner) => {
+                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::respondToTask(inner) => {
+                    <respondToTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::serviceManager(inner) => {
+                    <serviceManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::setStaleStakesForbidden(inner) => {
+                    <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::stakeRegistry(inner) => {
+                    <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::staleStakesForbidden(inner) => {
+                    <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::taskNumber(inner) => {
+                    <taskNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::taskSuccesfullyChallenged(inner) => {
+                    <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::transferOwnership(inner) => {
+                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+                Self::trySignatureAndApkVerification(inner) => {
+                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::unpause(inner) => {
+                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
+                }
+            }
+        }
+    }
+    ///Container for all the [`IncredibleSquaringTaskManager`](self) custom errors.
+    pub enum IncredibleSquaringTaskManagerErrors {
+        #[allow(missing_docs)]
+        BitmapValueTooLarge(BitmapValueTooLarge),
+        #[allow(missing_docs)]
+        BytesArrayLengthTooLong(BytesArrayLengthTooLong),
+        #[allow(missing_docs)]
+        BytesArrayNotOrdered(BytesArrayNotOrdered),
+        #[allow(missing_docs)]
+        CurrentlyPaused(CurrentlyPaused),
+        #[allow(missing_docs)]
+        ECAddFailed(ECAddFailed),
+        #[allow(missing_docs)]
+        ECMulFailed(ECMulFailed),
+        #[allow(missing_docs)]
+        ExpModFailed(ExpModFailed),
+        #[allow(missing_docs)]
+        InputAddressZero(InputAddressZero),
+        #[allow(missing_docs)]
+        InputArrayLengthMismatch(InputArrayLengthMismatch),
+        #[allow(missing_docs)]
+        InputEmptyQuorumNumbers(InputEmptyQuorumNumbers),
+        #[allow(missing_docs)]
+        InputNonSignerLengthMismatch(InputNonSignerLengthMismatch),
+        #[allow(missing_docs)]
+        InvalidBLSPairingKey(InvalidBLSPairingKey),
+        #[allow(missing_docs)]
+        InvalidBLSSignature(InvalidBLSSignature),
+        #[allow(missing_docs)]
+        InvalidNewPausedStatus(InvalidNewPausedStatus),
+        #[allow(missing_docs)]
+        InvalidQuorumApkHash(InvalidQuorumApkHash),
+        #[allow(missing_docs)]
+        InvalidReferenceBlocknumber(InvalidReferenceBlocknumber),
+        #[allow(missing_docs)]
+        NonSignerPubkeysNotSorted(NonSignerPubkeysNotSorted),
+        #[allow(missing_docs)]
+        OnlyPauser(OnlyPauser),
+        #[allow(missing_docs)]
+        OnlyRegistryCoordinatorOwner(OnlyRegistryCoordinatorOwner),
+        #[allow(missing_docs)]
+        OnlyUnpauser(OnlyUnpauser),
+        #[allow(missing_docs)]
+        OperatorNotRegistered(OperatorNotRegistered),
+        #[allow(missing_docs)]
+        ScalarTooLarge(ScalarTooLarge),
+        #[allow(missing_docs)]
+        StaleStakesForbidden(StaleStakesForbidden),
+    }
+    #[automatically_derived]
+    impl IncredibleSquaringTaskManagerErrors {
+        /// All the selectors of this enum.
+        ///
+        /// Note that the selectors might not be in the same order as the variants.
+        /// No guarantees are made about the order of the selectors.
+        ///
+        /// Prefer using `SolInterface` methods instead.
+        pub const SELECTORS: &'static [[u8; 4usize]] = &[
+            [31u8, 4u8, 5u8, 160u8],
+            [37u8, 236u8, 108u8, 31u8],
+            [67u8, 113u8, 74u8, 253u8],
+            [70u8, 51u8, 190u8, 50u8],
+            [75u8, 135u8, 79u8, 69u8],
+            [95u8, 131u8, 47u8, 65u8],
+            [103u8, 152u8, 141u8, 51u8],
+            [115u8, 99u8, 33u8, 118u8],
+            [117u8, 223u8, 81u8, 220u8],
+            [121u8, 72u8, 33u8, 255u8],
+            [128u8, 200u8, 131u8, 72u8],
+            [132u8, 10u8, 72u8, 213u8],
+            [171u8, 27u8, 35u8, 107u8],
+            [175u8, 252u8, 94u8, 219u8],
+            [198u8, 29u8, 202u8, 93u8],
+            [202u8, 149u8, 115u8, 51u8],
+            [212u8, 182u8, 143u8, 215u8],
+            [213u8, 30u8, 218u8, 227u8],
+            [224u8, 225u8, 231u8, 98u8],
+            [225u8, 49u8, 10u8, 237u8],
+            [251u8, 74u8, 156u8, 142u8],
+            [255u8, 113u8, 148u8, 20u8],
+            [255u8, 137u8, 212u8, 250u8],
+        ];
+    }
+    #[automatically_derived]
+    impl alloy_sol_types::SolInterface for IncredibleSquaringTaskManagerErrors {
+        const NAME: &'static str = "IncredibleSquaringTaskManagerErrors";
+        const MIN_DATA_LENGTH: usize = 0usize;
+        const COUNT: usize = 23usize;
+        #[inline]
+        fn selector(&self) -> [u8; 4] {
+            match self {
+                Self::BitmapValueTooLarge(_) => {
+                    <BitmapValueTooLarge as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::BytesArrayLengthTooLong(_) => {
+                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::BytesArrayNotOrdered(_) => {
+                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::CurrentlyPaused(_) => {
+                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::ECAddFailed(_) => <ECAddFailed as alloy_sol_types::SolError>::SELECTOR,
+                Self::ECMulFailed(_) => <ECMulFailed as alloy_sol_types::SolError>::SELECTOR,
+                Self::ExpModFailed(_) => <ExpModFailed as alloy_sol_types::SolError>::SELECTOR,
+                Self::InputAddressZero(_) => {
+                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InputArrayLengthMismatch(_) => {
+                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InputEmptyQuorumNumbers(_) => {
+                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InputNonSignerLengthMismatch(_) => {
+                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InvalidBLSPairingKey(_) => {
+                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InvalidBLSSignature(_) => {
+                    <InvalidBLSSignature as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InvalidNewPausedStatus(_) => {
+                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InvalidQuorumApkHash(_) => {
+                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::InvalidReferenceBlocknumber(_) => {
+                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::NonSignerPubkeysNotSorted(_) => {
+                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::OnlyPauser(_) => <OnlyPauser as alloy_sol_types::SolError>::SELECTOR,
+                Self::OnlyRegistryCoordinatorOwner(_) => {
+                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::OnlyUnpauser(_) => <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR,
+                Self::OperatorNotRegistered(_) => {
+                    <OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR
+                }
+                Self::ScalarTooLarge(_) => <ScalarTooLarge as alloy_sol_types::SolError>::SELECTOR,
+                Self::StaleStakesForbidden(_) => {
+                    <StaleStakesForbidden as alloy_sol_types::SolError>::SELECTOR
+                }
+            }
+        }
+        #[inline]
+        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
+            Self::SELECTORS.get(i).copied()
+        }
+        #[inline]
+        fn valid_selector(selector: [u8; 4]) -> bool {
+            Self::SELECTORS.binary_search(&selector).is_ok()
+        }
+        #[inline]
+        #[allow(non_snake_case)]
+        fn abi_decode_raw(
+            selector: [u8; 4],
+            data: &[u8],
+            validate: bool,
+        ) -> alloy_sol_types::Result<Self> {
+            static DECODE_SHIMS: &[fn(
+                &[u8],
+                bool,
+            ) -> alloy_sol_types::Result<
+                IncredibleSquaringTaskManagerErrors,
+            >] = &[
+                {
+                    fn InputEmptyQuorumNumbers(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InputEmptyQuorumNumbers)
+                    }
+                    InputEmptyQuorumNumbers
+                },
+                {
+                    fn OperatorNotRegistered(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::OperatorNotRegistered)
+                    }
+                    OperatorNotRegistered
+                },
+                {
+                    fn InputArrayLengthMismatch(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InputArrayLengthMismatch)
+                    }
+                    InputArrayLengthMismatch
+                },
+                {
+                    fn ECMulFailed(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerErrors::ECMulFailed)
+                    }
+                    ECMulFailed
+                },
+                {
+                    fn InvalidReferenceBlocknumber(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InvalidReferenceBlocknumber)
+                    }
+                    InvalidReferenceBlocknumber
+                },
+                {
+                    fn InputNonSignerLengthMismatch(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InputNonSignerLengthMismatch)
+                    }
+                    InputNonSignerLengthMismatch
+                },
+                {
+                    fn InvalidBLSPairingKey(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InvalidBLSPairingKey)
+                    }
+                    InvalidBLSPairingKey
+                },
+                {
+                    fn InputAddressZero(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InputAddressZero)
+                    }
+                    InputAddressZero
+                },
+                {
+                    fn OnlyPauser(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerErrors::OnlyPauser)
+                    }
+                    OnlyPauser
+                },
+                {
+                    fn OnlyUnpauser(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerErrors::OnlyUnpauser)
+                    }
+                    OnlyUnpauser
+                },
+                {
+                    fn BytesArrayNotOrdered(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::BytesArrayNotOrdered)
+                    }
+                    BytesArrayNotOrdered
+                },
+                {
+                    fn CurrentlyPaused(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::CurrentlyPaused)
+                    }
+                    CurrentlyPaused
+                },
+                {
+                    fn InvalidBLSSignature(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InvalidBLSSignature as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InvalidBLSSignature)
+                    }
+                    InvalidBLSSignature
+                },
+                {
+                    fn StaleStakesForbidden(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <StaleStakesForbidden as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::StaleStakesForbidden)
+                    }
+                    StaleStakesForbidden
+                },
+                {
+                    fn InvalidNewPausedStatus(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InvalidNewPausedStatus)
+                    }
+                    InvalidNewPausedStatus
+                },
+                {
+                    fn BitmapValueTooLarge(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::BitmapValueTooLarge)
+                    }
+                    BitmapValueTooLarge
+                },
+                {
+                    fn ECAddFailed(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerErrors::ECAddFailed)
+                    }
+                    ECAddFailed
+                },
+                {
+                    fn ExpModFailed(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <ExpModFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
+                            .map(IncredibleSquaringTaskManagerErrors::ExpModFailed)
+                    }
+                    ExpModFailed
+                },
+                {
+                    fn OnlyRegistryCoordinatorOwner(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::OnlyRegistryCoordinatorOwner)
+                    }
+                    OnlyRegistryCoordinatorOwner
+                },
+                {
+                    fn InvalidQuorumApkHash(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::InvalidQuorumApkHash)
+                    }
+                    InvalidQuorumApkHash
+                },
+                {
+                    fn BytesArrayLengthTooLong(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::BytesArrayLengthTooLong)
+                    }
+                    BytesArrayLengthTooLong
+                },
+                {
+                    fn NonSignerPubkeysNotSorted(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::NonSignerPubkeysNotSorted)
+                    }
+                    NonSignerPubkeysNotSorted
+                },
+                {
+                    fn ScalarTooLarge(
+                        data: &[u8],
+                        validate: bool,
+                    ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors>
+                    {
+                        <ScalarTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
+                            data, validate,
+                        )
+                        .map(IncredibleSquaringTaskManagerErrors::ScalarTooLarge)
+                    }
+                    ScalarTooLarge
+                },
+            ];
+            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
+                return Err(alloy_sol_types::Error::unknown_selector(
+                    <Self as alloy_sol_types::SolInterface>::NAME,
+                    selector,
+                ));
+            };
+            DECODE_SHIMS[idx](data, validate)
+        }
+        #[inline]
+        fn abi_encoded_size(&self) -> usize {
+            match self {
+                Self::BitmapValueTooLarge(inner) => {
+                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::BytesArrayLengthTooLong(inner) => {
+                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::BytesArrayNotOrdered(inner) => {
+                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::CurrentlyPaused(inner) => {
+                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::ECAddFailed(inner) => {
+                    <ECAddFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::ECMulFailed(inner) => {
+                    <ECMulFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::ExpModFailed(inner) => {
+                    <ExpModFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InputAddressZero(inner) => {
+                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InputArrayLengthMismatch(inner) => {
+                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InputEmptyQuorumNumbers(inner) => {
+                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InputNonSignerLengthMismatch(inner) => {
+                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
+                        inner,
+                    )
+                }
+                Self::InvalidBLSPairingKey(inner) => {
+                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InvalidBLSSignature(inner) => {
+                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InvalidNewPausedStatus(inner) => {
+                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InvalidQuorumApkHash(inner) => {
+                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::InvalidReferenceBlocknumber(inner) => {
+                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encoded_size(
+                        inner,
+                    )
+                }
+                Self::NonSignerPubkeysNotSorted(inner) => {
+                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encoded_size(
+                        inner,
+                    )
+                }
+                Self::OnlyPauser(inner) => {
+                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::OnlyRegistryCoordinatorOwner(inner) => {
+                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
+                        inner,
+                    )
+                }
+                Self::OnlyUnpauser(inner) => {
+                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::OperatorNotRegistered(inner) => {
+                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::ScalarTooLarge(inner) => {
+                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+                Self::StaleStakesForbidden(inner) => {
+                    <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encoded_size(inner)
+                }
+            }
+        }
+        #[inline]
+        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
+            match self {
+                Self::BitmapValueTooLarge(inner) => {
+                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::BytesArrayLengthTooLong(inner) => {
+                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::BytesArrayNotOrdered(inner) => {
+                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::CurrentlyPaused(inner) => {
+                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::ECAddFailed(inner) => {
+                    <ECAddFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::ECMulFailed(inner) => {
+                    <ECMulFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::ExpModFailed(inner) => {
+                    <ExpModFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::InputAddressZero(inner) => {
+                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::InputArrayLengthMismatch(inner) => {
+                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::InputEmptyQuorumNumbers(inner) => {
+                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::InputNonSignerLengthMismatch(inner) => {
+                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::InvalidBLSPairingKey(inner) => {
+                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::InvalidBLSSignature(inner) => {
+                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::InvalidNewPausedStatus(inner) => {
+                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::InvalidQuorumApkHash(inner) => {
+                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::InvalidReferenceBlocknumber(inner) => {
+                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::NonSignerPubkeysNotSorted(inner) => {
+                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::OnlyPauser(inner) => {
+                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::OnlyRegistryCoordinatorOwner(inner) => {
+                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
+                        inner, out,
+                    )
+                }
+                Self::OnlyUnpauser(inner) => {
+                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::OperatorNotRegistered(inner) => {
+                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::ScalarTooLarge(inner) => {
+                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+                Self::StaleStakesForbidden(inner) => {
+                    <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
+                }
+            }
+        }
+    }
+    ///Container for all the [`IncredibleSquaringTaskManager`](self) events.
+    pub enum IncredibleSquaringTaskManagerEvents {
+        #[allow(missing_docs)]
+        Initialized(Initialized),
+        #[allow(missing_docs)]
+        NewTaskCreated(NewTaskCreated),
+        #[allow(missing_docs)]
+        OwnershipTransferred(OwnershipTransferred),
+        #[allow(missing_docs)]
+        Paused(Paused),
+        #[allow(missing_docs)]
+        StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate),
+        #[allow(missing_docs)]
+        TaskChallengedSuccessfully(TaskChallengedSuccessfully),
+        #[allow(missing_docs)]
+        TaskChallengedUnsuccessfully(TaskChallengedUnsuccessfully),
+        #[allow(missing_docs)]
+        TaskCompleted(TaskCompleted),
+        #[allow(missing_docs)]
+        TaskResponded(TaskResponded),
+        #[allow(missing_docs)]
+        Unpaused(Unpaused),
+    }
+    #[automatically_derived]
+    impl IncredibleSquaringTaskManagerEvents {
+        /// All the selectors of this enum.
+        ///
+        /// Note that the selectors might not be in the same order as the variants.
+        /// No guarantees are made about the order of the selectors.
+        ///
+        /// Prefer using `SolInterface` methods instead.
+        pub const SELECTORS: &'static [[u8; 32usize]] = &[
+            [
+                22u8, 149u8, 184u8, 208u8, 110u8, 200u8, 0u8, 180u8, 97u8, 94u8, 116u8, 92u8,
+                251u8, 91u8, 208u8, 12u8, 31u8, 40u8, 117u8, 97u8, 93u8, 66u8, 146u8, 92u8, 59u8,
+                90u8, 250u8, 84u8, 59u8, 178u8, 76u8, 72u8,
+            ],
+            [
+                52u8, 156u8, 30u8, 230u8, 14u8, 78u8, 137u8, 114u8, 238u8, 157u8, 186u8, 100u8,
+                44u8, 23u8, 116u8, 84u8, 61u8, 92u8, 65u8, 54u8, 135u8, 155u8, 127u8, 76u8, 170u8,
+                240u8, 75u8, 248u8, 26u8, 72u8, 122u8, 42u8,
+            ],
+            [
+                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
+                188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
+                107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
+            ],
+            [
+                64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8,
+                87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8,
+                27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
+            ],
+            [
+                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8,
+                82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8,
+                206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
+            ],
+            [
+                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
+                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
+                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
+            ],
+            [
+                154u8, 20u8, 79u8, 34u8, 138u8, 147u8, 27u8, 157u8, 13u8, 22u8, 150u8, 251u8,
+                205u8, 175u8, 49u8, 11u8, 36u8, 181u8, 210u8, 210u8, 30u8, 121u8, 157u8, 182u8,
+                35u8, 252u8, 152u8, 106u8, 15u8, 84u8, 116u8, 48u8,
+            ],
+            [
+                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
+                152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
+                224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
+            ],
+            [
+                194u8, 13u8, 27u8, 176u8, 241u8, 98u8, 54u8, 128u8, 48u8, 107u8, 131u8, 212u8,
+                255u8, 75u8, 185u8, 154u8, 43u8, 235u8, 157u8, 134u8, 217u8, 120u8, 50u8, 243u8,
+                202u8, 64u8, 253u8, 19u8, 162u8, 157u8, 241u8, 236u8,
+            ],
+            [
+                253u8, 62u8, 38u8, 190u8, 235u8, 89u8, 103u8, 252u8, 90u8, 87u8, 160u8, 68u8,
+                105u8, 20u8, 234u8, 188u8, 69u8, 180u8, 170u8, 71u8, 76u8, 103u8, 165u8, 27u8,
+                75u8, 81u8, 96u8, 202u8, 198u8, 13u8, 219u8, 5u8,
+            ],
+        ];
+    }
+    #[automatically_derived]
+    impl alloy_sol_types::SolEventInterface for IncredibleSquaringTaskManagerEvents {
+        const NAME: &'static str = "IncredibleSquaringTaskManagerEvents";
+        const COUNT: usize = 10usize;
+        fn decode_raw_log(
+            topics: &[alloy_sol_types::Word],
+            data: &[u8],
+            validate: bool,
+        ) -> alloy_sol_types::Result<Self> {
+            match topics.first().copied() {
+                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::Initialized)
+                }
+                Some(<NewTaskCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <NewTaskCreated as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::NewTaskCreated)
+                }
+                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::OwnershipTransferred)
+                }
+                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
+                        .map(Self::Paused)
+                }
+                Some(<StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::StaleStakesForbiddenUpdate)
+                }
+                Some(<TaskChallengedSuccessfully as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <TaskChallengedSuccessfully as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::TaskChallengedSuccessfully)
+                }
+                Some(
+                    <TaskChallengedUnsuccessfully as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
+                ) => <TaskChallengedUnsuccessfully as alloy_sol_types::SolEvent>::decode_raw_log(
+                    topics, data, validate,
+                )
+                .map(Self::TaskChallengedUnsuccessfully),
+                Some(<TaskCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <TaskCompleted as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::TaskCompleted)
+                }
+                Some(<TaskResponded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <TaskResponded as alloy_sol_types::SolEvent>::decode_raw_log(
+                        topics, data, validate,
+                    )
+                    .map(Self::TaskResponded)
+                }
+                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
+                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
+                        .map(Self::Unpaused)
+                }
+                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
+                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
+                    log: alloy_sol_types::private::Box::new(
+                        alloy_sol_types::private::LogData::new_unchecked(
+                            topics.to_vec(),
+                            data.to_vec().into(),
+                        ),
+                    ),
+                }),
+            }
+        }
+    }
+    #[automatically_derived]
+    impl alloy_sol_types::private::IntoLogData for IncredibleSquaringTaskManagerEvents {
+        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
+            match self {
+                Self::Initialized(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::NewTaskCreated(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::OwnershipTransferred(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
+                Self::StaleStakesForbiddenUpdate(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::TaskChallengedSuccessfully(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::TaskChallengedUnsuccessfully(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::TaskCompleted(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::TaskResponded(inner) => {
+                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
+                }
+                Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
+            }
+        }
+        fn into_log_data(self) -> alloy_sol_types::private::LogData {
+            match self {
+                Self::Initialized(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::NewTaskCreated(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::OwnershipTransferred(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
+                Self::StaleStakesForbiddenUpdate(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::TaskChallengedSuccessfully(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::TaskChallengedUnsuccessfully(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::TaskCompleted(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::TaskResponded(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+                Self::Unpaused(inner) => {
+                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
+                }
+            }
+        }
+    }
+    use alloy::contract as alloy_contract;
+    /**Creates a new wrapper around an on-chain [`IncredibleSquaringTaskManager`](self) contract instance.
+
+    See the [wrapper's documentation](`IncredibleSquaringTaskManagerInstance`) for more details.*/
+    #[inline]
+    pub const fn new<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        address: alloy_sol_types::private::Address,
+        provider: P,
+    ) -> IncredibleSquaringTaskManagerInstance<T, P, N> {
+        IncredibleSquaringTaskManagerInstance::<T, P, N>::new(address, provider)
+    }
+    /**Deploys this contract using the given `provider` and constructor arguments, if any.
+
+    Returns a new instance of the contract, if the deployment was successful.
+
+    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
+    #[inline]
+    pub fn deploy<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        provider: P,
+        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
+        _pauserRegistry: alloy::sol_types::private::Address,
+        _taskResponseWindowBlock: u32,
+        _serviceManager: alloy::sol_types::private::Address,
+    ) -> impl ::core::future::Future<
+        Output = alloy_contract::Result<IncredibleSquaringTaskManagerInstance<T, P, N>>,
+    > {
+        IncredibleSquaringTaskManagerInstance::<T, P, N>::deploy(
+            provider,
+            _slashingRegistryCoordinator,
+            _pauserRegistry,
+            _taskResponseWindowBlock,
+            _serviceManager,
+        )
+    }
+    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
+    and constructor arguments, if any.
+
+    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
+    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
+    #[inline]
+    pub fn deploy_builder<
+        T: alloy_contract::private::Transport + ::core::clone::Clone,
+        P: alloy_contract::private::Provider<T, N>,
+        N: alloy_contract::private::Network,
+    >(
+        provider: P,
+        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
+        _pauserRegistry: alloy::sol_types::private::Address,
+        _taskResponseWindowBlock: u32,
+        _serviceManager: alloy::sol_types::private::Address,
+    ) -> alloy_contract::RawCallBuilder<T, P, N> {
+        IncredibleSquaringTaskManagerInstance::<T, P, N>::deploy_builder(
+            provider,
+            _slashingRegistryCoordinator,
+            _pauserRegistry,
+            _taskResponseWindowBlock,
+            _serviceManager,
+        )
+    }
+    /**A [`IncredibleSquaringTaskManager`](self) instance.
+
+    Contains type-safe methods for interacting with an on-chain instance of the
+    [`IncredibleSquaringTaskManager`](self) contract located at a given `address`, using a given
+    provider `P`.
+
+    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
+    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
+    be used to deploy a new instance of the contract.
+
+    See the [module-level documentation](self) for all the available methods.*/
+    #[derive(Clone)]
+    pub struct IncredibleSquaringTaskManagerInstance<T, P, N = alloy_contract::private::Ethereum> {
+        address: alloy_sol_types::private::Address,
+        provider: P,
+        _network_transport: ::core::marker::PhantomData<(N, T)>,
+    }
+    #[automatically_derived]
+    impl<T, P, N> ::core::fmt::Debug for IncredibleSquaringTaskManagerInstance<T, P, N> {
+        #[inline]
+        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+            f.debug_tuple("IncredibleSquaringTaskManagerInstance")
+                .field(&self.address)
+                .finish()
+        }
+    }
+    /// Instantiation and getters/setters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /**Creates a new wrapper around an on-chain [`IncredibleSquaringTaskManager`](self) contract instance.
+
+        See the [wrapper's documentation](`IncredibleSquaringTaskManagerInstance`) for more details.*/
+        #[inline]
+        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
+            Self {
+                address,
+                provider,
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+        /**Deploys this contract using the given `provider` and constructor arguments, if any.
+
+        Returns a new instance of the contract, if the deployment was successful.
+
+        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
+        #[inline]
+        pub async fn deploy(
+            provider: P,
+            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
+            _pauserRegistry: alloy::sol_types::private::Address,
+            _taskResponseWindowBlock: u32,
+            _serviceManager: alloy::sol_types::private::Address,
+        ) -> alloy_contract::Result<IncredibleSquaringTaskManagerInstance<T, P, N>> {
+            let call_builder = Self::deploy_builder(
+                provider,
+                _slashingRegistryCoordinator,
+                _pauserRegistry,
+                _taskResponseWindowBlock,
+                _serviceManager,
+            );
+            let contract_address = call_builder.deploy().await?;
+            Ok(Self::new(contract_address, call_builder.provider))
+        }
+        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
+        and constructor arguments, if any.
+
+        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
+        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
+        #[inline]
+        pub fn deploy_builder(
+            provider: P,
+            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
+            _pauserRegistry: alloy::sol_types::private::Address,
+            _taskResponseWindowBlock: u32,
+            _serviceManager: alloy::sol_types::private::Address,
+        ) -> alloy_contract::RawCallBuilder<T, P, N> {
+            alloy_contract::RawCallBuilder::new_raw_deploy(
+                provider,
+                [
+                    &BYTECODE[..],
+                    &alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
+                        _slashingRegistryCoordinator,
+                        _pauserRegistry,
+                        _taskResponseWindowBlock,
+                        _serviceManager,
+                    })[..],
+                ]
+                .concat()
+                .into(),
+            )
+        }
+        /// Returns a reference to the address.
+        #[inline]
+        pub const fn address(&self) -> &alloy_sol_types::private::Address {
+            &self.address
+        }
+        /// Sets the address.
+        #[inline]
+        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
+            self.address = address;
+        }
+        /// Sets the address and returns `self`.
+        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
+            self.set_address(address);
+            self
+        }
+        /// Returns a reference to the provider.
+        #[inline]
+        pub const fn provider(&self) -> &P {
+            &self.provider
+        }
+    }
+    impl<T, P: ::core::clone::Clone, N> IncredibleSquaringTaskManagerInstance<T, &P, N> {
+        /// Clones the provider and returns a new instance with the cloned provider.
+        #[inline]
+        pub fn with_cloned_provider(self) -> IncredibleSquaringTaskManagerInstance<T, P, N> {
+            IncredibleSquaringTaskManagerInstance {
+                address: self.address,
+                provider: ::core::clone::Clone::clone(&self.provider),
+                _network_transport: ::core::marker::PhantomData,
+            }
+        }
+    }
+    /// Function calls.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /// Creates a new call builder using this contract instance's provider and address.
+        ///
+        /// Note that the call can be any function call, not just those defined in this
+        /// contract. Prefer using the other methods for building type-safe contract calls.
+        pub fn call_builder<C: alloy_sol_types::SolCall>(
+            &self,
+            call: &C,
+        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
+            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
+        }
+        ///Creates a new call builder for the [`TASK_CHALLENGE_WINDOW_BLOCK`] function.
+        pub fn TASK_CHALLENGE_WINDOW_BLOCK(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, TASK_CHALLENGE_WINDOW_BLOCKCall, N> {
+            self.call_builder(&TASK_CHALLENGE_WINDOW_BLOCKCall {})
+        }
+        ///Creates a new call builder for the [`TASK_RESPONSE_WINDOW_BLOCK`] function.
+        pub fn TASK_RESPONSE_WINDOW_BLOCK(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, TASK_RESPONSE_WINDOW_BLOCKCall, N> {
+            self.call_builder(&TASK_RESPONSE_WINDOW_BLOCKCall {})
+        }
+        ///Creates a new call builder for the [`WADS_TO_SLASH`] function.
+        pub fn WADS_TO_SLASH(&self) -> alloy_contract::SolCallBuilder<T, &P, WADS_TO_SLASHCall, N> {
+            self.call_builder(&WADS_TO_SLASHCall {})
+        }
+        ///Creates a new call builder for the [`aggregator`] function.
+        pub fn aggregator(&self) -> alloy_contract::SolCallBuilder<T, &P, aggregatorCall, N> {
+            self.call_builder(&aggregatorCall {})
+        }
+        ///Creates a new call builder for the [`allTaskHashes`] function.
+        pub fn allTaskHashes(
+            &self,
+            _0: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, allTaskHashesCall, N> {
+            self.call_builder(&allTaskHashesCall { _0 })
+        }
+        ///Creates a new call builder for the [`allTaskResponses`] function.
+        pub fn allTaskResponses(
+            &self,
+            _0: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, allTaskResponsesCall, N> {
+            self.call_builder(&allTaskResponsesCall { _0 })
+        }
+        ///Creates a new call builder for the [`allocationManager`] function.
+        pub fn allocationManager(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, allocationManagerCall, N> {
+            self.call_builder(&allocationManagerCall {})
+        }
+        ///Creates a new call builder for the [`blsApkRegistry`] function.
+        pub fn blsApkRegistry(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, blsApkRegistryCall, N> {
+            self.call_builder(&blsApkRegistryCall {})
+        }
+        ///Creates a new call builder for the [`checkSignatures`] function.
+        pub fn checkSignatures(
+            &self,
+            msgHash: alloy::sol_types::private::FixedBytes<32>,
+            quorumNumbers: alloy::sol_types::private::Bytes,
+            referenceBlockNumber: u32,
+            params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+        ) -> alloy_contract::SolCallBuilder<T, &P, checkSignaturesCall, N> {
+            self.call_builder(&checkSignaturesCall {
+                msgHash,
+                quorumNumbers,
+                referenceBlockNumber,
+                params,
+            })
+        }
+        ///Creates a new call builder for the [`createNewTask`] function.
+        pub fn createNewTask(
+            &self,
+            numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256,
+            quorumThresholdPercentage: u32,
+            quorumNumbers: alloy::sol_types::private::Bytes,
+        ) -> alloy_contract::SolCallBuilder<T, &P, createNewTaskCall, N> {
+            self.call_builder(&createNewTaskCall {
+                numberToBeSquared,
+                quorumThresholdPercentage,
+                quorumNumbers,
+            })
+        }
+        ///Creates a new call builder for the [`delegation`] function.
+        pub fn delegation(&self) -> alloy_contract::SolCallBuilder<T, &P, delegationCall, N> {
+            self.call_builder(&delegationCall {})
+        }
+        ///Creates a new call builder for the [`generator`] function.
+        pub fn generator(&self) -> alloy_contract::SolCallBuilder<T, &P, generatorCall, N> {
+            self.call_builder(&generatorCall {})
+        }
+        ///Creates a new call builder for the [`getBatchOperatorFromId`] function.
+        pub fn getBatchOperatorFromId(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getBatchOperatorFromIdCall, N> {
+            self.call_builder(&getBatchOperatorFromIdCall {
+                registryCoordinator,
+                operatorIds,
+            })
+        }
+        ///Creates a new call builder for the [`getBatchOperatorId`] function.
+        pub fn getBatchOperatorId(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getBatchOperatorIdCall, N> {
+            self.call_builder(&getBatchOperatorIdCall {
+                registryCoordinator,
+                operators,
+            })
+        }
+        ///Creates a new call builder for the [`getCheckSignaturesIndices`] function.
+        pub fn getCheckSignaturesIndices(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            referenceBlockNumber: u32,
+            quorumNumbers: alloy::sol_types::private::Bytes,
+            nonSignerOperatorIds: alloy::sol_types::private::Vec<
+                alloy::sol_types::private::FixedBytes<32>,
+            >,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getCheckSignaturesIndicesCall, N> {
+            self.call_builder(&getCheckSignaturesIndicesCall {
+                registryCoordinator,
+                referenceBlockNumber,
+                quorumNumbers,
+                nonSignerOperatorIds,
+            })
+        }
+        ///Creates a new call builder for the [`getOperatorState_0`] function.
+        pub fn getOperatorState_0(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            quorumNumbers: alloy::sol_types::private::Bytes,
+            blockNumber: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorState_0Call, N> {
+            self.call_builder(&getOperatorState_0Call {
+                registryCoordinator,
+                quorumNumbers,
+                blockNumber,
+            })
+        }
+        ///Creates a new call builder for the [`getOperatorState_1`] function.
+        pub fn getOperatorState_1(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            operatorId: alloy::sol_types::private::FixedBytes<32>,
+            blockNumber: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorState_1Call, N> {
+            self.call_builder(&getOperatorState_1Call {
+                registryCoordinator,
+                operatorId,
+                blockNumber,
+            })
+        }
+        ///Creates a new call builder for the [`getQuorumBitmapsAtBlockNumber`] function.
+        pub fn getQuorumBitmapsAtBlockNumber(
+            &self,
+            registryCoordinator: alloy::sol_types::private::Address,
+            operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
+            blockNumber: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getQuorumBitmapsAtBlockNumberCall, N> {
+            self.call_builder(&getQuorumBitmapsAtBlockNumberCall {
+                registryCoordinator,
+                operatorIds,
+                blockNumber,
+            })
+        }
+        ///Creates a new call builder for the [`getTaskResponseWindowBlock`] function.
+        pub fn getTaskResponseWindowBlock(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, getTaskResponseWindowBlockCall, N> {
+            self.call_builder(&getTaskResponseWindowBlockCall {})
+        }
+        ///Creates a new call builder for the [`initialize`] function.
+        pub fn initialize(
+            &self,
+            initialOwner: alloy::sol_types::private::Address,
+            _aggregator: alloy::sol_types::private::Address,
+            _generator: alloy::sol_types::private::Address,
+            _allocationManager: alloy::sol_types::private::Address,
+            _slasher: alloy::sol_types::private::Address,
+        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
+            self.call_builder(&initializeCall {
+                initialOwner,
+                _aggregator,
+                _generator,
+                _allocationManager,
+                _slasher,
+            })
+        }
+        ///Creates a new call builder for the [`instantSlasher`] function.
+        pub fn instantSlasher(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, instantSlasherCall, N> {
+            self.call_builder(&instantSlasherCall {})
+        }
+        ///Creates a new call builder for the [`latestTaskNum`] function.
+        pub fn latestTaskNum(&self) -> alloy_contract::SolCallBuilder<T, &P, latestTaskNumCall, N> {
+            self.call_builder(&latestTaskNumCall {})
+        }
+        ///Creates a new call builder for the [`owner`] function.
+        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
+            self.call_builder(&ownerCall {})
+        }
+        ///Creates a new call builder for the [`pause`] function.
+        pub fn pause(
+            &self,
+            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+        ) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> {
+            self.call_builder(&pauseCall { newPausedStatus })
+        }
+        ///Creates a new call builder for the [`pauseAll`] function.
+        pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<T, &P, pauseAllCall, N> {
+            self.call_builder(&pauseAllCall {})
+        }
+        ///Creates a new call builder for the [`paused_0`] function.
+        pub fn paused_0(
+            &self,
+            index: u8,
+        ) -> alloy_contract::SolCallBuilder<T, &P, paused_0Call, N> {
+            self.call_builder(&paused_0Call { index })
+        }
+        ///Creates a new call builder for the [`paused_1`] function.
+        pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<T, &P, paused_1Call, N> {
+            self.call_builder(&paused_1Call {})
+        }
+        ///Creates a new call builder for the [`pauserRegistry`] function.
+        pub fn pauserRegistry(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, pauserRegistryCall, N> {
+            self.call_builder(&pauserRegistryCall {})
+        }
+        ///Creates a new call builder for the [`raiseAndResolveChallenge`] function.
+        pub fn raiseAndResolveChallenge(
+            &self,
+            task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+            taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+            taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
+            pubkeysOfNonSigningOperators: alloy::sol_types::private::Vec<
+                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+            >,
+        ) -> alloy_contract::SolCallBuilder<T, &P, raiseAndResolveChallengeCall, N> {
+            self.call_builder(&raiseAndResolveChallengeCall {
+                task,
+                taskResponse,
+                taskResponseMetadata,
+                pubkeysOfNonSigningOperators,
+            })
+        }
+        ///Creates a new call builder for the [`registryCoordinator`] function.
+        pub fn registryCoordinator(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, registryCoordinatorCall, N> {
+            self.call_builder(&registryCoordinatorCall {})
+        }
+        ///Creates a new call builder for the [`renounceOwnership`] function.
+        pub fn renounceOwnership(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
+            self.call_builder(&renounceOwnershipCall {})
+        }
+        ///Creates a new call builder for the [`respondToTask`] function.
+        pub fn respondToTask(
+            &self,
+            task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType,
+            taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
+            nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
+        ) -> alloy_contract::SolCallBuilder<T, &P, respondToTaskCall, N> {
+            self.call_builder(&respondToTaskCall {
+                task,
+                taskResponse,
+                nonSignerStakesAndSignature,
+            })
+        }
+        ///Creates a new call builder for the [`serviceManager`] function.
+        pub fn serviceManager(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, serviceManagerCall, N> {
+            self.call_builder(&serviceManagerCall {})
+        }
+        ///Creates a new call builder for the [`setStaleStakesForbidden`] function.
+        pub fn setStaleStakesForbidden(
+            &self,
+            value: bool,
+        ) -> alloy_contract::SolCallBuilder<T, &P, setStaleStakesForbiddenCall, N> {
+            self.call_builder(&setStaleStakesForbiddenCall { value })
+        }
+        ///Creates a new call builder for the [`stakeRegistry`] function.
+        pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder<T, &P, stakeRegistryCall, N> {
+            self.call_builder(&stakeRegistryCall {})
+        }
+        ///Creates a new call builder for the [`staleStakesForbidden`] function.
+        pub fn staleStakesForbidden(
+            &self,
+        ) -> alloy_contract::SolCallBuilder<T, &P, staleStakesForbiddenCall, N> {
+            self.call_builder(&staleStakesForbiddenCall {})
+        }
+        ///Creates a new call builder for the [`taskNumber`] function.
+        pub fn taskNumber(&self) -> alloy_contract::SolCallBuilder<T, &P, taskNumberCall, N> {
+            self.call_builder(&taskNumberCall {})
+        }
+        ///Creates a new call builder for the [`taskSuccesfullyChallenged`] function.
+        pub fn taskSuccesfullyChallenged(
+            &self,
+            _0: u32,
+        ) -> alloy_contract::SolCallBuilder<T, &P, taskSuccesfullyChallengedCall, N> {
+            self.call_builder(&taskSuccesfullyChallengedCall { _0 })
+        }
+        ///Creates a new call builder for the [`transferOwnership`] function.
+        pub fn transferOwnership(
+            &self,
+            newOwner: alloy::sol_types::private::Address,
+        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
+            self.call_builder(&transferOwnershipCall { newOwner })
+        }
+        ///Creates a new call builder for the [`trySignatureAndApkVerification`] function.
+        pub fn trySignatureAndApkVerification(
+            &self,
+            msgHash: alloy::sol_types::private::FixedBytes<32>,
+            apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+            apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
+            sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
+        ) -> alloy_contract::SolCallBuilder<T, &P, trySignatureAndApkVerificationCall, N> {
+            self.call_builder(&trySignatureAndApkVerificationCall {
+                msgHash,
+                apk,
+                apkG2,
+                sigma,
+            })
+        }
+        ///Creates a new call builder for the [`unpause`] function.
+        pub fn unpause(
+            &self,
+            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
+        ) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> {
+            self.call_builder(&unpauseCall { newPausedStatus })
+        }
+    }
+    /// Event filters.
+    #[automatically_derived]
+    impl<
+            T: alloy_contract::private::Transport + ::core::clone::Clone,
+            P: alloy_contract::private::Provider<T, N>,
+            N: alloy_contract::private::Network,
+        > IncredibleSquaringTaskManagerInstance<T, P, N>
+    {
+        /// Creates a new event filter using this contract instance's provider and address.
+        ///
+        /// Note that the type can be any event, not just those defined in this contract.
+        /// Prefer using the other methods for building type-safe event filters.
+        pub fn event_filter<E: alloy_sol_types::SolEvent>(
+            &self,
+        ) -> alloy_contract::Event<T, &P, E, N> {
+            alloy_contract::Event::new_sol(&self.provider, &self.address)
+        }
+        ///Creates a new event filter for the [`Initialized`] event.
+        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
+            self.event_filter::<Initialized>()
+        }
+        ///Creates a new event filter for the [`NewTaskCreated`] event.
+        pub fn NewTaskCreated_filter(&self) -> alloy_contract::Event<T, &P, NewTaskCreated, N> {
+            self.event_filter::<NewTaskCreated>()
+        }
+        ///Creates a new event filter for the [`OwnershipTransferred`] event.
+        pub fn OwnershipTransferred_filter(
+            &self,
+        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
+            self.event_filter::<OwnershipTransferred>()
+        }
+        ///Creates a new event filter for the [`Paused`] event.
+        pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> {
+            self.event_filter::<Paused>()
+        }
+        ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event.
+        pub fn StaleStakesForbiddenUpdate_filter(
+            &self,
+        ) -> alloy_contract::Event<T, &P, StaleStakesForbiddenUpdate, N> {
+            self.event_filter::<StaleStakesForbiddenUpdate>()
+        }
+        ///Creates a new event filter for the [`TaskChallengedSuccessfully`] event.
+        pub fn TaskChallengedSuccessfully_filter(
+            &self,
+        ) -> alloy_contract::Event<T, &P, TaskChallengedSuccessfully, N> {
+            self.event_filter::<TaskChallengedSuccessfully>()
+        }
+        ///Creates a new event filter for the [`TaskChallengedUnsuccessfully`] event.
+        pub fn TaskChallengedUnsuccessfully_filter(
+            &self,
+        ) -> alloy_contract::Event<T, &P, TaskChallengedUnsuccessfully, N> {
+            self.event_filter::<TaskChallengedUnsuccessfully>()
+        }
+        ///Creates a new event filter for the [`TaskCompleted`] event.
+        pub fn TaskCompleted_filter(&self) -> alloy_contract::Event<T, &P, TaskCompleted, N> {
+            self.event_filter::<TaskCompleted>()
+        }
+        ///Creates a new event filter for the [`TaskResponded`] event.
+        pub fn TaskResponded_filter(&self) -> alloy_contract::Event<T, &P, TaskResponded, N> {
+            self.event_filter::<TaskResponded>()
+        }
+        ///Creates a new event filter for the [`Unpaused`] event.
+        pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> {
+            self.event_filter::<Unpaused>()
+        }
+    }
+}
diff --git a/examples/aggregator/src/bindings/mod.rs b/examples/aggregator/src/bindings/mod.rs
new file mode 100644
index 000000000..c25490a7b
--- /dev/null
+++ b/examples/aggregator/src/bindings/mod.rs
@@ -0,0 +1,6 @@
+#![allow(unused_imports, clippy::all, rustdoc::all)]
+//! This module contains the sol! generated bindings for solidity contracts.
+//! This is autogenerated code.
+//! Do not manually edit these files.
+//! These files may be overwritten by the codegen system at any time.
+pub mod r#iincrediblesquaringtaskmanager;
diff --git a/examples/aggregator/src/main.rs b/examples/aggregator/src/main.rs
new file mode 100644
index 000000000..725bf2ca0
--- /dev/null
+++ b/examples/aggregator/src/main.rs
@@ -0,0 +1,135 @@
+use alloy::network::EthereumWallet;
+use alloy::primitives::{Address, U256};
+use alloy::providers::ProviderBuilder;
+use alloy::signers::local::PrivateKeySigner;
+use alloy::transports::http::reqwest::Url;
+use alloy::{
+    contract::private::{Provider, Transport},
+    network::Network,
+};
+use bindings::iincrediblesquaringtaskmanager::IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as ContractNonSignerStakesAndSignature;
+use bindings::iincrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{
+    Task as ContractTask, TaskResponse as ContractTaskResponse,
+};
+use bindings::iincrediblesquaringtaskmanager::IncredibleSquaringTaskManager::IncredibleSquaringTaskManagerInstance;
+use bindings::iincrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated;
+use bindings::iincrediblesquaringtaskmanager::BN254::{G1Point, G2Point};
+use eigen_aggregator::{Aggregator, AggregatorConfig};
+use eigen_task_processor::task::Task;
+use eigen_task_processor::task_manager::{TaskManagerContract, TaskManagerError};
+use eigen_task_processor::task_response::TaskResponse;
+use eigen_task_processor::IndexingTaskProcessor;
+use eigen_utils::slashing::middleware::iblssignaturechecker::IBLSSignatureCheckerTypes::NonSignerStakesAndSignature;
+use std::str::FromStr;
+
+pub mod bindings;
+
+impl<T, P, N> TaskManagerContract<T, P, N> for IncredibleSquaringTaskManagerInstance<T, P, N>
+where
+    T: Transport + Clone + Send + Sync,
+    P: Provider<T, N>,
+    N: Network,
+{
+    type Input = U256;
+    type Output = U256;
+    type NewTaskEvent = NewTaskCreated;
+
+    async fn respond_to_task(
+        &self,
+        task: Task<Self::Input>,
+        response: TaskResponse<Self::Output>,
+        non_signer_stakes_and_signature: NonSignerStakesAndSignature,
+    ) -> Result<(), TaskManagerError> {
+        let contract_task = ContractTask {
+            numberToBeSquared: task.input,
+            taskCreatedBlock: task.task_created_block,
+            quorumNumbers: task.quorum_numbers,
+            quorumThresholdPercentage: task.quorum_threshold_percentage,
+        };
+
+        let contract_response = ContractTaskResponse {
+            numberSquared: response.response,
+            referenceTaskIndex: response.task_index,
+        };
+
+        let apk_g2 = G2Point {
+            X: non_signer_stakes_and_signature.apkG2.X,
+            Y: non_signer_stakes_and_signature.apkG2.Y,
+        };
+
+        let sigma = G1Point {
+            X: non_signer_stakes_and_signature.sigma.X,
+            Y: non_signer_stakes_and_signature.sigma.Y,
+        };
+
+        let quorum_apks = non_signer_stakes_and_signature
+            .quorumApks
+            .iter()
+            .map(|apk| G1Point { X: apk.X, Y: apk.Y })
+            .collect();
+
+        let non_signer_pubkeys = non_signer_stakes_and_signature
+            .nonSignerPubkeys
+            .iter()
+            .map(|pubkey| G1Point {
+                X: pubkey.X,
+                Y: pubkey.Y,
+            })
+            .collect();
+
+        let non_signer_stakes_and_signature = ContractNonSignerStakesAndSignature {
+            nonSignerStakeIndices: non_signer_stakes_and_signature.nonSignerStakeIndices,
+            nonSignerQuorumBitmapIndices: non_signer_stakes_and_signature
+                .nonSignerQuorumBitmapIndices,
+            quorumApkIndices: non_signer_stakes_and_signature.quorumApkIndices,
+            totalStakeIndices: non_signer_stakes_and_signature.totalStakeIndices,
+            apkG2: apk_g2,
+            quorumApks: quorum_apks,
+            nonSignerPubkeys: non_signer_pubkeys,
+            sigma,
+        };
+
+        self.respondToTask(
+            contract_task,
+            contract_response,
+            non_signer_stakes_and_signature,
+        )
+        .send()
+        .await
+        .unwrap()
+        .get_receipt()
+        .await
+        .unwrap();
+
+        Ok(())
+    }
+}
+
+#[tokio::main]
+async fn main() {
+    let registry_coordinator =
+        Address::from_str("0x7969c5ed335650692bc04293b07f5bf2e7a673c0").unwrap();
+    let operator_state_retriever =
+        Address::from_str("0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f").unwrap();
+    let http_rpc_url = "http://localhost:8545".to_string();
+    let signer = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
+    let task_manager_address =
+        Address::from_str("0x742d35cc6634c0532925a3b844f51254ab06f58e").unwrap();
+    let url = Url::parse(&http_rpc_url).unwrap();
+    let wallet = EthereumWallet::new(PrivateKeySigner::from_str(signer).unwrap());
+    let provider = ProviderBuilder::new().wallet(wallet).on_http(url);
+
+    let contract = IncredibleSquaringTaskManagerInstance::new(task_manager_address, provider);
+    let task_processor = IndexingTaskProcessor::new(contract);
+
+    let config = AggregatorConfig {
+        server_address: "http://localhost:8080".to_string(),
+        http_rpc_url: "http://localhost:8545".to_string(),
+        ws_rpc_url: "ws://localhost:8545".to_string(),
+        registry_coordinator,
+        operator_state_retriever,
+    };
+
+    let aggregator = Aggregator::new(config, task_processor).await.unwrap();
+    aggregator.start().await.unwrap();
+}