eigenlayer_contract_deployer/bindings/deploy/
squaring_task.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use SquaringTask::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library BN254 {
9    struct G1Point { uint256 X; uint256 Y; }
10    struct G2Point { uint256[2] X; uint256[2] Y; }
11}
12```*/
13#[allow(
14    non_camel_case_types,
15    non_snake_case,
16    clippy::pub_underscore_fields,
17    clippy::style,
18    clippy::empty_structs_with_brackets
19)]
20pub mod BN254 {
21    use super::*;
22    use alloy::sol_types as alloy_sol_types;
23    #[derive(serde::Serialize, serde::Deserialize)]
24    #[derive(Default, Debug, PartialEq, Eq, Hash)]
25    /**```solidity
26struct G1Point { uint256 X; uint256 Y; }
27```*/
28    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
29    #[derive(Clone)]
30    pub struct G1Point {
31        #[allow(missing_docs)]
32        pub X: alloy::sol_types::private::primitives::aliases::U256,
33        #[allow(missing_docs)]
34        pub Y: alloy::sol_types::private::primitives::aliases::U256,
35    }
36    #[allow(
37        non_camel_case_types,
38        non_snake_case,
39        clippy::pub_underscore_fields,
40        clippy::style
41    )]
42    const _: () = {
43        use alloy::sol_types as alloy_sol_types;
44        #[doc(hidden)]
45        type UnderlyingSolTuple<'a> = (
46            alloy::sol_types::sol_data::Uint<256>,
47            alloy::sol_types::sol_data::Uint<256>,
48        );
49        #[doc(hidden)]
50        type UnderlyingRustTuple<'a> = (
51            alloy::sol_types::private::primitives::aliases::U256,
52            alloy::sol_types::private::primitives::aliases::U256,
53        );
54        #[cfg(test)]
55        #[allow(dead_code, unreachable_patterns)]
56        fn _type_assertion(
57            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
58        ) {
59            match _t {
60                alloy_sol_types::private::AssertTypeEq::<
61                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
62                >(_) => {}
63            }
64        }
65        #[automatically_derived]
66        #[doc(hidden)]
67        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
68            fn from(value: G1Point) -> Self {
69                (value.X, value.Y)
70            }
71        }
72        #[automatically_derived]
73        #[doc(hidden)]
74        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
75            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
76                Self { X: tuple.0, Y: tuple.1 }
77            }
78        }
79        #[automatically_derived]
80        impl alloy_sol_types::SolValue for G1Point {
81            type SolType = Self;
82        }
83        #[automatically_derived]
84        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
85            #[inline]
86            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
87                (
88                    <alloy::sol_types::sol_data::Uint<
89                        256,
90                    > as alloy_sol_types::SolType>::tokenize(&self.X),
91                    <alloy::sol_types::sol_data::Uint<
92                        256,
93                    > as alloy_sol_types::SolType>::tokenize(&self.Y),
94                )
95            }
96            #[inline]
97            fn stv_abi_encoded_size(&self) -> usize {
98                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
99                    return size;
100                }
101                let tuple = <UnderlyingRustTuple<
102                    '_,
103                > as ::core::convert::From<Self>>::from(self.clone());
104                <UnderlyingSolTuple<
105                    '_,
106                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
107            }
108            #[inline]
109            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
110                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
111            }
112            #[inline]
113            fn stv_abi_encode_packed_to(
114                &self,
115                out: &mut alloy_sol_types::private::Vec<u8>,
116            ) {
117                let tuple = <UnderlyingRustTuple<
118                    '_,
119                > as ::core::convert::From<Self>>::from(self.clone());
120                <UnderlyingSolTuple<
121                    '_,
122                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
123            }
124            #[inline]
125            fn stv_abi_packed_encoded_size(&self) -> usize {
126                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
127                    return size;
128                }
129                let tuple = <UnderlyingRustTuple<
130                    '_,
131                > as ::core::convert::From<Self>>::from(self.clone());
132                <UnderlyingSolTuple<
133                    '_,
134                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
135            }
136        }
137        #[automatically_derived]
138        impl alloy_sol_types::SolType for G1Point {
139            type RustType = Self;
140            type Token<'a> = <UnderlyingSolTuple<
141                'a,
142            > as alloy_sol_types::SolType>::Token<'a>;
143            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
144            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
145                '_,
146            > as alloy_sol_types::SolType>::ENCODED_SIZE;
147            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
148                '_,
149            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
150            #[inline]
151            fn valid_token(token: &Self::Token<'_>) -> bool {
152                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
153            }
154            #[inline]
155            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
156                let tuple = <UnderlyingSolTuple<
157                    '_,
158                > as alloy_sol_types::SolType>::detokenize(token);
159                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
160            }
161        }
162        #[automatically_derived]
163        impl alloy_sol_types::SolStruct for G1Point {
164            const NAME: &'static str = "G1Point";
165            #[inline]
166            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
167                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)")
168            }
169            #[inline]
170            fn eip712_components() -> alloy_sol_types::private::Vec<
171                alloy_sol_types::private::Cow<'static, str>,
172            > {
173                alloy_sol_types::private::Vec::new()
174            }
175            #[inline]
176            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
177                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
178            }
179            #[inline]
180            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
181                [
182                    <alloy::sol_types::sol_data::Uint<
183                        256,
184                    > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
185                        .0,
186                    <alloy::sol_types::sol_data::Uint<
187                        256,
188                    > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
189                        .0,
190                ]
191                    .concat()
192            }
193        }
194        #[automatically_derived]
195        impl alloy_sol_types::EventTopic for G1Point {
196            #[inline]
197            fn topic_preimage_length(rust: &Self::RustType) -> usize {
198                0usize
199                    + <alloy::sol_types::sol_data::Uint<
200                        256,
201                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
202                    + <alloy::sol_types::sol_data::Uint<
203                        256,
204                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
205            }
206            #[inline]
207            fn encode_topic_preimage(
208                rust: &Self::RustType,
209                out: &mut alloy_sol_types::private::Vec<u8>,
210            ) {
211                out.reserve(
212                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
213                );
214                <alloy::sol_types::sol_data::Uint<
215                    256,
216                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
217                <alloy::sol_types::sol_data::Uint<
218                    256,
219                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
220            }
221            #[inline]
222            fn encode_topic(
223                rust: &Self::RustType,
224            ) -> alloy_sol_types::abi::token::WordToken {
225                let mut out = alloy_sol_types::private::Vec::new();
226                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
227                    rust,
228                    &mut out,
229                );
230                alloy_sol_types::abi::token::WordToken(
231                    alloy_sol_types::private::keccak256(out),
232                )
233            }
234        }
235    };
236    #[derive(serde::Serialize, serde::Deserialize)]
237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
238    /**```solidity
239struct G2Point { uint256[2] X; uint256[2] Y; }
240```*/
241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
242    #[derive(Clone)]
243    pub struct G2Point {
244        #[allow(missing_docs)]
245        pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
246        #[allow(missing_docs)]
247        pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
248    }
249    #[allow(
250        non_camel_case_types,
251        non_snake_case,
252        clippy::pub_underscore_fields,
253        clippy::style
254    )]
255    const _: () = {
256        use alloy::sol_types as alloy_sol_types;
257        #[doc(hidden)]
258        type UnderlyingSolTuple<'a> = (
259            alloy::sol_types::sol_data::FixedArray<
260                alloy::sol_types::sol_data::Uint<256>,
261                2usize,
262            >,
263            alloy::sol_types::sol_data::FixedArray<
264                alloy::sol_types::sol_data::Uint<256>,
265                2usize,
266            >,
267        );
268        #[doc(hidden)]
269        type UnderlyingRustTuple<'a> = (
270            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
271            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
272        );
273        #[cfg(test)]
274        #[allow(dead_code, unreachable_patterns)]
275        fn _type_assertion(
276            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
277        ) {
278            match _t {
279                alloy_sol_types::private::AssertTypeEq::<
280                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
281                >(_) => {}
282            }
283        }
284        #[automatically_derived]
285        #[doc(hidden)]
286        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
287            fn from(value: G2Point) -> Self {
288                (value.X, value.Y)
289            }
290        }
291        #[automatically_derived]
292        #[doc(hidden)]
293        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
294            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
295                Self { X: tuple.0, Y: tuple.1 }
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolValue for G2Point {
300            type SolType = Self;
301        }
302        #[automatically_derived]
303        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
304            #[inline]
305            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
306                (
307                    <alloy::sol_types::sol_data::FixedArray<
308                        alloy::sol_types::sol_data::Uint<256>,
309                        2usize,
310                    > as alloy_sol_types::SolType>::tokenize(&self.X),
311                    <alloy::sol_types::sol_data::FixedArray<
312                        alloy::sol_types::sol_data::Uint<256>,
313                        2usize,
314                    > as alloy_sol_types::SolType>::tokenize(&self.Y),
315                )
316            }
317            #[inline]
318            fn stv_abi_encoded_size(&self) -> usize {
319                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
320                    return size;
321                }
322                let tuple = <UnderlyingRustTuple<
323                    '_,
324                > as ::core::convert::From<Self>>::from(self.clone());
325                <UnderlyingSolTuple<
326                    '_,
327                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
328            }
329            #[inline]
330            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
331                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
332            }
333            #[inline]
334            fn stv_abi_encode_packed_to(
335                &self,
336                out: &mut alloy_sol_types::private::Vec<u8>,
337            ) {
338                let tuple = <UnderlyingRustTuple<
339                    '_,
340                > as ::core::convert::From<Self>>::from(self.clone());
341                <UnderlyingSolTuple<
342                    '_,
343                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
344            }
345            #[inline]
346            fn stv_abi_packed_encoded_size(&self) -> usize {
347                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
348                    return size;
349                }
350                let tuple = <UnderlyingRustTuple<
351                    '_,
352                > as ::core::convert::From<Self>>::from(self.clone());
353                <UnderlyingSolTuple<
354                    '_,
355                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
356            }
357        }
358        #[automatically_derived]
359        impl alloy_sol_types::SolType for G2Point {
360            type RustType = Self;
361            type Token<'a> = <UnderlyingSolTuple<
362                'a,
363            > as alloy_sol_types::SolType>::Token<'a>;
364            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
365            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
366                '_,
367            > as alloy_sol_types::SolType>::ENCODED_SIZE;
368            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
369                '_,
370            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
371            #[inline]
372            fn valid_token(token: &Self::Token<'_>) -> bool {
373                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
374            }
375            #[inline]
376            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
377                let tuple = <UnderlyingSolTuple<
378                    '_,
379                > as alloy_sol_types::SolType>::detokenize(token);
380                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
381            }
382        }
383        #[automatically_derived]
384        impl alloy_sol_types::SolStruct for G2Point {
385            const NAME: &'static str = "G2Point";
386            #[inline]
387            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
388                alloy_sol_types::private::Cow::Borrowed(
389                    "G2Point(uint256[2] X,uint256[2] Y)",
390                )
391            }
392            #[inline]
393            fn eip712_components() -> alloy_sol_types::private::Vec<
394                alloy_sol_types::private::Cow<'static, str>,
395            > {
396                alloy_sol_types::private::Vec::new()
397            }
398            #[inline]
399            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
400                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
401            }
402            #[inline]
403            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
404                [
405                    <alloy::sol_types::sol_data::FixedArray<
406                        alloy::sol_types::sol_data::Uint<256>,
407                        2usize,
408                    > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
409                        .0,
410                    <alloy::sol_types::sol_data::FixedArray<
411                        alloy::sol_types::sol_data::Uint<256>,
412                        2usize,
413                    > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
414                        .0,
415                ]
416                    .concat()
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::EventTopic for G2Point {
421            #[inline]
422            fn topic_preimage_length(rust: &Self::RustType) -> usize {
423                0usize
424                    + <alloy::sol_types::sol_data::FixedArray<
425                        alloy::sol_types::sol_data::Uint<256>,
426                        2usize,
427                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
428                    + <alloy::sol_types::sol_data::FixedArray<
429                        alloy::sol_types::sol_data::Uint<256>,
430                        2usize,
431                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
432            }
433            #[inline]
434            fn encode_topic_preimage(
435                rust: &Self::RustType,
436                out: &mut alloy_sol_types::private::Vec<u8>,
437            ) {
438                out.reserve(
439                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
440                );
441                <alloy::sol_types::sol_data::FixedArray<
442                    alloy::sol_types::sol_data::Uint<256>,
443                    2usize,
444                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
445                <alloy::sol_types::sol_data::FixedArray<
446                    alloy::sol_types::sol_data::Uint<256>,
447                    2usize,
448                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
449            }
450            #[inline]
451            fn encode_topic(
452                rust: &Self::RustType,
453            ) -> alloy_sol_types::abi::token::WordToken {
454                let mut out = alloy_sol_types::private::Vec::new();
455                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
456                    rust,
457                    &mut out,
458                );
459                alloy_sol_types::abi::token::WordToken(
460                    alloy_sol_types::private::keccak256(out),
461                )
462            }
463        }
464    };
465    use alloy::contract as alloy_contract;
466    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
467
468See the [wrapper's documentation](`BN254Instance`) for more details.*/
469    #[inline]
470    pub const fn new<
471        P: alloy_contract::private::Provider<N>,
472        N: alloy_contract::private::Network,
473    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
474        BN254Instance::<P, N>::new(address, provider)
475    }
476    /**A [`BN254`](self) instance.
477
478Contains type-safe methods for interacting with an on-chain instance of the
479[`BN254`](self) contract located at a given `address`, using a given
480provider `P`.
481
482If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
483documentation on how to provide it), the `deploy` and `deploy_builder` methods can
484be used to deploy a new instance of the contract.
485
486See the [module-level documentation](self) for all the available methods.*/
487    #[derive(Clone)]
488    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
489        address: alloy_sol_types::private::Address,
490        provider: P,
491        _network: ::core::marker::PhantomData<N>,
492    }
493    #[automatically_derived]
494    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
495        #[inline]
496        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
497            f.debug_tuple("BN254Instance").field(&self.address).finish()
498        }
499    }
500    /// Instantiation and getters/setters.
501    #[automatically_derived]
502    impl<
503        P: alloy_contract::private::Provider<N>,
504        N: alloy_contract::private::Network,
505    > BN254Instance<P, N> {
506        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
507
508See the [wrapper's documentation](`BN254Instance`) for more details.*/
509        #[inline]
510        pub const fn new(
511            address: alloy_sol_types::private::Address,
512            provider: P,
513        ) -> Self {
514            Self {
515                address,
516                provider,
517                _network: ::core::marker::PhantomData,
518            }
519        }
520        /// Returns a reference to the address.
521        #[inline]
522        pub const fn address(&self) -> &alloy_sol_types::private::Address {
523            &self.address
524        }
525        /// Sets the address.
526        #[inline]
527        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
528            self.address = address;
529        }
530        /// Sets the address and returns `self`.
531        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
532            self.set_address(address);
533            self
534        }
535        /// Returns a reference to the provider.
536        #[inline]
537        pub const fn provider(&self) -> &P {
538            &self.provider
539        }
540    }
541    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
542        /// Clones the provider and returns a new instance with the cloned provider.
543        #[inline]
544        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
545            BN254Instance {
546                address: self.address,
547                provider: ::core::clone::Clone::clone(&self.provider),
548                _network: ::core::marker::PhantomData,
549            }
550        }
551    }
552    /// Function calls.
553    #[automatically_derived]
554    impl<
555        P: alloy_contract::private::Provider<N>,
556        N: alloy_contract::private::Network,
557    > BN254Instance<P, N> {
558        /// Creates a new call builder using this contract instance's provider and address.
559        ///
560        /// Note that the call can be any function call, not just those defined in this
561        /// contract. Prefer using the other methods for building type-safe contract calls.
562        pub fn call_builder<C: alloy_sol_types::SolCall>(
563            &self,
564            call: &C,
565        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
566            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
567        }
568    }
569    /// Event filters.
570    #[automatically_derived]
571    impl<
572        P: alloy_contract::private::Provider<N>,
573        N: alloy_contract::private::Network,
574    > BN254Instance<P, N> {
575        /// Creates a new event filter using this contract instance's provider and address.
576        ///
577        /// Note that the type can be any event, not just those defined in this contract.
578        /// Prefer using the other methods for building type-safe event filters.
579        pub fn event_filter<E: alloy_sol_types::SolEvent>(
580            &self,
581        ) -> alloy_contract::Event<&P, E, N> {
582            alloy_contract::Event::new_sol(&self.provider, &self.address)
583        }
584    }
585}
586///Module containing a contract's types and functions.
587/**
588
589```solidity
590library IBLSSignatureCheckerTypes {
591    struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
592    struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
593}
594```*/
595#[allow(
596    non_camel_case_types,
597    non_snake_case,
598    clippy::pub_underscore_fields,
599    clippy::style,
600    clippy::empty_structs_with_brackets
601)]
602pub mod IBLSSignatureCheckerTypes {
603    use super::*;
604    use alloy::sol_types as alloy_sol_types;
605    #[derive(serde::Serialize, serde::Deserialize)]
606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
607    /**```solidity
608struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
609```*/
610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
611    #[derive(Clone)]
612    pub struct NonSignerStakesAndSignature {
613        #[allow(missing_docs)]
614        pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
615        #[allow(missing_docs)]
616        pub nonSignerPubkeys: alloy::sol_types::private::Vec<
617            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
618        >,
619        #[allow(missing_docs)]
620        pub quorumApks: alloy::sol_types::private::Vec<
621            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
622        >,
623        #[allow(missing_docs)]
624        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
625        #[allow(missing_docs)]
626        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
627        #[allow(missing_docs)]
628        pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
629        #[allow(missing_docs)]
630        pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
631        #[allow(missing_docs)]
632        pub nonSignerStakeIndices: alloy::sol_types::private::Vec<
633            alloy::sol_types::private::Vec<u32>,
634        >,
635    }
636    #[allow(
637        non_camel_case_types,
638        non_snake_case,
639        clippy::pub_underscore_fields,
640        clippy::style
641    )]
642    const _: () = {
643        use alloy::sol_types as alloy_sol_types;
644        #[doc(hidden)]
645        type UnderlyingSolTuple<'a> = (
646            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
647            alloy::sol_types::sol_data::Array<BN254::G1Point>,
648            alloy::sol_types::sol_data::Array<BN254::G1Point>,
649            BN254::G2Point,
650            BN254::G1Point,
651            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
652            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
653            alloy::sol_types::sol_data::Array<
654                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
655            >,
656        );
657        #[doc(hidden)]
658        type UnderlyingRustTuple<'a> = (
659            alloy::sol_types::private::Vec<u32>,
660            alloy::sol_types::private::Vec<
661                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662            >,
663            alloy::sol_types::private::Vec<
664                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            >,
666            <BN254::G2Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            alloy::sol_types::private::Vec<u32>,
669            alloy::sol_types::private::Vec<u32>,
670            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
671        );
672        #[cfg(test)]
673        #[allow(dead_code, unreachable_patterns)]
674        fn _type_assertion(
675            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
676        ) {
677            match _t {
678                alloy_sol_types::private::AssertTypeEq::<
679                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
680                >(_) => {}
681            }
682        }
683        #[automatically_derived]
684        #[doc(hidden)]
685        impl ::core::convert::From<NonSignerStakesAndSignature>
686        for UnderlyingRustTuple<'_> {
687            fn from(value: NonSignerStakesAndSignature) -> Self {
688                (
689                    value.nonSignerQuorumBitmapIndices,
690                    value.nonSignerPubkeys,
691                    value.quorumApks,
692                    value.apkG2,
693                    value.sigma,
694                    value.quorumApkIndices,
695                    value.totalStakeIndices,
696                    value.nonSignerStakeIndices,
697                )
698            }
699        }
700        #[automatically_derived]
701        #[doc(hidden)]
702        impl ::core::convert::From<UnderlyingRustTuple<'_>>
703        for NonSignerStakesAndSignature {
704            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
705                Self {
706                    nonSignerQuorumBitmapIndices: tuple.0,
707                    nonSignerPubkeys: tuple.1,
708                    quorumApks: tuple.2,
709                    apkG2: tuple.3,
710                    sigma: tuple.4,
711                    quorumApkIndices: tuple.5,
712                    totalStakeIndices: tuple.6,
713                    nonSignerStakeIndices: tuple.7,
714                }
715            }
716        }
717        #[automatically_derived]
718        impl alloy_sol_types::SolValue for NonSignerStakesAndSignature {
719            type SolType = Self;
720        }
721        #[automatically_derived]
722        impl alloy_sol_types::private::SolTypeValue<Self>
723        for NonSignerStakesAndSignature {
724            #[inline]
725            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
726                (
727                    <alloy::sol_types::sol_data::Array<
728                        alloy::sol_types::sol_data::Uint<32>,
729                    > as alloy_sol_types::SolType>::tokenize(
730                        &self.nonSignerQuorumBitmapIndices,
731                    ),
732                    <alloy::sol_types::sol_data::Array<
733                        BN254::G1Point,
734                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys),
735                    <alloy::sol_types::sol_data::Array<
736                        BN254::G1Point,
737                    > as alloy_sol_types::SolType>::tokenize(&self.quorumApks),
738                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
739                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
740                    <alloy::sol_types::sol_data::Array<
741                        alloy::sol_types::sol_data::Uint<32>,
742                    > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
743                    <alloy::sol_types::sol_data::Array<
744                        alloy::sol_types::sol_data::Uint<32>,
745                    > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
746                    <alloy::sol_types::sol_data::Array<
747                        alloy::sol_types::sol_data::Array<
748                            alloy::sol_types::sol_data::Uint<32>,
749                        >,
750                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
751                )
752            }
753            #[inline]
754            fn stv_abi_encoded_size(&self) -> usize {
755                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
756                    return size;
757                }
758                let tuple = <UnderlyingRustTuple<
759                    '_,
760                > as ::core::convert::From<Self>>::from(self.clone());
761                <UnderlyingSolTuple<
762                    '_,
763                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
764            }
765            #[inline]
766            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
767                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
768            }
769            #[inline]
770            fn stv_abi_encode_packed_to(
771                &self,
772                out: &mut alloy_sol_types::private::Vec<u8>,
773            ) {
774                let tuple = <UnderlyingRustTuple<
775                    '_,
776                > as ::core::convert::From<Self>>::from(self.clone());
777                <UnderlyingSolTuple<
778                    '_,
779                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
780            }
781            #[inline]
782            fn stv_abi_packed_encoded_size(&self) -> usize {
783                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
784                    return size;
785                }
786                let tuple = <UnderlyingRustTuple<
787                    '_,
788                > as ::core::convert::From<Self>>::from(self.clone());
789                <UnderlyingSolTuple<
790                    '_,
791                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
792            }
793        }
794        #[automatically_derived]
795        impl alloy_sol_types::SolType for NonSignerStakesAndSignature {
796            type RustType = Self;
797            type Token<'a> = <UnderlyingSolTuple<
798                'a,
799            > as alloy_sol_types::SolType>::Token<'a>;
800            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
801            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
802                '_,
803            > as alloy_sol_types::SolType>::ENCODED_SIZE;
804            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
805                '_,
806            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
807            #[inline]
808            fn valid_token(token: &Self::Token<'_>) -> bool {
809                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
810            }
811            #[inline]
812            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
813                let tuple = <UnderlyingSolTuple<
814                    '_,
815                > as alloy_sol_types::SolType>::detokenize(token);
816                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
817            }
818        }
819        #[automatically_derived]
820        impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature {
821            const NAME: &'static str = "NonSignerStakesAndSignature";
822            #[inline]
823            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
824                alloy_sol_types::private::Cow::Borrowed(
825                    "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,G2Point apkG2,G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
826                )
827            }
828            #[inline]
829            fn eip712_components() -> alloy_sol_types::private::Vec<
830                alloy_sol_types::private::Cow<'static, str>,
831            > {
832                let mut components = alloy_sol_types::private::Vec::with_capacity(4);
833                components
834                    .push(
835                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
836                    );
837                components
838                    .extend(
839                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
840                    );
841                components
842                    .push(
843                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
844                    );
845                components
846                    .extend(
847                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
848                    );
849                components
850                    .push(
851                        <BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type(),
852                    );
853                components
854                    .extend(
855                        <BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components(),
856                    );
857                components
858                    .push(
859                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
860                    );
861                components
862                    .extend(
863                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
864                    );
865                components
866            }
867            #[inline]
868            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
869                [
870                    <alloy::sol_types::sol_data::Array<
871                        alloy::sol_types::sol_data::Uint<32>,
872                    > as alloy_sol_types::SolType>::eip712_data_word(
873                            &self.nonSignerQuorumBitmapIndices,
874                        )
875                        .0,
876                    <alloy::sol_types::sol_data::Array<
877                        BN254::G1Point,
878                    > as alloy_sol_types::SolType>::eip712_data_word(
879                            &self.nonSignerPubkeys,
880                        )
881                        .0,
882                    <alloy::sol_types::sol_data::Array<
883                        BN254::G1Point,
884                    > as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks)
885                        .0,
886                    <BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word(
887                            &self.apkG2,
888                        )
889                        .0,
890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
891                            &self.sigma,
892                        )
893                        .0,
894                    <alloy::sol_types::sol_data::Array<
895                        alloy::sol_types::sol_data::Uint<32>,
896                    > as alloy_sol_types::SolType>::eip712_data_word(
897                            &self.quorumApkIndices,
898                        )
899                        .0,
900                    <alloy::sol_types::sol_data::Array<
901                        alloy::sol_types::sol_data::Uint<32>,
902                    > as alloy_sol_types::SolType>::eip712_data_word(
903                            &self.totalStakeIndices,
904                        )
905                        .0,
906                    <alloy::sol_types::sol_data::Array<
907                        alloy::sol_types::sol_data::Array<
908                            alloy::sol_types::sol_data::Uint<32>,
909                        >,
910                    > as alloy_sol_types::SolType>::eip712_data_word(
911                            &self.nonSignerStakeIndices,
912                        )
913                        .0,
914                ]
915                    .concat()
916            }
917        }
918        #[automatically_derived]
919        impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature {
920            #[inline]
921            fn topic_preimage_length(rust: &Self::RustType) -> usize {
922                0usize
923                    + <alloy::sol_types::sol_data::Array<
924                        alloy::sol_types::sol_data::Uint<32>,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
926                        &rust.nonSignerQuorumBitmapIndices,
927                    )
928                    + <alloy::sol_types::sol_data::Array<
929                        BN254::G1Point,
930                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
931                        &rust.nonSignerPubkeys,
932                    )
933                    + <alloy::sol_types::sol_data::Array<
934                        BN254::G1Point,
935                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
936                        &rust.quorumApks,
937                    )
938                    + <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length(
939                        &rust.apkG2,
940                    )
941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
942                        &rust.sigma,
943                    )
944                    + <alloy::sol_types::sol_data::Array<
945                        alloy::sol_types::sol_data::Uint<32>,
946                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
947                        &rust.quorumApkIndices,
948                    )
949                    + <alloy::sol_types::sol_data::Array<
950                        alloy::sol_types::sol_data::Uint<32>,
951                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
952                        &rust.totalStakeIndices,
953                    )
954                    + <alloy::sol_types::sol_data::Array<
955                        alloy::sol_types::sol_data::Array<
956                            alloy::sol_types::sol_data::Uint<32>,
957                        >,
958                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
959                        &rust.nonSignerStakeIndices,
960                    )
961            }
962            #[inline]
963            fn encode_topic_preimage(
964                rust: &Self::RustType,
965                out: &mut alloy_sol_types::private::Vec<u8>,
966            ) {
967                out.reserve(
968                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
969                );
970                <alloy::sol_types::sol_data::Array<
971                    alloy::sol_types::sol_data::Uint<32>,
972                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
973                    &rust.nonSignerQuorumBitmapIndices,
974                    out,
975                );
976                <alloy::sol_types::sol_data::Array<
977                    BN254::G1Point,
978                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
979                    &rust.nonSignerPubkeys,
980                    out,
981                );
982                <alloy::sol_types::sol_data::Array<
983                    BN254::G1Point,
984                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
985                    &rust.quorumApks,
986                    out,
987                );
988                <BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
989                    &rust.apkG2,
990                    out,
991                );
992                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
993                    &rust.sigma,
994                    out,
995                );
996                <alloy::sol_types::sol_data::Array<
997                    alloy::sol_types::sol_data::Uint<32>,
998                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
999                    &rust.quorumApkIndices,
1000                    out,
1001                );
1002                <alloy::sol_types::sol_data::Array<
1003                    alloy::sol_types::sol_data::Uint<32>,
1004                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1005                    &rust.totalStakeIndices,
1006                    out,
1007                );
1008                <alloy::sol_types::sol_data::Array<
1009                    alloy::sol_types::sol_data::Array<
1010                        alloy::sol_types::sol_data::Uint<32>,
1011                    >,
1012                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1013                    &rust.nonSignerStakeIndices,
1014                    out,
1015                );
1016            }
1017            #[inline]
1018            fn encode_topic(
1019                rust: &Self::RustType,
1020            ) -> alloy_sol_types::abi::token::WordToken {
1021                let mut out = alloy_sol_types::private::Vec::new();
1022                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1023                    rust,
1024                    &mut out,
1025                );
1026                alloy_sol_types::abi::token::WordToken(
1027                    alloy_sol_types::private::keccak256(out),
1028                )
1029            }
1030        }
1031    };
1032    #[derive(serde::Serialize, serde::Deserialize)]
1033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1034    /**```solidity
1035struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
1036```*/
1037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1038    #[derive(Clone)]
1039    pub struct QuorumStakeTotals {
1040        #[allow(missing_docs)]
1041        pub signedStakeForQuorum: alloy::sol_types::private::Vec<
1042            alloy::sol_types::private::primitives::aliases::U96,
1043        >,
1044        #[allow(missing_docs)]
1045        pub totalStakeForQuorum: alloy::sol_types::private::Vec<
1046            alloy::sol_types::private::primitives::aliases::U96,
1047        >,
1048    }
1049    #[allow(
1050        non_camel_case_types,
1051        non_snake_case,
1052        clippy::pub_underscore_fields,
1053        clippy::style
1054    )]
1055    const _: () = {
1056        use alloy::sol_types as alloy_sol_types;
1057        #[doc(hidden)]
1058        type UnderlyingSolTuple<'a> = (
1059            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
1060            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
1061        );
1062        #[doc(hidden)]
1063        type UnderlyingRustTuple<'a> = (
1064            alloy::sol_types::private::Vec<
1065                alloy::sol_types::private::primitives::aliases::U96,
1066            >,
1067            alloy::sol_types::private::Vec<
1068                alloy::sol_types::private::primitives::aliases::U96,
1069            >,
1070        );
1071        #[cfg(test)]
1072        #[allow(dead_code, unreachable_patterns)]
1073        fn _type_assertion(
1074            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1075        ) {
1076            match _t {
1077                alloy_sol_types::private::AssertTypeEq::<
1078                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1079                >(_) => {}
1080            }
1081        }
1082        #[automatically_derived]
1083        #[doc(hidden)]
1084        impl ::core::convert::From<QuorumStakeTotals> for UnderlyingRustTuple<'_> {
1085            fn from(value: QuorumStakeTotals) -> Self {
1086                (value.signedStakeForQuorum, value.totalStakeForQuorum)
1087            }
1088        }
1089        #[automatically_derived]
1090        #[doc(hidden)]
1091        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumStakeTotals {
1092            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1093                Self {
1094                    signedStakeForQuorum: tuple.0,
1095                    totalStakeForQuorum: tuple.1,
1096                }
1097            }
1098        }
1099        #[automatically_derived]
1100        impl alloy_sol_types::SolValue for QuorumStakeTotals {
1101            type SolType = Self;
1102        }
1103        #[automatically_derived]
1104        impl alloy_sol_types::private::SolTypeValue<Self> for QuorumStakeTotals {
1105            #[inline]
1106            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1107                (
1108                    <alloy::sol_types::sol_data::Array<
1109                        alloy::sol_types::sol_data::Uint<96>,
1110                    > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum),
1111                    <alloy::sol_types::sol_data::Array<
1112                        alloy::sol_types::sol_data::Uint<96>,
1113                    > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum),
1114                )
1115            }
1116            #[inline]
1117            fn stv_abi_encoded_size(&self) -> usize {
1118                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1119                    return size;
1120                }
1121                let tuple = <UnderlyingRustTuple<
1122                    '_,
1123                > as ::core::convert::From<Self>>::from(self.clone());
1124                <UnderlyingSolTuple<
1125                    '_,
1126                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1127            }
1128            #[inline]
1129            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1130                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1131            }
1132            #[inline]
1133            fn stv_abi_encode_packed_to(
1134                &self,
1135                out: &mut alloy_sol_types::private::Vec<u8>,
1136            ) {
1137                let tuple = <UnderlyingRustTuple<
1138                    '_,
1139                > as ::core::convert::From<Self>>::from(self.clone());
1140                <UnderlyingSolTuple<
1141                    '_,
1142                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1143            }
1144            #[inline]
1145            fn stv_abi_packed_encoded_size(&self) -> usize {
1146                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1147                    return size;
1148                }
1149                let tuple = <UnderlyingRustTuple<
1150                    '_,
1151                > as ::core::convert::From<Self>>::from(self.clone());
1152                <UnderlyingSolTuple<
1153                    '_,
1154                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1155            }
1156        }
1157        #[automatically_derived]
1158        impl alloy_sol_types::SolType for QuorumStakeTotals {
1159            type RustType = Self;
1160            type Token<'a> = <UnderlyingSolTuple<
1161                'a,
1162            > as alloy_sol_types::SolType>::Token<'a>;
1163            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1164            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1165                '_,
1166            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1167            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1168                '_,
1169            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1170            #[inline]
1171            fn valid_token(token: &Self::Token<'_>) -> bool {
1172                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1173            }
1174            #[inline]
1175            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1176                let tuple = <UnderlyingSolTuple<
1177                    '_,
1178                > as alloy_sol_types::SolType>::detokenize(token);
1179                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1180            }
1181        }
1182        #[automatically_derived]
1183        impl alloy_sol_types::SolStruct for QuorumStakeTotals {
1184            const NAME: &'static str = "QuorumStakeTotals";
1185            #[inline]
1186            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1187                alloy_sol_types::private::Cow::Borrowed(
1188                    "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)",
1189                )
1190            }
1191            #[inline]
1192            fn eip712_components() -> alloy_sol_types::private::Vec<
1193                alloy_sol_types::private::Cow<'static, str>,
1194            > {
1195                alloy_sol_types::private::Vec::new()
1196            }
1197            #[inline]
1198            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1199                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1200            }
1201            #[inline]
1202            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1203                [
1204                    <alloy::sol_types::sol_data::Array<
1205                        alloy::sol_types::sol_data::Uint<96>,
1206                    > as alloy_sol_types::SolType>::eip712_data_word(
1207                            &self.signedStakeForQuorum,
1208                        )
1209                        .0,
1210                    <alloy::sol_types::sol_data::Array<
1211                        alloy::sol_types::sol_data::Uint<96>,
1212                    > as alloy_sol_types::SolType>::eip712_data_word(
1213                            &self.totalStakeForQuorum,
1214                        )
1215                        .0,
1216                ]
1217                    .concat()
1218            }
1219        }
1220        #[automatically_derived]
1221        impl alloy_sol_types::EventTopic for QuorumStakeTotals {
1222            #[inline]
1223            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1224                0usize
1225                    + <alloy::sol_types::sol_data::Array<
1226                        alloy::sol_types::sol_data::Uint<96>,
1227                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.signedStakeForQuorum,
1229                    )
1230                    + <alloy::sol_types::sol_data::Array<
1231                        alloy::sol_types::sol_data::Uint<96>,
1232                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1233                        &rust.totalStakeForQuorum,
1234                    )
1235            }
1236            #[inline]
1237            fn encode_topic_preimage(
1238                rust: &Self::RustType,
1239                out: &mut alloy_sol_types::private::Vec<u8>,
1240            ) {
1241                out.reserve(
1242                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1243                );
1244                <alloy::sol_types::sol_data::Array<
1245                    alloy::sol_types::sol_data::Uint<96>,
1246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.signedStakeForQuorum,
1248                    out,
1249                );
1250                <alloy::sol_types::sol_data::Array<
1251                    alloy::sol_types::sol_data::Uint<96>,
1252                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1253                    &rust.totalStakeForQuorum,
1254                    out,
1255                );
1256            }
1257            #[inline]
1258            fn encode_topic(
1259                rust: &Self::RustType,
1260            ) -> alloy_sol_types::abi::token::WordToken {
1261                let mut out = alloy_sol_types::private::Vec::new();
1262                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    rust,
1264                    &mut out,
1265                );
1266                alloy_sol_types::abi::token::WordToken(
1267                    alloy_sol_types::private::keccak256(out),
1268                )
1269            }
1270        }
1271    };
1272    use alloy::contract as alloy_contract;
1273    /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
1274
1275See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
1276    #[inline]
1277    pub const fn new<
1278        P: alloy_contract::private::Provider<N>,
1279        N: alloy_contract::private::Network,
1280    >(
1281        address: alloy_sol_types::private::Address,
1282        provider: P,
1283    ) -> IBLSSignatureCheckerTypesInstance<P, N> {
1284        IBLSSignatureCheckerTypesInstance::<P, N>::new(address, provider)
1285    }
1286    /**A [`IBLSSignatureCheckerTypes`](self) instance.
1287
1288Contains type-safe methods for interacting with an on-chain instance of the
1289[`IBLSSignatureCheckerTypes`](self) contract located at a given `address`, using a given
1290provider `P`.
1291
1292If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1293documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1294be used to deploy a new instance of the contract.
1295
1296See the [module-level documentation](self) for all the available methods.*/
1297    #[derive(Clone)]
1298    pub struct IBLSSignatureCheckerTypesInstance<
1299        P,
1300        N = alloy_contract::private::Ethereum,
1301    > {
1302        address: alloy_sol_types::private::Address,
1303        provider: P,
1304        _network: ::core::marker::PhantomData<N>,
1305    }
1306    #[automatically_derived]
1307    impl<P, N> ::core::fmt::Debug for IBLSSignatureCheckerTypesInstance<P, N> {
1308        #[inline]
1309        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1310            f.debug_tuple("IBLSSignatureCheckerTypesInstance")
1311                .field(&self.address)
1312                .finish()
1313        }
1314    }
1315    /// Instantiation and getters/setters.
1316    #[automatically_derived]
1317    impl<
1318        P: alloy_contract::private::Provider<N>,
1319        N: alloy_contract::private::Network,
1320    > IBLSSignatureCheckerTypesInstance<P, N> {
1321        /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
1322
1323See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
1324        #[inline]
1325        pub const fn new(
1326            address: alloy_sol_types::private::Address,
1327            provider: P,
1328        ) -> Self {
1329            Self {
1330                address,
1331                provider,
1332                _network: ::core::marker::PhantomData,
1333            }
1334        }
1335        /// Returns a reference to the address.
1336        #[inline]
1337        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1338            &self.address
1339        }
1340        /// Sets the address.
1341        #[inline]
1342        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1343            self.address = address;
1344        }
1345        /// Sets the address and returns `self`.
1346        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1347            self.set_address(address);
1348            self
1349        }
1350        /// Returns a reference to the provider.
1351        #[inline]
1352        pub const fn provider(&self) -> &P {
1353            &self.provider
1354        }
1355    }
1356    impl<P: ::core::clone::Clone, N> IBLSSignatureCheckerTypesInstance<&P, N> {
1357        /// Clones the provider and returns a new instance with the cloned provider.
1358        #[inline]
1359        pub fn with_cloned_provider(self) -> IBLSSignatureCheckerTypesInstance<P, N> {
1360            IBLSSignatureCheckerTypesInstance {
1361                address: self.address,
1362                provider: ::core::clone::Clone::clone(&self.provider),
1363                _network: ::core::marker::PhantomData,
1364            }
1365        }
1366    }
1367    /// Function calls.
1368    #[automatically_derived]
1369    impl<
1370        P: alloy_contract::private::Provider<N>,
1371        N: alloy_contract::private::Network,
1372    > IBLSSignatureCheckerTypesInstance<P, N> {
1373        /// Creates a new call builder using this contract instance's provider and address.
1374        ///
1375        /// Note that the call can be any function call, not just those defined in this
1376        /// contract. Prefer using the other methods for building type-safe contract calls.
1377        pub fn call_builder<C: alloy_sol_types::SolCall>(
1378            &self,
1379            call: &C,
1380        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1381            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1382        }
1383    }
1384    /// Event filters.
1385    #[automatically_derived]
1386    impl<
1387        P: alloy_contract::private::Provider<N>,
1388        N: alloy_contract::private::Network,
1389    > IBLSSignatureCheckerTypesInstance<P, N> {
1390        /// Creates a new event filter using this contract instance's provider and address.
1391        ///
1392        /// Note that the type can be any event, not just those defined in this contract.
1393        /// Prefer using the other methods for building type-safe event filters.
1394        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1395            &self,
1396        ) -> alloy_contract::Event<&P, E, N> {
1397            alloy_contract::Event::new_sol(&self.provider, &self.address)
1398        }
1399    }
1400}
1401///Module containing a contract's types and functions.
1402/**
1403
1404```solidity
1405library TaskManager {
1406    struct Task { uint32 taskCreatedBlock; uint32 quorumThresholdPercentage; bytes message; bytes quorumNumbers; }
1407    struct TaskResponse { uint32 referenceTaskIndex; bytes message; }
1408    struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
1409}
1410```*/
1411#[allow(
1412    non_camel_case_types,
1413    non_snake_case,
1414    clippy::pub_underscore_fields,
1415    clippy::style,
1416    clippy::empty_structs_with_brackets
1417)]
1418pub mod TaskManager {
1419    use super::*;
1420    use alloy::sol_types as alloy_sol_types;
1421    #[derive(serde::Serialize, serde::Deserialize)]
1422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1423    /**```solidity
1424struct Task { uint32 taskCreatedBlock; uint32 quorumThresholdPercentage; bytes message; bytes quorumNumbers; }
1425```*/
1426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1427    #[derive(Clone)]
1428    pub struct Task {
1429        #[allow(missing_docs)]
1430        pub taskCreatedBlock: u32,
1431        #[allow(missing_docs)]
1432        pub quorumThresholdPercentage: u32,
1433        #[allow(missing_docs)]
1434        pub message: alloy::sol_types::private::Bytes,
1435        #[allow(missing_docs)]
1436        pub quorumNumbers: alloy::sol_types::private::Bytes,
1437    }
1438    #[allow(
1439        non_camel_case_types,
1440        non_snake_case,
1441        clippy::pub_underscore_fields,
1442        clippy::style
1443    )]
1444    const _: () = {
1445        use alloy::sol_types as alloy_sol_types;
1446        #[doc(hidden)]
1447        type UnderlyingSolTuple<'a> = (
1448            alloy::sol_types::sol_data::Uint<32>,
1449            alloy::sol_types::sol_data::Uint<32>,
1450            alloy::sol_types::sol_data::Bytes,
1451            alloy::sol_types::sol_data::Bytes,
1452        );
1453        #[doc(hidden)]
1454        type UnderlyingRustTuple<'a> = (
1455            u32,
1456            u32,
1457            alloy::sol_types::private::Bytes,
1458            alloy::sol_types::private::Bytes,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<Task> for UnderlyingRustTuple<'_> {
1474            fn from(value: Task) -> Self {
1475                (
1476                    value.taskCreatedBlock,
1477                    value.quorumThresholdPercentage,
1478                    value.message,
1479                    value.quorumNumbers,
1480                )
1481            }
1482        }
1483        #[automatically_derived]
1484        #[doc(hidden)]
1485        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Task {
1486            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1487                Self {
1488                    taskCreatedBlock: tuple.0,
1489                    quorumThresholdPercentage: tuple.1,
1490                    message: tuple.2,
1491                    quorumNumbers: tuple.3,
1492                }
1493            }
1494        }
1495        #[automatically_derived]
1496        impl alloy_sol_types::SolValue for Task {
1497            type SolType = Self;
1498        }
1499        #[automatically_derived]
1500        impl alloy_sol_types::private::SolTypeValue<Self> for Task {
1501            #[inline]
1502            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1503                (
1504                    <alloy::sol_types::sol_data::Uint<
1505                        32,
1506                    > as alloy_sol_types::SolType>::tokenize(&self.taskCreatedBlock),
1507                    <alloy::sol_types::sol_data::Uint<
1508                        32,
1509                    > as alloy_sol_types::SolType>::tokenize(
1510                        &self.quorumThresholdPercentage,
1511                    ),
1512                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1513                        &self.message,
1514                    ),
1515                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1516                        &self.quorumNumbers,
1517                    ),
1518                )
1519            }
1520            #[inline]
1521            fn stv_abi_encoded_size(&self) -> usize {
1522                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1523                    return size;
1524                }
1525                let tuple = <UnderlyingRustTuple<
1526                    '_,
1527                > as ::core::convert::From<Self>>::from(self.clone());
1528                <UnderlyingSolTuple<
1529                    '_,
1530                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1531            }
1532            #[inline]
1533            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1534                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1535            }
1536            #[inline]
1537            fn stv_abi_encode_packed_to(
1538                &self,
1539                out: &mut alloy_sol_types::private::Vec<u8>,
1540            ) {
1541                let tuple = <UnderlyingRustTuple<
1542                    '_,
1543                > as ::core::convert::From<Self>>::from(self.clone());
1544                <UnderlyingSolTuple<
1545                    '_,
1546                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1547            }
1548            #[inline]
1549            fn stv_abi_packed_encoded_size(&self) -> usize {
1550                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1551                    return size;
1552                }
1553                let tuple = <UnderlyingRustTuple<
1554                    '_,
1555                > as ::core::convert::From<Self>>::from(self.clone());
1556                <UnderlyingSolTuple<
1557                    '_,
1558                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1559            }
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::SolType for Task {
1563            type RustType = Self;
1564            type Token<'a> = <UnderlyingSolTuple<
1565                'a,
1566            > as alloy_sol_types::SolType>::Token<'a>;
1567            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1568            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1569                '_,
1570            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1571            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1572                '_,
1573            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1574            #[inline]
1575            fn valid_token(token: &Self::Token<'_>) -> bool {
1576                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1577            }
1578            #[inline]
1579            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1580                let tuple = <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::detokenize(token);
1583                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1584            }
1585        }
1586        #[automatically_derived]
1587        impl alloy_sol_types::SolStruct for Task {
1588            const NAME: &'static str = "Task";
1589            #[inline]
1590            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1591                alloy_sol_types::private::Cow::Borrowed(
1592                    "Task(uint32 taskCreatedBlock,uint32 quorumThresholdPercentage,bytes message,bytes quorumNumbers)",
1593                )
1594            }
1595            #[inline]
1596            fn eip712_components() -> alloy_sol_types::private::Vec<
1597                alloy_sol_types::private::Cow<'static, str>,
1598            > {
1599                alloy_sol_types::private::Vec::new()
1600            }
1601            #[inline]
1602            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1603                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1604            }
1605            #[inline]
1606            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1607                [
1608                    <alloy::sol_types::sol_data::Uint<
1609                        32,
1610                    > as alloy_sol_types::SolType>::eip712_data_word(
1611                            &self.taskCreatedBlock,
1612                        )
1613                        .0,
1614                    <alloy::sol_types::sol_data::Uint<
1615                        32,
1616                    > as alloy_sol_types::SolType>::eip712_data_word(
1617                            &self.quorumThresholdPercentage,
1618                        )
1619                        .0,
1620                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1621                            &self.message,
1622                        )
1623                        .0,
1624                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1625                            &self.quorumNumbers,
1626                        )
1627                        .0,
1628                ]
1629                    .concat()
1630            }
1631        }
1632        #[automatically_derived]
1633        impl alloy_sol_types::EventTopic for Task {
1634            #[inline]
1635            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1636                0usize
1637                    + <alloy::sol_types::sol_data::Uint<
1638                        32,
1639                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1640                        &rust.taskCreatedBlock,
1641                    )
1642                    + <alloy::sol_types::sol_data::Uint<
1643                        32,
1644                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.quorumThresholdPercentage,
1646                    )
1647                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.message,
1649                    )
1650                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1651                        &rust.quorumNumbers,
1652                    )
1653            }
1654            #[inline]
1655            fn encode_topic_preimage(
1656                rust: &Self::RustType,
1657                out: &mut alloy_sol_types::private::Vec<u8>,
1658            ) {
1659                out.reserve(
1660                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1661                );
1662                <alloy::sol_types::sol_data::Uint<
1663                    32,
1664                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1665                    &rust.taskCreatedBlock,
1666                    out,
1667                );
1668                <alloy::sol_types::sol_data::Uint<
1669                    32,
1670                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1671                    &rust.quorumThresholdPercentage,
1672                    out,
1673                );
1674                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1675                    &rust.message,
1676                    out,
1677                );
1678                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1679                    &rust.quorumNumbers,
1680                    out,
1681                );
1682            }
1683            #[inline]
1684            fn encode_topic(
1685                rust: &Self::RustType,
1686            ) -> alloy_sol_types::abi::token::WordToken {
1687                let mut out = alloy_sol_types::private::Vec::new();
1688                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1689                    rust,
1690                    &mut out,
1691                );
1692                alloy_sol_types::abi::token::WordToken(
1693                    alloy_sol_types::private::keccak256(out),
1694                )
1695            }
1696        }
1697    };
1698    #[derive(serde::Serialize, serde::Deserialize)]
1699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1700    /**```solidity
1701struct TaskResponse { uint32 referenceTaskIndex; bytes message; }
1702```*/
1703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1704    #[derive(Clone)]
1705    pub struct TaskResponse {
1706        #[allow(missing_docs)]
1707        pub referenceTaskIndex: u32,
1708        #[allow(missing_docs)]
1709        pub message: alloy::sol_types::private::Bytes,
1710    }
1711    #[allow(
1712        non_camel_case_types,
1713        non_snake_case,
1714        clippy::pub_underscore_fields,
1715        clippy::style
1716    )]
1717    const _: () = {
1718        use alloy::sol_types as alloy_sol_types;
1719        #[doc(hidden)]
1720        type UnderlyingSolTuple<'a> = (
1721            alloy::sol_types::sol_data::Uint<32>,
1722            alloy::sol_types::sol_data::Bytes,
1723        );
1724        #[doc(hidden)]
1725        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes);
1726        #[cfg(test)]
1727        #[allow(dead_code, unreachable_patterns)]
1728        fn _type_assertion(
1729            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1730        ) {
1731            match _t {
1732                alloy_sol_types::private::AssertTypeEq::<
1733                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1734                >(_) => {}
1735            }
1736        }
1737        #[automatically_derived]
1738        #[doc(hidden)]
1739        impl ::core::convert::From<TaskResponse> for UnderlyingRustTuple<'_> {
1740            fn from(value: TaskResponse) -> Self {
1741                (value.referenceTaskIndex, value.message)
1742            }
1743        }
1744        #[automatically_derived]
1745        #[doc(hidden)]
1746        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponse {
1747            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1748                Self {
1749                    referenceTaskIndex: tuple.0,
1750                    message: tuple.1,
1751                }
1752            }
1753        }
1754        #[automatically_derived]
1755        impl alloy_sol_types::SolValue for TaskResponse {
1756            type SolType = Self;
1757        }
1758        #[automatically_derived]
1759        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponse {
1760            #[inline]
1761            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1762                (
1763                    <alloy::sol_types::sol_data::Uint<
1764                        32,
1765                    > as alloy_sol_types::SolType>::tokenize(&self.referenceTaskIndex),
1766                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1767                        &self.message,
1768                    ),
1769                )
1770            }
1771            #[inline]
1772            fn stv_abi_encoded_size(&self) -> usize {
1773                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1774                    return size;
1775                }
1776                let tuple = <UnderlyingRustTuple<
1777                    '_,
1778                > as ::core::convert::From<Self>>::from(self.clone());
1779                <UnderlyingSolTuple<
1780                    '_,
1781                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1782            }
1783            #[inline]
1784            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1785                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1786            }
1787            #[inline]
1788            fn stv_abi_encode_packed_to(
1789                &self,
1790                out: &mut alloy_sol_types::private::Vec<u8>,
1791            ) {
1792                let tuple = <UnderlyingRustTuple<
1793                    '_,
1794                > as ::core::convert::From<Self>>::from(self.clone());
1795                <UnderlyingSolTuple<
1796                    '_,
1797                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1798            }
1799            #[inline]
1800            fn stv_abi_packed_encoded_size(&self) -> usize {
1801                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1802                    return size;
1803                }
1804                let tuple = <UnderlyingRustTuple<
1805                    '_,
1806                > as ::core::convert::From<Self>>::from(self.clone());
1807                <UnderlyingSolTuple<
1808                    '_,
1809                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1810            }
1811        }
1812        #[automatically_derived]
1813        impl alloy_sol_types::SolType for TaskResponse {
1814            type RustType = Self;
1815            type Token<'a> = <UnderlyingSolTuple<
1816                'a,
1817            > as alloy_sol_types::SolType>::Token<'a>;
1818            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1819            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1820                '_,
1821            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1822            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1823                '_,
1824            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1825            #[inline]
1826            fn valid_token(token: &Self::Token<'_>) -> bool {
1827                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1828            }
1829            #[inline]
1830            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1831                let tuple = <UnderlyingSolTuple<
1832                    '_,
1833                > as alloy_sol_types::SolType>::detokenize(token);
1834                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1835            }
1836        }
1837        #[automatically_derived]
1838        impl alloy_sol_types::SolStruct for TaskResponse {
1839            const NAME: &'static str = "TaskResponse";
1840            #[inline]
1841            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1842                alloy_sol_types::private::Cow::Borrowed(
1843                    "TaskResponse(uint32 referenceTaskIndex,bytes message)",
1844                )
1845            }
1846            #[inline]
1847            fn eip712_components() -> alloy_sol_types::private::Vec<
1848                alloy_sol_types::private::Cow<'static, str>,
1849            > {
1850                alloy_sol_types::private::Vec::new()
1851            }
1852            #[inline]
1853            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1854                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1855            }
1856            #[inline]
1857            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1858                [
1859                    <alloy::sol_types::sol_data::Uint<
1860                        32,
1861                    > as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.referenceTaskIndex,
1863                        )
1864                        .0,
1865                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.message,
1867                        )
1868                        .0,
1869                ]
1870                    .concat()
1871            }
1872        }
1873        #[automatically_derived]
1874        impl alloy_sol_types::EventTopic for TaskResponse {
1875            #[inline]
1876            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1877                0usize
1878                    + <alloy::sol_types::sol_data::Uint<
1879                        32,
1880                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1881                        &rust.referenceTaskIndex,
1882                    )
1883                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1884                        &rust.message,
1885                    )
1886            }
1887            #[inline]
1888            fn encode_topic_preimage(
1889                rust: &Self::RustType,
1890                out: &mut alloy_sol_types::private::Vec<u8>,
1891            ) {
1892                out.reserve(
1893                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1894                );
1895                <alloy::sol_types::sol_data::Uint<
1896                    32,
1897                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1898                    &rust.referenceTaskIndex,
1899                    out,
1900                );
1901                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1902                    &rust.message,
1903                    out,
1904                );
1905            }
1906            #[inline]
1907            fn encode_topic(
1908                rust: &Self::RustType,
1909            ) -> alloy_sol_types::abi::token::WordToken {
1910                let mut out = alloy_sol_types::private::Vec::new();
1911                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1912                    rust,
1913                    &mut out,
1914                );
1915                alloy_sol_types::abi::token::WordToken(
1916                    alloy_sol_types::private::keccak256(out),
1917                )
1918            }
1919        }
1920    };
1921    #[derive(serde::Serialize, serde::Deserialize)]
1922    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1923    /**```solidity
1924struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
1925```*/
1926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1927    #[derive(Clone)]
1928    pub struct TaskResponseMetadata {
1929        #[allow(missing_docs)]
1930        pub taskResponsedBlock: u32,
1931        #[allow(missing_docs)]
1932        pub hashOfNonSigners: alloy::sol_types::private::FixedBytes<32>,
1933    }
1934    #[allow(
1935        non_camel_case_types,
1936        non_snake_case,
1937        clippy::pub_underscore_fields,
1938        clippy::style
1939    )]
1940    const _: () = {
1941        use alloy::sol_types as alloy_sol_types;
1942        #[doc(hidden)]
1943        type UnderlyingSolTuple<'a> = (
1944            alloy::sol_types::sol_data::Uint<32>,
1945            alloy::sol_types::sol_data::FixedBytes<32>,
1946        );
1947        #[doc(hidden)]
1948        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>);
1949        #[cfg(test)]
1950        #[allow(dead_code, unreachable_patterns)]
1951        fn _type_assertion(
1952            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1953        ) {
1954            match _t {
1955                alloy_sol_types::private::AssertTypeEq::<
1956                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1957                >(_) => {}
1958            }
1959        }
1960        #[automatically_derived]
1961        #[doc(hidden)]
1962        impl ::core::convert::From<TaskResponseMetadata> for UnderlyingRustTuple<'_> {
1963            fn from(value: TaskResponseMetadata) -> Self {
1964                (value.taskResponsedBlock, value.hashOfNonSigners)
1965            }
1966        }
1967        #[automatically_derived]
1968        #[doc(hidden)]
1969        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponseMetadata {
1970            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1971                Self {
1972                    taskResponsedBlock: tuple.0,
1973                    hashOfNonSigners: tuple.1,
1974                }
1975            }
1976        }
1977        #[automatically_derived]
1978        impl alloy_sol_types::SolValue for TaskResponseMetadata {
1979            type SolType = Self;
1980        }
1981        #[automatically_derived]
1982        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponseMetadata {
1983            #[inline]
1984            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1985                (
1986                    <alloy::sol_types::sol_data::Uint<
1987                        32,
1988                    > as alloy_sol_types::SolType>::tokenize(&self.taskResponsedBlock),
1989                    <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::SolType>::tokenize(&self.hashOfNonSigners),
1992                )
1993            }
1994            #[inline]
1995            fn stv_abi_encoded_size(&self) -> usize {
1996                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1997                    return size;
1998                }
1999                let tuple = <UnderlyingRustTuple<
2000                    '_,
2001                > as ::core::convert::From<Self>>::from(self.clone());
2002                <UnderlyingSolTuple<
2003                    '_,
2004                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2005            }
2006            #[inline]
2007            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2008                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2009            }
2010            #[inline]
2011            fn stv_abi_encode_packed_to(
2012                &self,
2013                out: &mut alloy_sol_types::private::Vec<u8>,
2014            ) {
2015                let tuple = <UnderlyingRustTuple<
2016                    '_,
2017                > as ::core::convert::From<Self>>::from(self.clone());
2018                <UnderlyingSolTuple<
2019                    '_,
2020                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2021            }
2022            #[inline]
2023            fn stv_abi_packed_encoded_size(&self) -> usize {
2024                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2025                    return size;
2026                }
2027                let tuple = <UnderlyingRustTuple<
2028                    '_,
2029                > as ::core::convert::From<Self>>::from(self.clone());
2030                <UnderlyingSolTuple<
2031                    '_,
2032                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2033            }
2034        }
2035        #[automatically_derived]
2036        impl alloy_sol_types::SolType for TaskResponseMetadata {
2037            type RustType = Self;
2038            type Token<'a> = <UnderlyingSolTuple<
2039                'a,
2040            > as alloy_sol_types::SolType>::Token<'a>;
2041            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2042            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2043                '_,
2044            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2045            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2046                '_,
2047            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2048            #[inline]
2049            fn valid_token(token: &Self::Token<'_>) -> bool {
2050                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2051            }
2052            #[inline]
2053            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2054                let tuple = <UnderlyingSolTuple<
2055                    '_,
2056                > as alloy_sol_types::SolType>::detokenize(token);
2057                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2058            }
2059        }
2060        #[automatically_derived]
2061        impl alloy_sol_types::SolStruct for TaskResponseMetadata {
2062            const NAME: &'static str = "TaskResponseMetadata";
2063            #[inline]
2064            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2065                alloy_sol_types::private::Cow::Borrowed(
2066                    "TaskResponseMetadata(uint32 taskResponsedBlock,bytes32 hashOfNonSigners)",
2067                )
2068            }
2069            #[inline]
2070            fn eip712_components() -> alloy_sol_types::private::Vec<
2071                alloy_sol_types::private::Cow<'static, str>,
2072            > {
2073                alloy_sol_types::private::Vec::new()
2074            }
2075            #[inline]
2076            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2077                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2078            }
2079            #[inline]
2080            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2081                [
2082                    <alloy::sol_types::sol_data::Uint<
2083                        32,
2084                    > as alloy_sol_types::SolType>::eip712_data_word(
2085                            &self.taskResponsedBlock,
2086                        )
2087                        .0,
2088                    <alloy::sol_types::sol_data::FixedBytes<
2089                        32,
2090                    > as alloy_sol_types::SolType>::eip712_data_word(
2091                            &self.hashOfNonSigners,
2092                        )
2093                        .0,
2094                ]
2095                    .concat()
2096            }
2097        }
2098        #[automatically_derived]
2099        impl alloy_sol_types::EventTopic for TaskResponseMetadata {
2100            #[inline]
2101            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2102                0usize
2103                    + <alloy::sol_types::sol_data::Uint<
2104                        32,
2105                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2106                        &rust.taskResponsedBlock,
2107                    )
2108                    + <alloy::sol_types::sol_data::FixedBytes<
2109                        32,
2110                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2111                        &rust.hashOfNonSigners,
2112                    )
2113            }
2114            #[inline]
2115            fn encode_topic_preimage(
2116                rust: &Self::RustType,
2117                out: &mut alloy_sol_types::private::Vec<u8>,
2118            ) {
2119                out.reserve(
2120                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2121                );
2122                <alloy::sol_types::sol_data::Uint<
2123                    32,
2124                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2125                    &rust.taskResponsedBlock,
2126                    out,
2127                );
2128                <alloy::sol_types::sol_data::FixedBytes<
2129                    32,
2130                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2131                    &rust.hashOfNonSigners,
2132                    out,
2133                );
2134            }
2135            #[inline]
2136            fn encode_topic(
2137                rust: &Self::RustType,
2138            ) -> alloy_sol_types::abi::token::WordToken {
2139                let mut out = alloy_sol_types::private::Vec::new();
2140                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2141                    rust,
2142                    &mut out,
2143                );
2144                alloy_sol_types::abi::token::WordToken(
2145                    alloy_sol_types::private::keccak256(out),
2146                )
2147            }
2148        }
2149    };
2150    use alloy::contract as alloy_contract;
2151    /**Creates a new wrapper around an on-chain [`TaskManager`](self) contract instance.
2152
2153See the [wrapper's documentation](`TaskManagerInstance`) for more details.*/
2154    #[inline]
2155    pub const fn new<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    >(
2159        address: alloy_sol_types::private::Address,
2160        provider: P,
2161    ) -> TaskManagerInstance<P, N> {
2162        TaskManagerInstance::<P, N>::new(address, provider)
2163    }
2164    /**A [`TaskManager`](self) instance.
2165
2166Contains type-safe methods for interacting with an on-chain instance of the
2167[`TaskManager`](self) contract located at a given `address`, using a given
2168provider `P`.
2169
2170If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2171documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2172be used to deploy a new instance of the contract.
2173
2174See the [module-level documentation](self) for all the available methods.*/
2175    #[derive(Clone)]
2176    pub struct TaskManagerInstance<P, N = alloy_contract::private::Ethereum> {
2177        address: alloy_sol_types::private::Address,
2178        provider: P,
2179        _network: ::core::marker::PhantomData<N>,
2180    }
2181    #[automatically_derived]
2182    impl<P, N> ::core::fmt::Debug for TaskManagerInstance<P, N> {
2183        #[inline]
2184        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2185            f.debug_tuple("TaskManagerInstance").field(&self.address).finish()
2186        }
2187    }
2188    /// Instantiation and getters/setters.
2189    #[automatically_derived]
2190    impl<
2191        P: alloy_contract::private::Provider<N>,
2192        N: alloy_contract::private::Network,
2193    > TaskManagerInstance<P, N> {
2194        /**Creates a new wrapper around an on-chain [`TaskManager`](self) contract instance.
2195
2196See the [wrapper's documentation](`TaskManagerInstance`) for more details.*/
2197        #[inline]
2198        pub const fn new(
2199            address: alloy_sol_types::private::Address,
2200            provider: P,
2201        ) -> Self {
2202            Self {
2203                address,
2204                provider,
2205                _network: ::core::marker::PhantomData,
2206            }
2207        }
2208        /// Returns a reference to the address.
2209        #[inline]
2210        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2211            &self.address
2212        }
2213        /// Sets the address.
2214        #[inline]
2215        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2216            self.address = address;
2217        }
2218        /// Sets the address and returns `self`.
2219        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2220            self.set_address(address);
2221            self
2222        }
2223        /// Returns a reference to the provider.
2224        #[inline]
2225        pub const fn provider(&self) -> &P {
2226            &self.provider
2227        }
2228    }
2229    impl<P: ::core::clone::Clone, N> TaskManagerInstance<&P, N> {
2230        /// Clones the provider and returns a new instance with the cloned provider.
2231        #[inline]
2232        pub fn with_cloned_provider(self) -> TaskManagerInstance<P, N> {
2233            TaskManagerInstance {
2234                address: self.address,
2235                provider: ::core::clone::Clone::clone(&self.provider),
2236                _network: ::core::marker::PhantomData,
2237            }
2238        }
2239    }
2240    /// Function calls.
2241    #[automatically_derived]
2242    impl<
2243        P: alloy_contract::private::Provider<N>,
2244        N: alloy_contract::private::Network,
2245    > TaskManagerInstance<P, N> {
2246        /// Creates a new call builder using this contract instance's provider and address.
2247        ///
2248        /// Note that the call can be any function call, not just those defined in this
2249        /// contract. Prefer using the other methods for building type-safe contract calls.
2250        pub fn call_builder<C: alloy_sol_types::SolCall>(
2251            &self,
2252            call: &C,
2253        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2254            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2255        }
2256    }
2257    /// Event filters.
2258    #[automatically_derived]
2259    impl<
2260        P: alloy_contract::private::Provider<N>,
2261        N: alloy_contract::private::Network,
2262    > TaskManagerInstance<P, N> {
2263        /// Creates a new event filter using this contract instance's provider and address.
2264        ///
2265        /// Note that the type can be any event, not just those defined in this contract.
2266        /// Prefer using the other methods for building type-safe event filters.
2267        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2268            &self,
2269        ) -> alloy_contract::Event<&P, E, N> {
2270            alloy_contract::Event::new_sol(&self.provider, &self.address)
2271        }
2272    }
2273}
2274/**
2275
2276Generated by the following Solidity interface...
2277```solidity
2278library BN254 {
2279    struct G1Point {
2280        uint256 X;
2281        uint256 Y;
2282    }
2283    struct G2Point {
2284        uint256[2] X;
2285        uint256[2] Y;
2286    }
2287}
2288
2289library IBLSSignatureCheckerTypes {
2290    struct NonSignerStakesAndSignature {
2291        uint32[] nonSignerQuorumBitmapIndices;
2292        BN254.G1Point[] nonSignerPubkeys;
2293        BN254.G1Point[] quorumApks;
2294        BN254.G2Point apkG2;
2295        BN254.G1Point sigma;
2296        uint32[] quorumApkIndices;
2297        uint32[] totalStakeIndices;
2298        uint32[][] nonSignerStakeIndices;
2299    }
2300    struct QuorumStakeTotals {
2301        uint96[] signedStakeForQuorum;
2302        uint96[] totalStakeForQuorum;
2303    }
2304}
2305
2306library TaskManager {
2307    struct Task {
2308        uint32 taskCreatedBlock;
2309        uint32 quorumThresholdPercentage;
2310        bytes message;
2311        bytes quorumNumbers;
2312    }
2313    struct TaskResponse {
2314        uint32 referenceTaskIndex;
2315        bytes message;
2316    }
2317    struct TaskResponseMetadata {
2318        uint32 taskResponsedBlock;
2319        bytes32 hashOfNonSigners;
2320    }
2321}
2322
2323interface SquaringTask {
2324    error AlreadySet();
2325    error BitmapValueTooLarge();
2326    error BytesArrayLengthTooLong();
2327    error BytesArrayNotOrdered();
2328    error ECAddFailed();
2329    error ECMulFailed();
2330    error ExpModFailed();
2331    error IncorrectSquareResult(uint256 number, uint256 submittedResult, uint256 expectedResult);
2332    error InputArrayLengthMismatch();
2333    error InputEmptyQuorumNumbers();
2334    error InputNonSignerLengthMismatch();
2335    error InvalidBLSPairingKey();
2336    error InvalidBLSSignature();
2337    error InvalidQuorumApkHash();
2338    error InvalidReferenceBlocknumber();
2339    error NoOngoingDeployment();
2340    error NonSignerPubkeysNotSorted();
2341    error OnlyRegistryCoordinatorOwner();
2342    error ScalarTooLarge();
2343    error ZeroAddress();
2344    error ZeroValue();
2345
2346    event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator);
2347    event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator);
2348    event Initialized(uint8 version);
2349    event NewTaskCreated(uint32 indexed taskIndex, TaskManager.Task task);
2350    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2351    event SquaringTaskCompleted(uint256 number, uint256 result);
2352    event TaskResponded(TaskManager.TaskResponse taskResponse, TaskManager.TaskResponseMetadata taskResponseMetadata);
2353
2354    constructor(address _registryCoordinator, uint32 _taskResponseWindowBlock);
2355
2356    function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
2357    function __TaskManager_init(address _aggregator, address _generator, address initialOwner) external;
2358    function aggregator() external view returns (address);
2359    function allTaskHashes(uint32) external view returns (bytes32);
2360    function allTaskResponses(uint32) external view returns (bytes32);
2361    function blsApkRegistry() external view returns (address);
2362    function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
2363    function createSquaringTask(uint256 number, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
2364    function delegation() external view returns (address);
2365    function generator() external view returns (address);
2366    function initialize(address _aggregator, address _generator, address initialOwner) external;
2367    function latestTaskNum() external view returns (uint32);
2368    function owner() external view returns (address);
2369    function registryCoordinator() external view returns (address);
2370    function renounceOwnership() external;
2371    function respondToSquaringTask(TaskManager.Task memory task, TaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
2372    function setAggregator(address newAggregator) external;
2373    function setGenerator(address newGenerator) external;
2374    function stakeRegistry() external view returns (address);
2375    function transferOwnership(address newOwner) external;
2376    function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
2377}
2378```
2379
2380...which was generated by the following JSON ABI:
2381```json
2382[
2383  {
2384    "type": "constructor",
2385    "inputs": [
2386      {
2387        "name": "_registryCoordinator",
2388        "type": "address",
2389        "internalType": "contract IRegistryCoordinator"
2390      },
2391      {
2392        "name": "_taskResponseWindowBlock",
2393        "type": "uint32",
2394        "internalType": "uint32"
2395      }
2396    ],
2397    "stateMutability": "nonpayable"
2398  },
2399  {
2400    "type": "function",
2401    "name": "TASK_RESPONSE_WINDOW_BLOCK",
2402    "inputs": [],
2403    "outputs": [
2404      {
2405        "name": "",
2406        "type": "uint32",
2407        "internalType": "uint32"
2408      }
2409    ],
2410    "stateMutability": "view"
2411  },
2412  {
2413    "type": "function",
2414    "name": "__TaskManager_init",
2415    "inputs": [
2416      {
2417        "name": "_aggregator",
2418        "type": "address",
2419        "internalType": "address"
2420      },
2421      {
2422        "name": "_generator",
2423        "type": "address",
2424        "internalType": "address"
2425      },
2426      {
2427        "name": "initialOwner",
2428        "type": "address",
2429        "internalType": "address"
2430      }
2431    ],
2432    "outputs": [],
2433    "stateMutability": "nonpayable"
2434  },
2435  {
2436    "type": "function",
2437    "name": "aggregator",
2438    "inputs": [],
2439    "outputs": [
2440      {
2441        "name": "",
2442        "type": "address",
2443        "internalType": "address"
2444      }
2445    ],
2446    "stateMutability": "view"
2447  },
2448  {
2449    "type": "function",
2450    "name": "allTaskHashes",
2451    "inputs": [
2452      {
2453        "name": "",
2454        "type": "uint32",
2455        "internalType": "uint32"
2456      }
2457    ],
2458    "outputs": [
2459      {
2460        "name": "",
2461        "type": "bytes32",
2462        "internalType": "bytes32"
2463      }
2464    ],
2465    "stateMutability": "view"
2466  },
2467  {
2468    "type": "function",
2469    "name": "allTaskResponses",
2470    "inputs": [
2471      {
2472        "name": "",
2473        "type": "uint32",
2474        "internalType": "uint32"
2475      }
2476    ],
2477    "outputs": [
2478      {
2479        "name": "",
2480        "type": "bytes32",
2481        "internalType": "bytes32"
2482      }
2483    ],
2484    "stateMutability": "view"
2485  },
2486  {
2487    "type": "function",
2488    "name": "blsApkRegistry",
2489    "inputs": [],
2490    "outputs": [
2491      {
2492        "name": "",
2493        "type": "address",
2494        "internalType": "contract IBLSApkRegistry"
2495      }
2496    ],
2497    "stateMutability": "view"
2498  },
2499  {
2500    "type": "function",
2501    "name": "checkSignatures",
2502    "inputs": [
2503      {
2504        "name": "msgHash",
2505        "type": "bytes32",
2506        "internalType": "bytes32"
2507      },
2508      {
2509        "name": "quorumNumbers",
2510        "type": "bytes",
2511        "internalType": "bytes"
2512      },
2513      {
2514        "name": "referenceBlockNumber",
2515        "type": "uint32",
2516        "internalType": "uint32"
2517      },
2518      {
2519        "name": "params",
2520        "type": "tuple",
2521        "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
2522        "components": [
2523          {
2524            "name": "nonSignerQuorumBitmapIndices",
2525            "type": "uint32[]",
2526            "internalType": "uint32[]"
2527          },
2528          {
2529            "name": "nonSignerPubkeys",
2530            "type": "tuple[]",
2531            "internalType": "struct BN254.G1Point[]",
2532            "components": [
2533              {
2534                "name": "X",
2535                "type": "uint256",
2536                "internalType": "uint256"
2537              },
2538              {
2539                "name": "Y",
2540                "type": "uint256",
2541                "internalType": "uint256"
2542              }
2543            ]
2544          },
2545          {
2546            "name": "quorumApks",
2547            "type": "tuple[]",
2548            "internalType": "struct BN254.G1Point[]",
2549            "components": [
2550              {
2551                "name": "X",
2552                "type": "uint256",
2553                "internalType": "uint256"
2554              },
2555              {
2556                "name": "Y",
2557                "type": "uint256",
2558                "internalType": "uint256"
2559              }
2560            ]
2561          },
2562          {
2563            "name": "apkG2",
2564            "type": "tuple",
2565            "internalType": "struct BN254.G2Point",
2566            "components": [
2567              {
2568                "name": "X",
2569                "type": "uint256[2]",
2570                "internalType": "uint256[2]"
2571              },
2572              {
2573                "name": "Y",
2574                "type": "uint256[2]",
2575                "internalType": "uint256[2]"
2576              }
2577            ]
2578          },
2579          {
2580            "name": "sigma",
2581            "type": "tuple",
2582            "internalType": "struct BN254.G1Point",
2583            "components": [
2584              {
2585                "name": "X",
2586                "type": "uint256",
2587                "internalType": "uint256"
2588              },
2589              {
2590                "name": "Y",
2591                "type": "uint256",
2592                "internalType": "uint256"
2593              }
2594            ]
2595          },
2596          {
2597            "name": "quorumApkIndices",
2598            "type": "uint32[]",
2599            "internalType": "uint32[]"
2600          },
2601          {
2602            "name": "totalStakeIndices",
2603            "type": "uint32[]",
2604            "internalType": "uint32[]"
2605          },
2606          {
2607            "name": "nonSignerStakeIndices",
2608            "type": "uint32[][]",
2609            "internalType": "uint32[][]"
2610          }
2611        ]
2612      }
2613    ],
2614    "outputs": [
2615      {
2616        "name": "",
2617        "type": "tuple",
2618        "internalType": "struct IBLSSignatureCheckerTypes.QuorumStakeTotals",
2619        "components": [
2620          {
2621            "name": "signedStakeForQuorum",
2622            "type": "uint96[]",
2623            "internalType": "uint96[]"
2624          },
2625          {
2626            "name": "totalStakeForQuorum",
2627            "type": "uint96[]",
2628            "internalType": "uint96[]"
2629          }
2630        ]
2631      },
2632      {
2633        "name": "",
2634        "type": "bytes32",
2635        "internalType": "bytes32"
2636      }
2637    ],
2638    "stateMutability": "view"
2639  },
2640  {
2641    "type": "function",
2642    "name": "createSquaringTask",
2643    "inputs": [
2644      {
2645        "name": "number",
2646        "type": "uint256",
2647        "internalType": "uint256"
2648      },
2649      {
2650        "name": "quorumThresholdPercentage",
2651        "type": "uint32",
2652        "internalType": "uint32"
2653      },
2654      {
2655        "name": "quorumNumbers",
2656        "type": "bytes",
2657        "internalType": "bytes"
2658      }
2659    ],
2660    "outputs": [],
2661    "stateMutability": "nonpayable"
2662  },
2663  {
2664    "type": "function",
2665    "name": "delegation",
2666    "inputs": [],
2667    "outputs": [
2668      {
2669        "name": "",
2670        "type": "address",
2671        "internalType": "contract IDelegationManager"
2672      }
2673    ],
2674    "stateMutability": "view"
2675  },
2676  {
2677    "type": "function",
2678    "name": "generator",
2679    "inputs": [],
2680    "outputs": [
2681      {
2682        "name": "",
2683        "type": "address",
2684        "internalType": "address"
2685      }
2686    ],
2687    "stateMutability": "view"
2688  },
2689  {
2690    "type": "function",
2691    "name": "initialize",
2692    "inputs": [
2693      {
2694        "name": "_aggregator",
2695        "type": "address",
2696        "internalType": "address"
2697      },
2698      {
2699        "name": "_generator",
2700        "type": "address",
2701        "internalType": "address"
2702      },
2703      {
2704        "name": "initialOwner",
2705        "type": "address",
2706        "internalType": "address"
2707      }
2708    ],
2709    "outputs": [],
2710    "stateMutability": "nonpayable"
2711  },
2712  {
2713    "type": "function",
2714    "name": "latestTaskNum",
2715    "inputs": [],
2716    "outputs": [
2717      {
2718        "name": "",
2719        "type": "uint32",
2720        "internalType": "uint32"
2721      }
2722    ],
2723    "stateMutability": "view"
2724  },
2725  {
2726    "type": "function",
2727    "name": "owner",
2728    "inputs": [],
2729    "outputs": [
2730      {
2731        "name": "",
2732        "type": "address",
2733        "internalType": "address"
2734      }
2735    ],
2736    "stateMutability": "view"
2737  },
2738  {
2739    "type": "function",
2740    "name": "registryCoordinator",
2741    "inputs": [],
2742    "outputs": [
2743      {
2744        "name": "",
2745        "type": "address",
2746        "internalType": "contract ISlashingRegistryCoordinator"
2747      }
2748    ],
2749    "stateMutability": "view"
2750  },
2751  {
2752    "type": "function",
2753    "name": "renounceOwnership",
2754    "inputs": [],
2755    "outputs": [],
2756    "stateMutability": "nonpayable"
2757  },
2758  {
2759    "type": "function",
2760    "name": "respondToSquaringTask",
2761    "inputs": [
2762      {
2763        "name": "task",
2764        "type": "tuple",
2765        "internalType": "struct TaskManager.Task",
2766        "components": [
2767          {
2768            "name": "taskCreatedBlock",
2769            "type": "uint32",
2770            "internalType": "uint32"
2771          },
2772          {
2773            "name": "quorumThresholdPercentage",
2774            "type": "uint32",
2775            "internalType": "uint32"
2776          },
2777          {
2778            "name": "message",
2779            "type": "bytes",
2780            "internalType": "bytes"
2781          },
2782          {
2783            "name": "quorumNumbers",
2784            "type": "bytes",
2785            "internalType": "bytes"
2786          }
2787        ]
2788      },
2789      {
2790        "name": "taskResponse",
2791        "type": "tuple",
2792        "internalType": "struct TaskManager.TaskResponse",
2793        "components": [
2794          {
2795            "name": "referenceTaskIndex",
2796            "type": "uint32",
2797            "internalType": "uint32"
2798          },
2799          {
2800            "name": "message",
2801            "type": "bytes",
2802            "internalType": "bytes"
2803          }
2804        ]
2805      },
2806      {
2807        "name": "nonSignerStakesAndSignature",
2808        "type": "tuple",
2809        "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
2810        "components": [
2811          {
2812            "name": "nonSignerQuorumBitmapIndices",
2813            "type": "uint32[]",
2814            "internalType": "uint32[]"
2815          },
2816          {
2817            "name": "nonSignerPubkeys",
2818            "type": "tuple[]",
2819            "internalType": "struct BN254.G1Point[]",
2820            "components": [
2821              {
2822                "name": "X",
2823                "type": "uint256",
2824                "internalType": "uint256"
2825              },
2826              {
2827                "name": "Y",
2828                "type": "uint256",
2829                "internalType": "uint256"
2830              }
2831            ]
2832          },
2833          {
2834            "name": "quorumApks",
2835            "type": "tuple[]",
2836            "internalType": "struct BN254.G1Point[]",
2837            "components": [
2838              {
2839                "name": "X",
2840                "type": "uint256",
2841                "internalType": "uint256"
2842              },
2843              {
2844                "name": "Y",
2845                "type": "uint256",
2846                "internalType": "uint256"
2847              }
2848            ]
2849          },
2850          {
2851            "name": "apkG2",
2852            "type": "tuple",
2853            "internalType": "struct BN254.G2Point",
2854            "components": [
2855              {
2856                "name": "X",
2857                "type": "uint256[2]",
2858                "internalType": "uint256[2]"
2859              },
2860              {
2861                "name": "Y",
2862                "type": "uint256[2]",
2863                "internalType": "uint256[2]"
2864              }
2865            ]
2866          },
2867          {
2868            "name": "sigma",
2869            "type": "tuple",
2870            "internalType": "struct BN254.G1Point",
2871            "components": [
2872              {
2873                "name": "X",
2874                "type": "uint256",
2875                "internalType": "uint256"
2876              },
2877              {
2878                "name": "Y",
2879                "type": "uint256",
2880                "internalType": "uint256"
2881              }
2882            ]
2883          },
2884          {
2885            "name": "quorumApkIndices",
2886            "type": "uint32[]",
2887            "internalType": "uint32[]"
2888          },
2889          {
2890            "name": "totalStakeIndices",
2891            "type": "uint32[]",
2892            "internalType": "uint32[]"
2893          },
2894          {
2895            "name": "nonSignerStakeIndices",
2896            "type": "uint32[][]",
2897            "internalType": "uint32[][]"
2898          }
2899        ]
2900      }
2901    ],
2902    "outputs": [],
2903    "stateMutability": "nonpayable"
2904  },
2905  {
2906    "type": "function",
2907    "name": "setAggregator",
2908    "inputs": [
2909      {
2910        "name": "newAggregator",
2911        "type": "address",
2912        "internalType": "address"
2913      }
2914    ],
2915    "outputs": [],
2916    "stateMutability": "nonpayable"
2917  },
2918  {
2919    "type": "function",
2920    "name": "setGenerator",
2921    "inputs": [
2922      {
2923        "name": "newGenerator",
2924        "type": "address",
2925        "internalType": "address"
2926      }
2927    ],
2928    "outputs": [],
2929    "stateMutability": "nonpayable"
2930  },
2931  {
2932    "type": "function",
2933    "name": "stakeRegistry",
2934    "inputs": [],
2935    "outputs": [
2936      {
2937        "name": "",
2938        "type": "address",
2939        "internalType": "contract IStakeRegistry"
2940      }
2941    ],
2942    "stateMutability": "view"
2943  },
2944  {
2945    "type": "function",
2946    "name": "transferOwnership",
2947    "inputs": [
2948      {
2949        "name": "newOwner",
2950        "type": "address",
2951        "internalType": "address"
2952      }
2953    ],
2954    "outputs": [],
2955    "stateMutability": "nonpayable"
2956  },
2957  {
2958    "type": "function",
2959    "name": "trySignatureAndApkVerification",
2960    "inputs": [
2961      {
2962        "name": "msgHash",
2963        "type": "bytes32",
2964        "internalType": "bytes32"
2965      },
2966      {
2967        "name": "apk",
2968        "type": "tuple",
2969        "internalType": "struct BN254.G1Point",
2970        "components": [
2971          {
2972            "name": "X",
2973            "type": "uint256",
2974            "internalType": "uint256"
2975          },
2976          {
2977            "name": "Y",
2978            "type": "uint256",
2979            "internalType": "uint256"
2980          }
2981        ]
2982      },
2983      {
2984        "name": "apkG2",
2985        "type": "tuple",
2986        "internalType": "struct BN254.G2Point",
2987        "components": [
2988          {
2989            "name": "X",
2990            "type": "uint256[2]",
2991            "internalType": "uint256[2]"
2992          },
2993          {
2994            "name": "Y",
2995            "type": "uint256[2]",
2996            "internalType": "uint256[2]"
2997          }
2998        ]
2999      },
3000      {
3001        "name": "sigma",
3002        "type": "tuple",
3003        "internalType": "struct BN254.G1Point",
3004        "components": [
3005          {
3006            "name": "X",
3007            "type": "uint256",
3008            "internalType": "uint256"
3009          },
3010          {
3011            "name": "Y",
3012            "type": "uint256",
3013            "internalType": "uint256"
3014          }
3015        ]
3016      }
3017    ],
3018    "outputs": [
3019      {
3020        "name": "pairingSuccessful",
3021        "type": "bool",
3022        "internalType": "bool"
3023      },
3024      {
3025        "name": "siganatureIsValid",
3026        "type": "bool",
3027        "internalType": "bool"
3028      }
3029    ],
3030    "stateMutability": "view"
3031  },
3032  {
3033    "type": "event",
3034    "name": "AggregatorUpdated",
3035    "inputs": [
3036      {
3037        "name": "oldAggregator",
3038        "type": "address",
3039        "indexed": true,
3040        "internalType": "address"
3041      },
3042      {
3043        "name": "newAggregator",
3044        "type": "address",
3045        "indexed": true,
3046        "internalType": "address"
3047      }
3048    ],
3049    "anonymous": false
3050  },
3051  {
3052    "type": "event",
3053    "name": "GeneratorUpdated",
3054    "inputs": [
3055      {
3056        "name": "oldGenerator",
3057        "type": "address",
3058        "indexed": true,
3059        "internalType": "address"
3060      },
3061      {
3062        "name": "newGenerator",
3063        "type": "address",
3064        "indexed": true,
3065        "internalType": "address"
3066      }
3067    ],
3068    "anonymous": false
3069  },
3070  {
3071    "type": "event",
3072    "name": "Initialized",
3073    "inputs": [
3074      {
3075        "name": "version",
3076        "type": "uint8",
3077        "indexed": false,
3078        "internalType": "uint8"
3079      }
3080    ],
3081    "anonymous": false
3082  },
3083  {
3084    "type": "event",
3085    "name": "NewTaskCreated",
3086    "inputs": [
3087      {
3088        "name": "taskIndex",
3089        "type": "uint32",
3090        "indexed": true,
3091        "internalType": "uint32"
3092      },
3093      {
3094        "name": "task",
3095        "type": "tuple",
3096        "indexed": false,
3097        "internalType": "struct TaskManager.Task",
3098        "components": [
3099          {
3100            "name": "taskCreatedBlock",
3101            "type": "uint32",
3102            "internalType": "uint32"
3103          },
3104          {
3105            "name": "quorumThresholdPercentage",
3106            "type": "uint32",
3107            "internalType": "uint32"
3108          },
3109          {
3110            "name": "message",
3111            "type": "bytes",
3112            "internalType": "bytes"
3113          },
3114          {
3115            "name": "quorumNumbers",
3116            "type": "bytes",
3117            "internalType": "bytes"
3118          }
3119        ]
3120      }
3121    ],
3122    "anonymous": false
3123  },
3124  {
3125    "type": "event",
3126    "name": "OwnershipTransferred",
3127    "inputs": [
3128      {
3129        "name": "previousOwner",
3130        "type": "address",
3131        "indexed": true,
3132        "internalType": "address"
3133      },
3134      {
3135        "name": "newOwner",
3136        "type": "address",
3137        "indexed": true,
3138        "internalType": "address"
3139      }
3140    ],
3141    "anonymous": false
3142  },
3143  {
3144    "type": "event",
3145    "name": "SquaringTaskCompleted",
3146    "inputs": [
3147      {
3148        "name": "number",
3149        "type": "uint256",
3150        "indexed": false,
3151        "internalType": "uint256"
3152      },
3153      {
3154        "name": "result",
3155        "type": "uint256",
3156        "indexed": false,
3157        "internalType": "uint256"
3158      }
3159    ],
3160    "anonymous": false
3161  },
3162  {
3163    "type": "event",
3164    "name": "TaskResponded",
3165    "inputs": [
3166      {
3167        "name": "taskResponse",
3168        "type": "tuple",
3169        "indexed": false,
3170        "internalType": "struct TaskManager.TaskResponse",
3171        "components": [
3172          {
3173            "name": "referenceTaskIndex",
3174            "type": "uint32",
3175            "internalType": "uint32"
3176          },
3177          {
3178            "name": "message",
3179            "type": "bytes",
3180            "internalType": "bytes"
3181          }
3182        ]
3183      },
3184      {
3185        "name": "taskResponseMetadata",
3186        "type": "tuple",
3187        "indexed": false,
3188        "internalType": "struct TaskManager.TaskResponseMetadata",
3189        "components": [
3190          {
3191            "name": "taskResponsedBlock",
3192            "type": "uint32",
3193            "internalType": "uint32"
3194          },
3195          {
3196            "name": "hashOfNonSigners",
3197            "type": "bytes32",
3198            "internalType": "bytes32"
3199          }
3200        ]
3201      }
3202    ],
3203    "anonymous": false
3204  },
3205  {
3206    "type": "error",
3207    "name": "AlreadySet",
3208    "inputs": []
3209  },
3210  {
3211    "type": "error",
3212    "name": "BitmapValueTooLarge",
3213    "inputs": []
3214  },
3215  {
3216    "type": "error",
3217    "name": "BytesArrayLengthTooLong",
3218    "inputs": []
3219  },
3220  {
3221    "type": "error",
3222    "name": "BytesArrayNotOrdered",
3223    "inputs": []
3224  },
3225  {
3226    "type": "error",
3227    "name": "ECAddFailed",
3228    "inputs": []
3229  },
3230  {
3231    "type": "error",
3232    "name": "ECMulFailed",
3233    "inputs": []
3234  },
3235  {
3236    "type": "error",
3237    "name": "ExpModFailed",
3238    "inputs": []
3239  },
3240  {
3241    "type": "error",
3242    "name": "IncorrectSquareResult",
3243    "inputs": [
3244      {
3245        "name": "number",
3246        "type": "uint256",
3247        "internalType": "uint256"
3248      },
3249      {
3250        "name": "submittedResult",
3251        "type": "uint256",
3252        "internalType": "uint256"
3253      },
3254      {
3255        "name": "expectedResult",
3256        "type": "uint256",
3257        "internalType": "uint256"
3258      }
3259    ]
3260  },
3261  {
3262    "type": "error",
3263    "name": "InputArrayLengthMismatch",
3264    "inputs": []
3265  },
3266  {
3267    "type": "error",
3268    "name": "InputEmptyQuorumNumbers",
3269    "inputs": []
3270  },
3271  {
3272    "type": "error",
3273    "name": "InputNonSignerLengthMismatch",
3274    "inputs": []
3275  },
3276  {
3277    "type": "error",
3278    "name": "InvalidBLSPairingKey",
3279    "inputs": []
3280  },
3281  {
3282    "type": "error",
3283    "name": "InvalidBLSSignature",
3284    "inputs": []
3285  },
3286  {
3287    "type": "error",
3288    "name": "InvalidQuorumApkHash",
3289    "inputs": []
3290  },
3291  {
3292    "type": "error",
3293    "name": "InvalidReferenceBlocknumber",
3294    "inputs": []
3295  },
3296  {
3297    "type": "error",
3298    "name": "NoOngoingDeployment",
3299    "inputs": []
3300  },
3301  {
3302    "type": "error",
3303    "name": "NonSignerPubkeysNotSorted",
3304    "inputs": []
3305  },
3306  {
3307    "type": "error",
3308    "name": "OnlyRegistryCoordinatorOwner",
3309    "inputs": []
3310  },
3311  {
3312    "type": "error",
3313    "name": "ScalarTooLarge",
3314    "inputs": []
3315  },
3316  {
3317    "type": "error",
3318    "name": "ZeroAddress",
3319    "inputs": []
3320  },
3321  {
3322    "type": "error",
3323    "name": "ZeroValue",
3324    "inputs": []
3325  }
3326]
3327```*/
3328#[allow(
3329    non_camel_case_types,
3330    non_snake_case,
3331    clippy::pub_underscore_fields,
3332    clippy::style,
3333    clippy::empty_structs_with_brackets
3334)]
3335pub mod SquaringTask {
3336    use super::*;
3337    use alloy::sol_types as alloy_sol_types;
3338    /// The creation / init bytecode of the contract.
3339    ///
3340    /// ```text
3341    ///0x610120604052348015610010575f5ffd5b5060405161329a38038061329a83398101604081905261002f916101d9565b81818180806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ad9190610219565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610102573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101269190610219565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a19190610219565b6001600160a01b031660e052505063ffffffff16610100525061023b915050565b6001600160a01b03811681146101d6575f5ffd5b50565b5f5f604083850312156101ea575f5ffd5b82516101f5816101c2565b602084015190925063ffffffff8116811461020e575f5ffd5b809150509250929050565b5f60208284031215610229575f5ffd5b8151610234816101c2565b9392505050565b60805160a05160c05160e05161010051612ff86102a25f395f818161016a0152611cee01525f61035001525f81816102450152610ae501525f818161026c01528181610c460152610dfb01525f81816102930152818161081201526109620152612ff85ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80636efb4636116100b45780638da5cb5b116100795780638da5cb5b14610314578063bbcee46e14610325578063c0c53b8b14610338578063df5cf7231461034b578063f2fde38b14610372578063f9120af614610385575f5ffd5b80636efb4636146102b5578063715018a6146102d65780637afa1eed146102de5780637e8ef1be146102f15780638b00ce7c14610304575f5ffd5b80634a7c7e4b116100fa5780634a7c7e4b146102185780635919d07e1461022d5780635df459461461024057806368304835146102675780636d14a9871461028e575f5ffd5b8063171f1d5b146101365780631ad4318914610165578063245a7bfc146101a15780632cb223d5146101cc5780632d89f6fc146101f9575b5f5ffd5b6101496101443660046124a4565b610398565b6040805192151583529015156020830152015b60405180910390f35b61018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161015c565b609a546101b4906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b6101eb6101da366004612505565b60996020525f908152604090205481565b60405190815260200161015c565b6101eb610207366004612505565b60986020525f908152604090205481565b61022b61022636600461253b565b61051a565b005b61022b61023b366004612554565b61052e565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6102c86102c336600461288c565b610586565b60405161015c929190612951565b61022b611003565b609b546101b4906001600160a01b031681565b61022b6102ff366004612999565b611016565b60975461018c9063ffffffff1681565b6065546001600160a01b03166101b4565b61022b610333366004612a2c565b611104565b61022b610346366004612554565b611166565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b61022b61038036600461253b565b61127d565b61022b61039336600461253b565b6112f3565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f600281106103db576103db612a81565b60200201518951600160200201518a602001515f600281106103ff576103ff612a81565b60200201518b6020015160016002811061041b5761041b612a81565b602090810291909101518c518d8301516040516104789a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c61049a9190612a95565b905061050c6104b36104ac8884611304565b8690611374565b6104bb6113e8565b6105026104f3856104ed6040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611304565b6104fc8c6114a8565b90611374565b886201d4c0611532565b909890975095505050505050565b610522611746565b61052b816117a0565b50565b603254610100900460ff1661055e5760405162461bcd60e51b815260040161055590612ab4565b60405180910390fd5b610566611847565b61056f8161127d565b61057883611876565b610581826117a0565b505050565b60408051808201909152606080825260208201525f8481036105ba5760405162f8202d60e51b815260040160405180910390fd5b604083015151851480156105d2575060a08301515185145b80156105e2575060c08301515185145b80156105f2575060e08301515185145b61060f576040516343714afd60e01b815260040160405180910390fd5b8251516020840151511461063657604051635f832f4160e01b815260040160405180910390fd5b4363ffffffff168463ffffffff161061066257604051634b874f4560e01b815260040160405180910390fd5b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106a2576106a261235b565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b506020820152866001600160401b038111156106e9576106e961235b565b604051908082528060200260200182016040528015610712578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156107465761074661235b565b60405190808252806020026020018201604052801561076f578160200160208202803683370190505b5081526020860151516001600160401b0381111561078f5761078f61235b565b6040519080825280602002602001820160405280156107b8578160200160208202803683370190505b5081602001819052505f6108868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108819190612aff565b611927565b90505f5b876020015151811015610acc576108ce886020015182815181106108b0576108b0612a81565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106108e4576108e4612a81565b60209081029190910101528015610960576020830151610905600183612b33565b8151811061091557610915612a81565b60200260200101515f1c8360200151828151811061093557610935612a81565b60200260200101515f1c1161096057604051600162239afb60e21b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106109a5576109a5612a81565b60200260200101518b8b5f015185815181106109c3576109c3612a81565b60200260200101516040518463ffffffff1660e01b8152600401610a009392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610a1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190612b46565b6001600160c01b0316835f01518281518110610a5d57610a5d612a81565b602002602001018181525050610ac26104ac610a9684865f01518581518110610a8857610a88612a81565b602002602001015116611964565b8a602001518481518110610aac57610aac612a81565b602002602001015161198e90919063ffffffff16565b945060010161088a565b5050610ad783611a50565b92505f5b88811015610f68577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8b8b84818110610b2457610b24612a81565b9050013560f81c60f81b60f81c8a8a60a001518581518110610b4857610b48612a81565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610ba2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc69190612b6c565b6001600160401b031916610be9886040015183815181106108b0576108b0612a81565b67ffffffffffffffff191614610c125760405163e1310aed60e01b815260040160405180910390fd5b610c4287604001518281518110610c2b57610c2b612a81565b60200260200101518561137490919063ffffffff16565b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568b8b84818110610c8557610c85612a81565b9050013560f81c60f81b60f81c8a8a60c001518581518110610ca957610ca9612a81565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d279190612b94565b83602001518281518110610d3d57610d3d612a81565b6001600160601b03909216602092830291909101820152830151805182908110610d6957610d69612a81565b6020026020010151835f01518281518110610d8657610d86612a81565b6001600160601b03909216602092830291909101909101525f805b886020015151811015610f5e57610df4845f01518281518110610dc657610dc6612a81565b60200260200101518d8d86818110610de057610de0612a81565b600192013560f81c9290921c811614919050565b15610f56577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8d8d86818110610e3a57610e3a612a81565b9050013560f81c60f81b60f81c8c87602001518581518110610e5e57610e5e612a81565b60200260200101518d60e001518881518110610e7c57610e7c612a81565b60200260200101518781518110610e9557610e95612a81565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015610ef7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612b94565b8551805185908110610f2f57610f2f612a81565b60200260200101818151610f439190612bba565b6001600160601b03169052506001909101905b600101610da1565b5050600101610adb565b505f5f610f7f8c868a606001518b60800151610398565b9150915081610fa1576040516367988d3360e01b815260040160405180910390fd5b80610fbf5760405163ab1b236b60e01b815260040160405180910390fd5b50505f878260200151604051602001610fd9929190612bd9565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b61100b611746565b6110145f611ae6565b565b609a546001600160a01b031633146110405760405162461bcd60e51b815260040161055590612c1f565b61104b838383611b37565b5f6110596040850185612c56565b8101906110669190612c98565b90505f6110766020850185612c56565b8101906110839190612c98565b90505f6110908380612caf565b90508082146110c357604051630cf92dd560e01b8152600481018490526024810183905260448101829052606401610555565b60408051848152602081018490527fa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5910160405180910390a1505050505050565b609b546001600160a01b0316331461112e5760405162461bcd60e51b815260040161055590612cc6565b5f8460405160200161114291815260200190565b604051602081830303815290604052905061115f81858585611f60565b5050505050565b603254610100900460ff16158080156111865750603254600160ff909116105b806111a05750303b1580156111a0575060325460ff166001145b6112035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610555565b6032805460ff191660011790558015611226576032805461ff0019166101001790555b61123184848461052e565b8015611277576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b611285611746565b6001600160a01b0381166112ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610555565b61052b81611ae6565b6112fb611746565b61052b81611876565b604080518082019091525f808252602082015261131f612281565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061134d57fe5b508061136c57604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261138f61229f565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806113c957fe5b508061136c5760405163d4b68fd760e01b815260040160405180910390fd5b6113f06122bd565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806114d55f516020612fa35f395f51905f5286612a95565b90505b6114e1816120a1565b90935091505f516020612fa35f395f51905f528283098303611519576040805180820190915290815260208101919091529392505050565b5f516020612fa35f395f51905f526001820890506114d8565b6040805180820182528681526020808201869052825180840190935286835282018490525f918291906115636122e2565b5f5b600281101561171a575f61157a826006612caf565b905084826002811061158e5761158e612a81565b6020020151518361159f835f612d07565b600c81106115af576115af612a81565b60200201528482600281106115c6576115c6612a81565b602002015160200151838260016115dd9190612d07565b600c81106115ed576115ed612a81565b602002015283826002811061160457611604612a81565b6020020151515183611617836002612d07565b600c811061162757611627612a81565b602002015283826002811061163e5761163e612a81565b6020020151516001602002015183611657836003612d07565b600c811061166757611667612a81565b602002015283826002811061167e5761167e612a81565b6020020151602001515f6002811061169857611698612a81565b6020020151836116a9836004612d07565b600c81106116b9576116b9612a81565b60200201528382600281106116d0576116d0612a81565b6020020151602001516001600281106116eb576116eb612a81565b6020020151836116fc836005612d07565b600c811061170c5761170c612a81565b602002015250600101611565565b50611723612301565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6065546001600160a01b031633146110145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6001600160a01b0381166117f65760405162461bcd60e51b815260206004820181905260248201527f47656e657261746f722063616e6e6f74206265207a65726f20616464726573736044820152606401610555565b609b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b905f90a35050565b603254610100900460ff1661186e5760405162461bcd60e51b815260040161055590612ab4565b61101461211d565b6001600160a01b0381166118d65760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610555565b609a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2905f90a35050565b5f5f6119328461214d565b9050808360ff166001901b1161195b5760405163ca95733360e01b815260040160405180910390fd5b90505b92915050565b5f805b821561195e57611978600184612b33565b909216918061198681612d1a565b915050611967565b604080518082019091525f80825260208201526102008261ffff16106119ca576040516001623b158360e11b0319815260040160405180910390fd5b8161ffff166001036119dd57508161195e565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff1610611a4557600161ffff871660ff83161c81169003611a2857611a258484611374565b93505b611a328384611374565b92506201fffe600192831b1691016119f8565b509195945050505050565b604080518082019091525f80825260208201528151158015611a7457506020820151155b15611a91575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f516020612fa35f395f51905f528460200151611ac29190612a95565b611ad9905f516020612fa35f395f51905f52612b33565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b609a546001600160a01b03163314611b615760405162461bcd60e51b815260040161055590612c1f565b5f611b6f6020850185612505565b9050365f611b806060870187612c56565b90925090505f611b966040880160208901612505565b905060985f611ba86020890189612505565b63ffffffff1663ffffffff1681526020019081526020015f205487604051602001611bd39190612da3565b6040516020818303038152906040528051906020012014611c5c5760405162461bcd60e51b815260206004820152603d60248201527f537570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610555565b5f609981611c6d60208a018a612505565b63ffffffff1663ffffffff1681526020019081526020015f205414611ce95760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610555565b611d137f000000000000000000000000000000000000000000000000000000000000000085612e26565b63ffffffff164363ffffffff161115611d785760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722068617320726573706f6e64656420746f6f206c61746044820152606560f81b6064820152608401610555565b5f86604051602001611d8a9190612e7f565b6040516020818303038152906040528051906020012090505f5f611db18387878a8c610586565b90925090505f5b85811015611ea5578460ff1683602001518281518110611dda57611dda612a81565b6020026020010151611dec9190612e91565b6001600160601b03166064845f01518381518110611e0c57611e0c612a81565b60200260200101516001600160601b0316611e279190612caf565b1015611e9d576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610555565b600101611db8565b5060408051808201825263ffffffff43168152602080820184905291519091611ed2918c91849101612eba565b6040516020818303038152906040528051906020012060995f8c5f016020810190611efd9190612505565b63ffffffff1663ffffffff1681526020019081526020015f20819055507f9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f8a82604051611f4b929190612eba565b60405180910390a15050505050505050505050565b609b546001600160a01b03163314611f8a5760405162461bcd60e51b815260040161055590612cc6565b6040805160808101825260608082015280820186905263ffffffff438116825285166020808301919091528251601f850182900482028101820190935283835290919084908490819084018382808284375f920191909152505050506060820152604051611ffc908290602001612f2f565b60408051601f1981840301815282825280516020918201206097805463ffffffff9081165f908152609890945293909220555416907fba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf09061205e908490612f2f565b60405180910390a26097805463ffffffff16905f61207b83612f87565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b5f80805f516020612fa35f395f51905f5260035f516020612fa35f395f51905f52865f516020612fa35f395f51905f52888909090890505f612111827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f516020612fa35f395f51905f52612208565b91959194509092505050565b603254610100900460ff166121445760405162461bcd60e51b815260040161055590612ab4565b61101433611ae6565b5f6101008251111561217257604051637da54e4760e11b815260040160405180910390fd5b81515f0361218157505f919050565b5f5f835f8151811061219557612195612a81565b0160200151600160f89190911c81901b92505b84518110156121ff578481815181106121c3576121c3612a81565b0160200151600160f89190911c1b91508282116121f357604051631019106960e31b815260040160405180910390fd5b918117916001016121a8565b50909392505050565b5f5f612212612301565b61221a61231f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061225757fe5b50826122765760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806122d061233d565b81526020016122dd61233d565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156123915761239161235b565b60405290565b60405161010081016001600160401b03811182821017156123915761239161235b565b604051601f8201601f191681016001600160401b03811182821017156123e2576123e261235b565b604052919050565b5f604082840312156123fa575f5ffd5b61240261236f565b823581526020928301359281019290925250919050565b5f82601f830112612428575f5ffd5b61243061236f565b806040840185811115612441575f5ffd5b845b8181101561245b578035845260209384019301612443565b509095945050505050565b5f60808284031215612476575f5ffd5b61247e61236f565b905061248a8383612419565b81526124998360408401612419565b602082015292915050565b5f5f5f5f61012085870312156124b8575f5ffd5b843593506124c986602087016123ea565b92506124d88660608701612466565b91506124e78660e087016123ea565b905092959194509250565b803563ffffffff81168114611ae1575f5ffd5b5f60208284031215612515575f5ffd5b61251e826124f2565b9392505050565b80356001600160a01b0381168114611ae1575f5ffd5b5f6020828403121561254b575f5ffd5b61251e82612525565b5f5f5f60608486031215612566575f5ffd5b61256f84612525565b925061257d60208501612525565b915061258b60408501612525565b90509250925092565b5f5f83601f8401126125a4575f5ffd5b5081356001600160401b038111156125ba575f5ffd5b6020830191508360208285010111156125d1575f5ffd5b9250929050565b5f6001600160401b038211156125f0576125f061235b565b5060051b60200190565b5f82601f830112612609575f5ffd5b813561261c612617826125d8565b6123ba565b8082825260208201915060208360051b86010192508583111561263d575f5ffd5b602085015b8381101561266157612653816124f2565b835260209283019201612642565b5095945050505050565b5f82601f83011261267a575f5ffd5b8135612688612617826125d8565b8082825260208201915060208360061b8601019250858311156126a9575f5ffd5b602085015b83811015612661576126c087826123ea565b83526020909201916040016126ae565b5f82601f8301126126df575f5ffd5b81356126ed612617826125d8565b8082825260208201915060208360051b86010192508583111561270e575f5ffd5b602085015b838110156126615780356001600160401b03811115612730575f5ffd5b61273f886020838a01016125fa565b84525060209283019201612713565b5f610180828403121561275f575f5ffd5b612767612397565b905081356001600160401b0381111561277e575f5ffd5b61278a848285016125fa565b82525060208201356001600160401b038111156127a5575f5ffd5b6127b18482850161266b565b60208301525060408201356001600160401b038111156127cf575f5ffd5b6127db8482850161266b565b6040830152506127ee8360608401612466565b60608201526128008360e084016123ea565b60808201526101208201356001600160401b0381111561281e575f5ffd5b61282a848285016125fa565b60a0830152506101408201356001600160401b03811115612849575f5ffd5b612855848285016125fa565b60c0830152506101608201356001600160401b03811115612874575f5ffd5b612880848285016126d0565b60e08301525092915050565b5f5f5f5f5f608086880312156128a0575f5ffd5b8535945060208601356001600160401b038111156128bc575f5ffd5b6128c888828901612594565b90955093506128db9050604087016124f2565b915060608601356001600160401b038111156128f5575f5ffd5b6129018882890161274e565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156129475781516001600160601b0316865260209586019590910190600101612920565b5093949350505050565b604081525f835160408084015261296b608084018261290e565b90506020850151603f19848303016060850152612988828261290e565b925050508260208301529392505050565b5f5f5f606084860312156129ab575f5ffd5b83356001600160401b038111156129c0575f5ffd5b8401608081870312156129d1575f5ffd5b925060208401356001600160401b038111156129eb575f5ffd5b8401604081870312156129fc575f5ffd5b915060408401356001600160401b03811115612a16575f5ffd5b612a228682870161274e565b9150509250925092565b5f5f5f5f60608587031215612a3f575f5ffd5b84359350612a4f602086016124f2565b925060408501356001600160401b03811115612a69575f5ffd5b612a7587828801612594565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b5f82612aaf57634e487b7160e01b5f52601260045260245ffd5b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b0f575f5ffd5b815160ff8116811461195b575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561195e5761195e612b1f565b5f60208284031215612b56575f5ffd5b81516001600160c01b038116811461195b575f5ffd5b5f60208284031215612b7c575f5ffd5b815167ffffffffffffffff198116811461195b575f5ffd5b5f60208284031215612ba4575f5ffd5b81516001600160601b038116811461195b575f5ffd5b6001600160601b03828116828216039081111561195e5761195e612b1f565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b82811015612c13578151845260209384019390910190600101612bf5565b50919695505050505050565b6020808252601d908201527f41676772656761746f72206d757374206265207468652063616c6c6572000000604082015260600190565b5f5f8335601e19843603018112612c6b575f5ffd5b8301803591506001600160401b03821115612c84575f5ffd5b6020019150368190038213156125d1575f5ffd5b5f60208284031215612ca8575f5ffd5b5035919050565b808202811582820484141761195e5761195e612b1f565b60208082526021908201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656040820152603960f91b606082015260800190565b8082018082111561195e5761195e612b1f565b5f61ffff821661ffff8103612d3157612d31612b1f565b60010192915050565b5f5f8335601e19843603018112612d4f575f5ffd5b83016020810192503590506001600160401b03811115612d6d575f5ffd5b8036038213156125d1575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6020815263ffffffff612db5836124f2565b16602082015263ffffffff612dcc602084016124f2565b1660408201525f612de06040840184612d3a565b60806060850152612df560a085018284612d7b565b915050612e056060850185612d3a565b848303601f19016080860152612e1c838284612d7b565b9695505050505050565b63ffffffff818116838216019081111561195e5761195e612b1f565b63ffffffff612e50826124f2565b1682525f612e616020830183612d3a565b60406020860152612e76604086018284612d7b565b95945050505050565b602081525f61251e6020830184612e42565b6001600160601b038181168382160290811690818114612eb357612eb3612b1f565b5092915050565b606081525f612ecc6060830185612e42565b905063ffffffff8351166020830152602083015160408301529392505050565b5f81518084525f5b81811015612f1057602081850181015186830182015201612ef4565b505f602082860101526020601f19601f83011685010191505092915050565b6020815263ffffffff825116602082015263ffffffff60208301511660408201525f604083015160806060840152612f6a60a0840182612eec565b90506060840151601f19848303016080850152612e768282612eec565b5f63ffffffff821663ffffffff8103612d3157612d31612b1f56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212205c49061f135f2b3fdecce616d9acc09e5360a01c19e83eb97a221ab51cf69fc364736f6c634300081b0033
3342    /// ```
3343    #[rustfmt::skip]
3344    #[allow(clippy::all)]
3345    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3346        b"a\x01 `@R4\x80\x15a\0\x10W__\xFD[P`@Qa2\x9A8\x03\x80a2\x9A\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xD9V[\x81\x81\x81\x80\x80`\x01`\x01`\xA0\x1B\x03\x16`\x80\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x89W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xAD\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x02W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01&\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xC0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\xA0Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01}W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA1\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPPc\xFF\xFF\xFF\xFF\x16a\x01\0RPa\x02;\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xD6W__\xFD[PV[__`@\x83\x85\x03\x12\x15a\x01\xEAW__\xFD[\x82Qa\x01\xF5\x81a\x01\xC2V[` \x84\x01Q\x90\x92Pc\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x0EW__\xFD[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x02)W__\xFD[\x81Qa\x024\x81a\x01\xC2V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa/\xF8a\x02\xA2_9_\x81\x81a\x01j\x01Ra\x1C\xEE\x01R_a\x03P\x01R_\x81\x81a\x02E\x01Ra\n\xE5\x01R_\x81\x81a\x02l\x01R\x81\x81a\x0CF\x01Ra\r\xFB\x01R_\x81\x81a\x02\x93\x01R\x81\x81a\x08\x12\x01Ra\tb\x01Ra/\xF8_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x012W_5`\xE0\x1C\x80cn\xFBF6\x11a\0\xB4W\x80c\x8D\xA5\xCB[\x11a\0yW\x80c\x8D\xA5\xCB[\x14a\x03\x14W\x80c\xBB\xCE\xE4n\x14a\x03%W\x80c\xC0\xC5;\x8B\x14a\x038W\x80c\xDF\\\xF7#\x14a\x03KW\x80c\xF2\xFD\xE3\x8B\x14a\x03rW\x80c\xF9\x12\n\xF6\x14a\x03\x85W__\xFD[\x80cn\xFBF6\x14a\x02\xB5W\x80cqP\x18\xA6\x14a\x02\xD6W\x80cz\xFA\x1E\xED\x14a\x02\xDEW\x80c~\x8E\xF1\xBE\x14a\x02\xF1W\x80c\x8B\0\xCE|\x14a\x03\x04W__\xFD[\x80cJ|~K\x11a\0\xFAW\x80cJ|~K\x14a\x02\x18W\x80cY\x19\xD0~\x14a\x02-W\x80c]\xF4YF\x14a\x02@W\x80ch0H5\x14a\x02gW\x80cm\x14\xA9\x87\x14a\x02\x8EW__\xFD[\x80c\x17\x1F\x1D[\x14a\x016W\x80c\x1A\xD41\x89\x14a\x01eW\x80c$Z{\xFC\x14a\x01\xA1W\x80c,\xB2#\xD5\x14a\x01\xCCW\x80c-\x89\xF6\xFC\x14a\x01\xF9W[__\xFD[a\x01Ia\x01D6`\x04a$\xA4V[a\x03\x98V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x8C\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\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\\V[`\x9ATa\x01\xB4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\\V[a\x01\xEBa\x01\xDA6`\x04a%\x05V[`\x99` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\x01\\V[a\x01\xEBa\x02\x076`\x04a%\x05V[`\x98` R_\x90\x81R`@\x90 T\x81V[a\x02+a\x02&6`\x04a%;V[a\x05\x1AV[\0[a\x02+a\x02;6`\x04a%TV[a\x05.V[a\x01\xB4\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\x81V[a\x01\xB4\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\x81V[a\x01\xB4\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\x81V[a\x02\xC8a\x02\xC36`\x04a(\x8CV[a\x05\x86V[`@Qa\x01\\\x92\x91\x90a)QV[a\x02+a\x10\x03V[`\x9BTa\x01\xB4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02+a\x02\xFF6`\x04a)\x99V[a\x10\x16V[`\x97Ta\x01\x8C\x90c\xFF\xFF\xFF\xFF\x16\x81V[`eT`\x01`\x01`\xA0\x1B\x03\x16a\x01\xB4V[a\x02+a\x0336`\x04a*,V[a\x11\x04V[a\x02+a\x03F6`\x04a%TV[a\x11fV[a\x01\xB4\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\x81V[a\x02+a\x03\x806`\x04a%;V[a\x12}V[a\x02+a\x03\x936`\x04a%;V[a\x12\xF3V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03\xDBWa\x03\xDBa*\x81V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03\xFFWa\x03\xFFa*\x81V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x04\x1BWa\x04\x1Ba*\x81V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x04x\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x04\x9A\x91\x90a*\x95V[\x90Pa\x05\x0Ca\x04\xB3a\x04\xAC\x88\x84a\x13\x04V[\x86\x90a\x13tV[a\x04\xBBa\x13\xE8V[a\x05\x02a\x04\xF3\x85a\x04\xED`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\x04V[a\x04\xFC\x8Ca\x14\xA8V[\x90a\x13tV[\x88b\x01\xD4\xC0a\x152V[\x90\x98\x90\x97P\x95PPPPPPV[a\x05\"a\x17FV[a\x05+\x81a\x17\xA0V[PV[`2Ta\x01\0\x90\x04`\xFF\x16a\x05^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[`@Q\x80\x91\x03\x90\xFD[a\x05fa\x18GV[a\x05o\x81a\x12}V[a\x05x\x83a\x18vV[a\x05\x81\x82a\x17\xA0V[PPPV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x05\xBAW`@Qb\xF8 -`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x83\x01QQ\x85\x14\x80\x15a\x05\xD2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05\xE2WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05\xF2WP`\xE0\x83\x01QQ\x85\x14[a\x06\x0FW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82QQ` \x84\x01QQ\x14a\x066W`@Qc_\x83/A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06bW`@QcK\x87OE`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xA2Wa\x06\xA2a#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xE9Wa\x06\xE9a#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07FWa\x07Fa#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07oW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x8FWa\x07\x8Fa#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xB8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x08\x86\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\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\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08]W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x81\x91\x90a*\xFFV[a\x19'V[\x90P_[\x87` \x01QQ\x81\x10\x15a\n\xCCWa\x08\xCE\x88` \x01Q\x82\x81Q\x81\x10a\x08\xB0Wa\x08\xB0a*\x81V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x08\xE4Wa\x08\xE4a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t`W` \x83\x01Qa\t\x05`\x01\x83a+3V[\x81Q\x81\x10a\t\x15Wa\t\x15a*\x81V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t5Wa\t5a*\x81V[` \x02` \x01\x01Q_\x1C\x11a\t`W`@Q`\x01b#\x9A\xFB`\xE2\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\t\xA5Wa\t\xA5a*\x81V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\t\xC3Wa\t\xC3a*\x81V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\0\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n?\x91\x90a+FV[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\n]Wa\n]a*\x81V[` \x02` \x01\x01\x81\x81RPPa\n\xC2a\x04\xACa\n\x96\x84\x86_\x01Q\x85\x81Q\x81\x10a\n\x88Wa\n\x88a*\x81V[` \x02` \x01\x01Q\x16a\x19dV[\x8A` \x01Q\x84\x81Q\x81\x10a\n\xACWa\n\xACa*\x81V[` \x02` \x01\x01Qa\x19\x8E\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x08\x8AV[PPa\n\xD7\x83a\x1APV[\x92P_[\x88\x81\x10\x15a\x0FhW\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\x16ch\xBC\xCA\xAC\x8B\x8B\x84\x81\x81\x10a\x0B$Wa\x0B$a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8A\x8A`\xA0\x01Q\x85\x81Q\x81\x10a\x0BHWa\x0BHa*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC6\x91\x90a+lV[`\x01`\x01`@\x1B\x03\x19\x16a\x0B\xE9\x88`@\x01Q\x83\x81Q\x81\x10a\x08\xB0Wa\x08\xB0a*\x81V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0C\x12W`@Qc\xE11\n\xED`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0CB\x87`@\x01Q\x82\x81Q\x81\x10a\x0C+Wa\x0C+a*\x81V[` \x02` \x01\x01Q\x85a\x13t\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x93P\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\x16c\xC8)LV\x8B\x8B\x84\x81\x81\x10a\x0C\x85Wa\x0C\x85a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8A\x8A`\xC0\x01Q\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a+\x94V[\x83` \x01Q\x82\x81Q\x81\x10a\r=Wa\r=a*\x81V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x83\x01Q\x80Q\x82\x90\x81\x10a\riWa\ria*\x81V[` \x02` \x01\x01Q\x83_\x01Q\x82\x81Q\x81\x10a\r\x86Wa\r\x86a*\x81V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x88` \x01QQ\x81\x10\x15a\x0F^Wa\r\xF4\x84_\x01Q\x82\x81Q\x81\x10a\r\xC6Wa\r\xC6a*\x81V[` \x02` \x01\x01Q\x8D\x8D\x86\x81\x81\x10a\r\xE0Wa\r\xE0a*\x81V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x0FVW\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\x16c\xF2\xBE\x94\xAE\x8D\x8D\x86\x81\x81\x10a\x0E:Wa\x0E:a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x87` \x01Q\x85\x81Q\x81\x10a\x0E^Wa\x0E^a*\x81V[` \x02` \x01\x01Q\x8D`\xE0\x01Q\x88\x81Q\x81\x10a\x0E|Wa\x0E|a*\x81V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x0E\x95Wa\x0E\x95a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x1B\x91\x90a+\x94V[\x85Q\x80Q\x85\x90\x81\x10a\x0F/Wa\x0F/a*\x81V[` \x02` \x01\x01\x81\x81Qa\x0FC\x91\x90a+\xBAV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\r\xA1V[PP`\x01\x01a\n\xDBV[P__a\x0F\x7F\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x98V[\x91P\x91P\x81a\x0F\xA1W`@Qcg\x98\x8D3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\x0F\xBFW`@Qc\xAB\x1B#k`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP_\x87\x82` \x01Q`@Q` \x01a\x0F\xD9\x92\x91\x90a+\xD9V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x10\x0Ba\x17FV[a\x10\x14_a\x1A\xE6V[V[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\x1FV[a\x10K\x83\x83\x83a\x1B7V[_a\x10Y`@\x85\x01\x85a,VV[\x81\x01\x90a\x10f\x91\x90a,\x98V[\x90P_a\x10v` \x85\x01\x85a,VV[\x81\x01\x90a\x10\x83\x91\x90a,\x98V[\x90P_a\x10\x90\x83\x80a,\xAFV[\x90P\x80\x82\x14a\x10\xC3W`@Qc\x0C\xF9-\xD5`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x83\x90R`D\x81\x01\x82\x90R`d\x01a\x05UV[`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\xA7\xA7\x07\xDD\x7FL\xA0\x0F\xE1\xAF\xCD4\xDF~\xBBlG\xF28\x80\xC3M%L\xC3\x12\xE5\xC4\x1E9t\xC5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\xC6V[_\x84`@Q` \x01a\x11B\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x11_\x81\x85\x85\x85a\x1F`V[PPPPPV[`2Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x11\x86WP`2T`\x01`\xFF\x90\x91\x16\x10[\x80a\x11\xA0WP0;\x15\x80\x15a\x11\xA0WP`2T`\xFF\x16`\x01\x14[a\x12\x03W`@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\x01a\x05UV[`2\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12&W`2\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x121\x84\x84\x84a\x05.V[\x80\x15a\x12wW`2\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[a\x12\x85a\x17FV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xEAW`@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\x01a\x05UV[a\x05+\x81a\x1A\xE6V[a\x12\xFBa\x17FV[a\x05+\x81a\x18vV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13\x1Fa\"\x81V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13MW\xFE[P\x80a\x13lW`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13\x8Fa\"\x9FV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xC9W\xFE[P\x80a\x13lW`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xF0a\"\xBDV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\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\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a\x14\xD5_Q` a/\xA3_9_Q\x90_R\x86a*\x95V[\x90P[a\x14\xE1\x81a \xA1V[\x90\x93P\x91P_Q` a/\xA3_9_Q\x90_R\x82\x83\t\x83\x03a\x15\x19W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a/\xA3_9_Q\x90_R`\x01\x82\x08\x90Pa\x14\xD8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x15ca\"\xE2V[_[`\x02\x81\x10\x15a\x17\x1AW_a\x15z\x82`\x06a,\xAFV[\x90P\x84\x82`\x02\x81\x10a\x15\x8EWa\x15\x8Ea*\x81V[` \x02\x01QQ\x83a\x15\x9F\x83_a-\x07V[`\x0C\x81\x10a\x15\xAFWa\x15\xAFa*\x81V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\xC6Wa\x15\xC6a*\x81V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xDD\x91\x90a-\x07V[`\x0C\x81\x10a\x15\xEDWa\x15\xEDa*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x04Wa\x16\x04a*\x81V[` \x02\x01QQQ\x83a\x16\x17\x83`\x02a-\x07V[`\x0C\x81\x10a\x16'Wa\x16'a*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16>Wa\x16>a*\x81V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16W\x83`\x03a-\x07V[`\x0C\x81\x10a\x16gWa\x16ga*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16~Wa\x16~a*\x81V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x98Wa\x16\x98a*\x81V[` \x02\x01Q\x83a\x16\xA9\x83`\x04a-\x07V[`\x0C\x81\x10a\x16\xB9Wa\x16\xB9a*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xD0Wa\x16\xD0a*\x81V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xEBWa\x16\xEBa*\x81V[` \x02\x01Q\x83a\x16\xFC\x83`\x05a-\x07V[`\x0C\x81\x10a\x17\x0CWa\x17\x0Ca*\x81V[` \x02\x01RP`\x01\x01a\x15eV[Pa\x17#a#\x01V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x05UV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x17\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FGenerator cannot be zero address`D\x82\x01R`d\x01a\x05UV[`\x9B\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\r\xDF\xAB\x8Ac]q\xF1]r\xE2\xD2\xDF\xF5]2\x11\x9D\x13'\r.\xA4\xC3\xDC\0C\xB6l,Gk\x90_\x90\xA3PPV[`2Ta\x01\0\x90\x04`\xFF\x16a\x18nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[a\x10\x14a!\x1DV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x18\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator cannot be zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x05UV[`\x9A\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x89\xBA\xAB\xEF}\xFD\x06\x83\xC0\xAC\x16\xFD*\x841\xC5\x1BI\xFB\xE6T\xC3\xF7\xB5\xEF\x19v>,\xCD\x88\xF2\x90_\x90\xA3PPV[__a\x192\x84a!MV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19[W`@Qc\xCA\x95s3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90P[\x92\x91PPV[_\x80[\x82\x15a\x19^Wa\x19x`\x01\x84a+3V[\x90\x92\x16\x91\x80a\x19\x86\x81a-\x1AV[\x91PPa\x19gV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\xCAW`@Q`\x01b;\x15\x83`\xE1\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\xFF\xFF\x16`\x01\x03a\x19\xDDWP\x81a\x19^V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1AEW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a\x1A(Wa\x1A%\x84\x84a\x13tV[\x93P[a\x1A2\x83\x84a\x13tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x19\xF8V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1AtWP` \x82\x01Q\x15[\x15a\x1A\x91WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a/\xA3_9_Q\x90_R\x84` \x01Qa\x1A\xC2\x91\x90a*\x95V[a\x1A\xD9\x90_Q` a/\xA3_9_Q\x90_Ra+3V[\x90R\x92\x91PPV[\x91\x90PV[`e\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPV[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1BaW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\x1FV[_a\x1Bo` \x85\x01\x85a%\x05V[\x90P6_a\x1B\x80``\x87\x01\x87a,VV[\x90\x92P\x90P_a\x1B\x96`@\x88\x01` \x89\x01a%\x05V[\x90P`\x98_a\x1B\xA8` \x89\x01\x89a%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x87`@Q` \x01a\x1B\xD3\x91\x90a-\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x14a\x1C\\W`@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\x01a\x05UV[_`\x99\x81a\x1Cm` \x8A\x01\x8Aa%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x14a\x1C\xE9W`@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\x01a\x05UV[a\x1D\x13\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\x85a.&V[c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1DxW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator has responded too lat`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x01a\x05UV[_\x86`@Q` \x01a\x1D\x8A\x91\x90a.\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P__a\x1D\xB1\x83\x87\x87\x8A\x8Ca\x05\x86V[\x90\x92P\x90P_[\x85\x81\x10\x15a\x1E\xA5W\x84`\xFF\x16\x83` \x01Q\x82\x81Q\x81\x10a\x1D\xDAWa\x1D\xDAa*\x81V[` \x02` \x01\x01Qa\x1D\xEC\x91\x90a.\x91V[`\x01`\x01``\x1B\x03\x16`d\x84_\x01Q\x83\x81Q\x81\x10a\x1E\x0CWa\x1E\x0Ca*\x81V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16a\x1E'\x91\x90a,\xAFV[\x10\x15a\x1E\x9DW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R`\x84\x01a\x05UV[`\x01\x01a\x1D\xB8V[P`@\x80Q\x80\x82\x01\x82Rc\xFF\xFF\xFF\xFFC\x16\x81R` \x80\x82\x01\x84\x90R\x91Q\x90\x91a\x1E\xD2\x91\x8C\x91\x84\x91\x01a.\xBAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\x99_\x8C_\x01` \x81\x01\x90a\x1E\xFD\x91\x90a%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UP\x7F\x9B\x96\xC9\x81\xC7\xC7\n\x9F\x17\x02\xAB\xB0Dx'F\xC1\x1D\t\x0FX\xEA4\xB1-\xAF,\xC5<\xF8\xAB_\x8A\x82`@Qa\x1FK\x92\x91\x90a.\xBAV[`@Q\x80\x91\x03\x90\xA1PPPPPPPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1F\x8AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\xC6V[`@\x80Q`\x80\x81\x01\x82R``\x80\x82\x01R\x80\x82\x01\x86\x90Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x85\x16` \x80\x83\x01\x91\x90\x91R\x82Q`\x1F\x85\x01\x82\x90\x04\x82\x02\x81\x01\x82\x01\x90\x93R\x83\x83R\x90\x91\x90\x84\x90\x84\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847_\x92\x01\x91\x90\x91RPPPP``\x82\x01R`@Qa\x1F\xFC\x90\x82\x90` \x01a//V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x97\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x98\x90\x94R\x93\x90\x92 UT\x16\x90\x7F\xBA7\x83+\xDD!t+\x86\xA63\x04;\x92:\x9A\xA9x\xF1\xCF\xB2\xB2t\xC6f\x1E\xB5s\xCF\t+\xF0\x90a ^\x90\x84\x90a//V[`@Q\x80\x91\x03\x90\xA2`\x97\x80Tc\xFF\xFF\xFF\xFF\x16\x90_a {\x83a/\x87V[\x91\x90a\x01\0\n\x81T\x81c\xFF\xFF\xFF\xFF\x02\x19\x16\x90\x83c\xFF\xFF\xFF\xFF\x16\x02\x17\x90UPPPPPPPV[_\x80\x80_Q` a/\xA3_9_Q\x90_R`\x03_Q` a/\xA3_9_Q\x90_R\x86_Q` a/\xA3_9_Q\x90_R\x88\x89\t\t\x08\x90P_a!\x11\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a/\xA3_9_Q\x90_Ra\"\x08V[\x91\x95\x91\x94P\x90\x92PPPV[`2Ta\x01\0\x90\x04`\xFF\x16a!DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[a\x10\x143a\x1A\xE6V[_a\x01\0\x82Q\x11\x15a!rW`@Qc}\xA5NG`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q_\x03a!\x81WP_\x91\x90PV[__\x83_\x81Q\x81\x10a!\x95Wa!\x95a*\x81V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a!\xFFW\x84\x81\x81Q\x81\x10a!\xC3Wa!\xC3a*\x81V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a!\xF3W`@Qc\x10\x19\x10i`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x91\x81\x17\x91`\x01\x01a!\xA8V[P\x90\x93\x92PPPV[__a\"\x12a#\x01V[a\"\x1Aa#\x1FV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80a\"WW\xFE[P\x82a\"vW`@Qc\xD5\x1E\xDA\xE3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\"\xD0a#=V[\x81R` \x01a\"\xDDa#=V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x91Wa#\x91a#[V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x91Wa#\x91a#[V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xE2Wa#\xE2a#[V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\xFAW__\xFD[a$\x02a#oV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a$(W__\xFD[a$0a#oV[\x80`@\x84\x01\x85\x81\x11\x15a$AW__\xFD[\x84[\x81\x81\x10\x15a$[W\x805\x84R` \x93\x84\x01\x93\x01a$CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a$vW__\xFD[a$~a#oV[\x90Pa$\x8A\x83\x83a$\x19V[\x81Ra$\x99\x83`@\x84\x01a$\x19V[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a$\xB8W__\xFD[\x845\x93Pa$\xC9\x86` \x87\x01a#\xEAV[\x92Pa$\xD8\x86``\x87\x01a$fV[\x91Pa$\xE7\x86`\xE0\x87\x01a#\xEAV[\x90P\x92\x95\x91\x94P\x92PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xE1W__\xFD[_` \x82\x84\x03\x12\x15a%\x15W__\xFD[a%\x1E\x82a$\xF2V[\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1A\xE1W__\xFD[_` \x82\x84\x03\x12\x15a%KW__\xFD[a%\x1E\x82a%%V[___``\x84\x86\x03\x12\x15a%fW__\xFD[a%o\x84a%%V[\x92Pa%}` \x85\x01a%%V[\x91Pa%\x8B`@\x85\x01a%%V[\x90P\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a%\xA4W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a%\xBAW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a%\xD1W__\xFD[\x92P\x92\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a%\xF0Wa%\xF0a#[V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a&\tW__\xFD[\x815a&\x1Ca&\x17\x82a%\xD8V[a#\xBAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a&=W__\xFD[` \x85\x01[\x83\x81\x10\x15a&aWa&S\x81a$\xF2V[\x83R` \x92\x83\x01\x92\x01a&BV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a&zW__\xFD[\x815a&\x88a&\x17\x82a%\xD8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a&\xA9W__\xFD[` \x85\x01[\x83\x81\x10\x15a&aWa&\xC0\x87\x82a#\xEAV[\x83R` \x90\x92\x01\x91`@\x01a&\xAEV[_\x82`\x1F\x83\x01\x12a&\xDFW__\xFD[\x815a&\xEDa&\x17\x82a%\xD8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a'\x0EW__\xFD[` \x85\x01[\x83\x81\x10\x15a&aW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'0W__\xFD[a'?\x88` \x83\x8A\x01\x01a%\xFAV[\x84RP` \x92\x83\x01\x92\x01a'\x13V[_a\x01\x80\x82\x84\x03\x12\x15a'_W__\xFD[a'ga#\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'~W__\xFD[a'\x8A\x84\x82\x85\x01a%\xFAV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xA5W__\xFD[a'\xB1\x84\x82\x85\x01a&kV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xCFW__\xFD[a'\xDB\x84\x82\x85\x01a&kV[`@\x83\x01RPa'\xEE\x83``\x84\x01a$fV[``\x82\x01Ra(\0\x83`\xE0\x84\x01a#\xEAV[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x1EW__\xFD[a(*\x84\x82\x85\x01a%\xFAV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(IW__\xFD[a(U\x84\x82\x85\x01a%\xFAV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(tW__\xFD[a(\x80\x84\x82\x85\x01a&\xD0V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a(\xA0W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xBCW__\xFD[a(\xC8\x88\x82\x89\x01a%\x94V[\x90\x95P\x93Pa(\xDB\x90P`@\x87\x01a$\xF2V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF5W__\xFD[a)\x01\x88\x82\x89\x01a'NV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a)GW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a) V[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra)k`\x80\x84\x01\x82a)\x0EV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra)\x88\x82\x82a)\x0EV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[___``\x84\x86\x03\x12\x15a)\xABW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xC0W__\xFD[\x84\x01`\x80\x81\x87\x03\x12\x15a)\xD1W__\xFD[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xEBW__\xFD[\x84\x01`@\x81\x87\x03\x12\x15a)\xFCW__\xFD[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x16W__\xFD[a*\"\x86\x82\x87\x01a'NV[\x91PP\x92P\x92P\x92V[____``\x85\x87\x03\x12\x15a*?W__\xFD[\x845\x93Pa*O` \x86\x01a$\xF2V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*iW__\xFD[a*u\x87\x82\x88\x01a%\x94V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a*\xAFWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a+\x0FW__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19[W__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x19^Wa\x19^a+\x1FV[_` \x82\x84\x03\x12\x15a+VW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19[W__\xFD[_` \x82\x84\x03\x12\x15a+|W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19[W__\xFD[_` \x82\x84\x03\x12\x15a+\xA4W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19[W__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19^Wa\x19^a+\x1FV[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a,\x13W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a+\xF5V[P\x91\x96\x95PPPPPPV[` \x80\x82R`\x1D\x90\x82\x01R\x7FAggregator must be the caller\0\0\0`@\x82\x01R``\x01\x90V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a,kW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a,\x84W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a%\xD1W__\xFD[_` \x82\x84\x03\x12\x15a,\xA8W__\xFD[P5\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x19^Wa\x19^a+\x1FV[` \x80\x82R`!\x90\x82\x01R\x7FTask generator must be the calle`@\x82\x01R`9`\xF9\x1B``\x82\x01R`\x80\x01\x90V[\x80\x82\x01\x80\x82\x11\x15a\x19^Wa\x19^a+\x1FV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a-1Wa-1a+\x1FV[`\x01\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a-OW__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a-mW__\xFD[\x806\x03\x82\x13\x15a%\xD1W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[` \x81Rc\xFF\xFF\xFF\xFFa-\xB5\x83a$\xF2V[\x16` \x82\x01Rc\xFF\xFF\xFF\xFFa-\xCC` \x84\x01a$\xF2V[\x16`@\x82\x01R_a-\xE0`@\x84\x01\x84a-:V[`\x80``\x85\x01Ra-\xF5`\xA0\x85\x01\x82\x84a-{V[\x91PPa.\x05``\x85\x01\x85a-:V[\x84\x83\x03`\x1F\x19\x01`\x80\x86\x01Ra.\x1C\x83\x82\x84a-{V[\x96\x95PPPPPPV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19^Wa\x19^a+\x1FV[c\xFF\xFF\xFF\xFFa.P\x82a$\xF2V[\x16\x82R_a.a` \x83\x01\x83a-:V[`@` \x86\x01Ra.v`@\x86\x01\x82\x84a-{V[\x95\x94PPPPPV[` \x81R_a%\x1E` \x83\x01\x84a.BV[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a.\xB3Wa.\xB3a+\x1FV[P\x92\x91PPV[``\x81R_a.\xCC``\x83\x01\x85a.BV[\x90Pc\xFF\xFF\xFF\xFF\x83Q\x16` \x83\x01R` \x83\x01Q`@\x83\x01R\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a/\x10W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a.\xF4V[P_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81Rc\xFF\xFF\xFF\xFF\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R_`@\x83\x01Q`\x80``\x84\x01Ra/j`\xA0\x84\x01\x82a.\xECV[\x90P``\x84\x01Q`\x1F\x19\x84\x83\x03\x01`\x80\x85\x01Ra.v\x82\x82a.\xECV[_c\xFF\xFF\xFF\xFF\x82\x16c\xFF\xFF\xFF\xFF\x81\x03a-1Wa-1a+\x1FV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \\I\x06\x1F\x13_+?\xDE\xCC\xE6\x16\xD9\xAC\xC0\x9ES`\xA0\x1C\x19\xE8>\xB9z\"\x1A\xB5\x1C\xF6\x9F\xC3dsolcC\0\x08\x1B\x003",
3347    );
3348    /// The runtime bytecode of the contract, as deployed on the network.
3349    ///
3350    /// ```text
3351    ///0x608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80636efb4636116100b45780638da5cb5b116100795780638da5cb5b14610314578063bbcee46e14610325578063c0c53b8b14610338578063df5cf7231461034b578063f2fde38b14610372578063f9120af614610385575f5ffd5b80636efb4636146102b5578063715018a6146102d65780637afa1eed146102de5780637e8ef1be146102f15780638b00ce7c14610304575f5ffd5b80634a7c7e4b116100fa5780634a7c7e4b146102185780635919d07e1461022d5780635df459461461024057806368304835146102675780636d14a9871461028e575f5ffd5b8063171f1d5b146101365780631ad4318914610165578063245a7bfc146101a15780632cb223d5146101cc5780632d89f6fc146101f9575b5f5ffd5b6101496101443660046124a4565b610398565b6040805192151583529015156020830152015b60405180910390f35b61018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161015c565b609a546101b4906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b6101eb6101da366004612505565b60996020525f908152604090205481565b60405190815260200161015c565b6101eb610207366004612505565b60986020525f908152604090205481565b61022b61022636600461253b565b61051a565b005b61022b61023b366004612554565b61052e565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6102c86102c336600461288c565b610586565b60405161015c929190612951565b61022b611003565b609b546101b4906001600160a01b031681565b61022b6102ff366004612999565b611016565b60975461018c9063ffffffff1681565b6065546001600160a01b03166101b4565b61022b610333366004612a2c565b611104565b61022b610346366004612554565b611166565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b61022b61038036600461253b565b61127d565b61022b61039336600461253b565b6112f3565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f600281106103db576103db612a81565b60200201518951600160200201518a602001515f600281106103ff576103ff612a81565b60200201518b6020015160016002811061041b5761041b612a81565b602090810291909101518c518d8301516040516104789a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c61049a9190612a95565b905061050c6104b36104ac8884611304565b8690611374565b6104bb6113e8565b6105026104f3856104ed6040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611304565b6104fc8c6114a8565b90611374565b886201d4c0611532565b909890975095505050505050565b610522611746565b61052b816117a0565b50565b603254610100900460ff1661055e5760405162461bcd60e51b815260040161055590612ab4565b60405180910390fd5b610566611847565b61056f8161127d565b61057883611876565b610581826117a0565b505050565b60408051808201909152606080825260208201525f8481036105ba5760405162f8202d60e51b815260040160405180910390fd5b604083015151851480156105d2575060a08301515185145b80156105e2575060c08301515185145b80156105f2575060e08301515185145b61060f576040516343714afd60e01b815260040160405180910390fd5b8251516020840151511461063657604051635f832f4160e01b815260040160405180910390fd5b4363ffffffff168463ffffffff161061066257604051634b874f4560e01b815260040160405180910390fd5b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106a2576106a261235b565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b506020820152866001600160401b038111156106e9576106e961235b565b604051908082528060200260200182016040528015610712578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156107465761074661235b565b60405190808252806020026020018201604052801561076f578160200160208202803683370190505b5081526020860151516001600160401b0381111561078f5761078f61235b565b6040519080825280602002602001820160405280156107b8578160200160208202803683370190505b5081602001819052505f6108868a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108819190612aff565b611927565b90505f5b876020015151811015610acc576108ce886020015182815181106108b0576108b0612a81565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106108e4576108e4612a81565b60209081029190910101528015610960576020830151610905600183612b33565b8151811061091557610915612a81565b60200260200101515f1c8360200151828151811061093557610935612a81565b60200260200101515f1c1161096057604051600162239afb60e21b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106109a5576109a5612a81565b60200260200101518b8b5f015185815181106109c3576109c3612a81565b60200260200101516040518463ffffffff1660e01b8152600401610a009392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610a1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190612b46565b6001600160c01b0316835f01518281518110610a5d57610a5d612a81565b602002602001018181525050610ac26104ac610a9684865f01518581518110610a8857610a88612a81565b602002602001015116611964565b8a602001518481518110610aac57610aac612a81565b602002602001015161198e90919063ffffffff16565b945060010161088a565b5050610ad783611a50565b92505f5b88811015610f68577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8b8b84818110610b2457610b24612a81565b9050013560f81c60f81b60f81c8a8a60a001518581518110610b4857610b48612a81565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610ba2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc69190612b6c565b6001600160401b031916610be9886040015183815181106108b0576108b0612a81565b67ffffffffffffffff191614610c125760405163e1310aed60e01b815260040160405180910390fd5b610c4287604001518281518110610c2b57610c2b612a81565b60200260200101518561137490919063ffffffff16565b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568b8b84818110610c8557610c85612a81565b9050013560f81c60f81b60f81c8a8a60c001518581518110610ca957610ca9612a81565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d279190612b94565b83602001518281518110610d3d57610d3d612a81565b6001600160601b03909216602092830291909101820152830151805182908110610d6957610d69612a81565b6020026020010151835f01518281518110610d8657610d86612a81565b6001600160601b03909216602092830291909101909101525f805b886020015151811015610f5e57610df4845f01518281518110610dc657610dc6612a81565b60200260200101518d8d86818110610de057610de0612a81565b600192013560f81c9290921c811614919050565b15610f56577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8d8d86818110610e3a57610e3a612a81565b9050013560f81c60f81b60f81c8c87602001518581518110610e5e57610e5e612a81565b60200260200101518d60e001518881518110610e7c57610e7c612a81565b60200260200101518781518110610e9557610e95612a81565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015610ef7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612b94565b8551805185908110610f2f57610f2f612a81565b60200260200101818151610f439190612bba565b6001600160601b03169052506001909101905b600101610da1565b5050600101610adb565b505f5f610f7f8c868a606001518b60800151610398565b9150915081610fa1576040516367988d3360e01b815260040160405180910390fd5b80610fbf5760405163ab1b236b60e01b815260040160405180910390fd5b50505f878260200151604051602001610fd9929190612bd9565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b61100b611746565b6110145f611ae6565b565b609a546001600160a01b031633146110405760405162461bcd60e51b815260040161055590612c1f565b61104b838383611b37565b5f6110596040850185612c56565b8101906110669190612c98565b90505f6110766020850185612c56565b8101906110839190612c98565b90505f6110908380612caf565b90508082146110c357604051630cf92dd560e01b8152600481018490526024810183905260448101829052606401610555565b60408051848152602081018490527fa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5910160405180910390a1505050505050565b609b546001600160a01b0316331461112e5760405162461bcd60e51b815260040161055590612cc6565b5f8460405160200161114291815260200190565b604051602081830303815290604052905061115f81858585611f60565b5050505050565b603254610100900460ff16158080156111865750603254600160ff909116105b806111a05750303b1580156111a0575060325460ff166001145b6112035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610555565b6032805460ff191660011790558015611226576032805461ff0019166101001790555b61123184848461052e565b8015611277576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b611285611746565b6001600160a01b0381166112ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610555565b61052b81611ae6565b6112fb611746565b61052b81611876565b604080518082019091525f808252602082015261131f612281565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061134d57fe5b508061136c57604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261138f61229f565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806113c957fe5b508061136c5760405163d4b68fd760e01b815260040160405180910390fd5b6113f06122bd565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806114d55f516020612fa35f395f51905f5286612a95565b90505b6114e1816120a1565b90935091505f516020612fa35f395f51905f528283098303611519576040805180820190915290815260208101919091529392505050565b5f516020612fa35f395f51905f526001820890506114d8565b6040805180820182528681526020808201869052825180840190935286835282018490525f918291906115636122e2565b5f5b600281101561171a575f61157a826006612caf565b905084826002811061158e5761158e612a81565b6020020151518361159f835f612d07565b600c81106115af576115af612a81565b60200201528482600281106115c6576115c6612a81565b602002015160200151838260016115dd9190612d07565b600c81106115ed576115ed612a81565b602002015283826002811061160457611604612a81565b6020020151515183611617836002612d07565b600c811061162757611627612a81565b602002015283826002811061163e5761163e612a81565b6020020151516001602002015183611657836003612d07565b600c811061166757611667612a81565b602002015283826002811061167e5761167e612a81565b6020020151602001515f6002811061169857611698612a81565b6020020151836116a9836004612d07565b600c81106116b9576116b9612a81565b60200201528382600281106116d0576116d0612a81565b6020020151602001516001600281106116eb576116eb612a81565b6020020151836116fc836005612d07565b600c811061170c5761170c612a81565b602002015250600101611565565b50611723612301565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b6065546001600160a01b031633146110145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6001600160a01b0381166117f65760405162461bcd60e51b815260206004820181905260248201527f47656e657261746f722063616e6e6f74206265207a65726f20616464726573736044820152606401610555565b609b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b905f90a35050565b603254610100900460ff1661186e5760405162461bcd60e51b815260040161055590612ab4565b61101461211d565b6001600160a01b0381166118d65760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610555565b609a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2905f90a35050565b5f5f6119328461214d565b9050808360ff166001901b1161195b5760405163ca95733360e01b815260040160405180910390fd5b90505b92915050565b5f805b821561195e57611978600184612b33565b909216918061198681612d1a565b915050611967565b604080518082019091525f80825260208201526102008261ffff16106119ca576040516001623b158360e11b0319815260040160405180910390fd5b8161ffff166001036119dd57508161195e565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff1610611a4557600161ffff871660ff83161c81169003611a2857611a258484611374565b93505b611a328384611374565b92506201fffe600192831b1691016119f8565b509195945050505050565b604080518082019091525f80825260208201528151158015611a7457506020820151155b15611a91575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f516020612fa35f395f51905f528460200151611ac29190612a95565b611ad9905f516020612fa35f395f51905f52612b33565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b609a546001600160a01b03163314611b615760405162461bcd60e51b815260040161055590612c1f565b5f611b6f6020850185612505565b9050365f611b806060870187612c56565b90925090505f611b966040880160208901612505565b905060985f611ba86020890189612505565b63ffffffff1663ffffffff1681526020019081526020015f205487604051602001611bd39190612da3565b6040516020818303038152906040528051906020012014611c5c5760405162461bcd60e51b815260206004820152603d60248201527f537570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610555565b5f609981611c6d60208a018a612505565b63ffffffff1663ffffffff1681526020019081526020015f205414611ce95760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610555565b611d137f000000000000000000000000000000000000000000000000000000000000000085612e26565b63ffffffff164363ffffffff161115611d785760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722068617320726573706f6e64656420746f6f206c61746044820152606560f81b6064820152608401610555565b5f86604051602001611d8a9190612e7f565b6040516020818303038152906040528051906020012090505f5f611db18387878a8c610586565b90925090505f5b85811015611ea5578460ff1683602001518281518110611dda57611dda612a81565b6020026020010151611dec9190612e91565b6001600160601b03166064845f01518381518110611e0c57611e0c612a81565b60200260200101516001600160601b0316611e279190612caf565b1015611e9d576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610555565b600101611db8565b5060408051808201825263ffffffff43168152602080820184905291519091611ed2918c91849101612eba565b6040516020818303038152906040528051906020012060995f8c5f016020810190611efd9190612505565b63ffffffff1663ffffffff1681526020019081526020015f20819055507f9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f8a82604051611f4b929190612eba565b60405180910390a15050505050505050505050565b609b546001600160a01b03163314611f8a5760405162461bcd60e51b815260040161055590612cc6565b6040805160808101825260608082015280820186905263ffffffff438116825285166020808301919091528251601f850182900482028101820190935283835290919084908490819084018382808284375f920191909152505050506060820152604051611ffc908290602001612f2f565b60408051601f1981840301815282825280516020918201206097805463ffffffff9081165f908152609890945293909220555416907fba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf09061205e908490612f2f565b60405180910390a26097805463ffffffff16905f61207b83612f87565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b5f80805f516020612fa35f395f51905f5260035f516020612fa35f395f51905f52865f516020612fa35f395f51905f52888909090890505f612111827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f516020612fa35f395f51905f52612208565b91959194509092505050565b603254610100900460ff166121445760405162461bcd60e51b815260040161055590612ab4565b61101433611ae6565b5f6101008251111561217257604051637da54e4760e11b815260040160405180910390fd5b81515f0361218157505f919050565b5f5f835f8151811061219557612195612a81565b0160200151600160f89190911c81901b92505b84518110156121ff578481815181106121c3576121c3612a81565b0160200151600160f89190911c1b91508282116121f357604051631019106960e31b815260040160405180910390fd5b918117916001016121a8565b50909392505050565b5f5f612212612301565b61221a61231f565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061225757fe5b50826122765760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806122d061233d565b81526020016122dd61233d565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156123915761239161235b565b60405290565b60405161010081016001600160401b03811182821017156123915761239161235b565b604051601f8201601f191681016001600160401b03811182821017156123e2576123e261235b565b604052919050565b5f604082840312156123fa575f5ffd5b61240261236f565b823581526020928301359281019290925250919050565b5f82601f830112612428575f5ffd5b61243061236f565b806040840185811115612441575f5ffd5b845b8181101561245b578035845260209384019301612443565b509095945050505050565b5f60808284031215612476575f5ffd5b61247e61236f565b905061248a8383612419565b81526124998360408401612419565b602082015292915050565b5f5f5f5f61012085870312156124b8575f5ffd5b843593506124c986602087016123ea565b92506124d88660608701612466565b91506124e78660e087016123ea565b905092959194509250565b803563ffffffff81168114611ae1575f5ffd5b5f60208284031215612515575f5ffd5b61251e826124f2565b9392505050565b80356001600160a01b0381168114611ae1575f5ffd5b5f6020828403121561254b575f5ffd5b61251e82612525565b5f5f5f60608486031215612566575f5ffd5b61256f84612525565b925061257d60208501612525565b915061258b60408501612525565b90509250925092565b5f5f83601f8401126125a4575f5ffd5b5081356001600160401b038111156125ba575f5ffd5b6020830191508360208285010111156125d1575f5ffd5b9250929050565b5f6001600160401b038211156125f0576125f061235b565b5060051b60200190565b5f82601f830112612609575f5ffd5b813561261c612617826125d8565b6123ba565b8082825260208201915060208360051b86010192508583111561263d575f5ffd5b602085015b8381101561266157612653816124f2565b835260209283019201612642565b5095945050505050565b5f82601f83011261267a575f5ffd5b8135612688612617826125d8565b8082825260208201915060208360061b8601019250858311156126a9575f5ffd5b602085015b83811015612661576126c087826123ea565b83526020909201916040016126ae565b5f82601f8301126126df575f5ffd5b81356126ed612617826125d8565b8082825260208201915060208360051b86010192508583111561270e575f5ffd5b602085015b838110156126615780356001600160401b03811115612730575f5ffd5b61273f886020838a01016125fa565b84525060209283019201612713565b5f610180828403121561275f575f5ffd5b612767612397565b905081356001600160401b0381111561277e575f5ffd5b61278a848285016125fa565b82525060208201356001600160401b038111156127a5575f5ffd5b6127b18482850161266b565b60208301525060408201356001600160401b038111156127cf575f5ffd5b6127db8482850161266b565b6040830152506127ee8360608401612466565b60608201526128008360e084016123ea565b60808201526101208201356001600160401b0381111561281e575f5ffd5b61282a848285016125fa565b60a0830152506101408201356001600160401b03811115612849575f5ffd5b612855848285016125fa565b60c0830152506101608201356001600160401b03811115612874575f5ffd5b612880848285016126d0565b60e08301525092915050565b5f5f5f5f5f608086880312156128a0575f5ffd5b8535945060208601356001600160401b038111156128bc575f5ffd5b6128c888828901612594565b90955093506128db9050604087016124f2565b915060608601356001600160401b038111156128f5575f5ffd5b6129018882890161274e565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156129475781516001600160601b0316865260209586019590910190600101612920565b5093949350505050565b604081525f835160408084015261296b608084018261290e565b90506020850151603f19848303016060850152612988828261290e565b925050508260208301529392505050565b5f5f5f606084860312156129ab575f5ffd5b83356001600160401b038111156129c0575f5ffd5b8401608081870312156129d1575f5ffd5b925060208401356001600160401b038111156129eb575f5ffd5b8401604081870312156129fc575f5ffd5b915060408401356001600160401b03811115612a16575f5ffd5b612a228682870161274e565b9150509250925092565b5f5f5f5f60608587031215612a3f575f5ffd5b84359350612a4f602086016124f2565b925060408501356001600160401b03811115612a69575f5ffd5b612a7587828801612594565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b5f82612aaf57634e487b7160e01b5f52601260045260245ffd5b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b0f575f5ffd5b815160ff8116811461195b575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561195e5761195e612b1f565b5f60208284031215612b56575f5ffd5b81516001600160c01b038116811461195b575f5ffd5b5f60208284031215612b7c575f5ffd5b815167ffffffffffffffff198116811461195b575f5ffd5b5f60208284031215612ba4575f5ffd5b81516001600160601b038116811461195b575f5ffd5b6001600160601b03828116828216039081111561195e5761195e612b1f565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b82811015612c13578151845260209384019390910190600101612bf5565b50919695505050505050565b6020808252601d908201527f41676772656761746f72206d757374206265207468652063616c6c6572000000604082015260600190565b5f5f8335601e19843603018112612c6b575f5ffd5b8301803591506001600160401b03821115612c84575f5ffd5b6020019150368190038213156125d1575f5ffd5b5f60208284031215612ca8575f5ffd5b5035919050565b808202811582820484141761195e5761195e612b1f565b60208082526021908201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656040820152603960f91b606082015260800190565b8082018082111561195e5761195e612b1f565b5f61ffff821661ffff8103612d3157612d31612b1f565b60010192915050565b5f5f8335601e19843603018112612d4f575f5ffd5b83016020810192503590506001600160401b03811115612d6d575f5ffd5b8036038213156125d1575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6020815263ffffffff612db5836124f2565b16602082015263ffffffff612dcc602084016124f2565b1660408201525f612de06040840184612d3a565b60806060850152612df560a085018284612d7b565b915050612e056060850185612d3a565b848303601f19016080860152612e1c838284612d7b565b9695505050505050565b63ffffffff818116838216019081111561195e5761195e612b1f565b63ffffffff612e50826124f2565b1682525f612e616020830183612d3a565b60406020860152612e76604086018284612d7b565b95945050505050565b602081525f61251e6020830184612e42565b6001600160601b038181168382160290811690818114612eb357612eb3612b1f565b5092915050565b606081525f612ecc6060830185612e42565b905063ffffffff8351166020830152602083015160408301529392505050565b5f81518084525f5b81811015612f1057602081850181015186830182015201612ef4565b505f602082860101526020601f19601f83011685010191505092915050565b6020815263ffffffff825116602082015263ffffffff60208301511660408201525f604083015160806060840152612f6a60a0840182612eec565b90506060840151601f19848303016080850152612e768282612eec565b5f63ffffffff821663ffffffff8103612d3157612d31612b1f56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212205c49061f135f2b3fdecce616d9acc09e5360a01c19e83eb97a221ab51cf69fc364736f6c634300081b0033
3352    /// ```
3353    #[rustfmt::skip]
3354    #[allow(clippy::all)]
3355    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3356        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x012W_5`\xE0\x1C\x80cn\xFBF6\x11a\0\xB4W\x80c\x8D\xA5\xCB[\x11a\0yW\x80c\x8D\xA5\xCB[\x14a\x03\x14W\x80c\xBB\xCE\xE4n\x14a\x03%W\x80c\xC0\xC5;\x8B\x14a\x038W\x80c\xDF\\\xF7#\x14a\x03KW\x80c\xF2\xFD\xE3\x8B\x14a\x03rW\x80c\xF9\x12\n\xF6\x14a\x03\x85W__\xFD[\x80cn\xFBF6\x14a\x02\xB5W\x80cqP\x18\xA6\x14a\x02\xD6W\x80cz\xFA\x1E\xED\x14a\x02\xDEW\x80c~\x8E\xF1\xBE\x14a\x02\xF1W\x80c\x8B\0\xCE|\x14a\x03\x04W__\xFD[\x80cJ|~K\x11a\0\xFAW\x80cJ|~K\x14a\x02\x18W\x80cY\x19\xD0~\x14a\x02-W\x80c]\xF4YF\x14a\x02@W\x80ch0H5\x14a\x02gW\x80cm\x14\xA9\x87\x14a\x02\x8EW__\xFD[\x80c\x17\x1F\x1D[\x14a\x016W\x80c\x1A\xD41\x89\x14a\x01eW\x80c$Z{\xFC\x14a\x01\xA1W\x80c,\xB2#\xD5\x14a\x01\xCCW\x80c-\x89\xF6\xFC\x14a\x01\xF9W[__\xFD[a\x01Ia\x01D6`\x04a$\xA4V[a\x03\x98V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x8C\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\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\\V[`\x9ATa\x01\xB4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\\V[a\x01\xEBa\x01\xDA6`\x04a%\x05V[`\x99` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\x01\\V[a\x01\xEBa\x02\x076`\x04a%\x05V[`\x98` R_\x90\x81R`@\x90 T\x81V[a\x02+a\x02&6`\x04a%;V[a\x05\x1AV[\0[a\x02+a\x02;6`\x04a%TV[a\x05.V[a\x01\xB4\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\x81V[a\x01\xB4\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\x81V[a\x01\xB4\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\x81V[a\x02\xC8a\x02\xC36`\x04a(\x8CV[a\x05\x86V[`@Qa\x01\\\x92\x91\x90a)QV[a\x02+a\x10\x03V[`\x9BTa\x01\xB4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02+a\x02\xFF6`\x04a)\x99V[a\x10\x16V[`\x97Ta\x01\x8C\x90c\xFF\xFF\xFF\xFF\x16\x81V[`eT`\x01`\x01`\xA0\x1B\x03\x16a\x01\xB4V[a\x02+a\x0336`\x04a*,V[a\x11\x04V[a\x02+a\x03F6`\x04a%TV[a\x11fV[a\x01\xB4\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\x81V[a\x02+a\x03\x806`\x04a%;V[a\x12}V[a\x02+a\x03\x936`\x04a%;V[a\x12\xF3V[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x03\xDBWa\x03\xDBa*\x81V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x03\xFFWa\x03\xFFa*\x81V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x04\x1BWa\x04\x1Ba*\x81V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x04x\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x04\x9A\x91\x90a*\x95V[\x90Pa\x05\x0Ca\x04\xB3a\x04\xAC\x88\x84a\x13\x04V[\x86\x90a\x13tV[a\x04\xBBa\x13\xE8V[a\x05\x02a\x04\xF3\x85a\x04\xED`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x13\x04V[a\x04\xFC\x8Ca\x14\xA8V[\x90a\x13tV[\x88b\x01\xD4\xC0a\x152V[\x90\x98\x90\x97P\x95PPPPPPV[a\x05\"a\x17FV[a\x05+\x81a\x17\xA0V[PV[`2Ta\x01\0\x90\x04`\xFF\x16a\x05^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[`@Q\x80\x91\x03\x90\xFD[a\x05fa\x18GV[a\x05o\x81a\x12}V[a\x05x\x83a\x18vV[a\x05\x81\x82a\x17\xA0V[PPPV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x05\xBAW`@Qb\xF8 -`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x83\x01QQ\x85\x14\x80\x15a\x05\xD2WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05\xE2WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05\xF2WP`\xE0\x83\x01QQ\x85\x14[a\x06\x0FW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82QQ` \x84\x01QQ\x14a\x066W`@Qc_\x83/A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06bW`@QcK\x87OE`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xA2Wa\x06\xA2a#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xE9Wa\x06\xE9a#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x12W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07FWa\x07Fa#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07oW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x8FWa\x07\x8Fa#[V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xB8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\x08\x86\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\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\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08]W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x81\x91\x90a*\xFFV[a\x19'V[\x90P_[\x87` \x01QQ\x81\x10\x15a\n\xCCWa\x08\xCE\x88` \x01Q\x82\x81Q\x81\x10a\x08\xB0Wa\x08\xB0a*\x81V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x08\xE4Wa\x08\xE4a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t`W` \x83\x01Qa\t\x05`\x01\x83a+3V[\x81Q\x81\x10a\t\x15Wa\t\x15a*\x81V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\t5Wa\t5a*\x81V[` \x02` \x01\x01Q_\x1C\x11a\t`W`@Q`\x01b#\x9A\xFB`\xE2\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\t\xA5Wa\t\xA5a*\x81V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\t\xC3Wa\t\xC3a*\x81V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\0\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1BW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n?\x91\x90a+FV[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\n]Wa\n]a*\x81V[` \x02` \x01\x01\x81\x81RPPa\n\xC2a\x04\xACa\n\x96\x84\x86_\x01Q\x85\x81Q\x81\x10a\n\x88Wa\n\x88a*\x81V[` \x02` \x01\x01Q\x16a\x19dV[\x8A` \x01Q\x84\x81Q\x81\x10a\n\xACWa\n\xACa*\x81V[` \x02` \x01\x01Qa\x19\x8E\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\x08\x8AV[PPa\n\xD7\x83a\x1APV[\x92P_[\x88\x81\x10\x15a\x0FhW\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\x16ch\xBC\xCA\xAC\x8B\x8B\x84\x81\x81\x10a\x0B$Wa\x0B$a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8A\x8A`\xA0\x01Q\x85\x81Q\x81\x10a\x0BHWa\x0BHa*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC6\x91\x90a+lV[`\x01`\x01`@\x1B\x03\x19\x16a\x0B\xE9\x88`@\x01Q\x83\x81Q\x81\x10a\x08\xB0Wa\x08\xB0a*\x81V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0C\x12W`@Qc\xE11\n\xED`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0CB\x87`@\x01Q\x82\x81Q\x81\x10a\x0C+Wa\x0C+a*\x81V[` \x02` \x01\x01Q\x85a\x13t\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x93P\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\x16c\xC8)LV\x8B\x8B\x84\x81\x81\x10a\x0C\x85Wa\x0C\x85a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8A\x8A`\xC0\x01Q\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r'\x91\x90a+\x94V[\x83` \x01Q\x82\x81Q\x81\x10a\r=Wa\r=a*\x81V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x83\x01Q\x80Q\x82\x90\x81\x10a\riWa\ria*\x81V[` \x02` \x01\x01Q\x83_\x01Q\x82\x81Q\x81\x10a\r\x86Wa\r\x86a*\x81V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x88` \x01QQ\x81\x10\x15a\x0F^Wa\r\xF4\x84_\x01Q\x82\x81Q\x81\x10a\r\xC6Wa\r\xC6a*\x81V[` \x02` \x01\x01Q\x8D\x8D\x86\x81\x81\x10a\r\xE0Wa\r\xE0a*\x81V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x0FVW\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\x16c\xF2\xBE\x94\xAE\x8D\x8D\x86\x81\x81\x10a\x0E:Wa\x0E:a*\x81V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x87` \x01Q\x85\x81Q\x81\x10a\x0E^Wa\x0E^a*\x81V[` \x02` \x01\x01Q\x8D`\xE0\x01Q\x88\x81Q\x81\x10a\x0E|Wa\x0E|a*\x81V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x0E\x95Wa\x0E\x95a*\x81V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xF7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x1B\x91\x90a+\x94V[\x85Q\x80Q\x85\x90\x81\x10a\x0F/Wa\x0F/a*\x81V[` \x02` \x01\x01\x81\x81Qa\x0FC\x91\x90a+\xBAV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\r\xA1V[PP`\x01\x01a\n\xDBV[P__a\x0F\x7F\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\x98V[\x91P\x91P\x81a\x0F\xA1W`@Qcg\x98\x8D3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\x0F\xBFW`@Qc\xAB\x1B#k`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP_\x87\x82` \x01Q`@Q` \x01a\x0F\xD9\x92\x91\x90a+\xD9V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x10\x0Ba\x17FV[a\x10\x14_a\x1A\xE6V[V[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10@W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\x1FV[a\x10K\x83\x83\x83a\x1B7V[_a\x10Y`@\x85\x01\x85a,VV[\x81\x01\x90a\x10f\x91\x90a,\x98V[\x90P_a\x10v` \x85\x01\x85a,VV[\x81\x01\x90a\x10\x83\x91\x90a,\x98V[\x90P_a\x10\x90\x83\x80a,\xAFV[\x90P\x80\x82\x14a\x10\xC3W`@Qc\x0C\xF9-\xD5`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x83\x90R`D\x81\x01\x82\x90R`d\x01a\x05UV[`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\xA7\xA7\x07\xDD\x7FL\xA0\x0F\xE1\xAF\xCD4\xDF~\xBBlG\xF28\x80\xC3M%L\xC3\x12\xE5\xC4\x1E9t\xC5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\xC6V[_\x84`@Q` \x01a\x11B\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x11_\x81\x85\x85\x85a\x1F`V[PPPPPV[`2Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x11\x86WP`2T`\x01`\xFF\x90\x91\x16\x10[\x80a\x11\xA0WP0;\x15\x80\x15a\x11\xA0WP`2T`\xFF\x16`\x01\x14[a\x12\x03W`@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\x01a\x05UV[`2\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12&W`2\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x121\x84\x84\x84a\x05.V[\x80\x15a\x12wW`2\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[a\x12\x85a\x17FV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x12\xEAW`@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\x01a\x05UV[a\x05+\x81a\x1A\xE6V[a\x12\xFBa\x17FV[a\x05+\x81a\x18vV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13\x1Fa\"\x81V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13MW\xFE[P\x80a\x13lW`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13\x8Fa\"\x9FV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13\xC9W\xFE[P\x80a\x13lW`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xF0a\"\xBDV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\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\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a\x14\xD5_Q` a/\xA3_9_Q\x90_R\x86a*\x95V[\x90P[a\x14\xE1\x81a \xA1V[\x90\x93P\x91P_Q` a/\xA3_9_Q\x90_R\x82\x83\t\x83\x03a\x15\x19W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a/\xA3_9_Q\x90_R`\x01\x82\x08\x90Pa\x14\xD8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x15ca\"\xE2V[_[`\x02\x81\x10\x15a\x17\x1AW_a\x15z\x82`\x06a,\xAFV[\x90P\x84\x82`\x02\x81\x10a\x15\x8EWa\x15\x8Ea*\x81V[` \x02\x01QQ\x83a\x15\x9F\x83_a-\x07V[`\x0C\x81\x10a\x15\xAFWa\x15\xAFa*\x81V[` \x02\x01R\x84\x82`\x02\x81\x10a\x15\xC6Wa\x15\xC6a*\x81V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15\xDD\x91\x90a-\x07V[`\x0C\x81\x10a\x15\xEDWa\x15\xEDa*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x04Wa\x16\x04a*\x81V[` \x02\x01QQQ\x83a\x16\x17\x83`\x02a-\x07V[`\x0C\x81\x10a\x16'Wa\x16'a*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16>Wa\x16>a*\x81V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x16W\x83`\x03a-\x07V[`\x0C\x81\x10a\x16gWa\x16ga*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16~Wa\x16~a*\x81V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x16\x98Wa\x16\x98a*\x81V[` \x02\x01Q\x83a\x16\xA9\x83`\x04a-\x07V[`\x0C\x81\x10a\x16\xB9Wa\x16\xB9a*\x81V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xD0Wa\x16\xD0a*\x81V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16\xEBWa\x16\xEBa*\x81V[` \x02\x01Q\x83a\x16\xFC\x83`\x05a-\x07V[`\x0C\x81\x10a\x17\x0CWa\x17\x0Ca*\x81V[` \x02\x01RP`\x01\x01a\x15eV[Pa\x17#a#\x01V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x05UV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x17\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FGenerator cannot be zero address`D\x82\x01R`d\x01a\x05UV[`\x9B\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\r\xDF\xAB\x8Ac]q\xF1]r\xE2\xD2\xDF\xF5]2\x11\x9D\x13'\r.\xA4\xC3\xDC\0C\xB6l,Gk\x90_\x90\xA3PPV[`2Ta\x01\0\x90\x04`\xFF\x16a\x18nW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[a\x10\x14a!\x1DV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x18\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator cannot be zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x05UV[`\x9A\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x89\xBA\xAB\xEF}\xFD\x06\x83\xC0\xAC\x16\xFD*\x841\xC5\x1BI\xFB\xE6T\xC3\xF7\xB5\xEF\x19v>,\xCD\x88\xF2\x90_\x90\xA3PPV[__a\x192\x84a!MV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19[W`@Qc\xCA\x95s3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90P[\x92\x91PPV[_\x80[\x82\x15a\x19^Wa\x19x`\x01\x84a+3V[\x90\x92\x16\x91\x80a\x19\x86\x81a-\x1AV[\x91PPa\x19gV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\xCAW`@Q`\x01b;\x15\x83`\xE1\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\xFF\xFF\x16`\x01\x03a\x19\xDDWP\x81a\x19^V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1AEW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a\x1A(Wa\x1A%\x84\x84a\x13tV[\x93P[a\x1A2\x83\x84a\x13tV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x19\xF8V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1AtWP` \x82\x01Q\x15[\x15a\x1A\x91WPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a/\xA3_9_Q\x90_R\x84` \x01Qa\x1A\xC2\x91\x90a*\x95V[a\x1A\xD9\x90_Q` a/\xA3_9_Q\x90_Ra+3V[\x90R\x92\x91PPV[\x91\x90PV[`e\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPV[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1BaW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\x1FV[_a\x1Bo` \x85\x01\x85a%\x05V[\x90P6_a\x1B\x80``\x87\x01\x87a,VV[\x90\x92P\x90P_a\x1B\x96`@\x88\x01` \x89\x01a%\x05V[\x90P`\x98_a\x1B\xA8` \x89\x01\x89a%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x87`@Q` \x01a\x1B\xD3\x91\x90a-\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x14a\x1C\\W`@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\x01a\x05UV[_`\x99\x81a\x1Cm` \x8A\x01\x8Aa%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x14a\x1C\xE9W`@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\x01a\x05UV[a\x1D\x13\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\x85a.&V[c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1DxW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator has responded too lat`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x01a\x05UV[_\x86`@Q` \x01a\x1D\x8A\x91\x90a.\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P__a\x1D\xB1\x83\x87\x87\x8A\x8Ca\x05\x86V[\x90\x92P\x90P_[\x85\x81\x10\x15a\x1E\xA5W\x84`\xFF\x16\x83` \x01Q\x82\x81Q\x81\x10a\x1D\xDAWa\x1D\xDAa*\x81V[` \x02` \x01\x01Qa\x1D\xEC\x91\x90a.\x91V[`\x01`\x01``\x1B\x03\x16`d\x84_\x01Q\x83\x81Q\x81\x10a\x1E\x0CWa\x1E\x0Ca*\x81V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16a\x1E'\x91\x90a,\xAFV[\x10\x15a\x1E\x9DW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R`\x84\x01a\x05UV[`\x01\x01a\x1D\xB8V[P`@\x80Q\x80\x82\x01\x82Rc\xFF\xFF\xFF\xFFC\x16\x81R` \x80\x82\x01\x84\x90R\x91Q\x90\x91a\x1E\xD2\x91\x8C\x91\x84\x91\x01a.\xBAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\x99_\x8C_\x01` \x81\x01\x90a\x1E\xFD\x91\x90a%\x05V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UP\x7F\x9B\x96\xC9\x81\xC7\xC7\n\x9F\x17\x02\xAB\xB0Dx'F\xC1\x1D\t\x0FX\xEA4\xB1-\xAF,\xC5<\xF8\xAB_\x8A\x82`@Qa\x1FK\x92\x91\x90a.\xBAV[`@Q\x80\x91\x03\x90\xA1PPPPPPPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1F\x8AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a,\xC6V[`@\x80Q`\x80\x81\x01\x82R``\x80\x82\x01R\x80\x82\x01\x86\x90Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x85\x16` \x80\x83\x01\x91\x90\x91R\x82Q`\x1F\x85\x01\x82\x90\x04\x82\x02\x81\x01\x82\x01\x90\x93R\x83\x83R\x90\x91\x90\x84\x90\x84\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847_\x92\x01\x91\x90\x91RPPPP``\x82\x01R`@Qa\x1F\xFC\x90\x82\x90` \x01a//V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x97\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x98\x90\x94R\x93\x90\x92 UT\x16\x90\x7F\xBA7\x83+\xDD!t+\x86\xA63\x04;\x92:\x9A\xA9x\xF1\xCF\xB2\xB2t\xC6f\x1E\xB5s\xCF\t+\xF0\x90a ^\x90\x84\x90a//V[`@Q\x80\x91\x03\x90\xA2`\x97\x80Tc\xFF\xFF\xFF\xFF\x16\x90_a {\x83a/\x87V[\x91\x90a\x01\0\n\x81T\x81c\xFF\xFF\xFF\xFF\x02\x19\x16\x90\x83c\xFF\xFF\xFF\xFF\x16\x02\x17\x90UPPPPPPPV[_\x80\x80_Q` a/\xA3_9_Q\x90_R`\x03_Q` a/\xA3_9_Q\x90_R\x86_Q` a/\xA3_9_Q\x90_R\x88\x89\t\t\x08\x90P_a!\x11\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a/\xA3_9_Q\x90_Ra\"\x08V[\x91\x95\x91\x94P\x90\x92PPPV[`2Ta\x01\0\x90\x04`\xFF\x16a!DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05U\x90a*\xB4V[a\x10\x143a\x1A\xE6V[_a\x01\0\x82Q\x11\x15a!rW`@Qc}\xA5NG`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q_\x03a!\x81WP_\x91\x90PV[__\x83_\x81Q\x81\x10a!\x95Wa!\x95a*\x81V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a!\xFFW\x84\x81\x81Q\x81\x10a!\xC3Wa!\xC3a*\x81V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a!\xF3W`@Qc\x10\x19\x10i`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x91\x81\x17\x91`\x01\x01a!\xA8V[P\x90\x93\x92PPPV[__a\"\x12a#\x01V[a\"\x1Aa#\x1FV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80a\"WW\xFE[P\x82a\"vW`@Qc\xD5\x1E\xDA\xE3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\"\xD0a#=V[\x81R` \x01a\"\xDDa#=V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x91Wa#\x91a#[V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x91Wa#\x91a#[V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xE2Wa#\xE2a#[V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\xFAW__\xFD[a$\x02a#oV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a$(W__\xFD[a$0a#oV[\x80`@\x84\x01\x85\x81\x11\x15a$AW__\xFD[\x84[\x81\x81\x10\x15a$[W\x805\x84R` \x93\x84\x01\x93\x01a$CV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a$vW__\xFD[a$~a#oV[\x90Pa$\x8A\x83\x83a$\x19V[\x81Ra$\x99\x83`@\x84\x01a$\x19V[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a$\xB8W__\xFD[\x845\x93Pa$\xC9\x86` \x87\x01a#\xEAV[\x92Pa$\xD8\x86``\x87\x01a$fV[\x91Pa$\xE7\x86`\xE0\x87\x01a#\xEAV[\x90P\x92\x95\x91\x94P\x92PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xE1W__\xFD[_` \x82\x84\x03\x12\x15a%\x15W__\xFD[a%\x1E\x82a$\xF2V[\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1A\xE1W__\xFD[_` \x82\x84\x03\x12\x15a%KW__\xFD[a%\x1E\x82a%%V[___``\x84\x86\x03\x12\x15a%fW__\xFD[a%o\x84a%%V[\x92Pa%}` \x85\x01a%%V[\x91Pa%\x8B`@\x85\x01a%%V[\x90P\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a%\xA4W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a%\xBAW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a%\xD1W__\xFD[\x92P\x92\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a%\xF0Wa%\xF0a#[V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a&\tW__\xFD[\x815a&\x1Ca&\x17\x82a%\xD8V[a#\xBAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a&=W__\xFD[` \x85\x01[\x83\x81\x10\x15a&aWa&S\x81a$\xF2V[\x83R` \x92\x83\x01\x92\x01a&BV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a&zW__\xFD[\x815a&\x88a&\x17\x82a%\xD8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a&\xA9W__\xFD[` \x85\x01[\x83\x81\x10\x15a&aWa&\xC0\x87\x82a#\xEAV[\x83R` \x90\x92\x01\x91`@\x01a&\xAEV[_\x82`\x1F\x83\x01\x12a&\xDFW__\xFD[\x815a&\xEDa&\x17\x82a%\xD8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a'\x0EW__\xFD[` \x85\x01[\x83\x81\x10\x15a&aW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'0W__\xFD[a'?\x88` \x83\x8A\x01\x01a%\xFAV[\x84RP` \x92\x83\x01\x92\x01a'\x13V[_a\x01\x80\x82\x84\x03\x12\x15a'_W__\xFD[a'ga#\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'~W__\xFD[a'\x8A\x84\x82\x85\x01a%\xFAV[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xA5W__\xFD[a'\xB1\x84\x82\x85\x01a&kV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xCFW__\xFD[a'\xDB\x84\x82\x85\x01a&kV[`@\x83\x01RPa'\xEE\x83``\x84\x01a$fV[``\x82\x01Ra(\0\x83`\xE0\x84\x01a#\xEAV[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x1EW__\xFD[a(*\x84\x82\x85\x01a%\xFAV[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(IW__\xFD[a(U\x84\x82\x85\x01a%\xFAV[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(tW__\xFD[a(\x80\x84\x82\x85\x01a&\xD0V[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a(\xA0W__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xBCW__\xFD[a(\xC8\x88\x82\x89\x01a%\x94V[\x90\x95P\x93Pa(\xDB\x90P`@\x87\x01a$\xF2V[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF5W__\xFD[a)\x01\x88\x82\x89\x01a'NV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a)GW\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a) V[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra)k`\x80\x84\x01\x82a)\x0EV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra)\x88\x82\x82a)\x0EV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[___``\x84\x86\x03\x12\x15a)\xABW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xC0W__\xFD[\x84\x01`\x80\x81\x87\x03\x12\x15a)\xD1W__\xFD[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xEBW__\xFD[\x84\x01`@\x81\x87\x03\x12\x15a)\xFCW__\xFD[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x16W__\xFD[a*\"\x86\x82\x87\x01a'NV[\x91PP\x92P\x92P\x92V[____``\x85\x87\x03\x12\x15a*?W__\xFD[\x845\x93Pa*O` \x86\x01a$\xF2V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*iW__\xFD[a*u\x87\x82\x88\x01a%\x94V[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a*\xAFWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a+\x0FW__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19[W__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x19^Wa\x19^a+\x1FV[_` \x82\x84\x03\x12\x15a+VW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19[W__\xFD[_` \x82\x84\x03\x12\x15a+|W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19[W__\xFD[_` \x82\x84\x03\x12\x15a+\xA4W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19[W__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19^Wa\x19^a+\x1FV[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a,\x13W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a+\xF5V[P\x91\x96\x95PPPPPPV[` \x80\x82R`\x1D\x90\x82\x01R\x7FAggregator must be the caller\0\0\0`@\x82\x01R``\x01\x90V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a,kW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a,\x84W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a%\xD1W__\xFD[_` \x82\x84\x03\x12\x15a,\xA8W__\xFD[P5\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x19^Wa\x19^a+\x1FV[` \x80\x82R`!\x90\x82\x01R\x7FTask generator must be the calle`@\x82\x01R`9`\xF9\x1B``\x82\x01R`\x80\x01\x90V[\x80\x82\x01\x80\x82\x11\x15a\x19^Wa\x19^a+\x1FV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a-1Wa-1a+\x1FV[`\x01\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a-OW__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a-mW__\xFD[\x806\x03\x82\x13\x15a%\xD1W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[` \x81Rc\xFF\xFF\xFF\xFFa-\xB5\x83a$\xF2V[\x16` \x82\x01Rc\xFF\xFF\xFF\xFFa-\xCC` \x84\x01a$\xF2V[\x16`@\x82\x01R_a-\xE0`@\x84\x01\x84a-:V[`\x80``\x85\x01Ra-\xF5`\xA0\x85\x01\x82\x84a-{V[\x91PPa.\x05``\x85\x01\x85a-:V[\x84\x83\x03`\x1F\x19\x01`\x80\x86\x01Ra.\x1C\x83\x82\x84a-{V[\x96\x95PPPPPPV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19^Wa\x19^a+\x1FV[c\xFF\xFF\xFF\xFFa.P\x82a$\xF2V[\x16\x82R_a.a` \x83\x01\x83a-:V[`@` \x86\x01Ra.v`@\x86\x01\x82\x84a-{V[\x95\x94PPPPPV[` \x81R_a%\x1E` \x83\x01\x84a.BV[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a.\xB3Wa.\xB3a+\x1FV[P\x92\x91PPV[``\x81R_a.\xCC``\x83\x01\x85a.BV[\x90Pc\xFF\xFF\xFF\xFF\x83Q\x16` \x83\x01R` \x83\x01Q`@\x83\x01R\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a/\x10W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a.\xF4V[P_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81Rc\xFF\xFF\xFF\xFF\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R_`@\x83\x01Q`\x80``\x84\x01Ra/j`\xA0\x84\x01\x82a.\xECV[\x90P``\x84\x01Q`\x1F\x19\x84\x83\x03\x01`\x80\x85\x01Ra.v\x82\x82a.\xECV[_c\xFF\xFF\xFF\xFF\x82\x16c\xFF\xFF\xFF\xFF\x81\x03a-1Wa-1a+\x1FV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \\I\x06\x1F\x13_+?\xDE\xCC\xE6\x16\xD9\xAC\xC0\x9ES`\xA0\x1C\x19\xE8>\xB9z\"\x1A\xB5\x1C\xF6\x9F\xC3dsolcC\0\x08\x1B\x003",
3357    );
3358    #[derive(serde::Serialize, serde::Deserialize)]
3359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3360    /**Custom error with signature `AlreadySet()` and selector `0xa741a045`.
3361```solidity
3362error AlreadySet();
3363```*/
3364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3365    #[derive(Clone)]
3366    pub struct AlreadySet;
3367    #[allow(
3368        non_camel_case_types,
3369        non_snake_case,
3370        clippy::pub_underscore_fields,
3371        clippy::style
3372    )]
3373    const _: () = {
3374        use alloy::sol_types as alloy_sol_types;
3375        #[doc(hidden)]
3376        type UnderlyingSolTuple<'a> = ();
3377        #[doc(hidden)]
3378        type UnderlyingRustTuple<'a> = ();
3379        #[cfg(test)]
3380        #[allow(dead_code, unreachable_patterns)]
3381        fn _type_assertion(
3382            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3383        ) {
3384            match _t {
3385                alloy_sol_types::private::AssertTypeEq::<
3386                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3387                >(_) => {}
3388            }
3389        }
3390        #[automatically_derived]
3391        #[doc(hidden)]
3392        impl ::core::convert::From<AlreadySet> for UnderlyingRustTuple<'_> {
3393            fn from(value: AlreadySet) -> Self {
3394                ()
3395            }
3396        }
3397        #[automatically_derived]
3398        #[doc(hidden)]
3399        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AlreadySet {
3400            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3401                Self
3402            }
3403        }
3404        #[automatically_derived]
3405        impl alloy_sol_types::SolError for AlreadySet {
3406            type Parameters<'a> = UnderlyingSolTuple<'a>;
3407            type Token<'a> = <Self::Parameters<
3408                'a,
3409            > as alloy_sol_types::SolType>::Token<'a>;
3410            const SIGNATURE: &'static str = "AlreadySet()";
3411            const SELECTOR: [u8; 4] = [167u8, 65u8, 160u8, 69u8];
3412            #[inline]
3413            fn new<'a>(
3414                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3415            ) -> Self {
3416                tuple.into()
3417            }
3418            #[inline]
3419            fn tokenize(&self) -> Self::Token<'_> {
3420                ()
3421            }
3422            #[inline]
3423            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3424                <Self::Parameters<
3425                    '_,
3426                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3427                    .map(Self::new)
3428            }
3429        }
3430    };
3431    #[derive(serde::Serialize, serde::Deserialize)]
3432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3433    /**Custom error with signature `BitmapValueTooLarge()` and selector `0xca957333`.
3434```solidity
3435error BitmapValueTooLarge();
3436```*/
3437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3438    #[derive(Clone)]
3439    pub struct BitmapValueTooLarge;
3440    #[allow(
3441        non_camel_case_types,
3442        non_snake_case,
3443        clippy::pub_underscore_fields,
3444        clippy::style
3445    )]
3446    const _: () = {
3447        use alloy::sol_types as alloy_sol_types;
3448        #[doc(hidden)]
3449        type UnderlyingSolTuple<'a> = ();
3450        #[doc(hidden)]
3451        type UnderlyingRustTuple<'a> = ();
3452        #[cfg(test)]
3453        #[allow(dead_code, unreachable_patterns)]
3454        fn _type_assertion(
3455            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3456        ) {
3457            match _t {
3458                alloy_sol_types::private::AssertTypeEq::<
3459                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3460                >(_) => {}
3461            }
3462        }
3463        #[automatically_derived]
3464        #[doc(hidden)]
3465        impl ::core::convert::From<BitmapValueTooLarge> for UnderlyingRustTuple<'_> {
3466            fn from(value: BitmapValueTooLarge) -> Self {
3467                ()
3468            }
3469        }
3470        #[automatically_derived]
3471        #[doc(hidden)]
3472        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BitmapValueTooLarge {
3473            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3474                Self
3475            }
3476        }
3477        #[automatically_derived]
3478        impl alloy_sol_types::SolError for BitmapValueTooLarge {
3479            type Parameters<'a> = UnderlyingSolTuple<'a>;
3480            type Token<'a> = <Self::Parameters<
3481                'a,
3482            > as alloy_sol_types::SolType>::Token<'a>;
3483            const SIGNATURE: &'static str = "BitmapValueTooLarge()";
3484            const SELECTOR: [u8; 4] = [202u8, 149u8, 115u8, 51u8];
3485            #[inline]
3486            fn new<'a>(
3487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3488            ) -> Self {
3489                tuple.into()
3490            }
3491            #[inline]
3492            fn tokenize(&self) -> Self::Token<'_> {
3493                ()
3494            }
3495            #[inline]
3496            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3497                <Self::Parameters<
3498                    '_,
3499                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3500                    .map(Self::new)
3501            }
3502        }
3503    };
3504    #[derive(serde::Serialize, serde::Deserialize)]
3505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3506    /**Custom error with signature `BytesArrayLengthTooLong()` and selector `0xfb4a9c8e`.
3507```solidity
3508error BytesArrayLengthTooLong();
3509```*/
3510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3511    #[derive(Clone)]
3512    pub struct BytesArrayLengthTooLong;
3513    #[allow(
3514        non_camel_case_types,
3515        non_snake_case,
3516        clippy::pub_underscore_fields,
3517        clippy::style
3518    )]
3519    const _: () = {
3520        use alloy::sol_types as alloy_sol_types;
3521        #[doc(hidden)]
3522        type UnderlyingSolTuple<'a> = ();
3523        #[doc(hidden)]
3524        type UnderlyingRustTuple<'a> = ();
3525        #[cfg(test)]
3526        #[allow(dead_code, unreachable_patterns)]
3527        fn _type_assertion(
3528            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3529        ) {
3530            match _t {
3531                alloy_sol_types::private::AssertTypeEq::<
3532                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3533                >(_) => {}
3534            }
3535        }
3536        #[automatically_derived]
3537        #[doc(hidden)]
3538        impl ::core::convert::From<BytesArrayLengthTooLong> for UnderlyingRustTuple<'_> {
3539            fn from(value: BytesArrayLengthTooLong) -> Self {
3540                ()
3541            }
3542        }
3543        #[automatically_derived]
3544        #[doc(hidden)]
3545        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayLengthTooLong {
3546            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3547                Self
3548            }
3549        }
3550        #[automatically_derived]
3551        impl alloy_sol_types::SolError for BytesArrayLengthTooLong {
3552            type Parameters<'a> = UnderlyingSolTuple<'a>;
3553            type Token<'a> = <Self::Parameters<
3554                'a,
3555            > as alloy_sol_types::SolType>::Token<'a>;
3556            const SIGNATURE: &'static str = "BytesArrayLengthTooLong()";
3557            const SELECTOR: [u8; 4] = [251u8, 74u8, 156u8, 142u8];
3558            #[inline]
3559            fn new<'a>(
3560                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3561            ) -> Self {
3562                tuple.into()
3563            }
3564            #[inline]
3565            fn tokenize(&self) -> Self::Token<'_> {
3566                ()
3567            }
3568            #[inline]
3569            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3570                <Self::Parameters<
3571                    '_,
3572                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3573                    .map(Self::new)
3574            }
3575        }
3576    };
3577    #[derive(serde::Serialize, serde::Deserialize)]
3578    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3579    /**Custom error with signature `BytesArrayNotOrdered()` and selector `0x80c88348`.
3580```solidity
3581error BytesArrayNotOrdered();
3582```*/
3583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3584    #[derive(Clone)]
3585    pub struct BytesArrayNotOrdered;
3586    #[allow(
3587        non_camel_case_types,
3588        non_snake_case,
3589        clippy::pub_underscore_fields,
3590        clippy::style
3591    )]
3592    const _: () = {
3593        use alloy::sol_types as alloy_sol_types;
3594        #[doc(hidden)]
3595        type UnderlyingSolTuple<'a> = ();
3596        #[doc(hidden)]
3597        type UnderlyingRustTuple<'a> = ();
3598        #[cfg(test)]
3599        #[allow(dead_code, unreachable_patterns)]
3600        fn _type_assertion(
3601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3602        ) {
3603            match _t {
3604                alloy_sol_types::private::AssertTypeEq::<
3605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3606                >(_) => {}
3607            }
3608        }
3609        #[automatically_derived]
3610        #[doc(hidden)]
3611        impl ::core::convert::From<BytesArrayNotOrdered> for UnderlyingRustTuple<'_> {
3612            fn from(value: BytesArrayNotOrdered) -> Self {
3613                ()
3614            }
3615        }
3616        #[automatically_derived]
3617        #[doc(hidden)]
3618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayNotOrdered {
3619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3620                Self
3621            }
3622        }
3623        #[automatically_derived]
3624        impl alloy_sol_types::SolError for BytesArrayNotOrdered {
3625            type Parameters<'a> = UnderlyingSolTuple<'a>;
3626            type Token<'a> = <Self::Parameters<
3627                'a,
3628            > as alloy_sol_types::SolType>::Token<'a>;
3629            const SIGNATURE: &'static str = "BytesArrayNotOrdered()";
3630            const SELECTOR: [u8; 4] = [128u8, 200u8, 131u8, 72u8];
3631            #[inline]
3632            fn new<'a>(
3633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3634            ) -> Self {
3635                tuple.into()
3636            }
3637            #[inline]
3638            fn tokenize(&self) -> Self::Token<'_> {
3639                ()
3640            }
3641            #[inline]
3642            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3643                <Self::Parameters<
3644                    '_,
3645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3646                    .map(Self::new)
3647            }
3648        }
3649    };
3650    #[derive(serde::Serialize, serde::Deserialize)]
3651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3652    /**Custom error with signature `ECAddFailed()` and selector `0xd4b68fd7`.
3653```solidity
3654error ECAddFailed();
3655```*/
3656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3657    #[derive(Clone)]
3658    pub struct ECAddFailed;
3659    #[allow(
3660        non_camel_case_types,
3661        non_snake_case,
3662        clippy::pub_underscore_fields,
3663        clippy::style
3664    )]
3665    const _: () = {
3666        use alloy::sol_types as alloy_sol_types;
3667        #[doc(hidden)]
3668        type UnderlyingSolTuple<'a> = ();
3669        #[doc(hidden)]
3670        type UnderlyingRustTuple<'a> = ();
3671        #[cfg(test)]
3672        #[allow(dead_code, unreachable_patterns)]
3673        fn _type_assertion(
3674            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3675        ) {
3676            match _t {
3677                alloy_sol_types::private::AssertTypeEq::<
3678                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3679                >(_) => {}
3680            }
3681        }
3682        #[automatically_derived]
3683        #[doc(hidden)]
3684        impl ::core::convert::From<ECAddFailed> for UnderlyingRustTuple<'_> {
3685            fn from(value: ECAddFailed) -> Self {
3686                ()
3687            }
3688        }
3689        #[automatically_derived]
3690        #[doc(hidden)]
3691        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECAddFailed {
3692            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3693                Self
3694            }
3695        }
3696        #[automatically_derived]
3697        impl alloy_sol_types::SolError for ECAddFailed {
3698            type Parameters<'a> = UnderlyingSolTuple<'a>;
3699            type Token<'a> = <Self::Parameters<
3700                'a,
3701            > as alloy_sol_types::SolType>::Token<'a>;
3702            const SIGNATURE: &'static str = "ECAddFailed()";
3703            const SELECTOR: [u8; 4] = [212u8, 182u8, 143u8, 215u8];
3704            #[inline]
3705            fn new<'a>(
3706                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3707            ) -> Self {
3708                tuple.into()
3709            }
3710            #[inline]
3711            fn tokenize(&self) -> Self::Token<'_> {
3712                ()
3713            }
3714            #[inline]
3715            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3716                <Self::Parameters<
3717                    '_,
3718                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3719                    .map(Self::new)
3720            }
3721        }
3722    };
3723    #[derive(serde::Serialize, serde::Deserialize)]
3724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3725    /**Custom error with signature `ECMulFailed()` and selector `0x4633be32`.
3726```solidity
3727error ECMulFailed();
3728```*/
3729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3730    #[derive(Clone)]
3731    pub struct ECMulFailed;
3732    #[allow(
3733        non_camel_case_types,
3734        non_snake_case,
3735        clippy::pub_underscore_fields,
3736        clippy::style
3737    )]
3738    const _: () = {
3739        use alloy::sol_types as alloy_sol_types;
3740        #[doc(hidden)]
3741        type UnderlyingSolTuple<'a> = ();
3742        #[doc(hidden)]
3743        type UnderlyingRustTuple<'a> = ();
3744        #[cfg(test)]
3745        #[allow(dead_code, unreachable_patterns)]
3746        fn _type_assertion(
3747            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3748        ) {
3749            match _t {
3750                alloy_sol_types::private::AssertTypeEq::<
3751                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3752                >(_) => {}
3753            }
3754        }
3755        #[automatically_derived]
3756        #[doc(hidden)]
3757        impl ::core::convert::From<ECMulFailed> for UnderlyingRustTuple<'_> {
3758            fn from(value: ECMulFailed) -> Self {
3759                ()
3760            }
3761        }
3762        #[automatically_derived]
3763        #[doc(hidden)]
3764        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECMulFailed {
3765            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3766                Self
3767            }
3768        }
3769        #[automatically_derived]
3770        impl alloy_sol_types::SolError for ECMulFailed {
3771            type Parameters<'a> = UnderlyingSolTuple<'a>;
3772            type Token<'a> = <Self::Parameters<
3773                'a,
3774            > as alloy_sol_types::SolType>::Token<'a>;
3775            const SIGNATURE: &'static str = "ECMulFailed()";
3776            const SELECTOR: [u8; 4] = [70u8, 51u8, 190u8, 50u8];
3777            #[inline]
3778            fn new<'a>(
3779                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3780            ) -> Self {
3781                tuple.into()
3782            }
3783            #[inline]
3784            fn tokenize(&self) -> Self::Token<'_> {
3785                ()
3786            }
3787            #[inline]
3788            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3789                <Self::Parameters<
3790                    '_,
3791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3792                    .map(Self::new)
3793            }
3794        }
3795    };
3796    #[derive(serde::Serialize, serde::Deserialize)]
3797    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3798    /**Custom error with signature `ExpModFailed()` and selector `0xd51edae3`.
3799```solidity
3800error ExpModFailed();
3801```*/
3802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3803    #[derive(Clone)]
3804    pub struct ExpModFailed;
3805    #[allow(
3806        non_camel_case_types,
3807        non_snake_case,
3808        clippy::pub_underscore_fields,
3809        clippy::style
3810    )]
3811    const _: () = {
3812        use alloy::sol_types as alloy_sol_types;
3813        #[doc(hidden)]
3814        type UnderlyingSolTuple<'a> = ();
3815        #[doc(hidden)]
3816        type UnderlyingRustTuple<'a> = ();
3817        #[cfg(test)]
3818        #[allow(dead_code, unreachable_patterns)]
3819        fn _type_assertion(
3820            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3821        ) {
3822            match _t {
3823                alloy_sol_types::private::AssertTypeEq::<
3824                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3825                >(_) => {}
3826            }
3827        }
3828        #[automatically_derived]
3829        #[doc(hidden)]
3830        impl ::core::convert::From<ExpModFailed> for UnderlyingRustTuple<'_> {
3831            fn from(value: ExpModFailed) -> Self {
3832                ()
3833            }
3834        }
3835        #[automatically_derived]
3836        #[doc(hidden)]
3837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpModFailed {
3838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3839                Self
3840            }
3841        }
3842        #[automatically_derived]
3843        impl alloy_sol_types::SolError for ExpModFailed {
3844            type Parameters<'a> = UnderlyingSolTuple<'a>;
3845            type Token<'a> = <Self::Parameters<
3846                'a,
3847            > as alloy_sol_types::SolType>::Token<'a>;
3848            const SIGNATURE: &'static str = "ExpModFailed()";
3849            const SELECTOR: [u8; 4] = [213u8, 30u8, 218u8, 227u8];
3850            #[inline]
3851            fn new<'a>(
3852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3853            ) -> Self {
3854                tuple.into()
3855            }
3856            #[inline]
3857            fn tokenize(&self) -> Self::Token<'_> {
3858                ()
3859            }
3860            #[inline]
3861            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3862                <Self::Parameters<
3863                    '_,
3864                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3865                    .map(Self::new)
3866            }
3867        }
3868    };
3869    #[derive(serde::Serialize, serde::Deserialize)]
3870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3871    /**Custom error with signature `IncorrectSquareResult(uint256,uint256,uint256)` and selector `0x0cf92dd5`.
3872```solidity
3873error IncorrectSquareResult(uint256 number, uint256 submittedResult, uint256 expectedResult);
3874```*/
3875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3876    #[derive(Clone)]
3877    pub struct IncorrectSquareResult {
3878        #[allow(missing_docs)]
3879        pub number: alloy::sol_types::private::primitives::aliases::U256,
3880        #[allow(missing_docs)]
3881        pub submittedResult: alloy::sol_types::private::primitives::aliases::U256,
3882        #[allow(missing_docs)]
3883        pub expectedResult: alloy::sol_types::private::primitives::aliases::U256,
3884    }
3885    #[allow(
3886        non_camel_case_types,
3887        non_snake_case,
3888        clippy::pub_underscore_fields,
3889        clippy::style
3890    )]
3891    const _: () = {
3892        use alloy::sol_types as alloy_sol_types;
3893        #[doc(hidden)]
3894        type UnderlyingSolTuple<'a> = (
3895            alloy::sol_types::sol_data::Uint<256>,
3896            alloy::sol_types::sol_data::Uint<256>,
3897            alloy::sol_types::sol_data::Uint<256>,
3898        );
3899        #[doc(hidden)]
3900        type UnderlyingRustTuple<'a> = (
3901            alloy::sol_types::private::primitives::aliases::U256,
3902            alloy::sol_types::private::primitives::aliases::U256,
3903            alloy::sol_types::private::primitives::aliases::U256,
3904        );
3905        #[cfg(test)]
3906        #[allow(dead_code, unreachable_patterns)]
3907        fn _type_assertion(
3908            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3909        ) {
3910            match _t {
3911                alloy_sol_types::private::AssertTypeEq::<
3912                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3913                >(_) => {}
3914            }
3915        }
3916        #[automatically_derived]
3917        #[doc(hidden)]
3918        impl ::core::convert::From<IncorrectSquareResult> for UnderlyingRustTuple<'_> {
3919            fn from(value: IncorrectSquareResult) -> Self {
3920                (value.number, value.submittedResult, value.expectedResult)
3921            }
3922        }
3923        #[automatically_derived]
3924        #[doc(hidden)]
3925        impl ::core::convert::From<UnderlyingRustTuple<'_>> for IncorrectSquareResult {
3926            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3927                Self {
3928                    number: tuple.0,
3929                    submittedResult: tuple.1,
3930                    expectedResult: tuple.2,
3931                }
3932            }
3933        }
3934        #[automatically_derived]
3935        impl alloy_sol_types::SolError for IncorrectSquareResult {
3936            type Parameters<'a> = UnderlyingSolTuple<'a>;
3937            type Token<'a> = <Self::Parameters<
3938                'a,
3939            > as alloy_sol_types::SolType>::Token<'a>;
3940            const SIGNATURE: &'static str = "IncorrectSquareResult(uint256,uint256,uint256)";
3941            const SELECTOR: [u8; 4] = [12u8, 249u8, 45u8, 213u8];
3942            #[inline]
3943            fn new<'a>(
3944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3945            ) -> Self {
3946                tuple.into()
3947            }
3948            #[inline]
3949            fn tokenize(&self) -> Self::Token<'_> {
3950                (
3951                    <alloy::sol_types::sol_data::Uint<
3952                        256,
3953                    > as alloy_sol_types::SolType>::tokenize(&self.number),
3954                    <alloy::sol_types::sol_data::Uint<
3955                        256,
3956                    > as alloy_sol_types::SolType>::tokenize(&self.submittedResult),
3957                    <alloy::sol_types::sol_data::Uint<
3958                        256,
3959                    > as alloy_sol_types::SolType>::tokenize(&self.expectedResult),
3960                )
3961            }
3962            #[inline]
3963            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3964                <Self::Parameters<
3965                    '_,
3966                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3967                    .map(Self::new)
3968            }
3969        }
3970    };
3971    #[derive(serde::Serialize, serde::Deserialize)]
3972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3973    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3974```solidity
3975error InputArrayLengthMismatch();
3976```*/
3977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3978    #[derive(Clone)]
3979    pub struct InputArrayLengthMismatch;
3980    #[allow(
3981        non_camel_case_types,
3982        non_snake_case,
3983        clippy::pub_underscore_fields,
3984        clippy::style
3985    )]
3986    const _: () = {
3987        use alloy::sol_types as alloy_sol_types;
3988        #[doc(hidden)]
3989        type UnderlyingSolTuple<'a> = ();
3990        #[doc(hidden)]
3991        type UnderlyingRustTuple<'a> = ();
3992        #[cfg(test)]
3993        #[allow(dead_code, unreachable_patterns)]
3994        fn _type_assertion(
3995            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3996        ) {
3997            match _t {
3998                alloy_sol_types::private::AssertTypeEq::<
3999                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4000                >(_) => {}
4001            }
4002        }
4003        #[automatically_derived]
4004        #[doc(hidden)]
4005        impl ::core::convert::From<InputArrayLengthMismatch>
4006        for UnderlyingRustTuple<'_> {
4007            fn from(value: InputArrayLengthMismatch) -> Self {
4008                ()
4009            }
4010        }
4011        #[automatically_derived]
4012        #[doc(hidden)]
4013        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4014        for InputArrayLengthMismatch {
4015            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4016                Self
4017            }
4018        }
4019        #[automatically_derived]
4020        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
4021            type Parameters<'a> = UnderlyingSolTuple<'a>;
4022            type Token<'a> = <Self::Parameters<
4023                'a,
4024            > as alloy_sol_types::SolType>::Token<'a>;
4025            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
4026            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
4027            #[inline]
4028            fn new<'a>(
4029                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4030            ) -> Self {
4031                tuple.into()
4032            }
4033            #[inline]
4034            fn tokenize(&self) -> Self::Token<'_> {
4035                ()
4036            }
4037            #[inline]
4038            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4039                <Self::Parameters<
4040                    '_,
4041                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4042                    .map(Self::new)
4043            }
4044        }
4045    };
4046    #[derive(serde::Serialize, serde::Deserialize)]
4047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4048    /**Custom error with signature `InputEmptyQuorumNumbers()` and selector `0x1f0405a0`.
4049```solidity
4050error InputEmptyQuorumNumbers();
4051```*/
4052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4053    #[derive(Clone)]
4054    pub struct InputEmptyQuorumNumbers;
4055    #[allow(
4056        non_camel_case_types,
4057        non_snake_case,
4058        clippy::pub_underscore_fields,
4059        clippy::style
4060    )]
4061    const _: () = {
4062        use alloy::sol_types as alloy_sol_types;
4063        #[doc(hidden)]
4064        type UnderlyingSolTuple<'a> = ();
4065        #[doc(hidden)]
4066        type UnderlyingRustTuple<'a> = ();
4067        #[cfg(test)]
4068        #[allow(dead_code, unreachable_patterns)]
4069        fn _type_assertion(
4070            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4071        ) {
4072            match _t {
4073                alloy_sol_types::private::AssertTypeEq::<
4074                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4075                >(_) => {}
4076            }
4077        }
4078        #[automatically_derived]
4079        #[doc(hidden)]
4080        impl ::core::convert::From<InputEmptyQuorumNumbers> for UnderlyingRustTuple<'_> {
4081            fn from(value: InputEmptyQuorumNumbers) -> Self {
4082                ()
4083            }
4084        }
4085        #[automatically_derived]
4086        #[doc(hidden)]
4087        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputEmptyQuorumNumbers {
4088            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4089                Self
4090            }
4091        }
4092        #[automatically_derived]
4093        impl alloy_sol_types::SolError for InputEmptyQuorumNumbers {
4094            type Parameters<'a> = UnderlyingSolTuple<'a>;
4095            type Token<'a> = <Self::Parameters<
4096                'a,
4097            > as alloy_sol_types::SolType>::Token<'a>;
4098            const SIGNATURE: &'static str = "InputEmptyQuorumNumbers()";
4099            const SELECTOR: [u8; 4] = [31u8, 4u8, 5u8, 160u8];
4100            #[inline]
4101            fn new<'a>(
4102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4103            ) -> Self {
4104                tuple.into()
4105            }
4106            #[inline]
4107            fn tokenize(&self) -> Self::Token<'_> {
4108                ()
4109            }
4110            #[inline]
4111            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4112                <Self::Parameters<
4113                    '_,
4114                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4115                    .map(Self::new)
4116            }
4117        }
4118    };
4119    #[derive(serde::Serialize, serde::Deserialize)]
4120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4121    /**Custom error with signature `InputNonSignerLengthMismatch()` and selector `0x5f832f41`.
4122```solidity
4123error InputNonSignerLengthMismatch();
4124```*/
4125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4126    #[derive(Clone)]
4127    pub struct InputNonSignerLengthMismatch;
4128    #[allow(
4129        non_camel_case_types,
4130        non_snake_case,
4131        clippy::pub_underscore_fields,
4132        clippy::style
4133    )]
4134    const _: () = {
4135        use alloy::sol_types as alloy_sol_types;
4136        #[doc(hidden)]
4137        type UnderlyingSolTuple<'a> = ();
4138        #[doc(hidden)]
4139        type UnderlyingRustTuple<'a> = ();
4140        #[cfg(test)]
4141        #[allow(dead_code, unreachable_patterns)]
4142        fn _type_assertion(
4143            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4144        ) {
4145            match _t {
4146                alloy_sol_types::private::AssertTypeEq::<
4147                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4148                >(_) => {}
4149            }
4150        }
4151        #[automatically_derived]
4152        #[doc(hidden)]
4153        impl ::core::convert::From<InputNonSignerLengthMismatch>
4154        for UnderlyingRustTuple<'_> {
4155            fn from(value: InputNonSignerLengthMismatch) -> Self {
4156                ()
4157            }
4158        }
4159        #[automatically_derived]
4160        #[doc(hidden)]
4161        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4162        for InputNonSignerLengthMismatch {
4163            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4164                Self
4165            }
4166        }
4167        #[automatically_derived]
4168        impl alloy_sol_types::SolError for InputNonSignerLengthMismatch {
4169            type Parameters<'a> = UnderlyingSolTuple<'a>;
4170            type Token<'a> = <Self::Parameters<
4171                'a,
4172            > as alloy_sol_types::SolType>::Token<'a>;
4173            const SIGNATURE: &'static str = "InputNonSignerLengthMismatch()";
4174            const SELECTOR: [u8; 4] = [95u8, 131u8, 47u8, 65u8];
4175            #[inline]
4176            fn new<'a>(
4177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4178            ) -> Self {
4179                tuple.into()
4180            }
4181            #[inline]
4182            fn tokenize(&self) -> Self::Token<'_> {
4183                ()
4184            }
4185            #[inline]
4186            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4187                <Self::Parameters<
4188                    '_,
4189                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4190                    .map(Self::new)
4191            }
4192        }
4193    };
4194    #[derive(serde::Serialize, serde::Deserialize)]
4195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4196    /**Custom error with signature `InvalidBLSPairingKey()` and selector `0x67988d33`.
4197```solidity
4198error InvalidBLSPairingKey();
4199```*/
4200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4201    #[derive(Clone)]
4202    pub struct InvalidBLSPairingKey;
4203    #[allow(
4204        non_camel_case_types,
4205        non_snake_case,
4206        clippy::pub_underscore_fields,
4207        clippy::style
4208    )]
4209    const _: () = {
4210        use alloy::sol_types as alloy_sol_types;
4211        #[doc(hidden)]
4212        type UnderlyingSolTuple<'a> = ();
4213        #[doc(hidden)]
4214        type UnderlyingRustTuple<'a> = ();
4215        #[cfg(test)]
4216        #[allow(dead_code, unreachable_patterns)]
4217        fn _type_assertion(
4218            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4219        ) {
4220            match _t {
4221                alloy_sol_types::private::AssertTypeEq::<
4222                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4223                >(_) => {}
4224            }
4225        }
4226        #[automatically_derived]
4227        #[doc(hidden)]
4228        impl ::core::convert::From<InvalidBLSPairingKey> for UnderlyingRustTuple<'_> {
4229            fn from(value: InvalidBLSPairingKey) -> Self {
4230                ()
4231            }
4232        }
4233        #[automatically_derived]
4234        #[doc(hidden)]
4235        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSPairingKey {
4236            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4237                Self
4238            }
4239        }
4240        #[automatically_derived]
4241        impl alloy_sol_types::SolError for InvalidBLSPairingKey {
4242            type Parameters<'a> = UnderlyingSolTuple<'a>;
4243            type Token<'a> = <Self::Parameters<
4244                'a,
4245            > as alloy_sol_types::SolType>::Token<'a>;
4246            const SIGNATURE: &'static str = "InvalidBLSPairingKey()";
4247            const SELECTOR: [u8; 4] = [103u8, 152u8, 141u8, 51u8];
4248            #[inline]
4249            fn new<'a>(
4250                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4251            ) -> Self {
4252                tuple.into()
4253            }
4254            #[inline]
4255            fn tokenize(&self) -> Self::Token<'_> {
4256                ()
4257            }
4258            #[inline]
4259            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4260                <Self::Parameters<
4261                    '_,
4262                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4263                    .map(Self::new)
4264            }
4265        }
4266    };
4267    #[derive(serde::Serialize, serde::Deserialize)]
4268    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4269    /**Custom error with signature `InvalidBLSSignature()` and selector `0xab1b236b`.
4270```solidity
4271error InvalidBLSSignature();
4272```*/
4273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4274    #[derive(Clone)]
4275    pub struct InvalidBLSSignature;
4276    #[allow(
4277        non_camel_case_types,
4278        non_snake_case,
4279        clippy::pub_underscore_fields,
4280        clippy::style
4281    )]
4282    const _: () = {
4283        use alloy::sol_types as alloy_sol_types;
4284        #[doc(hidden)]
4285        type UnderlyingSolTuple<'a> = ();
4286        #[doc(hidden)]
4287        type UnderlyingRustTuple<'a> = ();
4288        #[cfg(test)]
4289        #[allow(dead_code, unreachable_patterns)]
4290        fn _type_assertion(
4291            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4292        ) {
4293            match _t {
4294                alloy_sol_types::private::AssertTypeEq::<
4295                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4296                >(_) => {}
4297            }
4298        }
4299        #[automatically_derived]
4300        #[doc(hidden)]
4301        impl ::core::convert::From<InvalidBLSSignature> for UnderlyingRustTuple<'_> {
4302            fn from(value: InvalidBLSSignature) -> Self {
4303                ()
4304            }
4305        }
4306        #[automatically_derived]
4307        #[doc(hidden)]
4308        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSSignature {
4309            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4310                Self
4311            }
4312        }
4313        #[automatically_derived]
4314        impl alloy_sol_types::SolError for InvalidBLSSignature {
4315            type Parameters<'a> = UnderlyingSolTuple<'a>;
4316            type Token<'a> = <Self::Parameters<
4317                'a,
4318            > as alloy_sol_types::SolType>::Token<'a>;
4319            const SIGNATURE: &'static str = "InvalidBLSSignature()";
4320            const SELECTOR: [u8; 4] = [171u8, 27u8, 35u8, 107u8];
4321            #[inline]
4322            fn new<'a>(
4323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4324            ) -> Self {
4325                tuple.into()
4326            }
4327            #[inline]
4328            fn tokenize(&self) -> Self::Token<'_> {
4329                ()
4330            }
4331            #[inline]
4332            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4333                <Self::Parameters<
4334                    '_,
4335                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4336                    .map(Self::new)
4337            }
4338        }
4339    };
4340    #[derive(serde::Serialize, serde::Deserialize)]
4341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4342    /**Custom error with signature `InvalidQuorumApkHash()` and selector `0xe1310aed`.
4343```solidity
4344error InvalidQuorumApkHash();
4345```*/
4346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4347    #[derive(Clone)]
4348    pub struct InvalidQuorumApkHash;
4349    #[allow(
4350        non_camel_case_types,
4351        non_snake_case,
4352        clippy::pub_underscore_fields,
4353        clippy::style
4354    )]
4355    const _: () = {
4356        use alloy::sol_types as alloy_sol_types;
4357        #[doc(hidden)]
4358        type UnderlyingSolTuple<'a> = ();
4359        #[doc(hidden)]
4360        type UnderlyingRustTuple<'a> = ();
4361        #[cfg(test)]
4362        #[allow(dead_code, unreachable_patterns)]
4363        fn _type_assertion(
4364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4365        ) {
4366            match _t {
4367                alloy_sol_types::private::AssertTypeEq::<
4368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4369                >(_) => {}
4370            }
4371        }
4372        #[automatically_derived]
4373        #[doc(hidden)]
4374        impl ::core::convert::From<InvalidQuorumApkHash> for UnderlyingRustTuple<'_> {
4375            fn from(value: InvalidQuorumApkHash) -> Self {
4376                ()
4377            }
4378        }
4379        #[automatically_derived]
4380        #[doc(hidden)]
4381        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidQuorumApkHash {
4382            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4383                Self
4384            }
4385        }
4386        #[automatically_derived]
4387        impl alloy_sol_types::SolError for InvalidQuorumApkHash {
4388            type Parameters<'a> = UnderlyingSolTuple<'a>;
4389            type Token<'a> = <Self::Parameters<
4390                'a,
4391            > as alloy_sol_types::SolType>::Token<'a>;
4392            const SIGNATURE: &'static str = "InvalidQuorumApkHash()";
4393            const SELECTOR: [u8; 4] = [225u8, 49u8, 10u8, 237u8];
4394            #[inline]
4395            fn new<'a>(
4396                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4397            ) -> Self {
4398                tuple.into()
4399            }
4400            #[inline]
4401            fn tokenize(&self) -> Self::Token<'_> {
4402                ()
4403            }
4404            #[inline]
4405            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4406                <Self::Parameters<
4407                    '_,
4408                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4409                    .map(Self::new)
4410            }
4411        }
4412    };
4413    #[derive(serde::Serialize, serde::Deserialize)]
4414    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4415    /**Custom error with signature `InvalidReferenceBlocknumber()` and selector `0x4b874f45`.
4416```solidity
4417error InvalidReferenceBlocknumber();
4418```*/
4419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4420    #[derive(Clone)]
4421    pub struct InvalidReferenceBlocknumber;
4422    #[allow(
4423        non_camel_case_types,
4424        non_snake_case,
4425        clippy::pub_underscore_fields,
4426        clippy::style
4427    )]
4428    const _: () = {
4429        use alloy::sol_types as alloy_sol_types;
4430        #[doc(hidden)]
4431        type UnderlyingSolTuple<'a> = ();
4432        #[doc(hidden)]
4433        type UnderlyingRustTuple<'a> = ();
4434        #[cfg(test)]
4435        #[allow(dead_code, unreachable_patterns)]
4436        fn _type_assertion(
4437            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4438        ) {
4439            match _t {
4440                alloy_sol_types::private::AssertTypeEq::<
4441                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4442                >(_) => {}
4443            }
4444        }
4445        #[automatically_derived]
4446        #[doc(hidden)]
4447        impl ::core::convert::From<InvalidReferenceBlocknumber>
4448        for UnderlyingRustTuple<'_> {
4449            fn from(value: InvalidReferenceBlocknumber) -> Self {
4450                ()
4451            }
4452        }
4453        #[automatically_derived]
4454        #[doc(hidden)]
4455        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4456        for InvalidReferenceBlocknumber {
4457            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4458                Self
4459            }
4460        }
4461        #[automatically_derived]
4462        impl alloy_sol_types::SolError for InvalidReferenceBlocknumber {
4463            type Parameters<'a> = UnderlyingSolTuple<'a>;
4464            type Token<'a> = <Self::Parameters<
4465                'a,
4466            > as alloy_sol_types::SolType>::Token<'a>;
4467            const SIGNATURE: &'static str = "InvalidReferenceBlocknumber()";
4468            const SELECTOR: [u8; 4] = [75u8, 135u8, 79u8, 69u8];
4469            #[inline]
4470            fn new<'a>(
4471                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4472            ) -> Self {
4473                tuple.into()
4474            }
4475            #[inline]
4476            fn tokenize(&self) -> Self::Token<'_> {
4477                ()
4478            }
4479            #[inline]
4480            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4481                <Self::Parameters<
4482                    '_,
4483                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4484                    .map(Self::new)
4485            }
4486        }
4487    };
4488    #[derive(serde::Serialize, serde::Deserialize)]
4489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4490    /**Custom error with signature `NoOngoingDeployment()` and selector `0xc8748ab4`.
4491```solidity
4492error NoOngoingDeployment();
4493```*/
4494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4495    #[derive(Clone)]
4496    pub struct NoOngoingDeployment;
4497    #[allow(
4498        non_camel_case_types,
4499        non_snake_case,
4500        clippy::pub_underscore_fields,
4501        clippy::style
4502    )]
4503    const _: () = {
4504        use alloy::sol_types as alloy_sol_types;
4505        #[doc(hidden)]
4506        type UnderlyingSolTuple<'a> = ();
4507        #[doc(hidden)]
4508        type UnderlyingRustTuple<'a> = ();
4509        #[cfg(test)]
4510        #[allow(dead_code, unreachable_patterns)]
4511        fn _type_assertion(
4512            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4513        ) {
4514            match _t {
4515                alloy_sol_types::private::AssertTypeEq::<
4516                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4517                >(_) => {}
4518            }
4519        }
4520        #[automatically_derived]
4521        #[doc(hidden)]
4522        impl ::core::convert::From<NoOngoingDeployment> for UnderlyingRustTuple<'_> {
4523            fn from(value: NoOngoingDeployment) -> Self {
4524                ()
4525            }
4526        }
4527        #[automatically_derived]
4528        #[doc(hidden)]
4529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoOngoingDeployment {
4530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4531                Self
4532            }
4533        }
4534        #[automatically_derived]
4535        impl alloy_sol_types::SolError for NoOngoingDeployment {
4536            type Parameters<'a> = UnderlyingSolTuple<'a>;
4537            type Token<'a> = <Self::Parameters<
4538                'a,
4539            > as alloy_sol_types::SolType>::Token<'a>;
4540            const SIGNATURE: &'static str = "NoOngoingDeployment()";
4541            const SELECTOR: [u8; 4] = [200u8, 116u8, 138u8, 180u8];
4542            #[inline]
4543            fn new<'a>(
4544                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4545            ) -> Self {
4546                tuple.into()
4547            }
4548            #[inline]
4549            fn tokenize(&self) -> Self::Token<'_> {
4550                ()
4551            }
4552            #[inline]
4553            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4554                <Self::Parameters<
4555                    '_,
4556                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4557                    .map(Self::new)
4558            }
4559        }
4560    };
4561    #[derive(serde::Serialize, serde::Deserialize)]
4562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4563    /**Custom error with signature `NonSignerPubkeysNotSorted()` and selector `0xff719414`.
4564```solidity
4565error NonSignerPubkeysNotSorted();
4566```*/
4567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4568    #[derive(Clone)]
4569    pub struct NonSignerPubkeysNotSorted;
4570    #[allow(
4571        non_camel_case_types,
4572        non_snake_case,
4573        clippy::pub_underscore_fields,
4574        clippy::style
4575    )]
4576    const _: () = {
4577        use alloy::sol_types as alloy_sol_types;
4578        #[doc(hidden)]
4579        type UnderlyingSolTuple<'a> = ();
4580        #[doc(hidden)]
4581        type UnderlyingRustTuple<'a> = ();
4582        #[cfg(test)]
4583        #[allow(dead_code, unreachable_patterns)]
4584        fn _type_assertion(
4585            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4586        ) {
4587            match _t {
4588                alloy_sol_types::private::AssertTypeEq::<
4589                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4590                >(_) => {}
4591            }
4592        }
4593        #[automatically_derived]
4594        #[doc(hidden)]
4595        impl ::core::convert::From<NonSignerPubkeysNotSorted>
4596        for UnderlyingRustTuple<'_> {
4597            fn from(value: NonSignerPubkeysNotSorted) -> Self {
4598                ()
4599            }
4600        }
4601        #[automatically_derived]
4602        #[doc(hidden)]
4603        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4604        for NonSignerPubkeysNotSorted {
4605            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4606                Self
4607            }
4608        }
4609        #[automatically_derived]
4610        impl alloy_sol_types::SolError for NonSignerPubkeysNotSorted {
4611            type Parameters<'a> = UnderlyingSolTuple<'a>;
4612            type Token<'a> = <Self::Parameters<
4613                'a,
4614            > as alloy_sol_types::SolType>::Token<'a>;
4615            const SIGNATURE: &'static str = "NonSignerPubkeysNotSorted()";
4616            const SELECTOR: [u8; 4] = [255u8, 113u8, 148u8, 20u8];
4617            #[inline]
4618            fn new<'a>(
4619                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4620            ) -> Self {
4621                tuple.into()
4622            }
4623            #[inline]
4624            fn tokenize(&self) -> Self::Token<'_> {
4625                ()
4626            }
4627            #[inline]
4628            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4629                <Self::Parameters<
4630                    '_,
4631                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4632                    .map(Self::new)
4633            }
4634        }
4635    };
4636    #[derive(serde::Serialize, serde::Deserialize)]
4637    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4638    /**Custom error with signature `OnlyRegistryCoordinatorOwner()` and selector `0xe0e1e762`.
4639```solidity
4640error OnlyRegistryCoordinatorOwner();
4641```*/
4642    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4643    #[derive(Clone)]
4644    pub struct OnlyRegistryCoordinatorOwner;
4645    #[allow(
4646        non_camel_case_types,
4647        non_snake_case,
4648        clippy::pub_underscore_fields,
4649        clippy::style
4650    )]
4651    const _: () = {
4652        use alloy::sol_types as alloy_sol_types;
4653        #[doc(hidden)]
4654        type UnderlyingSolTuple<'a> = ();
4655        #[doc(hidden)]
4656        type UnderlyingRustTuple<'a> = ();
4657        #[cfg(test)]
4658        #[allow(dead_code, unreachable_patterns)]
4659        fn _type_assertion(
4660            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4661        ) {
4662            match _t {
4663                alloy_sol_types::private::AssertTypeEq::<
4664                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4665                >(_) => {}
4666            }
4667        }
4668        #[automatically_derived]
4669        #[doc(hidden)]
4670        impl ::core::convert::From<OnlyRegistryCoordinatorOwner>
4671        for UnderlyingRustTuple<'_> {
4672            fn from(value: OnlyRegistryCoordinatorOwner) -> Self {
4673                ()
4674            }
4675        }
4676        #[automatically_derived]
4677        #[doc(hidden)]
4678        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4679        for OnlyRegistryCoordinatorOwner {
4680            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4681                Self
4682            }
4683        }
4684        #[automatically_derived]
4685        impl alloy_sol_types::SolError for OnlyRegistryCoordinatorOwner {
4686            type Parameters<'a> = UnderlyingSolTuple<'a>;
4687            type Token<'a> = <Self::Parameters<
4688                'a,
4689            > as alloy_sol_types::SolType>::Token<'a>;
4690            const SIGNATURE: &'static str = "OnlyRegistryCoordinatorOwner()";
4691            const SELECTOR: [u8; 4] = [224u8, 225u8, 231u8, 98u8];
4692            #[inline]
4693            fn new<'a>(
4694                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4695            ) -> Self {
4696                tuple.into()
4697            }
4698            #[inline]
4699            fn tokenize(&self) -> Self::Token<'_> {
4700                ()
4701            }
4702            #[inline]
4703            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4704                <Self::Parameters<
4705                    '_,
4706                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4707                    .map(Self::new)
4708            }
4709        }
4710    };
4711    #[derive(serde::Serialize, serde::Deserialize)]
4712    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4713    /**Custom error with signature `ScalarTooLarge()` and selector `0xff89d4fa`.
4714```solidity
4715error ScalarTooLarge();
4716```*/
4717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4718    #[derive(Clone)]
4719    pub struct ScalarTooLarge;
4720    #[allow(
4721        non_camel_case_types,
4722        non_snake_case,
4723        clippy::pub_underscore_fields,
4724        clippy::style
4725    )]
4726    const _: () = {
4727        use alloy::sol_types as alloy_sol_types;
4728        #[doc(hidden)]
4729        type UnderlyingSolTuple<'a> = ();
4730        #[doc(hidden)]
4731        type UnderlyingRustTuple<'a> = ();
4732        #[cfg(test)]
4733        #[allow(dead_code, unreachable_patterns)]
4734        fn _type_assertion(
4735            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4736        ) {
4737            match _t {
4738                alloy_sol_types::private::AssertTypeEq::<
4739                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4740                >(_) => {}
4741            }
4742        }
4743        #[automatically_derived]
4744        #[doc(hidden)]
4745        impl ::core::convert::From<ScalarTooLarge> for UnderlyingRustTuple<'_> {
4746            fn from(value: ScalarTooLarge) -> Self {
4747                ()
4748            }
4749        }
4750        #[automatically_derived]
4751        #[doc(hidden)]
4752        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ScalarTooLarge {
4753            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4754                Self
4755            }
4756        }
4757        #[automatically_derived]
4758        impl alloy_sol_types::SolError for ScalarTooLarge {
4759            type Parameters<'a> = UnderlyingSolTuple<'a>;
4760            type Token<'a> = <Self::Parameters<
4761                'a,
4762            > as alloy_sol_types::SolType>::Token<'a>;
4763            const SIGNATURE: &'static str = "ScalarTooLarge()";
4764            const SELECTOR: [u8; 4] = [255u8, 137u8, 212u8, 250u8];
4765            #[inline]
4766            fn new<'a>(
4767                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4768            ) -> Self {
4769                tuple.into()
4770            }
4771            #[inline]
4772            fn tokenize(&self) -> Self::Token<'_> {
4773                ()
4774            }
4775            #[inline]
4776            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4777                <Self::Parameters<
4778                    '_,
4779                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4780                    .map(Self::new)
4781            }
4782        }
4783    };
4784    #[derive(serde::Serialize, serde::Deserialize)]
4785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4786    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4787```solidity
4788error ZeroAddress();
4789```*/
4790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4791    #[derive(Clone)]
4792    pub struct ZeroAddress;
4793    #[allow(
4794        non_camel_case_types,
4795        non_snake_case,
4796        clippy::pub_underscore_fields,
4797        clippy::style
4798    )]
4799    const _: () = {
4800        use alloy::sol_types as alloy_sol_types;
4801        #[doc(hidden)]
4802        type UnderlyingSolTuple<'a> = ();
4803        #[doc(hidden)]
4804        type UnderlyingRustTuple<'a> = ();
4805        #[cfg(test)]
4806        #[allow(dead_code, unreachable_patterns)]
4807        fn _type_assertion(
4808            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4809        ) {
4810            match _t {
4811                alloy_sol_types::private::AssertTypeEq::<
4812                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4813                >(_) => {}
4814            }
4815        }
4816        #[automatically_derived]
4817        #[doc(hidden)]
4818        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4819            fn from(value: ZeroAddress) -> Self {
4820                ()
4821            }
4822        }
4823        #[automatically_derived]
4824        #[doc(hidden)]
4825        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4826            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4827                Self
4828            }
4829        }
4830        #[automatically_derived]
4831        impl alloy_sol_types::SolError for ZeroAddress {
4832            type Parameters<'a> = UnderlyingSolTuple<'a>;
4833            type Token<'a> = <Self::Parameters<
4834                'a,
4835            > as alloy_sol_types::SolType>::Token<'a>;
4836            const SIGNATURE: &'static str = "ZeroAddress()";
4837            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4838            #[inline]
4839            fn new<'a>(
4840                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4841            ) -> Self {
4842                tuple.into()
4843            }
4844            #[inline]
4845            fn tokenize(&self) -> Self::Token<'_> {
4846                ()
4847            }
4848            #[inline]
4849            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4850                <Self::Parameters<
4851                    '_,
4852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4853                    .map(Self::new)
4854            }
4855        }
4856    };
4857    #[derive(serde::Serialize, serde::Deserialize)]
4858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4859    /**Custom error with signature `ZeroValue()` and selector `0x7c946ed7`.
4860```solidity
4861error ZeroValue();
4862```*/
4863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4864    #[derive(Clone)]
4865    pub struct ZeroValue;
4866    #[allow(
4867        non_camel_case_types,
4868        non_snake_case,
4869        clippy::pub_underscore_fields,
4870        clippy::style
4871    )]
4872    const _: () = {
4873        use alloy::sol_types as alloy_sol_types;
4874        #[doc(hidden)]
4875        type UnderlyingSolTuple<'a> = ();
4876        #[doc(hidden)]
4877        type UnderlyingRustTuple<'a> = ();
4878        #[cfg(test)]
4879        #[allow(dead_code, unreachable_patterns)]
4880        fn _type_assertion(
4881            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4882        ) {
4883            match _t {
4884                alloy_sol_types::private::AssertTypeEq::<
4885                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4886                >(_) => {}
4887            }
4888        }
4889        #[automatically_derived]
4890        #[doc(hidden)]
4891        impl ::core::convert::From<ZeroValue> for UnderlyingRustTuple<'_> {
4892            fn from(value: ZeroValue) -> Self {
4893                ()
4894            }
4895        }
4896        #[automatically_derived]
4897        #[doc(hidden)]
4898        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroValue {
4899            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4900                Self
4901            }
4902        }
4903        #[automatically_derived]
4904        impl alloy_sol_types::SolError for ZeroValue {
4905            type Parameters<'a> = UnderlyingSolTuple<'a>;
4906            type Token<'a> = <Self::Parameters<
4907                'a,
4908            > as alloy_sol_types::SolType>::Token<'a>;
4909            const SIGNATURE: &'static str = "ZeroValue()";
4910            const SELECTOR: [u8; 4] = [124u8, 148u8, 110u8, 215u8];
4911            #[inline]
4912            fn new<'a>(
4913                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4914            ) -> Self {
4915                tuple.into()
4916            }
4917            #[inline]
4918            fn tokenize(&self) -> Self::Token<'_> {
4919                ()
4920            }
4921            #[inline]
4922            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4923                <Self::Parameters<
4924                    '_,
4925                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4926                    .map(Self::new)
4927            }
4928        }
4929    };
4930    #[derive(serde::Serialize, serde::Deserialize)]
4931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4932    /**Event with signature `AggregatorUpdated(address,address)` and selector `0x89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2`.
4933```solidity
4934event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator);
4935```*/
4936    #[allow(
4937        non_camel_case_types,
4938        non_snake_case,
4939        clippy::pub_underscore_fields,
4940        clippy::style
4941    )]
4942    #[derive(Clone)]
4943    pub struct AggregatorUpdated {
4944        #[allow(missing_docs)]
4945        pub oldAggregator: alloy::sol_types::private::Address,
4946        #[allow(missing_docs)]
4947        pub newAggregator: alloy::sol_types::private::Address,
4948    }
4949    #[allow(
4950        non_camel_case_types,
4951        non_snake_case,
4952        clippy::pub_underscore_fields,
4953        clippy::style
4954    )]
4955    const _: () = {
4956        use alloy::sol_types as alloy_sol_types;
4957        #[automatically_derived]
4958        impl alloy_sol_types::SolEvent for AggregatorUpdated {
4959            type DataTuple<'a> = ();
4960            type DataToken<'a> = <Self::DataTuple<
4961                'a,
4962            > as alloy_sol_types::SolType>::Token<'a>;
4963            type TopicList = (
4964                alloy_sol_types::sol_data::FixedBytes<32>,
4965                alloy::sol_types::sol_data::Address,
4966                alloy::sol_types::sol_data::Address,
4967            );
4968            const SIGNATURE: &'static str = "AggregatorUpdated(address,address)";
4969            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4970                137u8, 186u8, 171u8, 239u8, 125u8, 253u8, 6u8, 131u8, 192u8, 172u8, 22u8,
4971                253u8, 42u8, 132u8, 49u8, 197u8, 27u8, 73u8, 251u8, 230u8, 84u8, 195u8,
4972                247u8, 181u8, 239u8, 25u8, 118u8, 62u8, 44u8, 205u8, 136u8, 242u8,
4973            ]);
4974            const ANONYMOUS: bool = false;
4975            #[allow(unused_variables)]
4976            #[inline]
4977            fn new(
4978                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4979                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4980            ) -> Self {
4981                Self {
4982                    oldAggregator: topics.1,
4983                    newAggregator: topics.2,
4984                }
4985            }
4986            #[inline]
4987            fn check_signature(
4988                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4989            ) -> alloy_sol_types::Result<()> {
4990                if topics.0 != Self::SIGNATURE_HASH {
4991                    return Err(
4992                        alloy_sol_types::Error::invalid_event_signature_hash(
4993                            Self::SIGNATURE,
4994                            topics.0,
4995                            Self::SIGNATURE_HASH,
4996                        ),
4997                    );
4998                }
4999                Ok(())
5000            }
5001            #[inline]
5002            fn tokenize_body(&self) -> Self::DataToken<'_> {
5003                ()
5004            }
5005            #[inline]
5006            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5007                (
5008                    Self::SIGNATURE_HASH.into(),
5009                    self.oldAggregator.clone(),
5010                    self.newAggregator.clone(),
5011                )
5012            }
5013            #[inline]
5014            fn encode_topics_raw(
5015                &self,
5016                out: &mut [alloy_sol_types::abi::token::WordToken],
5017            ) -> alloy_sol_types::Result<()> {
5018                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5019                    return Err(alloy_sol_types::Error::Overrun);
5020                }
5021                out[0usize] = alloy_sol_types::abi::token::WordToken(
5022                    Self::SIGNATURE_HASH,
5023                );
5024                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5025                    &self.oldAggregator,
5026                );
5027                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5028                    &self.newAggregator,
5029                );
5030                Ok(())
5031            }
5032        }
5033        #[automatically_derived]
5034        impl alloy_sol_types::private::IntoLogData for AggregatorUpdated {
5035            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5036                From::from(self)
5037            }
5038            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5039                From::from(&self)
5040            }
5041        }
5042        #[automatically_derived]
5043        impl From<&AggregatorUpdated> for alloy_sol_types::private::LogData {
5044            #[inline]
5045            fn from(this: &AggregatorUpdated) -> alloy_sol_types::private::LogData {
5046                alloy_sol_types::SolEvent::encode_log_data(this)
5047            }
5048        }
5049    };
5050    #[derive(serde::Serialize, serde::Deserialize)]
5051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5052    /**Event with signature `GeneratorUpdated(address,address)` and selector `0x0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b`.
5053```solidity
5054event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator);
5055```*/
5056    #[allow(
5057        non_camel_case_types,
5058        non_snake_case,
5059        clippy::pub_underscore_fields,
5060        clippy::style
5061    )]
5062    #[derive(Clone)]
5063    pub struct GeneratorUpdated {
5064        #[allow(missing_docs)]
5065        pub oldGenerator: alloy::sol_types::private::Address,
5066        #[allow(missing_docs)]
5067        pub newGenerator: alloy::sol_types::private::Address,
5068    }
5069    #[allow(
5070        non_camel_case_types,
5071        non_snake_case,
5072        clippy::pub_underscore_fields,
5073        clippy::style
5074    )]
5075    const _: () = {
5076        use alloy::sol_types as alloy_sol_types;
5077        #[automatically_derived]
5078        impl alloy_sol_types::SolEvent for GeneratorUpdated {
5079            type DataTuple<'a> = ();
5080            type DataToken<'a> = <Self::DataTuple<
5081                'a,
5082            > as alloy_sol_types::SolType>::Token<'a>;
5083            type TopicList = (
5084                alloy_sol_types::sol_data::FixedBytes<32>,
5085                alloy::sol_types::sol_data::Address,
5086                alloy::sol_types::sol_data::Address,
5087            );
5088            const SIGNATURE: &'static str = "GeneratorUpdated(address,address)";
5089            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5090                13u8, 223u8, 171u8, 138u8, 99u8, 93u8, 113u8, 241u8, 93u8, 114u8, 226u8,
5091                210u8, 223u8, 245u8, 93u8, 50u8, 17u8, 157u8, 19u8, 39u8, 13u8, 46u8,
5092                164u8, 195u8, 220u8, 0u8, 67u8, 182u8, 108u8, 44u8, 71u8, 107u8,
5093            ]);
5094            const ANONYMOUS: bool = false;
5095            #[allow(unused_variables)]
5096            #[inline]
5097            fn new(
5098                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5099                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5100            ) -> Self {
5101                Self {
5102                    oldGenerator: topics.1,
5103                    newGenerator: topics.2,
5104                }
5105            }
5106            #[inline]
5107            fn check_signature(
5108                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5109            ) -> alloy_sol_types::Result<()> {
5110                if topics.0 != Self::SIGNATURE_HASH {
5111                    return Err(
5112                        alloy_sol_types::Error::invalid_event_signature_hash(
5113                            Self::SIGNATURE,
5114                            topics.0,
5115                            Self::SIGNATURE_HASH,
5116                        ),
5117                    );
5118                }
5119                Ok(())
5120            }
5121            #[inline]
5122            fn tokenize_body(&self) -> Self::DataToken<'_> {
5123                ()
5124            }
5125            #[inline]
5126            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5127                (
5128                    Self::SIGNATURE_HASH.into(),
5129                    self.oldGenerator.clone(),
5130                    self.newGenerator.clone(),
5131                )
5132            }
5133            #[inline]
5134            fn encode_topics_raw(
5135                &self,
5136                out: &mut [alloy_sol_types::abi::token::WordToken],
5137            ) -> alloy_sol_types::Result<()> {
5138                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5139                    return Err(alloy_sol_types::Error::Overrun);
5140                }
5141                out[0usize] = alloy_sol_types::abi::token::WordToken(
5142                    Self::SIGNATURE_HASH,
5143                );
5144                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5145                    &self.oldGenerator,
5146                );
5147                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5148                    &self.newGenerator,
5149                );
5150                Ok(())
5151            }
5152        }
5153        #[automatically_derived]
5154        impl alloy_sol_types::private::IntoLogData for GeneratorUpdated {
5155            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5156                From::from(self)
5157            }
5158            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5159                From::from(&self)
5160            }
5161        }
5162        #[automatically_derived]
5163        impl From<&GeneratorUpdated> for alloy_sol_types::private::LogData {
5164            #[inline]
5165            fn from(this: &GeneratorUpdated) -> alloy_sol_types::private::LogData {
5166                alloy_sol_types::SolEvent::encode_log_data(this)
5167            }
5168        }
5169    };
5170    #[derive(serde::Serialize, serde::Deserialize)]
5171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5172    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5173```solidity
5174event Initialized(uint8 version);
5175```*/
5176    #[allow(
5177        non_camel_case_types,
5178        non_snake_case,
5179        clippy::pub_underscore_fields,
5180        clippy::style
5181    )]
5182    #[derive(Clone)]
5183    pub struct Initialized {
5184        #[allow(missing_docs)]
5185        pub version: u8,
5186    }
5187    #[allow(
5188        non_camel_case_types,
5189        non_snake_case,
5190        clippy::pub_underscore_fields,
5191        clippy::style
5192    )]
5193    const _: () = {
5194        use alloy::sol_types as alloy_sol_types;
5195        #[automatically_derived]
5196        impl alloy_sol_types::SolEvent for Initialized {
5197            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5198            type DataToken<'a> = <Self::DataTuple<
5199                'a,
5200            > as alloy_sol_types::SolType>::Token<'a>;
5201            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5202            const SIGNATURE: &'static str = "Initialized(uint8)";
5203            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5204                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5205                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5206                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5207            ]);
5208            const ANONYMOUS: bool = false;
5209            #[allow(unused_variables)]
5210            #[inline]
5211            fn new(
5212                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5213                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5214            ) -> Self {
5215                Self { version: data.0 }
5216            }
5217            #[inline]
5218            fn check_signature(
5219                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5220            ) -> alloy_sol_types::Result<()> {
5221                if topics.0 != Self::SIGNATURE_HASH {
5222                    return Err(
5223                        alloy_sol_types::Error::invalid_event_signature_hash(
5224                            Self::SIGNATURE,
5225                            topics.0,
5226                            Self::SIGNATURE_HASH,
5227                        ),
5228                    );
5229                }
5230                Ok(())
5231            }
5232            #[inline]
5233            fn tokenize_body(&self) -> Self::DataToken<'_> {
5234                (
5235                    <alloy::sol_types::sol_data::Uint<
5236                        8,
5237                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5238                )
5239            }
5240            #[inline]
5241            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5242                (Self::SIGNATURE_HASH.into(),)
5243            }
5244            #[inline]
5245            fn encode_topics_raw(
5246                &self,
5247                out: &mut [alloy_sol_types::abi::token::WordToken],
5248            ) -> alloy_sol_types::Result<()> {
5249                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5250                    return Err(alloy_sol_types::Error::Overrun);
5251                }
5252                out[0usize] = alloy_sol_types::abi::token::WordToken(
5253                    Self::SIGNATURE_HASH,
5254                );
5255                Ok(())
5256            }
5257        }
5258        #[automatically_derived]
5259        impl alloy_sol_types::private::IntoLogData for Initialized {
5260            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5261                From::from(self)
5262            }
5263            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5264                From::from(&self)
5265            }
5266        }
5267        #[automatically_derived]
5268        impl From<&Initialized> for alloy_sol_types::private::LogData {
5269            #[inline]
5270            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5271                alloy_sol_types::SolEvent::encode_log_data(this)
5272            }
5273        }
5274    };
5275    #[derive(serde::Serialize, serde::Deserialize)]
5276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5277    /**Event with signature `NewTaskCreated(uint32,(uint32,uint32,bytes,bytes))` and selector `0xba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf0`.
5278```solidity
5279event NewTaskCreated(uint32 indexed taskIndex, TaskManager.Task task);
5280```*/
5281    #[allow(
5282        non_camel_case_types,
5283        non_snake_case,
5284        clippy::pub_underscore_fields,
5285        clippy::style
5286    )]
5287    #[derive(Clone)]
5288    pub struct NewTaskCreated {
5289        #[allow(missing_docs)]
5290        pub taskIndex: u32,
5291        #[allow(missing_docs)]
5292        pub task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
5293    }
5294    #[allow(
5295        non_camel_case_types,
5296        non_snake_case,
5297        clippy::pub_underscore_fields,
5298        clippy::style
5299    )]
5300    const _: () = {
5301        use alloy::sol_types as alloy_sol_types;
5302        #[automatically_derived]
5303        impl alloy_sol_types::SolEvent for NewTaskCreated {
5304            type DataTuple<'a> = (TaskManager::Task,);
5305            type DataToken<'a> = <Self::DataTuple<
5306                'a,
5307            > as alloy_sol_types::SolType>::Token<'a>;
5308            type TopicList = (
5309                alloy_sol_types::sol_data::FixedBytes<32>,
5310                alloy::sol_types::sol_data::Uint<32>,
5311            );
5312            const SIGNATURE: &'static str = "NewTaskCreated(uint32,(uint32,uint32,bytes,bytes))";
5313            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5314                186u8, 55u8, 131u8, 43u8, 221u8, 33u8, 116u8, 43u8, 134u8, 166u8, 51u8,
5315                4u8, 59u8, 146u8, 58u8, 154u8, 169u8, 120u8, 241u8, 207u8, 178u8, 178u8,
5316                116u8, 198u8, 102u8, 30u8, 181u8, 115u8, 207u8, 9u8, 43u8, 240u8,
5317            ]);
5318            const ANONYMOUS: bool = false;
5319            #[allow(unused_variables)]
5320            #[inline]
5321            fn new(
5322                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5323                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5324            ) -> Self {
5325                Self {
5326                    taskIndex: topics.1,
5327                    task: data.0,
5328                }
5329            }
5330            #[inline]
5331            fn check_signature(
5332                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5333            ) -> alloy_sol_types::Result<()> {
5334                if topics.0 != Self::SIGNATURE_HASH {
5335                    return Err(
5336                        alloy_sol_types::Error::invalid_event_signature_hash(
5337                            Self::SIGNATURE,
5338                            topics.0,
5339                            Self::SIGNATURE_HASH,
5340                        ),
5341                    );
5342                }
5343                Ok(())
5344            }
5345            #[inline]
5346            fn tokenize_body(&self) -> Self::DataToken<'_> {
5347                (<TaskManager::Task as alloy_sol_types::SolType>::tokenize(&self.task),)
5348            }
5349            #[inline]
5350            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5351                (Self::SIGNATURE_HASH.into(), self.taskIndex.clone())
5352            }
5353            #[inline]
5354            fn encode_topics_raw(
5355                &self,
5356                out: &mut [alloy_sol_types::abi::token::WordToken],
5357            ) -> alloy_sol_types::Result<()> {
5358                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5359                    return Err(alloy_sol_types::Error::Overrun);
5360                }
5361                out[0usize] = alloy_sol_types::abi::token::WordToken(
5362                    Self::SIGNATURE_HASH,
5363                );
5364                out[1usize] = <alloy::sol_types::sol_data::Uint<
5365                    32,
5366                > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
5367                Ok(())
5368            }
5369        }
5370        #[automatically_derived]
5371        impl alloy_sol_types::private::IntoLogData for NewTaskCreated {
5372            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5373                From::from(self)
5374            }
5375            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5376                From::from(&self)
5377            }
5378        }
5379        #[automatically_derived]
5380        impl From<&NewTaskCreated> for alloy_sol_types::private::LogData {
5381            #[inline]
5382            fn from(this: &NewTaskCreated) -> alloy_sol_types::private::LogData {
5383                alloy_sol_types::SolEvent::encode_log_data(this)
5384            }
5385        }
5386    };
5387    #[derive(serde::Serialize, serde::Deserialize)]
5388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5389    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5390```solidity
5391event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5392```*/
5393    #[allow(
5394        non_camel_case_types,
5395        non_snake_case,
5396        clippy::pub_underscore_fields,
5397        clippy::style
5398    )]
5399    #[derive(Clone)]
5400    pub struct OwnershipTransferred {
5401        #[allow(missing_docs)]
5402        pub previousOwner: alloy::sol_types::private::Address,
5403        #[allow(missing_docs)]
5404        pub newOwner: alloy::sol_types::private::Address,
5405    }
5406    #[allow(
5407        non_camel_case_types,
5408        non_snake_case,
5409        clippy::pub_underscore_fields,
5410        clippy::style
5411    )]
5412    const _: () = {
5413        use alloy::sol_types as alloy_sol_types;
5414        #[automatically_derived]
5415        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5416            type DataTuple<'a> = ();
5417            type DataToken<'a> = <Self::DataTuple<
5418                'a,
5419            > as alloy_sol_types::SolType>::Token<'a>;
5420            type TopicList = (
5421                alloy_sol_types::sol_data::FixedBytes<32>,
5422                alloy::sol_types::sol_data::Address,
5423                alloy::sol_types::sol_data::Address,
5424            );
5425            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5426            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5427                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5428                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5429                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5430            ]);
5431            const ANONYMOUS: bool = false;
5432            #[allow(unused_variables)]
5433            #[inline]
5434            fn new(
5435                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5436                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5437            ) -> Self {
5438                Self {
5439                    previousOwner: topics.1,
5440                    newOwner: topics.2,
5441                }
5442            }
5443            #[inline]
5444            fn check_signature(
5445                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5446            ) -> alloy_sol_types::Result<()> {
5447                if topics.0 != Self::SIGNATURE_HASH {
5448                    return Err(
5449                        alloy_sol_types::Error::invalid_event_signature_hash(
5450                            Self::SIGNATURE,
5451                            topics.0,
5452                            Self::SIGNATURE_HASH,
5453                        ),
5454                    );
5455                }
5456                Ok(())
5457            }
5458            #[inline]
5459            fn tokenize_body(&self) -> Self::DataToken<'_> {
5460                ()
5461            }
5462            #[inline]
5463            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5464                (
5465                    Self::SIGNATURE_HASH.into(),
5466                    self.previousOwner.clone(),
5467                    self.newOwner.clone(),
5468                )
5469            }
5470            #[inline]
5471            fn encode_topics_raw(
5472                &self,
5473                out: &mut [alloy_sol_types::abi::token::WordToken],
5474            ) -> alloy_sol_types::Result<()> {
5475                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5476                    return Err(alloy_sol_types::Error::Overrun);
5477                }
5478                out[0usize] = alloy_sol_types::abi::token::WordToken(
5479                    Self::SIGNATURE_HASH,
5480                );
5481                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5482                    &self.previousOwner,
5483                );
5484                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5485                    &self.newOwner,
5486                );
5487                Ok(())
5488            }
5489        }
5490        #[automatically_derived]
5491        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5492            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5493                From::from(self)
5494            }
5495            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5496                From::from(&self)
5497            }
5498        }
5499        #[automatically_derived]
5500        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5501            #[inline]
5502            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5503                alloy_sol_types::SolEvent::encode_log_data(this)
5504            }
5505        }
5506    };
5507    #[derive(serde::Serialize, serde::Deserialize)]
5508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5509    /**Event with signature `SquaringTaskCompleted(uint256,uint256)` and selector `0xa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5`.
5510```solidity
5511event SquaringTaskCompleted(uint256 number, uint256 result);
5512```*/
5513    #[allow(
5514        non_camel_case_types,
5515        non_snake_case,
5516        clippy::pub_underscore_fields,
5517        clippy::style
5518    )]
5519    #[derive(Clone)]
5520    pub struct SquaringTaskCompleted {
5521        #[allow(missing_docs)]
5522        pub number: alloy::sol_types::private::primitives::aliases::U256,
5523        #[allow(missing_docs)]
5524        pub result: alloy::sol_types::private::primitives::aliases::U256,
5525    }
5526    #[allow(
5527        non_camel_case_types,
5528        non_snake_case,
5529        clippy::pub_underscore_fields,
5530        clippy::style
5531    )]
5532    const _: () = {
5533        use alloy::sol_types as alloy_sol_types;
5534        #[automatically_derived]
5535        impl alloy_sol_types::SolEvent for SquaringTaskCompleted {
5536            type DataTuple<'a> = (
5537                alloy::sol_types::sol_data::Uint<256>,
5538                alloy::sol_types::sol_data::Uint<256>,
5539            );
5540            type DataToken<'a> = <Self::DataTuple<
5541                'a,
5542            > as alloy_sol_types::SolType>::Token<'a>;
5543            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5544            const SIGNATURE: &'static str = "SquaringTaskCompleted(uint256,uint256)";
5545            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5546                167u8, 167u8, 7u8, 221u8, 127u8, 76u8, 160u8, 15u8, 225u8, 175u8, 205u8,
5547                52u8, 223u8, 126u8, 187u8, 108u8, 71u8, 242u8, 56u8, 128u8, 195u8, 77u8,
5548                37u8, 76u8, 195u8, 18u8, 229u8, 196u8, 30u8, 57u8, 116u8, 197u8,
5549            ]);
5550            const ANONYMOUS: bool = false;
5551            #[allow(unused_variables)]
5552            #[inline]
5553            fn new(
5554                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5555                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5556            ) -> Self {
5557                Self {
5558                    number: data.0,
5559                    result: data.1,
5560                }
5561            }
5562            #[inline]
5563            fn check_signature(
5564                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5565            ) -> alloy_sol_types::Result<()> {
5566                if topics.0 != Self::SIGNATURE_HASH {
5567                    return Err(
5568                        alloy_sol_types::Error::invalid_event_signature_hash(
5569                            Self::SIGNATURE,
5570                            topics.0,
5571                            Self::SIGNATURE_HASH,
5572                        ),
5573                    );
5574                }
5575                Ok(())
5576            }
5577            #[inline]
5578            fn tokenize_body(&self) -> Self::DataToken<'_> {
5579                (
5580                    <alloy::sol_types::sol_data::Uint<
5581                        256,
5582                    > as alloy_sol_types::SolType>::tokenize(&self.number),
5583                    <alloy::sol_types::sol_data::Uint<
5584                        256,
5585                    > as alloy_sol_types::SolType>::tokenize(&self.result),
5586                )
5587            }
5588            #[inline]
5589            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5590                (Self::SIGNATURE_HASH.into(),)
5591            }
5592            #[inline]
5593            fn encode_topics_raw(
5594                &self,
5595                out: &mut [alloy_sol_types::abi::token::WordToken],
5596            ) -> alloy_sol_types::Result<()> {
5597                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5598                    return Err(alloy_sol_types::Error::Overrun);
5599                }
5600                out[0usize] = alloy_sol_types::abi::token::WordToken(
5601                    Self::SIGNATURE_HASH,
5602                );
5603                Ok(())
5604            }
5605        }
5606        #[automatically_derived]
5607        impl alloy_sol_types::private::IntoLogData for SquaringTaskCompleted {
5608            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5609                From::from(self)
5610            }
5611            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5612                From::from(&self)
5613            }
5614        }
5615        #[automatically_derived]
5616        impl From<&SquaringTaskCompleted> for alloy_sol_types::private::LogData {
5617            #[inline]
5618            fn from(this: &SquaringTaskCompleted) -> alloy_sol_types::private::LogData {
5619                alloy_sol_types::SolEvent::encode_log_data(this)
5620            }
5621        }
5622    };
5623    #[derive(serde::Serialize, serde::Deserialize)]
5624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5625    /**Event with signature `TaskResponded((uint32,bytes),(uint32,bytes32))` and selector `0x9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f`.
5626```solidity
5627event TaskResponded(TaskManager.TaskResponse taskResponse, TaskManager.TaskResponseMetadata taskResponseMetadata);
5628```*/
5629    #[allow(
5630        non_camel_case_types,
5631        non_snake_case,
5632        clippy::pub_underscore_fields,
5633        clippy::style
5634    )]
5635    #[derive(Clone)]
5636    pub struct TaskResponded {
5637        #[allow(missing_docs)]
5638        pub taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
5639        #[allow(missing_docs)]
5640        pub taskResponseMetadata: <TaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
5641    }
5642    #[allow(
5643        non_camel_case_types,
5644        non_snake_case,
5645        clippy::pub_underscore_fields,
5646        clippy::style
5647    )]
5648    const _: () = {
5649        use alloy::sol_types as alloy_sol_types;
5650        #[automatically_derived]
5651        impl alloy_sol_types::SolEvent for TaskResponded {
5652            type DataTuple<'a> = (
5653                TaskManager::TaskResponse,
5654                TaskManager::TaskResponseMetadata,
5655            );
5656            type DataToken<'a> = <Self::DataTuple<
5657                'a,
5658            > as alloy_sol_types::SolType>::Token<'a>;
5659            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5660            const SIGNATURE: &'static str = "TaskResponded((uint32,bytes),(uint32,bytes32))";
5661            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5662                155u8, 150u8, 201u8, 129u8, 199u8, 199u8, 10u8, 159u8, 23u8, 2u8, 171u8,
5663                176u8, 68u8, 120u8, 39u8, 70u8, 193u8, 29u8, 9u8, 15u8, 88u8, 234u8,
5664                52u8, 177u8, 45u8, 175u8, 44u8, 197u8, 60u8, 248u8, 171u8, 95u8,
5665            ]);
5666            const ANONYMOUS: bool = false;
5667            #[allow(unused_variables)]
5668            #[inline]
5669            fn new(
5670                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5671                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5672            ) -> Self {
5673                Self {
5674                    taskResponse: data.0,
5675                    taskResponseMetadata: data.1,
5676                }
5677            }
5678            #[inline]
5679            fn check_signature(
5680                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5681            ) -> alloy_sol_types::Result<()> {
5682                if topics.0 != Self::SIGNATURE_HASH {
5683                    return Err(
5684                        alloy_sol_types::Error::invalid_event_signature_hash(
5685                            Self::SIGNATURE,
5686                            topics.0,
5687                            Self::SIGNATURE_HASH,
5688                        ),
5689                    );
5690                }
5691                Ok(())
5692            }
5693            #[inline]
5694            fn tokenize_body(&self) -> Self::DataToken<'_> {
5695                (
5696                    <TaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
5697                        &self.taskResponse,
5698                    ),
5699                    <TaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize(
5700                        &self.taskResponseMetadata,
5701                    ),
5702                )
5703            }
5704            #[inline]
5705            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5706                (Self::SIGNATURE_HASH.into(),)
5707            }
5708            #[inline]
5709            fn encode_topics_raw(
5710                &self,
5711                out: &mut [alloy_sol_types::abi::token::WordToken],
5712            ) -> alloy_sol_types::Result<()> {
5713                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5714                    return Err(alloy_sol_types::Error::Overrun);
5715                }
5716                out[0usize] = alloy_sol_types::abi::token::WordToken(
5717                    Self::SIGNATURE_HASH,
5718                );
5719                Ok(())
5720            }
5721        }
5722        #[automatically_derived]
5723        impl alloy_sol_types::private::IntoLogData for TaskResponded {
5724            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5725                From::from(self)
5726            }
5727            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5728                From::from(&self)
5729            }
5730        }
5731        #[automatically_derived]
5732        impl From<&TaskResponded> for alloy_sol_types::private::LogData {
5733            #[inline]
5734            fn from(this: &TaskResponded) -> alloy_sol_types::private::LogData {
5735                alloy_sol_types::SolEvent::encode_log_data(this)
5736            }
5737        }
5738    };
5739    /**Constructor`.
5740```solidity
5741constructor(address _registryCoordinator, uint32 _taskResponseWindowBlock);
5742```*/
5743    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5744    #[derive(Clone)]
5745    pub struct constructorCall {
5746        #[allow(missing_docs)]
5747        pub _registryCoordinator: alloy::sol_types::private::Address,
5748        #[allow(missing_docs)]
5749        pub _taskResponseWindowBlock: u32,
5750    }
5751    const _: () = {
5752        use alloy::sol_types as alloy_sol_types;
5753        {
5754            #[doc(hidden)]
5755            type UnderlyingSolTuple<'a> = (
5756                alloy::sol_types::sol_data::Address,
5757                alloy::sol_types::sol_data::Uint<32>,
5758            );
5759            #[doc(hidden)]
5760            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32);
5761            #[cfg(test)]
5762            #[allow(dead_code, unreachable_patterns)]
5763            fn _type_assertion(
5764                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5765            ) {
5766                match _t {
5767                    alloy_sol_types::private::AssertTypeEq::<
5768                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5769                    >(_) => {}
5770                }
5771            }
5772            #[automatically_derived]
5773            #[doc(hidden)]
5774            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5775                fn from(value: constructorCall) -> Self {
5776                    (value._registryCoordinator, value._taskResponseWindowBlock)
5777                }
5778            }
5779            #[automatically_derived]
5780            #[doc(hidden)]
5781            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5783                    Self {
5784                        _registryCoordinator: tuple.0,
5785                        _taskResponseWindowBlock: tuple.1,
5786                    }
5787                }
5788            }
5789        }
5790        #[automatically_derived]
5791        impl alloy_sol_types::SolConstructor for constructorCall {
5792            type Parameters<'a> = (
5793                alloy::sol_types::sol_data::Address,
5794                alloy::sol_types::sol_data::Uint<32>,
5795            );
5796            type Token<'a> = <Self::Parameters<
5797                'a,
5798            > as alloy_sol_types::SolType>::Token<'a>;
5799            #[inline]
5800            fn new<'a>(
5801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5802            ) -> Self {
5803                tuple.into()
5804            }
5805            #[inline]
5806            fn tokenize(&self) -> Self::Token<'_> {
5807                (
5808                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5809                        &self._registryCoordinator,
5810                    ),
5811                    <alloy::sol_types::sol_data::Uint<
5812                        32,
5813                    > as alloy_sol_types::SolType>::tokenize(
5814                        &self._taskResponseWindowBlock,
5815                    ),
5816                )
5817            }
5818        }
5819    };
5820    #[derive(serde::Serialize, serde::Deserialize)]
5821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5822    /**Function with signature `TASK_RESPONSE_WINDOW_BLOCK()` and selector `0x1ad43189`.
5823```solidity
5824function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
5825```*/
5826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5827    #[derive(Clone)]
5828    pub struct TASK_RESPONSE_WINDOW_BLOCKCall;
5829    #[derive(serde::Serialize, serde::Deserialize)]
5830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5831    ///Container type for the return parameters of the [`TASK_RESPONSE_WINDOW_BLOCK()`](TASK_RESPONSE_WINDOW_BLOCKCall) function.
5832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5833    #[derive(Clone)]
5834    pub struct TASK_RESPONSE_WINDOW_BLOCKReturn {
5835        #[allow(missing_docs)]
5836        pub _0: u32,
5837    }
5838    #[allow(
5839        non_camel_case_types,
5840        non_snake_case,
5841        clippy::pub_underscore_fields,
5842        clippy::style
5843    )]
5844    const _: () = {
5845        use alloy::sol_types as alloy_sol_types;
5846        {
5847            #[doc(hidden)]
5848            type UnderlyingSolTuple<'a> = ();
5849            #[doc(hidden)]
5850            type UnderlyingRustTuple<'a> = ();
5851            #[cfg(test)]
5852            #[allow(dead_code, unreachable_patterns)]
5853            fn _type_assertion(
5854                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5855            ) {
5856                match _t {
5857                    alloy_sol_types::private::AssertTypeEq::<
5858                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5859                    >(_) => {}
5860                }
5861            }
5862            #[automatically_derived]
5863            #[doc(hidden)]
5864            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKCall>
5865            for UnderlyingRustTuple<'_> {
5866                fn from(value: TASK_RESPONSE_WINDOW_BLOCKCall) -> Self {
5867                    ()
5868                }
5869            }
5870            #[automatically_derived]
5871            #[doc(hidden)]
5872            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5873            for TASK_RESPONSE_WINDOW_BLOCKCall {
5874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5875                    Self
5876                }
5877            }
5878        }
5879        {
5880            #[doc(hidden)]
5881            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
5882            #[doc(hidden)]
5883            type UnderlyingRustTuple<'a> = (u32,);
5884            #[cfg(test)]
5885            #[allow(dead_code, unreachable_patterns)]
5886            fn _type_assertion(
5887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5888            ) {
5889                match _t {
5890                    alloy_sol_types::private::AssertTypeEq::<
5891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5892                    >(_) => {}
5893                }
5894            }
5895            #[automatically_derived]
5896            #[doc(hidden)]
5897            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKReturn>
5898            for UnderlyingRustTuple<'_> {
5899                fn from(value: TASK_RESPONSE_WINDOW_BLOCKReturn) -> Self {
5900                    (value._0,)
5901                }
5902            }
5903            #[automatically_derived]
5904            #[doc(hidden)]
5905            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5906            for TASK_RESPONSE_WINDOW_BLOCKReturn {
5907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5908                    Self { _0: tuple.0 }
5909                }
5910            }
5911        }
5912        #[automatically_derived]
5913        impl alloy_sol_types::SolCall for TASK_RESPONSE_WINDOW_BLOCKCall {
5914            type Parameters<'a> = ();
5915            type Token<'a> = <Self::Parameters<
5916                'a,
5917            > as alloy_sol_types::SolType>::Token<'a>;
5918            type Return = u32;
5919            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
5920            type ReturnToken<'a> = <Self::ReturnTuple<
5921                'a,
5922            > as alloy_sol_types::SolType>::Token<'a>;
5923            const SIGNATURE: &'static str = "TASK_RESPONSE_WINDOW_BLOCK()";
5924            const SELECTOR: [u8; 4] = [26u8, 212u8, 49u8, 137u8];
5925            #[inline]
5926            fn new<'a>(
5927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5928            ) -> Self {
5929                tuple.into()
5930            }
5931            #[inline]
5932            fn tokenize(&self) -> Self::Token<'_> {
5933                ()
5934            }
5935            #[inline]
5936            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5937                (
5938                    <alloy::sol_types::sol_data::Uint<
5939                        32,
5940                    > as alloy_sol_types::SolType>::tokenize(ret),
5941                )
5942            }
5943            #[inline]
5944            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5945                <Self::ReturnTuple<
5946                    '_,
5947                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5948                    .map(|r| {
5949                        let r: TASK_RESPONSE_WINDOW_BLOCKReturn = r.into();
5950                        r._0
5951                    })
5952            }
5953            #[inline]
5954            fn abi_decode_returns_validate(
5955                data: &[u8],
5956            ) -> alloy_sol_types::Result<Self::Return> {
5957                <Self::ReturnTuple<
5958                    '_,
5959                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5960                    .map(|r| {
5961                        let r: TASK_RESPONSE_WINDOW_BLOCKReturn = r.into();
5962                        r._0
5963                    })
5964            }
5965        }
5966    };
5967    #[derive(serde::Serialize, serde::Deserialize)]
5968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5969    /**Function with signature `__TaskManager_init(address,address,address)` and selector `0x5919d07e`.
5970```solidity
5971function __TaskManager_init(address _aggregator, address _generator, address initialOwner) external;
5972```*/
5973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5974    #[derive(Clone)]
5975    pub struct __TaskManager_initCall {
5976        #[allow(missing_docs)]
5977        pub _aggregator: alloy::sol_types::private::Address,
5978        #[allow(missing_docs)]
5979        pub _generator: alloy::sol_types::private::Address,
5980        #[allow(missing_docs)]
5981        pub initialOwner: alloy::sol_types::private::Address,
5982    }
5983    ///Container type for the return parameters of the [`__TaskManager_init(address,address,address)`](__TaskManager_initCall) function.
5984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5985    #[derive(Clone)]
5986    pub struct __TaskManager_initReturn {}
5987    #[allow(
5988        non_camel_case_types,
5989        non_snake_case,
5990        clippy::pub_underscore_fields,
5991        clippy::style
5992    )]
5993    const _: () = {
5994        use alloy::sol_types as alloy_sol_types;
5995        {
5996            #[doc(hidden)]
5997            type UnderlyingSolTuple<'a> = (
5998                alloy::sol_types::sol_data::Address,
5999                alloy::sol_types::sol_data::Address,
6000                alloy::sol_types::sol_data::Address,
6001            );
6002            #[doc(hidden)]
6003            type UnderlyingRustTuple<'a> = (
6004                alloy::sol_types::private::Address,
6005                alloy::sol_types::private::Address,
6006                alloy::sol_types::private::Address,
6007            );
6008            #[cfg(test)]
6009            #[allow(dead_code, unreachable_patterns)]
6010            fn _type_assertion(
6011                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6012            ) {
6013                match _t {
6014                    alloy_sol_types::private::AssertTypeEq::<
6015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6016                    >(_) => {}
6017                }
6018            }
6019            #[automatically_derived]
6020            #[doc(hidden)]
6021            impl ::core::convert::From<__TaskManager_initCall>
6022            for UnderlyingRustTuple<'_> {
6023                fn from(value: __TaskManager_initCall) -> Self {
6024                    (value._aggregator, value._generator, value.initialOwner)
6025                }
6026            }
6027            #[automatically_derived]
6028            #[doc(hidden)]
6029            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6030            for __TaskManager_initCall {
6031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6032                    Self {
6033                        _aggregator: tuple.0,
6034                        _generator: tuple.1,
6035                        initialOwner: tuple.2,
6036                    }
6037                }
6038            }
6039        }
6040        {
6041            #[doc(hidden)]
6042            type UnderlyingSolTuple<'a> = ();
6043            #[doc(hidden)]
6044            type UnderlyingRustTuple<'a> = ();
6045            #[cfg(test)]
6046            #[allow(dead_code, unreachable_patterns)]
6047            fn _type_assertion(
6048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6049            ) {
6050                match _t {
6051                    alloy_sol_types::private::AssertTypeEq::<
6052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6053                    >(_) => {}
6054                }
6055            }
6056            #[automatically_derived]
6057            #[doc(hidden)]
6058            impl ::core::convert::From<__TaskManager_initReturn>
6059            for UnderlyingRustTuple<'_> {
6060                fn from(value: __TaskManager_initReturn) -> Self {
6061                    ()
6062                }
6063            }
6064            #[automatically_derived]
6065            #[doc(hidden)]
6066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6067            for __TaskManager_initReturn {
6068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6069                    Self {}
6070                }
6071            }
6072        }
6073        impl __TaskManager_initReturn {
6074            fn _tokenize(
6075                &self,
6076            ) -> <__TaskManager_initCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6077                ()
6078            }
6079        }
6080        #[automatically_derived]
6081        impl alloy_sol_types::SolCall for __TaskManager_initCall {
6082            type Parameters<'a> = (
6083                alloy::sol_types::sol_data::Address,
6084                alloy::sol_types::sol_data::Address,
6085                alloy::sol_types::sol_data::Address,
6086            );
6087            type Token<'a> = <Self::Parameters<
6088                'a,
6089            > as alloy_sol_types::SolType>::Token<'a>;
6090            type Return = __TaskManager_initReturn;
6091            type ReturnTuple<'a> = ();
6092            type ReturnToken<'a> = <Self::ReturnTuple<
6093                'a,
6094            > as alloy_sol_types::SolType>::Token<'a>;
6095            const SIGNATURE: &'static str = "__TaskManager_init(address,address,address)";
6096            const SELECTOR: [u8; 4] = [89u8, 25u8, 208u8, 126u8];
6097            #[inline]
6098            fn new<'a>(
6099                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6100            ) -> Self {
6101                tuple.into()
6102            }
6103            #[inline]
6104            fn tokenize(&self) -> Self::Token<'_> {
6105                (
6106                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6107                        &self._aggregator,
6108                    ),
6109                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6110                        &self._generator,
6111                    ),
6112                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6113                        &self.initialOwner,
6114                    ),
6115                )
6116            }
6117            #[inline]
6118            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6119                __TaskManager_initReturn::_tokenize(ret)
6120            }
6121            #[inline]
6122            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6123                <Self::ReturnTuple<
6124                    '_,
6125                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6126                    .map(Into::into)
6127            }
6128            #[inline]
6129            fn abi_decode_returns_validate(
6130                data: &[u8],
6131            ) -> alloy_sol_types::Result<Self::Return> {
6132                <Self::ReturnTuple<
6133                    '_,
6134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6135                    .map(Into::into)
6136            }
6137        }
6138    };
6139    #[derive(serde::Serialize, serde::Deserialize)]
6140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6141    /**Function with signature `aggregator()` and selector `0x245a7bfc`.
6142```solidity
6143function aggregator() external view returns (address);
6144```*/
6145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6146    #[derive(Clone)]
6147    pub struct aggregatorCall;
6148    #[derive(serde::Serialize, serde::Deserialize)]
6149    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6150    ///Container type for the return parameters of the [`aggregator()`](aggregatorCall) function.
6151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6152    #[derive(Clone)]
6153    pub struct aggregatorReturn {
6154        #[allow(missing_docs)]
6155        pub _0: alloy::sol_types::private::Address,
6156    }
6157    #[allow(
6158        non_camel_case_types,
6159        non_snake_case,
6160        clippy::pub_underscore_fields,
6161        clippy::style
6162    )]
6163    const _: () = {
6164        use alloy::sol_types as alloy_sol_types;
6165        {
6166            #[doc(hidden)]
6167            type UnderlyingSolTuple<'a> = ();
6168            #[doc(hidden)]
6169            type UnderlyingRustTuple<'a> = ();
6170            #[cfg(test)]
6171            #[allow(dead_code, unreachable_patterns)]
6172            fn _type_assertion(
6173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6174            ) {
6175                match _t {
6176                    alloy_sol_types::private::AssertTypeEq::<
6177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6178                    >(_) => {}
6179                }
6180            }
6181            #[automatically_derived]
6182            #[doc(hidden)]
6183            impl ::core::convert::From<aggregatorCall> for UnderlyingRustTuple<'_> {
6184                fn from(value: aggregatorCall) -> Self {
6185                    ()
6186                }
6187            }
6188            #[automatically_derived]
6189            #[doc(hidden)]
6190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorCall {
6191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6192                    Self
6193                }
6194            }
6195        }
6196        {
6197            #[doc(hidden)]
6198            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6199            #[doc(hidden)]
6200            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6201            #[cfg(test)]
6202            #[allow(dead_code, unreachable_patterns)]
6203            fn _type_assertion(
6204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6205            ) {
6206                match _t {
6207                    alloy_sol_types::private::AssertTypeEq::<
6208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6209                    >(_) => {}
6210                }
6211            }
6212            #[automatically_derived]
6213            #[doc(hidden)]
6214            impl ::core::convert::From<aggregatorReturn> for UnderlyingRustTuple<'_> {
6215                fn from(value: aggregatorReturn) -> Self {
6216                    (value._0,)
6217                }
6218            }
6219            #[automatically_derived]
6220            #[doc(hidden)]
6221            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorReturn {
6222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6223                    Self { _0: tuple.0 }
6224                }
6225            }
6226        }
6227        #[automatically_derived]
6228        impl alloy_sol_types::SolCall for aggregatorCall {
6229            type Parameters<'a> = ();
6230            type Token<'a> = <Self::Parameters<
6231                'a,
6232            > as alloy_sol_types::SolType>::Token<'a>;
6233            type Return = alloy::sol_types::private::Address;
6234            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6235            type ReturnToken<'a> = <Self::ReturnTuple<
6236                'a,
6237            > as alloy_sol_types::SolType>::Token<'a>;
6238            const SIGNATURE: &'static str = "aggregator()";
6239            const SELECTOR: [u8; 4] = [36u8, 90u8, 123u8, 252u8];
6240            #[inline]
6241            fn new<'a>(
6242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6243            ) -> Self {
6244                tuple.into()
6245            }
6246            #[inline]
6247            fn tokenize(&self) -> Self::Token<'_> {
6248                ()
6249            }
6250            #[inline]
6251            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6252                (
6253                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6254                        ret,
6255                    ),
6256                )
6257            }
6258            #[inline]
6259            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6260                <Self::ReturnTuple<
6261                    '_,
6262                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6263                    .map(|r| {
6264                        let r: aggregatorReturn = r.into();
6265                        r._0
6266                    })
6267            }
6268            #[inline]
6269            fn abi_decode_returns_validate(
6270                data: &[u8],
6271            ) -> alloy_sol_types::Result<Self::Return> {
6272                <Self::ReturnTuple<
6273                    '_,
6274                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6275                    .map(|r| {
6276                        let r: aggregatorReturn = r.into();
6277                        r._0
6278                    })
6279            }
6280        }
6281    };
6282    #[derive(serde::Serialize, serde::Deserialize)]
6283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6284    /**Function with signature `allTaskHashes(uint32)` and selector `0x2d89f6fc`.
6285```solidity
6286function allTaskHashes(uint32) external view returns (bytes32);
6287```*/
6288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6289    #[derive(Clone)]
6290    pub struct allTaskHashesCall(pub u32);
6291    #[derive(serde::Serialize, serde::Deserialize)]
6292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6293    ///Container type for the return parameters of the [`allTaskHashes(uint32)`](allTaskHashesCall) function.
6294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6295    #[derive(Clone)]
6296    pub struct allTaskHashesReturn {
6297        #[allow(missing_docs)]
6298        pub _0: alloy::sol_types::private::FixedBytes<32>,
6299    }
6300    #[allow(
6301        non_camel_case_types,
6302        non_snake_case,
6303        clippy::pub_underscore_fields,
6304        clippy::style
6305    )]
6306    const _: () = {
6307        use alloy::sol_types as alloy_sol_types;
6308        {
6309            #[doc(hidden)]
6310            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6311            #[doc(hidden)]
6312            type UnderlyingRustTuple<'a> = (u32,);
6313            #[cfg(test)]
6314            #[allow(dead_code, unreachable_patterns)]
6315            fn _type_assertion(
6316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6317            ) {
6318                match _t {
6319                    alloy_sol_types::private::AssertTypeEq::<
6320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6321                    >(_) => {}
6322                }
6323            }
6324            #[automatically_derived]
6325            #[doc(hidden)]
6326            impl ::core::convert::From<allTaskHashesCall> for UnderlyingRustTuple<'_> {
6327                fn from(value: allTaskHashesCall) -> Self {
6328                    (value.0,)
6329                }
6330            }
6331            #[automatically_derived]
6332            #[doc(hidden)]
6333            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesCall {
6334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6335                    Self(tuple.0)
6336                }
6337            }
6338        }
6339        {
6340            #[doc(hidden)]
6341            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6342            #[doc(hidden)]
6343            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6344            #[cfg(test)]
6345            #[allow(dead_code, unreachable_patterns)]
6346            fn _type_assertion(
6347                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6348            ) {
6349                match _t {
6350                    alloy_sol_types::private::AssertTypeEq::<
6351                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6352                    >(_) => {}
6353                }
6354            }
6355            #[automatically_derived]
6356            #[doc(hidden)]
6357            impl ::core::convert::From<allTaskHashesReturn> for UnderlyingRustTuple<'_> {
6358                fn from(value: allTaskHashesReturn) -> Self {
6359                    (value._0,)
6360                }
6361            }
6362            #[automatically_derived]
6363            #[doc(hidden)]
6364            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesReturn {
6365                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6366                    Self { _0: tuple.0 }
6367                }
6368            }
6369        }
6370        #[automatically_derived]
6371        impl alloy_sol_types::SolCall for allTaskHashesCall {
6372            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6373            type Token<'a> = <Self::Parameters<
6374                'a,
6375            > as alloy_sol_types::SolType>::Token<'a>;
6376            type Return = alloy::sol_types::private::FixedBytes<32>;
6377            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6378            type ReturnToken<'a> = <Self::ReturnTuple<
6379                'a,
6380            > as alloy_sol_types::SolType>::Token<'a>;
6381            const SIGNATURE: &'static str = "allTaskHashes(uint32)";
6382            const SELECTOR: [u8; 4] = [45u8, 137u8, 246u8, 252u8];
6383            #[inline]
6384            fn new<'a>(
6385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6386            ) -> Self {
6387                tuple.into()
6388            }
6389            #[inline]
6390            fn tokenize(&self) -> Self::Token<'_> {
6391                (
6392                    <alloy::sol_types::sol_data::Uint<
6393                        32,
6394                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6395                )
6396            }
6397            #[inline]
6398            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6399                (
6400                    <alloy::sol_types::sol_data::FixedBytes<
6401                        32,
6402                    > as alloy_sol_types::SolType>::tokenize(ret),
6403                )
6404            }
6405            #[inline]
6406            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6407                <Self::ReturnTuple<
6408                    '_,
6409                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6410                    .map(|r| {
6411                        let r: allTaskHashesReturn = r.into();
6412                        r._0
6413                    })
6414            }
6415            #[inline]
6416            fn abi_decode_returns_validate(
6417                data: &[u8],
6418            ) -> alloy_sol_types::Result<Self::Return> {
6419                <Self::ReturnTuple<
6420                    '_,
6421                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6422                    .map(|r| {
6423                        let r: allTaskHashesReturn = r.into();
6424                        r._0
6425                    })
6426            }
6427        }
6428    };
6429    #[derive(serde::Serialize, serde::Deserialize)]
6430    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6431    /**Function with signature `allTaskResponses(uint32)` and selector `0x2cb223d5`.
6432```solidity
6433function allTaskResponses(uint32) external view returns (bytes32);
6434```*/
6435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6436    #[derive(Clone)]
6437    pub struct allTaskResponsesCall(pub u32);
6438    #[derive(serde::Serialize, serde::Deserialize)]
6439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6440    ///Container type for the return parameters of the [`allTaskResponses(uint32)`](allTaskResponsesCall) function.
6441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6442    #[derive(Clone)]
6443    pub struct allTaskResponsesReturn {
6444        #[allow(missing_docs)]
6445        pub _0: alloy::sol_types::private::FixedBytes<32>,
6446    }
6447    #[allow(
6448        non_camel_case_types,
6449        non_snake_case,
6450        clippy::pub_underscore_fields,
6451        clippy::style
6452    )]
6453    const _: () = {
6454        use alloy::sol_types as alloy_sol_types;
6455        {
6456            #[doc(hidden)]
6457            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6458            #[doc(hidden)]
6459            type UnderlyingRustTuple<'a> = (u32,);
6460            #[cfg(test)]
6461            #[allow(dead_code, unreachable_patterns)]
6462            fn _type_assertion(
6463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6464            ) {
6465                match _t {
6466                    alloy_sol_types::private::AssertTypeEq::<
6467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6468                    >(_) => {}
6469                }
6470            }
6471            #[automatically_derived]
6472            #[doc(hidden)]
6473            impl ::core::convert::From<allTaskResponsesCall>
6474            for UnderlyingRustTuple<'_> {
6475                fn from(value: allTaskResponsesCall) -> Self {
6476                    (value.0,)
6477                }
6478            }
6479            #[automatically_derived]
6480            #[doc(hidden)]
6481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6482            for allTaskResponsesCall {
6483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6484                    Self(tuple.0)
6485                }
6486            }
6487        }
6488        {
6489            #[doc(hidden)]
6490            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6491            #[doc(hidden)]
6492            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6493            #[cfg(test)]
6494            #[allow(dead_code, unreachable_patterns)]
6495            fn _type_assertion(
6496                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6497            ) {
6498                match _t {
6499                    alloy_sol_types::private::AssertTypeEq::<
6500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6501                    >(_) => {}
6502                }
6503            }
6504            #[automatically_derived]
6505            #[doc(hidden)]
6506            impl ::core::convert::From<allTaskResponsesReturn>
6507            for UnderlyingRustTuple<'_> {
6508                fn from(value: allTaskResponsesReturn) -> Self {
6509                    (value._0,)
6510                }
6511            }
6512            #[automatically_derived]
6513            #[doc(hidden)]
6514            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6515            for allTaskResponsesReturn {
6516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6517                    Self { _0: tuple.0 }
6518                }
6519            }
6520        }
6521        #[automatically_derived]
6522        impl alloy_sol_types::SolCall for allTaskResponsesCall {
6523            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6524            type Token<'a> = <Self::Parameters<
6525                'a,
6526            > as alloy_sol_types::SolType>::Token<'a>;
6527            type Return = alloy::sol_types::private::FixedBytes<32>;
6528            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6529            type ReturnToken<'a> = <Self::ReturnTuple<
6530                'a,
6531            > as alloy_sol_types::SolType>::Token<'a>;
6532            const SIGNATURE: &'static str = "allTaskResponses(uint32)";
6533            const SELECTOR: [u8; 4] = [44u8, 178u8, 35u8, 213u8];
6534            #[inline]
6535            fn new<'a>(
6536                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6537            ) -> Self {
6538                tuple.into()
6539            }
6540            #[inline]
6541            fn tokenize(&self) -> Self::Token<'_> {
6542                (
6543                    <alloy::sol_types::sol_data::Uint<
6544                        32,
6545                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6546                )
6547            }
6548            #[inline]
6549            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6550                (
6551                    <alloy::sol_types::sol_data::FixedBytes<
6552                        32,
6553                    > as alloy_sol_types::SolType>::tokenize(ret),
6554                )
6555            }
6556            #[inline]
6557            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6558                <Self::ReturnTuple<
6559                    '_,
6560                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6561                    .map(|r| {
6562                        let r: allTaskResponsesReturn = r.into();
6563                        r._0
6564                    })
6565            }
6566            #[inline]
6567            fn abi_decode_returns_validate(
6568                data: &[u8],
6569            ) -> alloy_sol_types::Result<Self::Return> {
6570                <Self::ReturnTuple<
6571                    '_,
6572                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6573                    .map(|r| {
6574                        let r: allTaskResponsesReturn = r.into();
6575                        r._0
6576                    })
6577            }
6578        }
6579    };
6580    #[derive(serde::Serialize, serde::Deserialize)]
6581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6582    /**Function with signature `blsApkRegistry()` and selector `0x5df45946`.
6583```solidity
6584function blsApkRegistry() external view returns (address);
6585```*/
6586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6587    #[derive(Clone)]
6588    pub struct blsApkRegistryCall;
6589    #[derive(serde::Serialize, serde::Deserialize)]
6590    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6591    ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function.
6592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6593    #[derive(Clone)]
6594    pub struct blsApkRegistryReturn {
6595        #[allow(missing_docs)]
6596        pub _0: alloy::sol_types::private::Address,
6597    }
6598    #[allow(
6599        non_camel_case_types,
6600        non_snake_case,
6601        clippy::pub_underscore_fields,
6602        clippy::style
6603    )]
6604    const _: () = {
6605        use alloy::sol_types as alloy_sol_types;
6606        {
6607            #[doc(hidden)]
6608            type UnderlyingSolTuple<'a> = ();
6609            #[doc(hidden)]
6610            type UnderlyingRustTuple<'a> = ();
6611            #[cfg(test)]
6612            #[allow(dead_code, unreachable_patterns)]
6613            fn _type_assertion(
6614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6615            ) {
6616                match _t {
6617                    alloy_sol_types::private::AssertTypeEq::<
6618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6619                    >(_) => {}
6620                }
6621            }
6622            #[automatically_derived]
6623            #[doc(hidden)]
6624            impl ::core::convert::From<blsApkRegistryCall> for UnderlyingRustTuple<'_> {
6625                fn from(value: blsApkRegistryCall) -> Self {
6626                    ()
6627                }
6628            }
6629            #[automatically_derived]
6630            #[doc(hidden)]
6631            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryCall {
6632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6633                    Self
6634                }
6635            }
6636        }
6637        {
6638            #[doc(hidden)]
6639            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6640            #[doc(hidden)]
6641            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6642            #[cfg(test)]
6643            #[allow(dead_code, unreachable_patterns)]
6644            fn _type_assertion(
6645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6646            ) {
6647                match _t {
6648                    alloy_sol_types::private::AssertTypeEq::<
6649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6650                    >(_) => {}
6651                }
6652            }
6653            #[automatically_derived]
6654            #[doc(hidden)]
6655            impl ::core::convert::From<blsApkRegistryReturn>
6656            for UnderlyingRustTuple<'_> {
6657                fn from(value: blsApkRegistryReturn) -> Self {
6658                    (value._0,)
6659                }
6660            }
6661            #[automatically_derived]
6662            #[doc(hidden)]
6663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6664            for blsApkRegistryReturn {
6665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6666                    Self { _0: tuple.0 }
6667                }
6668            }
6669        }
6670        #[automatically_derived]
6671        impl alloy_sol_types::SolCall for blsApkRegistryCall {
6672            type Parameters<'a> = ();
6673            type Token<'a> = <Self::Parameters<
6674                'a,
6675            > as alloy_sol_types::SolType>::Token<'a>;
6676            type Return = alloy::sol_types::private::Address;
6677            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6678            type ReturnToken<'a> = <Self::ReturnTuple<
6679                'a,
6680            > as alloy_sol_types::SolType>::Token<'a>;
6681            const SIGNATURE: &'static str = "blsApkRegistry()";
6682            const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8];
6683            #[inline]
6684            fn new<'a>(
6685                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6686            ) -> Self {
6687                tuple.into()
6688            }
6689            #[inline]
6690            fn tokenize(&self) -> Self::Token<'_> {
6691                ()
6692            }
6693            #[inline]
6694            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6695                (
6696                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6697                        ret,
6698                    ),
6699                )
6700            }
6701            #[inline]
6702            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6703                <Self::ReturnTuple<
6704                    '_,
6705                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6706                    .map(|r| {
6707                        let r: blsApkRegistryReturn = r.into();
6708                        r._0
6709                    })
6710            }
6711            #[inline]
6712            fn abi_decode_returns_validate(
6713                data: &[u8],
6714            ) -> alloy_sol_types::Result<Self::Return> {
6715                <Self::ReturnTuple<
6716                    '_,
6717                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6718                    .map(|r| {
6719                        let r: blsApkRegistryReturn = r.into();
6720                        r._0
6721                    })
6722            }
6723        }
6724    };
6725    #[derive(serde::Serialize, serde::Deserialize)]
6726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6727    /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`.
6728```solidity
6729function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
6730```*/
6731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6732    #[derive(Clone)]
6733    pub struct checkSignaturesCall {
6734        #[allow(missing_docs)]
6735        pub msgHash: alloy::sol_types::private::FixedBytes<32>,
6736        #[allow(missing_docs)]
6737        pub quorumNumbers: alloy::sol_types::private::Bytes,
6738        #[allow(missing_docs)]
6739        pub referenceBlockNumber: u32,
6740        #[allow(missing_docs)]
6741        pub params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
6742    }
6743    #[derive(serde::Serialize, serde::Deserialize)]
6744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6745    ///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.
6746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6747    #[derive(Clone)]
6748    pub struct checkSignaturesReturn {
6749        #[allow(missing_docs)]
6750        pub _0: <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
6751        #[allow(missing_docs)]
6752        pub _1: alloy::sol_types::private::FixedBytes<32>,
6753    }
6754    #[allow(
6755        non_camel_case_types,
6756        non_snake_case,
6757        clippy::pub_underscore_fields,
6758        clippy::style
6759    )]
6760    const _: () = {
6761        use alloy::sol_types as alloy_sol_types;
6762        {
6763            #[doc(hidden)]
6764            type UnderlyingSolTuple<'a> = (
6765                alloy::sol_types::sol_data::FixedBytes<32>,
6766                alloy::sol_types::sol_data::Bytes,
6767                alloy::sol_types::sol_data::Uint<32>,
6768                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
6769            );
6770            #[doc(hidden)]
6771            type UnderlyingRustTuple<'a> = (
6772                alloy::sol_types::private::FixedBytes<32>,
6773                alloy::sol_types::private::Bytes,
6774                u32,
6775                <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
6776            );
6777            #[cfg(test)]
6778            #[allow(dead_code, unreachable_patterns)]
6779            fn _type_assertion(
6780                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6781            ) {
6782                match _t {
6783                    alloy_sol_types::private::AssertTypeEq::<
6784                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6785                    >(_) => {}
6786                }
6787            }
6788            #[automatically_derived]
6789            #[doc(hidden)]
6790            impl ::core::convert::From<checkSignaturesCall> for UnderlyingRustTuple<'_> {
6791                fn from(value: checkSignaturesCall) -> Self {
6792                    (
6793                        value.msgHash,
6794                        value.quorumNumbers,
6795                        value.referenceBlockNumber,
6796                        value.params,
6797                    )
6798                }
6799            }
6800            #[automatically_derived]
6801            #[doc(hidden)]
6802            impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesCall {
6803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6804                    Self {
6805                        msgHash: tuple.0,
6806                        quorumNumbers: tuple.1,
6807                        referenceBlockNumber: tuple.2,
6808                        params: tuple.3,
6809                    }
6810                }
6811            }
6812        }
6813        {
6814            #[doc(hidden)]
6815            type UnderlyingSolTuple<'a> = (
6816                IBLSSignatureCheckerTypes::QuorumStakeTotals,
6817                alloy::sol_types::sol_data::FixedBytes<32>,
6818            );
6819            #[doc(hidden)]
6820            type UnderlyingRustTuple<'a> = (
6821                <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
6822                alloy::sol_types::private::FixedBytes<32>,
6823            );
6824            #[cfg(test)]
6825            #[allow(dead_code, unreachable_patterns)]
6826            fn _type_assertion(
6827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6828            ) {
6829                match _t {
6830                    alloy_sol_types::private::AssertTypeEq::<
6831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6832                    >(_) => {}
6833                }
6834            }
6835            #[automatically_derived]
6836            #[doc(hidden)]
6837            impl ::core::convert::From<checkSignaturesReturn>
6838            for UnderlyingRustTuple<'_> {
6839                fn from(value: checkSignaturesReturn) -> Self {
6840                    (value._0, value._1)
6841                }
6842            }
6843            #[automatically_derived]
6844            #[doc(hidden)]
6845            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6846            for checkSignaturesReturn {
6847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6848                    Self { _0: tuple.0, _1: tuple.1 }
6849                }
6850            }
6851        }
6852        impl checkSignaturesReturn {
6853            fn _tokenize(
6854                &self,
6855            ) -> <checkSignaturesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6856                (
6857                    <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy_sol_types::SolType>::tokenize(
6858                        &self._0,
6859                    ),
6860                    <alloy::sol_types::sol_data::FixedBytes<
6861                        32,
6862                    > as alloy_sol_types::SolType>::tokenize(&self._1),
6863                )
6864            }
6865        }
6866        #[automatically_derived]
6867        impl alloy_sol_types::SolCall for checkSignaturesCall {
6868            type Parameters<'a> = (
6869                alloy::sol_types::sol_data::FixedBytes<32>,
6870                alloy::sol_types::sol_data::Bytes,
6871                alloy::sol_types::sol_data::Uint<32>,
6872                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
6873            );
6874            type Token<'a> = <Self::Parameters<
6875                'a,
6876            > as alloy_sol_types::SolType>::Token<'a>;
6877            type Return = checkSignaturesReturn;
6878            type ReturnTuple<'a> = (
6879                IBLSSignatureCheckerTypes::QuorumStakeTotals,
6880                alloy::sol_types::sol_data::FixedBytes<32>,
6881            );
6882            type ReturnToken<'a> = <Self::ReturnTuple<
6883                'a,
6884            > as alloy_sol_types::SolType>::Token<'a>;
6885            const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
6886            const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8];
6887            #[inline]
6888            fn new<'a>(
6889                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6890            ) -> Self {
6891                tuple.into()
6892            }
6893            #[inline]
6894            fn tokenize(&self) -> Self::Token<'_> {
6895                (
6896                    <alloy::sol_types::sol_data::FixedBytes<
6897                        32,
6898                    > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
6899                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6900                        &self.quorumNumbers,
6901                    ),
6902                    <alloy::sol_types::sol_data::Uint<
6903                        32,
6904                    > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
6905                    <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
6906                        &self.params,
6907                    ),
6908                )
6909            }
6910            #[inline]
6911            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6912                checkSignaturesReturn::_tokenize(ret)
6913            }
6914            #[inline]
6915            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6916                <Self::ReturnTuple<
6917                    '_,
6918                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6919                    .map(Into::into)
6920            }
6921            #[inline]
6922            fn abi_decode_returns_validate(
6923                data: &[u8],
6924            ) -> alloy_sol_types::Result<Self::Return> {
6925                <Self::ReturnTuple<
6926                    '_,
6927                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6928                    .map(Into::into)
6929            }
6930        }
6931    };
6932    #[derive(serde::Serialize, serde::Deserialize)]
6933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6934    /**Function with signature `createSquaringTask(uint256,uint32,bytes)` and selector `0xbbcee46e`.
6935```solidity
6936function createSquaringTask(uint256 number, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
6937```*/
6938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6939    #[derive(Clone)]
6940    pub struct createSquaringTaskCall {
6941        #[allow(missing_docs)]
6942        pub number: alloy::sol_types::private::primitives::aliases::U256,
6943        #[allow(missing_docs)]
6944        pub quorumThresholdPercentage: u32,
6945        #[allow(missing_docs)]
6946        pub quorumNumbers: alloy::sol_types::private::Bytes,
6947    }
6948    ///Container type for the return parameters of the [`createSquaringTask(uint256,uint32,bytes)`](createSquaringTaskCall) function.
6949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6950    #[derive(Clone)]
6951    pub struct createSquaringTaskReturn {}
6952    #[allow(
6953        non_camel_case_types,
6954        non_snake_case,
6955        clippy::pub_underscore_fields,
6956        clippy::style
6957    )]
6958    const _: () = {
6959        use alloy::sol_types as alloy_sol_types;
6960        {
6961            #[doc(hidden)]
6962            type UnderlyingSolTuple<'a> = (
6963                alloy::sol_types::sol_data::Uint<256>,
6964                alloy::sol_types::sol_data::Uint<32>,
6965                alloy::sol_types::sol_data::Bytes,
6966            );
6967            #[doc(hidden)]
6968            type UnderlyingRustTuple<'a> = (
6969                alloy::sol_types::private::primitives::aliases::U256,
6970                u32,
6971                alloy::sol_types::private::Bytes,
6972            );
6973            #[cfg(test)]
6974            #[allow(dead_code, unreachable_patterns)]
6975            fn _type_assertion(
6976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6977            ) {
6978                match _t {
6979                    alloy_sol_types::private::AssertTypeEq::<
6980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6981                    >(_) => {}
6982                }
6983            }
6984            #[automatically_derived]
6985            #[doc(hidden)]
6986            impl ::core::convert::From<createSquaringTaskCall>
6987            for UnderlyingRustTuple<'_> {
6988                fn from(value: createSquaringTaskCall) -> Self {
6989                    (value.number, value.quorumThresholdPercentage, value.quorumNumbers)
6990                }
6991            }
6992            #[automatically_derived]
6993            #[doc(hidden)]
6994            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6995            for createSquaringTaskCall {
6996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6997                    Self {
6998                        number: tuple.0,
6999                        quorumThresholdPercentage: tuple.1,
7000                        quorumNumbers: tuple.2,
7001                    }
7002                }
7003            }
7004        }
7005        {
7006            #[doc(hidden)]
7007            type UnderlyingSolTuple<'a> = ();
7008            #[doc(hidden)]
7009            type UnderlyingRustTuple<'a> = ();
7010            #[cfg(test)]
7011            #[allow(dead_code, unreachable_patterns)]
7012            fn _type_assertion(
7013                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7014            ) {
7015                match _t {
7016                    alloy_sol_types::private::AssertTypeEq::<
7017                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7018                    >(_) => {}
7019                }
7020            }
7021            #[automatically_derived]
7022            #[doc(hidden)]
7023            impl ::core::convert::From<createSquaringTaskReturn>
7024            for UnderlyingRustTuple<'_> {
7025                fn from(value: createSquaringTaskReturn) -> Self {
7026                    ()
7027                }
7028            }
7029            #[automatically_derived]
7030            #[doc(hidden)]
7031            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7032            for createSquaringTaskReturn {
7033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7034                    Self {}
7035                }
7036            }
7037        }
7038        impl createSquaringTaskReturn {
7039            fn _tokenize(
7040                &self,
7041            ) -> <createSquaringTaskCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7042                ()
7043            }
7044        }
7045        #[automatically_derived]
7046        impl alloy_sol_types::SolCall for createSquaringTaskCall {
7047            type Parameters<'a> = (
7048                alloy::sol_types::sol_data::Uint<256>,
7049                alloy::sol_types::sol_data::Uint<32>,
7050                alloy::sol_types::sol_data::Bytes,
7051            );
7052            type Token<'a> = <Self::Parameters<
7053                'a,
7054            > as alloy_sol_types::SolType>::Token<'a>;
7055            type Return = createSquaringTaskReturn;
7056            type ReturnTuple<'a> = ();
7057            type ReturnToken<'a> = <Self::ReturnTuple<
7058                'a,
7059            > as alloy_sol_types::SolType>::Token<'a>;
7060            const SIGNATURE: &'static str = "createSquaringTask(uint256,uint32,bytes)";
7061            const SELECTOR: [u8; 4] = [187u8, 206u8, 228u8, 110u8];
7062            #[inline]
7063            fn new<'a>(
7064                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7065            ) -> Self {
7066                tuple.into()
7067            }
7068            #[inline]
7069            fn tokenize(&self) -> Self::Token<'_> {
7070                (
7071                    <alloy::sol_types::sol_data::Uint<
7072                        256,
7073                    > as alloy_sol_types::SolType>::tokenize(&self.number),
7074                    <alloy::sol_types::sol_data::Uint<
7075                        32,
7076                    > as alloy_sol_types::SolType>::tokenize(
7077                        &self.quorumThresholdPercentage,
7078                    ),
7079                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7080                        &self.quorumNumbers,
7081                    ),
7082                )
7083            }
7084            #[inline]
7085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7086                createSquaringTaskReturn::_tokenize(ret)
7087            }
7088            #[inline]
7089            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7090                <Self::ReturnTuple<
7091                    '_,
7092                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7093                    .map(Into::into)
7094            }
7095            #[inline]
7096            fn abi_decode_returns_validate(
7097                data: &[u8],
7098            ) -> alloy_sol_types::Result<Self::Return> {
7099                <Self::ReturnTuple<
7100                    '_,
7101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7102                    .map(Into::into)
7103            }
7104        }
7105    };
7106    #[derive(serde::Serialize, serde::Deserialize)]
7107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7108    /**Function with signature `delegation()` and selector `0xdf5cf723`.
7109```solidity
7110function delegation() external view returns (address);
7111```*/
7112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7113    #[derive(Clone)]
7114    pub struct delegationCall;
7115    #[derive(serde::Serialize, serde::Deserialize)]
7116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7117    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
7118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7119    #[derive(Clone)]
7120    pub struct delegationReturn {
7121        #[allow(missing_docs)]
7122        pub _0: alloy::sol_types::private::Address,
7123    }
7124    #[allow(
7125        non_camel_case_types,
7126        non_snake_case,
7127        clippy::pub_underscore_fields,
7128        clippy::style
7129    )]
7130    const _: () = {
7131        use alloy::sol_types as alloy_sol_types;
7132        {
7133            #[doc(hidden)]
7134            type UnderlyingSolTuple<'a> = ();
7135            #[doc(hidden)]
7136            type UnderlyingRustTuple<'a> = ();
7137            #[cfg(test)]
7138            #[allow(dead_code, unreachable_patterns)]
7139            fn _type_assertion(
7140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7141            ) {
7142                match _t {
7143                    alloy_sol_types::private::AssertTypeEq::<
7144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7145                    >(_) => {}
7146                }
7147            }
7148            #[automatically_derived]
7149            #[doc(hidden)]
7150            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
7151                fn from(value: delegationCall) -> Self {
7152                    ()
7153                }
7154            }
7155            #[automatically_derived]
7156            #[doc(hidden)]
7157            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
7158                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7159                    Self
7160                }
7161            }
7162        }
7163        {
7164            #[doc(hidden)]
7165            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7166            #[doc(hidden)]
7167            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7168            #[cfg(test)]
7169            #[allow(dead_code, unreachable_patterns)]
7170            fn _type_assertion(
7171                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7172            ) {
7173                match _t {
7174                    alloy_sol_types::private::AssertTypeEq::<
7175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7176                    >(_) => {}
7177                }
7178            }
7179            #[automatically_derived]
7180            #[doc(hidden)]
7181            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
7182                fn from(value: delegationReturn) -> Self {
7183                    (value._0,)
7184                }
7185            }
7186            #[automatically_derived]
7187            #[doc(hidden)]
7188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
7189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7190                    Self { _0: tuple.0 }
7191                }
7192            }
7193        }
7194        #[automatically_derived]
7195        impl alloy_sol_types::SolCall for delegationCall {
7196            type Parameters<'a> = ();
7197            type Token<'a> = <Self::Parameters<
7198                'a,
7199            > as alloy_sol_types::SolType>::Token<'a>;
7200            type Return = alloy::sol_types::private::Address;
7201            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7202            type ReturnToken<'a> = <Self::ReturnTuple<
7203                'a,
7204            > as alloy_sol_types::SolType>::Token<'a>;
7205            const SIGNATURE: &'static str = "delegation()";
7206            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
7207            #[inline]
7208            fn new<'a>(
7209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7210            ) -> Self {
7211                tuple.into()
7212            }
7213            #[inline]
7214            fn tokenize(&self) -> Self::Token<'_> {
7215                ()
7216            }
7217            #[inline]
7218            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7219                (
7220                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7221                        ret,
7222                    ),
7223                )
7224            }
7225            #[inline]
7226            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7227                <Self::ReturnTuple<
7228                    '_,
7229                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7230                    .map(|r| {
7231                        let r: delegationReturn = r.into();
7232                        r._0
7233                    })
7234            }
7235            #[inline]
7236            fn abi_decode_returns_validate(
7237                data: &[u8],
7238            ) -> alloy_sol_types::Result<Self::Return> {
7239                <Self::ReturnTuple<
7240                    '_,
7241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7242                    .map(|r| {
7243                        let r: delegationReturn = r.into();
7244                        r._0
7245                    })
7246            }
7247        }
7248    };
7249    #[derive(serde::Serialize, serde::Deserialize)]
7250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7251    /**Function with signature `generator()` and selector `0x7afa1eed`.
7252```solidity
7253function generator() external view returns (address);
7254```*/
7255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7256    #[derive(Clone)]
7257    pub struct generatorCall;
7258    #[derive(serde::Serialize, serde::Deserialize)]
7259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7260    ///Container type for the return parameters of the [`generator()`](generatorCall) function.
7261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7262    #[derive(Clone)]
7263    pub struct generatorReturn {
7264        #[allow(missing_docs)]
7265        pub _0: alloy::sol_types::private::Address,
7266    }
7267    #[allow(
7268        non_camel_case_types,
7269        non_snake_case,
7270        clippy::pub_underscore_fields,
7271        clippy::style
7272    )]
7273    const _: () = {
7274        use alloy::sol_types as alloy_sol_types;
7275        {
7276            #[doc(hidden)]
7277            type UnderlyingSolTuple<'a> = ();
7278            #[doc(hidden)]
7279            type UnderlyingRustTuple<'a> = ();
7280            #[cfg(test)]
7281            #[allow(dead_code, unreachable_patterns)]
7282            fn _type_assertion(
7283                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7284            ) {
7285                match _t {
7286                    alloy_sol_types::private::AssertTypeEq::<
7287                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7288                    >(_) => {}
7289                }
7290            }
7291            #[automatically_derived]
7292            #[doc(hidden)]
7293            impl ::core::convert::From<generatorCall> for UnderlyingRustTuple<'_> {
7294                fn from(value: generatorCall) -> Self {
7295                    ()
7296                }
7297            }
7298            #[automatically_derived]
7299            #[doc(hidden)]
7300            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorCall {
7301                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7302                    Self
7303                }
7304            }
7305        }
7306        {
7307            #[doc(hidden)]
7308            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7309            #[doc(hidden)]
7310            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7311            #[cfg(test)]
7312            #[allow(dead_code, unreachable_patterns)]
7313            fn _type_assertion(
7314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7315            ) {
7316                match _t {
7317                    alloy_sol_types::private::AssertTypeEq::<
7318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7319                    >(_) => {}
7320                }
7321            }
7322            #[automatically_derived]
7323            #[doc(hidden)]
7324            impl ::core::convert::From<generatorReturn> for UnderlyingRustTuple<'_> {
7325                fn from(value: generatorReturn) -> Self {
7326                    (value._0,)
7327                }
7328            }
7329            #[automatically_derived]
7330            #[doc(hidden)]
7331            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorReturn {
7332                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7333                    Self { _0: tuple.0 }
7334                }
7335            }
7336        }
7337        #[automatically_derived]
7338        impl alloy_sol_types::SolCall for generatorCall {
7339            type Parameters<'a> = ();
7340            type Token<'a> = <Self::Parameters<
7341                'a,
7342            > as alloy_sol_types::SolType>::Token<'a>;
7343            type Return = alloy::sol_types::private::Address;
7344            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7345            type ReturnToken<'a> = <Self::ReturnTuple<
7346                'a,
7347            > as alloy_sol_types::SolType>::Token<'a>;
7348            const SIGNATURE: &'static str = "generator()";
7349            const SELECTOR: [u8; 4] = [122u8, 250u8, 30u8, 237u8];
7350            #[inline]
7351            fn new<'a>(
7352                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7353            ) -> Self {
7354                tuple.into()
7355            }
7356            #[inline]
7357            fn tokenize(&self) -> Self::Token<'_> {
7358                ()
7359            }
7360            #[inline]
7361            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7362                (
7363                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7364                        ret,
7365                    ),
7366                )
7367            }
7368            #[inline]
7369            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7370                <Self::ReturnTuple<
7371                    '_,
7372                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7373                    .map(|r| {
7374                        let r: generatorReturn = r.into();
7375                        r._0
7376                    })
7377            }
7378            #[inline]
7379            fn abi_decode_returns_validate(
7380                data: &[u8],
7381            ) -> alloy_sol_types::Result<Self::Return> {
7382                <Self::ReturnTuple<
7383                    '_,
7384                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7385                    .map(|r| {
7386                        let r: generatorReturn = r.into();
7387                        r._0
7388                    })
7389            }
7390        }
7391    };
7392    #[derive(serde::Serialize, serde::Deserialize)]
7393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7394    /**Function with signature `initialize(address,address,address)` and selector `0xc0c53b8b`.
7395```solidity
7396function initialize(address _aggregator, address _generator, address initialOwner) external;
7397```*/
7398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7399    #[derive(Clone)]
7400    pub struct initializeCall {
7401        #[allow(missing_docs)]
7402        pub _aggregator: alloy::sol_types::private::Address,
7403        #[allow(missing_docs)]
7404        pub _generator: alloy::sol_types::private::Address,
7405        #[allow(missing_docs)]
7406        pub initialOwner: alloy::sol_types::private::Address,
7407    }
7408    ///Container type for the return parameters of the [`initialize(address,address,address)`](initializeCall) function.
7409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7410    #[derive(Clone)]
7411    pub struct initializeReturn {}
7412    #[allow(
7413        non_camel_case_types,
7414        non_snake_case,
7415        clippy::pub_underscore_fields,
7416        clippy::style
7417    )]
7418    const _: () = {
7419        use alloy::sol_types as alloy_sol_types;
7420        {
7421            #[doc(hidden)]
7422            type UnderlyingSolTuple<'a> = (
7423                alloy::sol_types::sol_data::Address,
7424                alloy::sol_types::sol_data::Address,
7425                alloy::sol_types::sol_data::Address,
7426            );
7427            #[doc(hidden)]
7428            type UnderlyingRustTuple<'a> = (
7429                alloy::sol_types::private::Address,
7430                alloy::sol_types::private::Address,
7431                alloy::sol_types::private::Address,
7432            );
7433            #[cfg(test)]
7434            #[allow(dead_code, unreachable_patterns)]
7435            fn _type_assertion(
7436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7437            ) {
7438                match _t {
7439                    alloy_sol_types::private::AssertTypeEq::<
7440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7441                    >(_) => {}
7442                }
7443            }
7444            #[automatically_derived]
7445            #[doc(hidden)]
7446            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7447                fn from(value: initializeCall) -> Self {
7448                    (value._aggregator, value._generator, value.initialOwner)
7449                }
7450            }
7451            #[automatically_derived]
7452            #[doc(hidden)]
7453            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7455                    Self {
7456                        _aggregator: tuple.0,
7457                        _generator: tuple.1,
7458                        initialOwner: tuple.2,
7459                    }
7460                }
7461            }
7462        }
7463        {
7464            #[doc(hidden)]
7465            type UnderlyingSolTuple<'a> = ();
7466            #[doc(hidden)]
7467            type UnderlyingRustTuple<'a> = ();
7468            #[cfg(test)]
7469            #[allow(dead_code, unreachable_patterns)]
7470            fn _type_assertion(
7471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7472            ) {
7473                match _t {
7474                    alloy_sol_types::private::AssertTypeEq::<
7475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7476                    >(_) => {}
7477                }
7478            }
7479            #[automatically_derived]
7480            #[doc(hidden)]
7481            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7482                fn from(value: initializeReturn) -> Self {
7483                    ()
7484                }
7485            }
7486            #[automatically_derived]
7487            #[doc(hidden)]
7488            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7490                    Self {}
7491                }
7492            }
7493        }
7494        impl initializeReturn {
7495            fn _tokenize(
7496                &self,
7497            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7498                ()
7499            }
7500        }
7501        #[automatically_derived]
7502        impl alloy_sol_types::SolCall for initializeCall {
7503            type Parameters<'a> = (
7504                alloy::sol_types::sol_data::Address,
7505                alloy::sol_types::sol_data::Address,
7506                alloy::sol_types::sol_data::Address,
7507            );
7508            type Token<'a> = <Self::Parameters<
7509                'a,
7510            > as alloy_sol_types::SolType>::Token<'a>;
7511            type Return = initializeReturn;
7512            type ReturnTuple<'a> = ();
7513            type ReturnToken<'a> = <Self::ReturnTuple<
7514                'a,
7515            > as alloy_sol_types::SolType>::Token<'a>;
7516            const SIGNATURE: &'static str = "initialize(address,address,address)";
7517            const SELECTOR: [u8; 4] = [192u8, 197u8, 59u8, 139u8];
7518            #[inline]
7519            fn new<'a>(
7520                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7521            ) -> Self {
7522                tuple.into()
7523            }
7524            #[inline]
7525            fn tokenize(&self) -> Self::Token<'_> {
7526                (
7527                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7528                        &self._aggregator,
7529                    ),
7530                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7531                        &self._generator,
7532                    ),
7533                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7534                        &self.initialOwner,
7535                    ),
7536                )
7537            }
7538            #[inline]
7539            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7540                initializeReturn::_tokenize(ret)
7541            }
7542            #[inline]
7543            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7544                <Self::ReturnTuple<
7545                    '_,
7546                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7547                    .map(Into::into)
7548            }
7549            #[inline]
7550            fn abi_decode_returns_validate(
7551                data: &[u8],
7552            ) -> alloy_sol_types::Result<Self::Return> {
7553                <Self::ReturnTuple<
7554                    '_,
7555                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7556                    .map(Into::into)
7557            }
7558        }
7559    };
7560    #[derive(serde::Serialize, serde::Deserialize)]
7561    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7562    /**Function with signature `latestTaskNum()` and selector `0x8b00ce7c`.
7563```solidity
7564function latestTaskNum() external view returns (uint32);
7565```*/
7566    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7567    #[derive(Clone)]
7568    pub struct latestTaskNumCall;
7569    #[derive(serde::Serialize, serde::Deserialize)]
7570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7571    ///Container type for the return parameters of the [`latestTaskNum()`](latestTaskNumCall) function.
7572    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7573    #[derive(Clone)]
7574    pub struct latestTaskNumReturn {
7575        #[allow(missing_docs)]
7576        pub _0: u32,
7577    }
7578    #[allow(
7579        non_camel_case_types,
7580        non_snake_case,
7581        clippy::pub_underscore_fields,
7582        clippy::style
7583    )]
7584    const _: () = {
7585        use alloy::sol_types as alloy_sol_types;
7586        {
7587            #[doc(hidden)]
7588            type UnderlyingSolTuple<'a> = ();
7589            #[doc(hidden)]
7590            type UnderlyingRustTuple<'a> = ();
7591            #[cfg(test)]
7592            #[allow(dead_code, unreachable_patterns)]
7593            fn _type_assertion(
7594                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7595            ) {
7596                match _t {
7597                    alloy_sol_types::private::AssertTypeEq::<
7598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7599                    >(_) => {}
7600                }
7601            }
7602            #[automatically_derived]
7603            #[doc(hidden)]
7604            impl ::core::convert::From<latestTaskNumCall> for UnderlyingRustTuple<'_> {
7605                fn from(value: latestTaskNumCall) -> Self {
7606                    ()
7607                }
7608            }
7609            #[automatically_derived]
7610            #[doc(hidden)]
7611            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumCall {
7612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7613                    Self
7614                }
7615            }
7616        }
7617        {
7618            #[doc(hidden)]
7619            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
7620            #[doc(hidden)]
7621            type UnderlyingRustTuple<'a> = (u32,);
7622            #[cfg(test)]
7623            #[allow(dead_code, unreachable_patterns)]
7624            fn _type_assertion(
7625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7626            ) {
7627                match _t {
7628                    alloy_sol_types::private::AssertTypeEq::<
7629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7630                    >(_) => {}
7631                }
7632            }
7633            #[automatically_derived]
7634            #[doc(hidden)]
7635            impl ::core::convert::From<latestTaskNumReturn> for UnderlyingRustTuple<'_> {
7636                fn from(value: latestTaskNumReturn) -> Self {
7637                    (value._0,)
7638                }
7639            }
7640            #[automatically_derived]
7641            #[doc(hidden)]
7642            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumReturn {
7643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7644                    Self { _0: tuple.0 }
7645                }
7646            }
7647        }
7648        #[automatically_derived]
7649        impl alloy_sol_types::SolCall for latestTaskNumCall {
7650            type Parameters<'a> = ();
7651            type Token<'a> = <Self::Parameters<
7652                'a,
7653            > as alloy_sol_types::SolType>::Token<'a>;
7654            type Return = u32;
7655            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
7656            type ReturnToken<'a> = <Self::ReturnTuple<
7657                'a,
7658            > as alloy_sol_types::SolType>::Token<'a>;
7659            const SIGNATURE: &'static str = "latestTaskNum()";
7660            const SELECTOR: [u8; 4] = [139u8, 0u8, 206u8, 124u8];
7661            #[inline]
7662            fn new<'a>(
7663                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7664            ) -> Self {
7665                tuple.into()
7666            }
7667            #[inline]
7668            fn tokenize(&self) -> Self::Token<'_> {
7669                ()
7670            }
7671            #[inline]
7672            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7673                (
7674                    <alloy::sol_types::sol_data::Uint<
7675                        32,
7676                    > as alloy_sol_types::SolType>::tokenize(ret),
7677                )
7678            }
7679            #[inline]
7680            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7681                <Self::ReturnTuple<
7682                    '_,
7683                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7684                    .map(|r| {
7685                        let r: latestTaskNumReturn = r.into();
7686                        r._0
7687                    })
7688            }
7689            #[inline]
7690            fn abi_decode_returns_validate(
7691                data: &[u8],
7692            ) -> alloy_sol_types::Result<Self::Return> {
7693                <Self::ReturnTuple<
7694                    '_,
7695                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7696                    .map(|r| {
7697                        let r: latestTaskNumReturn = r.into();
7698                        r._0
7699                    })
7700            }
7701        }
7702    };
7703    #[derive(serde::Serialize, serde::Deserialize)]
7704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7705    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7706```solidity
7707function owner() external view returns (address);
7708```*/
7709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7710    #[derive(Clone)]
7711    pub struct ownerCall;
7712    #[derive(serde::Serialize, serde::Deserialize)]
7713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7714    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7716    #[derive(Clone)]
7717    pub struct ownerReturn {
7718        #[allow(missing_docs)]
7719        pub _0: alloy::sol_types::private::Address,
7720    }
7721    #[allow(
7722        non_camel_case_types,
7723        non_snake_case,
7724        clippy::pub_underscore_fields,
7725        clippy::style
7726    )]
7727    const _: () = {
7728        use alloy::sol_types as alloy_sol_types;
7729        {
7730            #[doc(hidden)]
7731            type UnderlyingSolTuple<'a> = ();
7732            #[doc(hidden)]
7733            type UnderlyingRustTuple<'a> = ();
7734            #[cfg(test)]
7735            #[allow(dead_code, unreachable_patterns)]
7736            fn _type_assertion(
7737                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7738            ) {
7739                match _t {
7740                    alloy_sol_types::private::AssertTypeEq::<
7741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7742                    >(_) => {}
7743                }
7744            }
7745            #[automatically_derived]
7746            #[doc(hidden)]
7747            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7748                fn from(value: ownerCall) -> Self {
7749                    ()
7750                }
7751            }
7752            #[automatically_derived]
7753            #[doc(hidden)]
7754            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7755                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7756                    Self
7757                }
7758            }
7759        }
7760        {
7761            #[doc(hidden)]
7762            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7763            #[doc(hidden)]
7764            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7765            #[cfg(test)]
7766            #[allow(dead_code, unreachable_patterns)]
7767            fn _type_assertion(
7768                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7769            ) {
7770                match _t {
7771                    alloy_sol_types::private::AssertTypeEq::<
7772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7773                    >(_) => {}
7774                }
7775            }
7776            #[automatically_derived]
7777            #[doc(hidden)]
7778            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7779                fn from(value: ownerReturn) -> Self {
7780                    (value._0,)
7781                }
7782            }
7783            #[automatically_derived]
7784            #[doc(hidden)]
7785            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7786                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7787                    Self { _0: tuple.0 }
7788                }
7789            }
7790        }
7791        #[automatically_derived]
7792        impl alloy_sol_types::SolCall for ownerCall {
7793            type Parameters<'a> = ();
7794            type Token<'a> = <Self::Parameters<
7795                'a,
7796            > as alloy_sol_types::SolType>::Token<'a>;
7797            type Return = alloy::sol_types::private::Address;
7798            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7799            type ReturnToken<'a> = <Self::ReturnTuple<
7800                'a,
7801            > as alloy_sol_types::SolType>::Token<'a>;
7802            const SIGNATURE: &'static str = "owner()";
7803            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7804            #[inline]
7805            fn new<'a>(
7806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7807            ) -> Self {
7808                tuple.into()
7809            }
7810            #[inline]
7811            fn tokenize(&self) -> Self::Token<'_> {
7812                ()
7813            }
7814            #[inline]
7815            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7816                (
7817                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7818                        ret,
7819                    ),
7820                )
7821            }
7822            #[inline]
7823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7824                <Self::ReturnTuple<
7825                    '_,
7826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7827                    .map(|r| {
7828                        let r: ownerReturn = r.into();
7829                        r._0
7830                    })
7831            }
7832            #[inline]
7833            fn abi_decode_returns_validate(
7834                data: &[u8],
7835            ) -> alloy_sol_types::Result<Self::Return> {
7836                <Self::ReturnTuple<
7837                    '_,
7838                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7839                    .map(|r| {
7840                        let r: ownerReturn = r.into();
7841                        r._0
7842                    })
7843            }
7844        }
7845    };
7846    #[derive(serde::Serialize, serde::Deserialize)]
7847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7848    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
7849```solidity
7850function registryCoordinator() external view returns (address);
7851```*/
7852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7853    #[derive(Clone)]
7854    pub struct registryCoordinatorCall;
7855    #[derive(serde::Serialize, serde::Deserialize)]
7856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7857    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
7858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7859    #[derive(Clone)]
7860    pub struct registryCoordinatorReturn {
7861        #[allow(missing_docs)]
7862        pub _0: alloy::sol_types::private::Address,
7863    }
7864    #[allow(
7865        non_camel_case_types,
7866        non_snake_case,
7867        clippy::pub_underscore_fields,
7868        clippy::style
7869    )]
7870    const _: () = {
7871        use alloy::sol_types as alloy_sol_types;
7872        {
7873            #[doc(hidden)]
7874            type UnderlyingSolTuple<'a> = ();
7875            #[doc(hidden)]
7876            type UnderlyingRustTuple<'a> = ();
7877            #[cfg(test)]
7878            #[allow(dead_code, unreachable_patterns)]
7879            fn _type_assertion(
7880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7881            ) {
7882                match _t {
7883                    alloy_sol_types::private::AssertTypeEq::<
7884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7885                    >(_) => {}
7886                }
7887            }
7888            #[automatically_derived]
7889            #[doc(hidden)]
7890            impl ::core::convert::From<registryCoordinatorCall>
7891            for UnderlyingRustTuple<'_> {
7892                fn from(value: registryCoordinatorCall) -> Self {
7893                    ()
7894                }
7895            }
7896            #[automatically_derived]
7897            #[doc(hidden)]
7898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7899            for registryCoordinatorCall {
7900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7901                    Self
7902                }
7903            }
7904        }
7905        {
7906            #[doc(hidden)]
7907            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7908            #[doc(hidden)]
7909            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7910            #[cfg(test)]
7911            #[allow(dead_code, unreachable_patterns)]
7912            fn _type_assertion(
7913                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7914            ) {
7915                match _t {
7916                    alloy_sol_types::private::AssertTypeEq::<
7917                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7918                    >(_) => {}
7919                }
7920            }
7921            #[automatically_derived]
7922            #[doc(hidden)]
7923            impl ::core::convert::From<registryCoordinatorReturn>
7924            for UnderlyingRustTuple<'_> {
7925                fn from(value: registryCoordinatorReturn) -> Self {
7926                    (value._0,)
7927                }
7928            }
7929            #[automatically_derived]
7930            #[doc(hidden)]
7931            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7932            for registryCoordinatorReturn {
7933                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7934                    Self { _0: tuple.0 }
7935                }
7936            }
7937        }
7938        #[automatically_derived]
7939        impl alloy_sol_types::SolCall for registryCoordinatorCall {
7940            type Parameters<'a> = ();
7941            type Token<'a> = <Self::Parameters<
7942                'a,
7943            > as alloy_sol_types::SolType>::Token<'a>;
7944            type Return = alloy::sol_types::private::Address;
7945            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7946            type ReturnToken<'a> = <Self::ReturnTuple<
7947                'a,
7948            > as alloy_sol_types::SolType>::Token<'a>;
7949            const SIGNATURE: &'static str = "registryCoordinator()";
7950            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
7951            #[inline]
7952            fn new<'a>(
7953                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7954            ) -> Self {
7955                tuple.into()
7956            }
7957            #[inline]
7958            fn tokenize(&self) -> Self::Token<'_> {
7959                ()
7960            }
7961            #[inline]
7962            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7963                (
7964                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7965                        ret,
7966                    ),
7967                )
7968            }
7969            #[inline]
7970            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7971                <Self::ReturnTuple<
7972                    '_,
7973                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7974                    .map(|r| {
7975                        let r: registryCoordinatorReturn = r.into();
7976                        r._0
7977                    })
7978            }
7979            #[inline]
7980            fn abi_decode_returns_validate(
7981                data: &[u8],
7982            ) -> alloy_sol_types::Result<Self::Return> {
7983                <Self::ReturnTuple<
7984                    '_,
7985                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7986                    .map(|r| {
7987                        let r: registryCoordinatorReturn = r.into();
7988                        r._0
7989                    })
7990            }
7991        }
7992    };
7993    #[derive(serde::Serialize, serde::Deserialize)]
7994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7995    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7996```solidity
7997function renounceOwnership() external;
7998```*/
7999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8000    #[derive(Clone)]
8001    pub struct renounceOwnershipCall;
8002    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8004    #[derive(Clone)]
8005    pub struct renounceOwnershipReturn {}
8006    #[allow(
8007        non_camel_case_types,
8008        non_snake_case,
8009        clippy::pub_underscore_fields,
8010        clippy::style
8011    )]
8012    const _: () = {
8013        use alloy::sol_types as alloy_sol_types;
8014        {
8015            #[doc(hidden)]
8016            type UnderlyingSolTuple<'a> = ();
8017            #[doc(hidden)]
8018            type UnderlyingRustTuple<'a> = ();
8019            #[cfg(test)]
8020            #[allow(dead_code, unreachable_patterns)]
8021            fn _type_assertion(
8022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8023            ) {
8024                match _t {
8025                    alloy_sol_types::private::AssertTypeEq::<
8026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8027                    >(_) => {}
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<renounceOwnershipCall>
8033            for UnderlyingRustTuple<'_> {
8034                fn from(value: renounceOwnershipCall) -> Self {
8035                    ()
8036                }
8037            }
8038            #[automatically_derived]
8039            #[doc(hidden)]
8040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8041            for renounceOwnershipCall {
8042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8043                    Self
8044                }
8045            }
8046        }
8047        {
8048            #[doc(hidden)]
8049            type UnderlyingSolTuple<'a> = ();
8050            #[doc(hidden)]
8051            type UnderlyingRustTuple<'a> = ();
8052            #[cfg(test)]
8053            #[allow(dead_code, unreachable_patterns)]
8054            fn _type_assertion(
8055                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8056            ) {
8057                match _t {
8058                    alloy_sol_types::private::AssertTypeEq::<
8059                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8060                    >(_) => {}
8061                }
8062            }
8063            #[automatically_derived]
8064            #[doc(hidden)]
8065            impl ::core::convert::From<renounceOwnershipReturn>
8066            for UnderlyingRustTuple<'_> {
8067                fn from(value: renounceOwnershipReturn) -> Self {
8068                    ()
8069                }
8070            }
8071            #[automatically_derived]
8072            #[doc(hidden)]
8073            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8074            for renounceOwnershipReturn {
8075                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8076                    Self {}
8077                }
8078            }
8079        }
8080        impl renounceOwnershipReturn {
8081            fn _tokenize(
8082                &self,
8083            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8084                ()
8085            }
8086        }
8087        #[automatically_derived]
8088        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8089            type Parameters<'a> = ();
8090            type Token<'a> = <Self::Parameters<
8091                'a,
8092            > as alloy_sol_types::SolType>::Token<'a>;
8093            type Return = renounceOwnershipReturn;
8094            type ReturnTuple<'a> = ();
8095            type ReturnToken<'a> = <Self::ReturnTuple<
8096                'a,
8097            > as alloy_sol_types::SolType>::Token<'a>;
8098            const SIGNATURE: &'static str = "renounceOwnership()";
8099            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8100            #[inline]
8101            fn new<'a>(
8102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8103            ) -> Self {
8104                tuple.into()
8105            }
8106            #[inline]
8107            fn tokenize(&self) -> Self::Token<'_> {
8108                ()
8109            }
8110            #[inline]
8111            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8112                renounceOwnershipReturn::_tokenize(ret)
8113            }
8114            #[inline]
8115            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8116                <Self::ReturnTuple<
8117                    '_,
8118                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8119                    .map(Into::into)
8120            }
8121            #[inline]
8122            fn abi_decode_returns_validate(
8123                data: &[u8],
8124            ) -> alloy_sol_types::Result<Self::Return> {
8125                <Self::ReturnTuple<
8126                    '_,
8127                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8128                    .map(Into::into)
8129            }
8130        }
8131    };
8132    #[derive(serde::Serialize, serde::Deserialize)]
8133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8134    /**Function with signature `respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x7e8ef1be`.
8135```solidity
8136function respondToSquaringTask(TaskManager.Task memory task, TaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
8137```*/
8138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8139    #[derive(Clone)]
8140    pub struct respondToSquaringTaskCall {
8141        #[allow(missing_docs)]
8142        pub task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
8143        #[allow(missing_docs)]
8144        pub taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
8145        #[allow(missing_docs)]
8146        pub nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
8147    }
8148    ///Container type for the return parameters of the [`respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](respondToSquaringTaskCall) function.
8149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8150    #[derive(Clone)]
8151    pub struct respondToSquaringTaskReturn {}
8152    #[allow(
8153        non_camel_case_types,
8154        non_snake_case,
8155        clippy::pub_underscore_fields,
8156        clippy::style
8157    )]
8158    const _: () = {
8159        use alloy::sol_types as alloy_sol_types;
8160        {
8161            #[doc(hidden)]
8162            type UnderlyingSolTuple<'a> = (
8163                TaskManager::Task,
8164                TaskManager::TaskResponse,
8165                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
8166            );
8167            #[doc(hidden)]
8168            type UnderlyingRustTuple<'a> = (
8169                <TaskManager::Task as alloy::sol_types::SolType>::RustType,
8170                <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
8171                <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
8172            );
8173            #[cfg(test)]
8174            #[allow(dead_code, unreachable_patterns)]
8175            fn _type_assertion(
8176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8177            ) {
8178                match _t {
8179                    alloy_sol_types::private::AssertTypeEq::<
8180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8181                    >(_) => {}
8182                }
8183            }
8184            #[automatically_derived]
8185            #[doc(hidden)]
8186            impl ::core::convert::From<respondToSquaringTaskCall>
8187            for UnderlyingRustTuple<'_> {
8188                fn from(value: respondToSquaringTaskCall) -> Self {
8189                    (value.task, value.taskResponse, value.nonSignerStakesAndSignature)
8190                }
8191            }
8192            #[automatically_derived]
8193            #[doc(hidden)]
8194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8195            for respondToSquaringTaskCall {
8196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8197                    Self {
8198                        task: tuple.0,
8199                        taskResponse: tuple.1,
8200                        nonSignerStakesAndSignature: tuple.2,
8201                    }
8202                }
8203            }
8204        }
8205        {
8206            #[doc(hidden)]
8207            type UnderlyingSolTuple<'a> = ();
8208            #[doc(hidden)]
8209            type UnderlyingRustTuple<'a> = ();
8210            #[cfg(test)]
8211            #[allow(dead_code, unreachable_patterns)]
8212            fn _type_assertion(
8213                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8214            ) {
8215                match _t {
8216                    alloy_sol_types::private::AssertTypeEq::<
8217                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8218                    >(_) => {}
8219                }
8220            }
8221            #[automatically_derived]
8222            #[doc(hidden)]
8223            impl ::core::convert::From<respondToSquaringTaskReturn>
8224            for UnderlyingRustTuple<'_> {
8225                fn from(value: respondToSquaringTaskReturn) -> Self {
8226                    ()
8227                }
8228            }
8229            #[automatically_derived]
8230            #[doc(hidden)]
8231            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8232            for respondToSquaringTaskReturn {
8233                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8234                    Self {}
8235                }
8236            }
8237        }
8238        impl respondToSquaringTaskReturn {
8239            fn _tokenize(
8240                &self,
8241            ) -> <respondToSquaringTaskCall as alloy_sol_types::SolCall>::ReturnToken<
8242                '_,
8243            > {
8244                ()
8245            }
8246        }
8247        #[automatically_derived]
8248        impl alloy_sol_types::SolCall for respondToSquaringTaskCall {
8249            type Parameters<'a> = (
8250                TaskManager::Task,
8251                TaskManager::TaskResponse,
8252                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
8253            );
8254            type Token<'a> = <Self::Parameters<
8255                'a,
8256            > as alloy_sol_types::SolType>::Token<'a>;
8257            type Return = respondToSquaringTaskReturn;
8258            type ReturnTuple<'a> = ();
8259            type ReturnToken<'a> = <Self::ReturnTuple<
8260                'a,
8261            > as alloy_sol_types::SolType>::Token<'a>;
8262            const SIGNATURE: &'static str = "respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
8263            const SELECTOR: [u8; 4] = [126u8, 142u8, 241u8, 190u8];
8264            #[inline]
8265            fn new<'a>(
8266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8267            ) -> Self {
8268                tuple.into()
8269            }
8270            #[inline]
8271            fn tokenize(&self) -> Self::Token<'_> {
8272                (
8273                    <TaskManager::Task as alloy_sol_types::SolType>::tokenize(
8274                        &self.task,
8275                    ),
8276                    <TaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
8277                        &self.taskResponse,
8278                    ),
8279                    <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
8280                        &self.nonSignerStakesAndSignature,
8281                    ),
8282                )
8283            }
8284            #[inline]
8285            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8286                respondToSquaringTaskReturn::_tokenize(ret)
8287            }
8288            #[inline]
8289            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8290                <Self::ReturnTuple<
8291                    '_,
8292                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8293                    .map(Into::into)
8294            }
8295            #[inline]
8296            fn abi_decode_returns_validate(
8297                data: &[u8],
8298            ) -> alloy_sol_types::Result<Self::Return> {
8299                <Self::ReturnTuple<
8300                    '_,
8301                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8302                    .map(Into::into)
8303            }
8304        }
8305    };
8306    #[derive(serde::Serialize, serde::Deserialize)]
8307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8308    /**Function with signature `setAggregator(address)` and selector `0xf9120af6`.
8309```solidity
8310function setAggregator(address newAggregator) external;
8311```*/
8312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8313    #[derive(Clone)]
8314    pub struct setAggregatorCall {
8315        #[allow(missing_docs)]
8316        pub newAggregator: alloy::sol_types::private::Address,
8317    }
8318    ///Container type for the return parameters of the [`setAggregator(address)`](setAggregatorCall) function.
8319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8320    #[derive(Clone)]
8321    pub struct setAggregatorReturn {}
8322    #[allow(
8323        non_camel_case_types,
8324        non_snake_case,
8325        clippy::pub_underscore_fields,
8326        clippy::style
8327    )]
8328    const _: () = {
8329        use alloy::sol_types as alloy_sol_types;
8330        {
8331            #[doc(hidden)]
8332            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8333            #[doc(hidden)]
8334            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8335            #[cfg(test)]
8336            #[allow(dead_code, unreachable_patterns)]
8337            fn _type_assertion(
8338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8339            ) {
8340                match _t {
8341                    alloy_sol_types::private::AssertTypeEq::<
8342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8343                    >(_) => {}
8344                }
8345            }
8346            #[automatically_derived]
8347            #[doc(hidden)]
8348            impl ::core::convert::From<setAggregatorCall> for UnderlyingRustTuple<'_> {
8349                fn from(value: setAggregatorCall) -> Self {
8350                    (value.newAggregator,)
8351                }
8352            }
8353            #[automatically_derived]
8354            #[doc(hidden)]
8355            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAggregatorCall {
8356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8357                    Self { newAggregator: tuple.0 }
8358                }
8359            }
8360        }
8361        {
8362            #[doc(hidden)]
8363            type UnderlyingSolTuple<'a> = ();
8364            #[doc(hidden)]
8365            type UnderlyingRustTuple<'a> = ();
8366            #[cfg(test)]
8367            #[allow(dead_code, unreachable_patterns)]
8368            fn _type_assertion(
8369                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8370            ) {
8371                match _t {
8372                    alloy_sol_types::private::AssertTypeEq::<
8373                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8374                    >(_) => {}
8375                }
8376            }
8377            #[automatically_derived]
8378            #[doc(hidden)]
8379            impl ::core::convert::From<setAggregatorReturn> for UnderlyingRustTuple<'_> {
8380                fn from(value: setAggregatorReturn) -> Self {
8381                    ()
8382                }
8383            }
8384            #[automatically_derived]
8385            #[doc(hidden)]
8386            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAggregatorReturn {
8387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8388                    Self {}
8389                }
8390            }
8391        }
8392        impl setAggregatorReturn {
8393            fn _tokenize(
8394                &self,
8395            ) -> <setAggregatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8396                ()
8397            }
8398        }
8399        #[automatically_derived]
8400        impl alloy_sol_types::SolCall for setAggregatorCall {
8401            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8402            type Token<'a> = <Self::Parameters<
8403                'a,
8404            > as alloy_sol_types::SolType>::Token<'a>;
8405            type Return = setAggregatorReturn;
8406            type ReturnTuple<'a> = ();
8407            type ReturnToken<'a> = <Self::ReturnTuple<
8408                'a,
8409            > as alloy_sol_types::SolType>::Token<'a>;
8410            const SIGNATURE: &'static str = "setAggregator(address)";
8411            const SELECTOR: [u8; 4] = [249u8, 18u8, 10u8, 246u8];
8412            #[inline]
8413            fn new<'a>(
8414                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8415            ) -> Self {
8416                tuple.into()
8417            }
8418            #[inline]
8419            fn tokenize(&self) -> Self::Token<'_> {
8420                (
8421                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8422                        &self.newAggregator,
8423                    ),
8424                )
8425            }
8426            #[inline]
8427            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8428                setAggregatorReturn::_tokenize(ret)
8429            }
8430            #[inline]
8431            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8432                <Self::ReturnTuple<
8433                    '_,
8434                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8435                    .map(Into::into)
8436            }
8437            #[inline]
8438            fn abi_decode_returns_validate(
8439                data: &[u8],
8440            ) -> alloy_sol_types::Result<Self::Return> {
8441                <Self::ReturnTuple<
8442                    '_,
8443                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8444                    .map(Into::into)
8445            }
8446        }
8447    };
8448    #[derive(serde::Serialize, serde::Deserialize)]
8449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8450    /**Function with signature `setGenerator(address)` and selector `0x4a7c7e4b`.
8451```solidity
8452function setGenerator(address newGenerator) external;
8453```*/
8454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8455    #[derive(Clone)]
8456    pub struct setGeneratorCall {
8457        #[allow(missing_docs)]
8458        pub newGenerator: alloy::sol_types::private::Address,
8459    }
8460    ///Container type for the return parameters of the [`setGenerator(address)`](setGeneratorCall) function.
8461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8462    #[derive(Clone)]
8463    pub struct setGeneratorReturn {}
8464    #[allow(
8465        non_camel_case_types,
8466        non_snake_case,
8467        clippy::pub_underscore_fields,
8468        clippy::style
8469    )]
8470    const _: () = {
8471        use alloy::sol_types as alloy_sol_types;
8472        {
8473            #[doc(hidden)]
8474            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8475            #[doc(hidden)]
8476            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8477            #[cfg(test)]
8478            #[allow(dead_code, unreachable_patterns)]
8479            fn _type_assertion(
8480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8481            ) {
8482                match _t {
8483                    alloy_sol_types::private::AssertTypeEq::<
8484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8485                    >(_) => {}
8486                }
8487            }
8488            #[automatically_derived]
8489            #[doc(hidden)]
8490            impl ::core::convert::From<setGeneratorCall> for UnderlyingRustTuple<'_> {
8491                fn from(value: setGeneratorCall) -> Self {
8492                    (value.newGenerator,)
8493                }
8494            }
8495            #[automatically_derived]
8496            #[doc(hidden)]
8497            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setGeneratorCall {
8498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8499                    Self { newGenerator: tuple.0 }
8500                }
8501            }
8502        }
8503        {
8504            #[doc(hidden)]
8505            type UnderlyingSolTuple<'a> = ();
8506            #[doc(hidden)]
8507            type UnderlyingRustTuple<'a> = ();
8508            #[cfg(test)]
8509            #[allow(dead_code, unreachable_patterns)]
8510            fn _type_assertion(
8511                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8512            ) {
8513                match _t {
8514                    alloy_sol_types::private::AssertTypeEq::<
8515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8516                    >(_) => {}
8517                }
8518            }
8519            #[automatically_derived]
8520            #[doc(hidden)]
8521            impl ::core::convert::From<setGeneratorReturn> for UnderlyingRustTuple<'_> {
8522                fn from(value: setGeneratorReturn) -> Self {
8523                    ()
8524                }
8525            }
8526            #[automatically_derived]
8527            #[doc(hidden)]
8528            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setGeneratorReturn {
8529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8530                    Self {}
8531                }
8532            }
8533        }
8534        impl setGeneratorReturn {
8535            fn _tokenize(
8536                &self,
8537            ) -> <setGeneratorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8538                ()
8539            }
8540        }
8541        #[automatically_derived]
8542        impl alloy_sol_types::SolCall for setGeneratorCall {
8543            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8544            type Token<'a> = <Self::Parameters<
8545                'a,
8546            > as alloy_sol_types::SolType>::Token<'a>;
8547            type Return = setGeneratorReturn;
8548            type ReturnTuple<'a> = ();
8549            type ReturnToken<'a> = <Self::ReturnTuple<
8550                'a,
8551            > as alloy_sol_types::SolType>::Token<'a>;
8552            const SIGNATURE: &'static str = "setGenerator(address)";
8553            const SELECTOR: [u8; 4] = [74u8, 124u8, 126u8, 75u8];
8554            #[inline]
8555            fn new<'a>(
8556                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8557            ) -> Self {
8558                tuple.into()
8559            }
8560            #[inline]
8561            fn tokenize(&self) -> Self::Token<'_> {
8562                (
8563                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8564                        &self.newGenerator,
8565                    ),
8566                )
8567            }
8568            #[inline]
8569            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8570                setGeneratorReturn::_tokenize(ret)
8571            }
8572            #[inline]
8573            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8574                <Self::ReturnTuple<
8575                    '_,
8576                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8577                    .map(Into::into)
8578            }
8579            #[inline]
8580            fn abi_decode_returns_validate(
8581                data: &[u8],
8582            ) -> alloy_sol_types::Result<Self::Return> {
8583                <Self::ReturnTuple<
8584                    '_,
8585                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8586                    .map(Into::into)
8587            }
8588        }
8589    };
8590    #[derive(serde::Serialize, serde::Deserialize)]
8591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8592    /**Function with signature `stakeRegistry()` and selector `0x68304835`.
8593```solidity
8594function stakeRegistry() external view returns (address);
8595```*/
8596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8597    #[derive(Clone)]
8598    pub struct stakeRegistryCall;
8599    #[derive(serde::Serialize, serde::Deserialize)]
8600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8601    ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function.
8602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8603    #[derive(Clone)]
8604    pub struct stakeRegistryReturn {
8605        #[allow(missing_docs)]
8606        pub _0: alloy::sol_types::private::Address,
8607    }
8608    #[allow(
8609        non_camel_case_types,
8610        non_snake_case,
8611        clippy::pub_underscore_fields,
8612        clippy::style
8613    )]
8614    const _: () = {
8615        use alloy::sol_types as alloy_sol_types;
8616        {
8617            #[doc(hidden)]
8618            type UnderlyingSolTuple<'a> = ();
8619            #[doc(hidden)]
8620            type UnderlyingRustTuple<'a> = ();
8621            #[cfg(test)]
8622            #[allow(dead_code, unreachable_patterns)]
8623            fn _type_assertion(
8624                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8625            ) {
8626                match _t {
8627                    alloy_sol_types::private::AssertTypeEq::<
8628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8629                    >(_) => {}
8630                }
8631            }
8632            #[automatically_derived]
8633            #[doc(hidden)]
8634            impl ::core::convert::From<stakeRegistryCall> for UnderlyingRustTuple<'_> {
8635                fn from(value: stakeRegistryCall) -> Self {
8636                    ()
8637                }
8638            }
8639            #[automatically_derived]
8640            #[doc(hidden)]
8641            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryCall {
8642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8643                    Self
8644                }
8645            }
8646        }
8647        {
8648            #[doc(hidden)]
8649            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8650            #[doc(hidden)]
8651            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8652            #[cfg(test)]
8653            #[allow(dead_code, unreachable_patterns)]
8654            fn _type_assertion(
8655                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8656            ) {
8657                match _t {
8658                    alloy_sol_types::private::AssertTypeEq::<
8659                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8660                    >(_) => {}
8661                }
8662            }
8663            #[automatically_derived]
8664            #[doc(hidden)]
8665            impl ::core::convert::From<stakeRegistryReturn> for UnderlyingRustTuple<'_> {
8666                fn from(value: stakeRegistryReturn) -> Self {
8667                    (value._0,)
8668                }
8669            }
8670            #[automatically_derived]
8671            #[doc(hidden)]
8672            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryReturn {
8673                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8674                    Self { _0: tuple.0 }
8675                }
8676            }
8677        }
8678        #[automatically_derived]
8679        impl alloy_sol_types::SolCall for stakeRegistryCall {
8680            type Parameters<'a> = ();
8681            type Token<'a> = <Self::Parameters<
8682                'a,
8683            > as alloy_sol_types::SolType>::Token<'a>;
8684            type Return = alloy::sol_types::private::Address;
8685            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8686            type ReturnToken<'a> = <Self::ReturnTuple<
8687                'a,
8688            > as alloy_sol_types::SolType>::Token<'a>;
8689            const SIGNATURE: &'static str = "stakeRegistry()";
8690            const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8];
8691            #[inline]
8692            fn new<'a>(
8693                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8694            ) -> Self {
8695                tuple.into()
8696            }
8697            #[inline]
8698            fn tokenize(&self) -> Self::Token<'_> {
8699                ()
8700            }
8701            #[inline]
8702            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8703                (
8704                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8705                        ret,
8706                    ),
8707                )
8708            }
8709            #[inline]
8710            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8711                <Self::ReturnTuple<
8712                    '_,
8713                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8714                    .map(|r| {
8715                        let r: stakeRegistryReturn = r.into();
8716                        r._0
8717                    })
8718            }
8719            #[inline]
8720            fn abi_decode_returns_validate(
8721                data: &[u8],
8722            ) -> alloy_sol_types::Result<Self::Return> {
8723                <Self::ReturnTuple<
8724                    '_,
8725                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8726                    .map(|r| {
8727                        let r: stakeRegistryReturn = r.into();
8728                        r._0
8729                    })
8730            }
8731        }
8732    };
8733    #[derive(serde::Serialize, serde::Deserialize)]
8734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8735    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8736```solidity
8737function transferOwnership(address newOwner) external;
8738```*/
8739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8740    #[derive(Clone)]
8741    pub struct transferOwnershipCall {
8742        #[allow(missing_docs)]
8743        pub newOwner: alloy::sol_types::private::Address,
8744    }
8745    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8747    #[derive(Clone)]
8748    pub struct transferOwnershipReturn {}
8749    #[allow(
8750        non_camel_case_types,
8751        non_snake_case,
8752        clippy::pub_underscore_fields,
8753        clippy::style
8754    )]
8755    const _: () = {
8756        use alloy::sol_types as alloy_sol_types;
8757        {
8758            #[doc(hidden)]
8759            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8760            #[doc(hidden)]
8761            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8762            #[cfg(test)]
8763            #[allow(dead_code, unreachable_patterns)]
8764            fn _type_assertion(
8765                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8766            ) {
8767                match _t {
8768                    alloy_sol_types::private::AssertTypeEq::<
8769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8770                    >(_) => {}
8771                }
8772            }
8773            #[automatically_derived]
8774            #[doc(hidden)]
8775            impl ::core::convert::From<transferOwnershipCall>
8776            for UnderlyingRustTuple<'_> {
8777                fn from(value: transferOwnershipCall) -> Self {
8778                    (value.newOwner,)
8779                }
8780            }
8781            #[automatically_derived]
8782            #[doc(hidden)]
8783            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8784            for transferOwnershipCall {
8785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8786                    Self { newOwner: tuple.0 }
8787                }
8788            }
8789        }
8790        {
8791            #[doc(hidden)]
8792            type UnderlyingSolTuple<'a> = ();
8793            #[doc(hidden)]
8794            type UnderlyingRustTuple<'a> = ();
8795            #[cfg(test)]
8796            #[allow(dead_code, unreachable_patterns)]
8797            fn _type_assertion(
8798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8799            ) {
8800                match _t {
8801                    alloy_sol_types::private::AssertTypeEq::<
8802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8803                    >(_) => {}
8804                }
8805            }
8806            #[automatically_derived]
8807            #[doc(hidden)]
8808            impl ::core::convert::From<transferOwnershipReturn>
8809            for UnderlyingRustTuple<'_> {
8810                fn from(value: transferOwnershipReturn) -> Self {
8811                    ()
8812                }
8813            }
8814            #[automatically_derived]
8815            #[doc(hidden)]
8816            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8817            for transferOwnershipReturn {
8818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8819                    Self {}
8820                }
8821            }
8822        }
8823        impl transferOwnershipReturn {
8824            fn _tokenize(
8825                &self,
8826            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8827                ()
8828            }
8829        }
8830        #[automatically_derived]
8831        impl alloy_sol_types::SolCall for transferOwnershipCall {
8832            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8833            type Token<'a> = <Self::Parameters<
8834                'a,
8835            > as alloy_sol_types::SolType>::Token<'a>;
8836            type Return = transferOwnershipReturn;
8837            type ReturnTuple<'a> = ();
8838            type ReturnToken<'a> = <Self::ReturnTuple<
8839                'a,
8840            > as alloy_sol_types::SolType>::Token<'a>;
8841            const SIGNATURE: &'static str = "transferOwnership(address)";
8842            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8843            #[inline]
8844            fn new<'a>(
8845                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8846            ) -> Self {
8847                tuple.into()
8848            }
8849            #[inline]
8850            fn tokenize(&self) -> Self::Token<'_> {
8851                (
8852                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8853                        &self.newOwner,
8854                    ),
8855                )
8856            }
8857            #[inline]
8858            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8859                transferOwnershipReturn::_tokenize(ret)
8860            }
8861            #[inline]
8862            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8863                <Self::ReturnTuple<
8864                    '_,
8865                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8866                    .map(Into::into)
8867            }
8868            #[inline]
8869            fn abi_decode_returns_validate(
8870                data: &[u8],
8871            ) -> alloy_sol_types::Result<Self::Return> {
8872                <Self::ReturnTuple<
8873                    '_,
8874                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8875                    .map(Into::into)
8876            }
8877        }
8878    };
8879    #[derive(serde::Serialize, serde::Deserialize)]
8880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8881    /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`.
8882```solidity
8883function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
8884```*/
8885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8886    #[derive(Clone)]
8887    pub struct trySignatureAndApkVerificationCall {
8888        #[allow(missing_docs)]
8889        pub msgHash: alloy::sol_types::private::FixedBytes<32>,
8890        #[allow(missing_docs)]
8891        pub apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8892        #[allow(missing_docs)]
8893        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8894        #[allow(missing_docs)]
8895        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8896    }
8897    #[derive(serde::Serialize, serde::Deserialize)]
8898    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8899    ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function.
8900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8901    #[derive(Clone)]
8902    pub struct trySignatureAndApkVerificationReturn {
8903        #[allow(missing_docs)]
8904        pub pairingSuccessful: bool,
8905        #[allow(missing_docs)]
8906        pub siganatureIsValid: bool,
8907    }
8908    #[allow(
8909        non_camel_case_types,
8910        non_snake_case,
8911        clippy::pub_underscore_fields,
8912        clippy::style
8913    )]
8914    const _: () = {
8915        use alloy::sol_types as alloy_sol_types;
8916        {
8917            #[doc(hidden)]
8918            type UnderlyingSolTuple<'a> = (
8919                alloy::sol_types::sol_data::FixedBytes<32>,
8920                BN254::G1Point,
8921                BN254::G2Point,
8922                BN254::G1Point,
8923            );
8924            #[doc(hidden)]
8925            type UnderlyingRustTuple<'a> = (
8926                alloy::sol_types::private::FixedBytes<32>,
8927                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8928                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8929                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8930            );
8931            #[cfg(test)]
8932            #[allow(dead_code, unreachable_patterns)]
8933            fn _type_assertion(
8934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8935            ) {
8936                match _t {
8937                    alloy_sol_types::private::AssertTypeEq::<
8938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8939                    >(_) => {}
8940                }
8941            }
8942            #[automatically_derived]
8943            #[doc(hidden)]
8944            impl ::core::convert::From<trySignatureAndApkVerificationCall>
8945            for UnderlyingRustTuple<'_> {
8946                fn from(value: trySignatureAndApkVerificationCall) -> Self {
8947                    (value.msgHash, value.apk, value.apkG2, value.sigma)
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8953            for trySignatureAndApkVerificationCall {
8954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8955                    Self {
8956                        msgHash: tuple.0,
8957                        apk: tuple.1,
8958                        apkG2: tuple.2,
8959                        sigma: tuple.3,
8960                    }
8961                }
8962            }
8963        }
8964        {
8965            #[doc(hidden)]
8966            type UnderlyingSolTuple<'a> = (
8967                alloy::sol_types::sol_data::Bool,
8968                alloy::sol_types::sol_data::Bool,
8969            );
8970            #[doc(hidden)]
8971            type UnderlyingRustTuple<'a> = (bool, bool);
8972            #[cfg(test)]
8973            #[allow(dead_code, unreachable_patterns)]
8974            fn _type_assertion(
8975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8976            ) {
8977                match _t {
8978                    alloy_sol_types::private::AssertTypeEq::<
8979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8980                    >(_) => {}
8981                }
8982            }
8983            #[automatically_derived]
8984            #[doc(hidden)]
8985            impl ::core::convert::From<trySignatureAndApkVerificationReturn>
8986            for UnderlyingRustTuple<'_> {
8987                fn from(value: trySignatureAndApkVerificationReturn) -> Self {
8988                    (value.pairingSuccessful, value.siganatureIsValid)
8989                }
8990            }
8991            #[automatically_derived]
8992            #[doc(hidden)]
8993            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8994            for trySignatureAndApkVerificationReturn {
8995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8996                    Self {
8997                        pairingSuccessful: tuple.0,
8998                        siganatureIsValid: tuple.1,
8999                    }
9000                }
9001            }
9002        }
9003        impl trySignatureAndApkVerificationReturn {
9004            fn _tokenize(
9005                &self,
9006            ) -> <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::ReturnToken<
9007                '_,
9008            > {
9009                (
9010                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9011                        &self.pairingSuccessful,
9012                    ),
9013                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9014                        &self.siganatureIsValid,
9015                    ),
9016                )
9017            }
9018        }
9019        #[automatically_derived]
9020        impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall {
9021            type Parameters<'a> = (
9022                alloy::sol_types::sol_data::FixedBytes<32>,
9023                BN254::G1Point,
9024                BN254::G2Point,
9025                BN254::G1Point,
9026            );
9027            type Token<'a> = <Self::Parameters<
9028                'a,
9029            > as alloy_sol_types::SolType>::Token<'a>;
9030            type Return = trySignatureAndApkVerificationReturn;
9031            type ReturnTuple<'a> = (
9032                alloy::sol_types::sol_data::Bool,
9033                alloy::sol_types::sol_data::Bool,
9034            );
9035            type ReturnToken<'a> = <Self::ReturnTuple<
9036                'a,
9037            > as alloy_sol_types::SolType>::Token<'a>;
9038            const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))";
9039            const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8];
9040            #[inline]
9041            fn new<'a>(
9042                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9043            ) -> Self {
9044                tuple.into()
9045            }
9046            #[inline]
9047            fn tokenize(&self) -> Self::Token<'_> {
9048                (
9049                    <alloy::sol_types::sol_data::FixedBytes<
9050                        32,
9051                    > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
9052                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.apk),
9053                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
9054                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
9055                )
9056            }
9057            #[inline]
9058            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9059                trySignatureAndApkVerificationReturn::_tokenize(ret)
9060            }
9061            #[inline]
9062            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9063                <Self::ReturnTuple<
9064                    '_,
9065                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9066                    .map(Into::into)
9067            }
9068            #[inline]
9069            fn abi_decode_returns_validate(
9070                data: &[u8],
9071            ) -> alloy_sol_types::Result<Self::Return> {
9072                <Self::ReturnTuple<
9073                    '_,
9074                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9075                    .map(Into::into)
9076            }
9077        }
9078    };
9079    ///Container for all the [`SquaringTask`](self) function calls.
9080    #[derive(serde::Serialize, serde::Deserialize)]
9081    #[derive()]
9082    pub enum SquaringTaskCalls {
9083        #[allow(missing_docs)]
9084        TASK_RESPONSE_WINDOW_BLOCK(TASK_RESPONSE_WINDOW_BLOCKCall),
9085        #[allow(missing_docs)]
9086        __TaskManager_init(__TaskManager_initCall),
9087        #[allow(missing_docs)]
9088        aggregator(aggregatorCall),
9089        #[allow(missing_docs)]
9090        allTaskHashes(allTaskHashesCall),
9091        #[allow(missing_docs)]
9092        allTaskResponses(allTaskResponsesCall),
9093        #[allow(missing_docs)]
9094        blsApkRegistry(blsApkRegistryCall),
9095        #[allow(missing_docs)]
9096        checkSignatures(checkSignaturesCall),
9097        #[allow(missing_docs)]
9098        createSquaringTask(createSquaringTaskCall),
9099        #[allow(missing_docs)]
9100        delegation(delegationCall),
9101        #[allow(missing_docs)]
9102        generator(generatorCall),
9103        #[allow(missing_docs)]
9104        initialize(initializeCall),
9105        #[allow(missing_docs)]
9106        latestTaskNum(latestTaskNumCall),
9107        #[allow(missing_docs)]
9108        owner(ownerCall),
9109        #[allow(missing_docs)]
9110        registryCoordinator(registryCoordinatorCall),
9111        #[allow(missing_docs)]
9112        renounceOwnership(renounceOwnershipCall),
9113        #[allow(missing_docs)]
9114        respondToSquaringTask(respondToSquaringTaskCall),
9115        #[allow(missing_docs)]
9116        setAggregator(setAggregatorCall),
9117        #[allow(missing_docs)]
9118        setGenerator(setGeneratorCall),
9119        #[allow(missing_docs)]
9120        stakeRegistry(stakeRegistryCall),
9121        #[allow(missing_docs)]
9122        transferOwnership(transferOwnershipCall),
9123        #[allow(missing_docs)]
9124        trySignatureAndApkVerification(trySignatureAndApkVerificationCall),
9125    }
9126    #[automatically_derived]
9127    impl SquaringTaskCalls {
9128        /// All the selectors of this enum.
9129        ///
9130        /// Note that the selectors might not be in the same order as the variants.
9131        /// No guarantees are made about the order of the selectors.
9132        ///
9133        /// Prefer using `SolInterface` methods instead.
9134        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9135            [23u8, 31u8, 29u8, 91u8],
9136            [26u8, 212u8, 49u8, 137u8],
9137            [36u8, 90u8, 123u8, 252u8],
9138            [44u8, 178u8, 35u8, 213u8],
9139            [45u8, 137u8, 246u8, 252u8],
9140            [74u8, 124u8, 126u8, 75u8],
9141            [89u8, 25u8, 208u8, 126u8],
9142            [93u8, 244u8, 89u8, 70u8],
9143            [104u8, 48u8, 72u8, 53u8],
9144            [109u8, 20u8, 169u8, 135u8],
9145            [110u8, 251u8, 70u8, 54u8],
9146            [113u8, 80u8, 24u8, 166u8],
9147            [122u8, 250u8, 30u8, 237u8],
9148            [126u8, 142u8, 241u8, 190u8],
9149            [139u8, 0u8, 206u8, 124u8],
9150            [141u8, 165u8, 203u8, 91u8],
9151            [187u8, 206u8, 228u8, 110u8],
9152            [192u8, 197u8, 59u8, 139u8],
9153            [223u8, 92u8, 247u8, 35u8],
9154            [242u8, 253u8, 227u8, 139u8],
9155            [249u8, 18u8, 10u8, 246u8],
9156        ];
9157    }
9158    #[automatically_derived]
9159    impl alloy_sol_types::SolInterface for SquaringTaskCalls {
9160        const NAME: &'static str = "SquaringTaskCalls";
9161        const MIN_DATA_LENGTH: usize = 0usize;
9162        const COUNT: usize = 21usize;
9163        #[inline]
9164        fn selector(&self) -> [u8; 4] {
9165            match self {
9166                Self::TASK_RESPONSE_WINDOW_BLOCK(_) => {
9167                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR
9168                }
9169                Self::__TaskManager_init(_) => {
9170                    <__TaskManager_initCall as alloy_sol_types::SolCall>::SELECTOR
9171                }
9172                Self::aggregator(_) => {
9173                    <aggregatorCall as alloy_sol_types::SolCall>::SELECTOR
9174                }
9175                Self::allTaskHashes(_) => {
9176                    <allTaskHashesCall as alloy_sol_types::SolCall>::SELECTOR
9177                }
9178                Self::allTaskResponses(_) => {
9179                    <allTaskResponsesCall as alloy_sol_types::SolCall>::SELECTOR
9180                }
9181                Self::blsApkRegistry(_) => {
9182                    <blsApkRegistryCall as alloy_sol_types::SolCall>::SELECTOR
9183                }
9184                Self::checkSignatures(_) => {
9185                    <checkSignaturesCall as alloy_sol_types::SolCall>::SELECTOR
9186                }
9187                Self::createSquaringTask(_) => {
9188                    <createSquaringTaskCall as alloy_sol_types::SolCall>::SELECTOR
9189                }
9190                Self::delegation(_) => {
9191                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
9192                }
9193                Self::generator(_) => {
9194                    <generatorCall as alloy_sol_types::SolCall>::SELECTOR
9195                }
9196                Self::initialize(_) => {
9197                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9198                }
9199                Self::latestTaskNum(_) => {
9200                    <latestTaskNumCall as alloy_sol_types::SolCall>::SELECTOR
9201                }
9202                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9203                Self::registryCoordinator(_) => {
9204                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
9205                }
9206                Self::renounceOwnership(_) => {
9207                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9208                }
9209                Self::respondToSquaringTask(_) => {
9210                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::SELECTOR
9211                }
9212                Self::setAggregator(_) => {
9213                    <setAggregatorCall as alloy_sol_types::SolCall>::SELECTOR
9214                }
9215                Self::setGenerator(_) => {
9216                    <setGeneratorCall as alloy_sol_types::SolCall>::SELECTOR
9217                }
9218                Self::stakeRegistry(_) => {
9219                    <stakeRegistryCall as alloy_sol_types::SolCall>::SELECTOR
9220                }
9221                Self::transferOwnership(_) => {
9222                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9223                }
9224                Self::trySignatureAndApkVerification(_) => {
9225                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::SELECTOR
9226                }
9227            }
9228        }
9229        #[inline]
9230        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9231            Self::SELECTORS.get(i).copied()
9232        }
9233        #[inline]
9234        fn valid_selector(selector: [u8; 4]) -> bool {
9235            Self::SELECTORS.binary_search(&selector).is_ok()
9236        }
9237        #[inline]
9238        #[allow(non_snake_case)]
9239        fn abi_decode_raw(
9240            selector: [u8; 4],
9241            data: &[u8],
9242        ) -> alloy_sol_types::Result<Self> {
9243            static DECODE_SHIMS: &[fn(
9244                &[u8],
9245            ) -> alloy_sol_types::Result<SquaringTaskCalls>] = &[
9246                {
9247                    fn trySignatureAndApkVerification(
9248                        data: &[u8],
9249                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9250                        <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9251                                data,
9252                            )
9253                            .map(SquaringTaskCalls::trySignatureAndApkVerification)
9254                    }
9255                    trySignatureAndApkVerification
9256                },
9257                {
9258                    fn TASK_RESPONSE_WINDOW_BLOCK(
9259                        data: &[u8],
9260                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9261                        <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw(
9262                                data,
9263                            )
9264                            .map(SquaringTaskCalls::TASK_RESPONSE_WINDOW_BLOCK)
9265                    }
9266                    TASK_RESPONSE_WINDOW_BLOCK
9267                },
9268                {
9269                    fn aggregator(
9270                        data: &[u8],
9271                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9272                        <aggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9273                                data,
9274                            )
9275                            .map(SquaringTaskCalls::aggregator)
9276                    }
9277                    aggregator
9278                },
9279                {
9280                    fn allTaskResponses(
9281                        data: &[u8],
9282                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9283                        <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9284                                data,
9285                            )
9286                            .map(SquaringTaskCalls::allTaskResponses)
9287                    }
9288                    allTaskResponses
9289                },
9290                {
9291                    fn allTaskHashes(
9292                        data: &[u8],
9293                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9294                        <allTaskHashesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9295                                data,
9296                            )
9297                            .map(SquaringTaskCalls::allTaskHashes)
9298                    }
9299                    allTaskHashes
9300                },
9301                {
9302                    fn setGenerator(
9303                        data: &[u8],
9304                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9305                        <setGeneratorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9306                                data,
9307                            )
9308                            .map(SquaringTaskCalls::setGenerator)
9309                    }
9310                    setGenerator
9311                },
9312                {
9313                    fn __TaskManager_init(
9314                        data: &[u8],
9315                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9316                        <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_decode_raw(
9317                                data,
9318                            )
9319                            .map(SquaringTaskCalls::__TaskManager_init)
9320                    }
9321                    __TaskManager_init
9322                },
9323                {
9324                    fn blsApkRegistry(
9325                        data: &[u8],
9326                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9327                        <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9328                                data,
9329                            )
9330                            .map(SquaringTaskCalls::blsApkRegistry)
9331                    }
9332                    blsApkRegistry
9333                },
9334                {
9335                    fn stakeRegistry(
9336                        data: &[u8],
9337                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9338                        <stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9339                                data,
9340                            )
9341                            .map(SquaringTaskCalls::stakeRegistry)
9342                    }
9343                    stakeRegistry
9344                },
9345                {
9346                    fn registryCoordinator(
9347                        data: &[u8],
9348                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9349                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9350                                data,
9351                            )
9352                            .map(SquaringTaskCalls::registryCoordinator)
9353                    }
9354                    registryCoordinator
9355                },
9356                {
9357                    fn checkSignatures(
9358                        data: &[u8],
9359                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9360                        <checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9361                                data,
9362                            )
9363                            .map(SquaringTaskCalls::checkSignatures)
9364                    }
9365                    checkSignatures
9366                },
9367                {
9368                    fn renounceOwnership(
9369                        data: &[u8],
9370                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9371                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9372                                data,
9373                            )
9374                            .map(SquaringTaskCalls::renounceOwnership)
9375                    }
9376                    renounceOwnership
9377                },
9378                {
9379                    fn generator(
9380                        data: &[u8],
9381                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9382                        <generatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9383                            .map(SquaringTaskCalls::generator)
9384                    }
9385                    generator
9386                },
9387                {
9388                    fn respondToSquaringTask(
9389                        data: &[u8],
9390                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9391                        <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
9392                                data,
9393                            )
9394                            .map(SquaringTaskCalls::respondToSquaringTask)
9395                    }
9396                    respondToSquaringTask
9397                },
9398                {
9399                    fn latestTaskNum(
9400                        data: &[u8],
9401                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9402                        <latestTaskNumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9403                                data,
9404                            )
9405                            .map(SquaringTaskCalls::latestTaskNum)
9406                    }
9407                    latestTaskNum
9408                },
9409                {
9410                    fn owner(data: &[u8]) -> alloy_sol_types::Result<SquaringTaskCalls> {
9411                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9412                            .map(SquaringTaskCalls::owner)
9413                    }
9414                    owner
9415                },
9416                {
9417                    fn createSquaringTask(
9418                        data: &[u8],
9419                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9420                        <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
9421                                data,
9422                            )
9423                            .map(SquaringTaskCalls::createSquaringTask)
9424                    }
9425                    createSquaringTask
9426                },
9427                {
9428                    fn initialize(
9429                        data: &[u8],
9430                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9431                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9432                                data,
9433                            )
9434                            .map(SquaringTaskCalls::initialize)
9435                    }
9436                    initialize
9437                },
9438                {
9439                    fn delegation(
9440                        data: &[u8],
9441                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9442                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9443                                data,
9444                            )
9445                            .map(SquaringTaskCalls::delegation)
9446                    }
9447                    delegation
9448                },
9449                {
9450                    fn transferOwnership(
9451                        data: &[u8],
9452                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9453                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9454                                data,
9455                            )
9456                            .map(SquaringTaskCalls::transferOwnership)
9457                    }
9458                    transferOwnership
9459                },
9460                {
9461                    fn setAggregator(
9462                        data: &[u8],
9463                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9464                        <setAggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9465                                data,
9466                            )
9467                            .map(SquaringTaskCalls::setAggregator)
9468                    }
9469                    setAggregator
9470                },
9471            ];
9472            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9473                return Err(
9474                    alloy_sol_types::Error::unknown_selector(
9475                        <Self as alloy_sol_types::SolInterface>::NAME,
9476                        selector,
9477                    ),
9478                );
9479            };
9480            DECODE_SHIMS[idx](data)
9481        }
9482        #[inline]
9483        #[allow(non_snake_case)]
9484        fn abi_decode_raw_validate(
9485            selector: [u8; 4],
9486            data: &[u8],
9487        ) -> alloy_sol_types::Result<Self> {
9488            static DECODE_VALIDATE_SHIMS: &[fn(
9489                &[u8],
9490            ) -> alloy_sol_types::Result<SquaringTaskCalls>] = &[
9491                {
9492                    fn trySignatureAndApkVerification(
9493                        data: &[u8],
9494                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9495                        <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9496                                data,
9497                            )
9498                            .map(SquaringTaskCalls::trySignatureAndApkVerification)
9499                    }
9500                    trySignatureAndApkVerification
9501                },
9502                {
9503                    fn TASK_RESPONSE_WINDOW_BLOCK(
9504                        data: &[u8],
9505                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9506                        <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9507                                data,
9508                            )
9509                            .map(SquaringTaskCalls::TASK_RESPONSE_WINDOW_BLOCK)
9510                    }
9511                    TASK_RESPONSE_WINDOW_BLOCK
9512                },
9513                {
9514                    fn aggregator(
9515                        data: &[u8],
9516                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9517                        <aggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9518                                data,
9519                            )
9520                            .map(SquaringTaskCalls::aggregator)
9521                    }
9522                    aggregator
9523                },
9524                {
9525                    fn allTaskResponses(
9526                        data: &[u8],
9527                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9528                        <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9529                                data,
9530                            )
9531                            .map(SquaringTaskCalls::allTaskResponses)
9532                    }
9533                    allTaskResponses
9534                },
9535                {
9536                    fn allTaskHashes(
9537                        data: &[u8],
9538                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9539                        <allTaskHashesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9540                                data,
9541                            )
9542                            .map(SquaringTaskCalls::allTaskHashes)
9543                    }
9544                    allTaskHashes
9545                },
9546                {
9547                    fn setGenerator(
9548                        data: &[u8],
9549                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9550                        <setGeneratorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9551                                data,
9552                            )
9553                            .map(SquaringTaskCalls::setGenerator)
9554                    }
9555                    setGenerator
9556                },
9557                {
9558                    fn __TaskManager_init(
9559                        data: &[u8],
9560                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9561                        <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9562                                data,
9563                            )
9564                            .map(SquaringTaskCalls::__TaskManager_init)
9565                    }
9566                    __TaskManager_init
9567                },
9568                {
9569                    fn blsApkRegistry(
9570                        data: &[u8],
9571                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9572                        <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9573                                data,
9574                            )
9575                            .map(SquaringTaskCalls::blsApkRegistry)
9576                    }
9577                    blsApkRegistry
9578                },
9579                {
9580                    fn stakeRegistry(
9581                        data: &[u8],
9582                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9583                        <stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9584                                data,
9585                            )
9586                            .map(SquaringTaskCalls::stakeRegistry)
9587                    }
9588                    stakeRegistry
9589                },
9590                {
9591                    fn registryCoordinator(
9592                        data: &[u8],
9593                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9594                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9595                                data,
9596                            )
9597                            .map(SquaringTaskCalls::registryCoordinator)
9598                    }
9599                    registryCoordinator
9600                },
9601                {
9602                    fn checkSignatures(
9603                        data: &[u8],
9604                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9605                        <checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9606                                data,
9607                            )
9608                            .map(SquaringTaskCalls::checkSignatures)
9609                    }
9610                    checkSignatures
9611                },
9612                {
9613                    fn renounceOwnership(
9614                        data: &[u8],
9615                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9616                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9617                                data,
9618                            )
9619                            .map(SquaringTaskCalls::renounceOwnership)
9620                    }
9621                    renounceOwnership
9622                },
9623                {
9624                    fn generator(
9625                        data: &[u8],
9626                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9627                        <generatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9628                                data,
9629                            )
9630                            .map(SquaringTaskCalls::generator)
9631                    }
9632                    generator
9633                },
9634                {
9635                    fn respondToSquaringTask(
9636                        data: &[u8],
9637                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9638                        <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9639                                data,
9640                            )
9641                            .map(SquaringTaskCalls::respondToSquaringTask)
9642                    }
9643                    respondToSquaringTask
9644                },
9645                {
9646                    fn latestTaskNum(
9647                        data: &[u8],
9648                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9649                        <latestTaskNumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9650                                data,
9651                            )
9652                            .map(SquaringTaskCalls::latestTaskNum)
9653                    }
9654                    latestTaskNum
9655                },
9656                {
9657                    fn owner(data: &[u8]) -> alloy_sol_types::Result<SquaringTaskCalls> {
9658                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9659                                data,
9660                            )
9661                            .map(SquaringTaskCalls::owner)
9662                    }
9663                    owner
9664                },
9665                {
9666                    fn createSquaringTask(
9667                        data: &[u8],
9668                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9669                        <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9670                                data,
9671                            )
9672                            .map(SquaringTaskCalls::createSquaringTask)
9673                    }
9674                    createSquaringTask
9675                },
9676                {
9677                    fn initialize(
9678                        data: &[u8],
9679                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9680                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9681                                data,
9682                            )
9683                            .map(SquaringTaskCalls::initialize)
9684                    }
9685                    initialize
9686                },
9687                {
9688                    fn delegation(
9689                        data: &[u8],
9690                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9691                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9692                                data,
9693                            )
9694                            .map(SquaringTaskCalls::delegation)
9695                    }
9696                    delegation
9697                },
9698                {
9699                    fn transferOwnership(
9700                        data: &[u8],
9701                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9702                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9703                                data,
9704                            )
9705                            .map(SquaringTaskCalls::transferOwnership)
9706                    }
9707                    transferOwnership
9708                },
9709                {
9710                    fn setAggregator(
9711                        data: &[u8],
9712                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9713                        <setAggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9714                                data,
9715                            )
9716                            .map(SquaringTaskCalls::setAggregator)
9717                    }
9718                    setAggregator
9719                },
9720            ];
9721            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9722                return Err(
9723                    alloy_sol_types::Error::unknown_selector(
9724                        <Self as alloy_sol_types::SolInterface>::NAME,
9725                        selector,
9726                    ),
9727                );
9728            };
9729            DECODE_VALIDATE_SHIMS[idx](data)
9730        }
9731        #[inline]
9732        fn abi_encoded_size(&self) -> usize {
9733            match self {
9734                Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
9735                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size(
9736                        inner,
9737                    )
9738                }
9739                Self::__TaskManager_init(inner) => {
9740                    <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_encoded_size(
9741                        inner,
9742                    )
9743                }
9744                Self::aggregator(inner) => {
9745                    <aggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9746                }
9747                Self::allTaskHashes(inner) => {
9748                    <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9749                        inner,
9750                    )
9751                }
9752                Self::allTaskResponses(inner) => {
9753                    <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9754                        inner,
9755                    )
9756                }
9757                Self::blsApkRegistry(inner) => {
9758                    <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9759                        inner,
9760                    )
9761                }
9762                Self::checkSignatures(inner) => {
9763                    <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9764                        inner,
9765                    )
9766                }
9767                Self::createSquaringTask(inner) => {
9768                    <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
9769                        inner,
9770                    )
9771                }
9772                Self::delegation(inner) => {
9773                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9774                }
9775                Self::generator(inner) => {
9776                    <generatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9777                }
9778                Self::initialize(inner) => {
9779                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9780                }
9781                Self::latestTaskNum(inner) => {
9782                    <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encoded_size(
9783                        inner,
9784                    )
9785                }
9786                Self::owner(inner) => {
9787                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9788                }
9789                Self::registryCoordinator(inner) => {
9790                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9791                        inner,
9792                    )
9793                }
9794                Self::renounceOwnership(inner) => {
9795                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9796                        inner,
9797                    )
9798                }
9799                Self::respondToSquaringTask(inner) => {
9800                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
9801                        inner,
9802                    )
9803                }
9804                Self::setAggregator(inner) => {
9805                    <setAggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9806                        inner,
9807                    )
9808                }
9809                Self::setGenerator(inner) => {
9810                    <setGeneratorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9811                        inner,
9812                    )
9813                }
9814                Self::stakeRegistry(inner) => {
9815                    <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9816                        inner,
9817                    )
9818                }
9819                Self::transferOwnership(inner) => {
9820                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9821                        inner,
9822                    )
9823                }
9824                Self::trySignatureAndApkVerification(inner) => {
9825                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encoded_size(
9826                        inner,
9827                    )
9828                }
9829            }
9830        }
9831        #[inline]
9832        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9833            match self {
9834                Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
9835                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw(
9836                        inner,
9837                        out,
9838                    )
9839                }
9840                Self::__TaskManager_init(inner) => {
9841                    <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_encode_raw(
9842                        inner,
9843                        out,
9844                    )
9845                }
9846                Self::aggregator(inner) => {
9847                    <aggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9848                        inner,
9849                        out,
9850                    )
9851                }
9852                Self::allTaskHashes(inner) => {
9853                    <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9854                        inner,
9855                        out,
9856                    )
9857                }
9858                Self::allTaskResponses(inner) => {
9859                    <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9860                        inner,
9861                        out,
9862                    )
9863                }
9864                Self::blsApkRegistry(inner) => {
9865                    <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9866                        inner,
9867                        out,
9868                    )
9869                }
9870                Self::checkSignatures(inner) => {
9871                    <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9872                        inner,
9873                        out,
9874                    )
9875                }
9876                Self::createSquaringTask(inner) => {
9877                    <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(
9878                        inner,
9879                        out,
9880                    )
9881                }
9882                Self::delegation(inner) => {
9883                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9884                        inner,
9885                        out,
9886                    )
9887                }
9888                Self::generator(inner) => {
9889                    <generatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9890                        inner,
9891                        out,
9892                    )
9893                }
9894                Self::initialize(inner) => {
9895                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9896                        inner,
9897                        out,
9898                    )
9899                }
9900                Self::latestTaskNum(inner) => {
9901                    <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encode_raw(
9902                        inner,
9903                        out,
9904                    )
9905                }
9906                Self::owner(inner) => {
9907                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9908                }
9909                Self::registryCoordinator(inner) => {
9910                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9911                        inner,
9912                        out,
9913                    )
9914                }
9915                Self::renounceOwnership(inner) => {
9916                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9917                        inner,
9918                        out,
9919                    )
9920                }
9921                Self::respondToSquaringTask(inner) => {
9922                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(
9923                        inner,
9924                        out,
9925                    )
9926                }
9927                Self::setAggregator(inner) => {
9928                    <setAggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9929                        inner,
9930                        out,
9931                    )
9932                }
9933                Self::setGenerator(inner) => {
9934                    <setGeneratorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9935                        inner,
9936                        out,
9937                    )
9938                }
9939                Self::stakeRegistry(inner) => {
9940                    <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9941                        inner,
9942                        out,
9943                    )
9944                }
9945                Self::transferOwnership(inner) => {
9946                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9947                        inner,
9948                        out,
9949                    )
9950                }
9951                Self::trySignatureAndApkVerification(inner) => {
9952                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9953                        inner,
9954                        out,
9955                    )
9956                }
9957            }
9958        }
9959    }
9960    ///Container for all the [`SquaringTask`](self) custom errors.
9961    #[derive(serde::Serialize, serde::Deserialize)]
9962    #[derive(Debug, PartialEq, Eq, Hash)]
9963    pub enum SquaringTaskErrors {
9964        #[allow(missing_docs)]
9965        AlreadySet(AlreadySet),
9966        #[allow(missing_docs)]
9967        BitmapValueTooLarge(BitmapValueTooLarge),
9968        #[allow(missing_docs)]
9969        BytesArrayLengthTooLong(BytesArrayLengthTooLong),
9970        #[allow(missing_docs)]
9971        BytesArrayNotOrdered(BytesArrayNotOrdered),
9972        #[allow(missing_docs)]
9973        ECAddFailed(ECAddFailed),
9974        #[allow(missing_docs)]
9975        ECMulFailed(ECMulFailed),
9976        #[allow(missing_docs)]
9977        ExpModFailed(ExpModFailed),
9978        #[allow(missing_docs)]
9979        IncorrectSquareResult(IncorrectSquareResult),
9980        #[allow(missing_docs)]
9981        InputArrayLengthMismatch(InputArrayLengthMismatch),
9982        #[allow(missing_docs)]
9983        InputEmptyQuorumNumbers(InputEmptyQuorumNumbers),
9984        #[allow(missing_docs)]
9985        InputNonSignerLengthMismatch(InputNonSignerLengthMismatch),
9986        #[allow(missing_docs)]
9987        InvalidBLSPairingKey(InvalidBLSPairingKey),
9988        #[allow(missing_docs)]
9989        InvalidBLSSignature(InvalidBLSSignature),
9990        #[allow(missing_docs)]
9991        InvalidQuorumApkHash(InvalidQuorumApkHash),
9992        #[allow(missing_docs)]
9993        InvalidReferenceBlocknumber(InvalidReferenceBlocknumber),
9994        #[allow(missing_docs)]
9995        NoOngoingDeployment(NoOngoingDeployment),
9996        #[allow(missing_docs)]
9997        NonSignerPubkeysNotSorted(NonSignerPubkeysNotSorted),
9998        #[allow(missing_docs)]
9999        OnlyRegistryCoordinatorOwner(OnlyRegistryCoordinatorOwner),
10000        #[allow(missing_docs)]
10001        ScalarTooLarge(ScalarTooLarge),
10002        #[allow(missing_docs)]
10003        ZeroAddress(ZeroAddress),
10004        #[allow(missing_docs)]
10005        ZeroValue(ZeroValue),
10006    }
10007    #[automatically_derived]
10008    impl SquaringTaskErrors {
10009        /// All the selectors of this enum.
10010        ///
10011        /// Note that the selectors might not be in the same order as the variants.
10012        /// No guarantees are made about the order of the selectors.
10013        ///
10014        /// Prefer using `SolInterface` methods instead.
10015        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10016            [12u8, 249u8, 45u8, 213u8],
10017            [31u8, 4u8, 5u8, 160u8],
10018            [67u8, 113u8, 74u8, 253u8],
10019            [70u8, 51u8, 190u8, 50u8],
10020            [75u8, 135u8, 79u8, 69u8],
10021            [95u8, 131u8, 47u8, 65u8],
10022            [103u8, 152u8, 141u8, 51u8],
10023            [124u8, 148u8, 110u8, 215u8],
10024            [128u8, 200u8, 131u8, 72u8],
10025            [167u8, 65u8, 160u8, 69u8],
10026            [171u8, 27u8, 35u8, 107u8],
10027            [200u8, 116u8, 138u8, 180u8],
10028            [202u8, 149u8, 115u8, 51u8],
10029            [212u8, 182u8, 143u8, 215u8],
10030            [213u8, 30u8, 218u8, 227u8],
10031            [217u8, 46u8, 35u8, 61u8],
10032            [224u8, 225u8, 231u8, 98u8],
10033            [225u8, 49u8, 10u8, 237u8],
10034            [251u8, 74u8, 156u8, 142u8],
10035            [255u8, 113u8, 148u8, 20u8],
10036            [255u8, 137u8, 212u8, 250u8],
10037        ];
10038    }
10039    #[automatically_derived]
10040    impl alloy_sol_types::SolInterface for SquaringTaskErrors {
10041        const NAME: &'static str = "SquaringTaskErrors";
10042        const MIN_DATA_LENGTH: usize = 0usize;
10043        const COUNT: usize = 21usize;
10044        #[inline]
10045        fn selector(&self) -> [u8; 4] {
10046            match self {
10047                Self::AlreadySet(_) => {
10048                    <AlreadySet as alloy_sol_types::SolError>::SELECTOR
10049                }
10050                Self::BitmapValueTooLarge(_) => {
10051                    <BitmapValueTooLarge as alloy_sol_types::SolError>::SELECTOR
10052                }
10053                Self::BytesArrayLengthTooLong(_) => {
10054                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::SELECTOR
10055                }
10056                Self::BytesArrayNotOrdered(_) => {
10057                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::SELECTOR
10058                }
10059                Self::ECAddFailed(_) => {
10060                    <ECAddFailed as alloy_sol_types::SolError>::SELECTOR
10061                }
10062                Self::ECMulFailed(_) => {
10063                    <ECMulFailed as alloy_sol_types::SolError>::SELECTOR
10064                }
10065                Self::ExpModFailed(_) => {
10066                    <ExpModFailed as alloy_sol_types::SolError>::SELECTOR
10067                }
10068                Self::IncorrectSquareResult(_) => {
10069                    <IncorrectSquareResult as alloy_sol_types::SolError>::SELECTOR
10070                }
10071                Self::InputArrayLengthMismatch(_) => {
10072                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
10073                }
10074                Self::InputEmptyQuorumNumbers(_) => {
10075                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::SELECTOR
10076                }
10077                Self::InputNonSignerLengthMismatch(_) => {
10078                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::SELECTOR
10079                }
10080                Self::InvalidBLSPairingKey(_) => {
10081                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::SELECTOR
10082                }
10083                Self::InvalidBLSSignature(_) => {
10084                    <InvalidBLSSignature as alloy_sol_types::SolError>::SELECTOR
10085                }
10086                Self::InvalidQuorumApkHash(_) => {
10087                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::SELECTOR
10088                }
10089                Self::InvalidReferenceBlocknumber(_) => {
10090                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::SELECTOR
10091                }
10092                Self::NoOngoingDeployment(_) => {
10093                    <NoOngoingDeployment as alloy_sol_types::SolError>::SELECTOR
10094                }
10095                Self::NonSignerPubkeysNotSorted(_) => {
10096                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::SELECTOR
10097                }
10098                Self::OnlyRegistryCoordinatorOwner(_) => {
10099                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
10100                }
10101                Self::ScalarTooLarge(_) => {
10102                    <ScalarTooLarge as alloy_sol_types::SolError>::SELECTOR
10103                }
10104                Self::ZeroAddress(_) => {
10105                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
10106                }
10107                Self::ZeroValue(_) => <ZeroValue as alloy_sol_types::SolError>::SELECTOR,
10108            }
10109        }
10110        #[inline]
10111        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10112            Self::SELECTORS.get(i).copied()
10113        }
10114        #[inline]
10115        fn valid_selector(selector: [u8; 4]) -> bool {
10116            Self::SELECTORS.binary_search(&selector).is_ok()
10117        }
10118        #[inline]
10119        #[allow(non_snake_case)]
10120        fn abi_decode_raw(
10121            selector: [u8; 4],
10122            data: &[u8],
10123        ) -> alloy_sol_types::Result<Self> {
10124            static DECODE_SHIMS: &[fn(
10125                &[u8],
10126            ) -> alloy_sol_types::Result<SquaringTaskErrors>] = &[
10127                {
10128                    fn IncorrectSquareResult(
10129                        data: &[u8],
10130                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10131                        <IncorrectSquareResult as alloy_sol_types::SolError>::abi_decode_raw(
10132                                data,
10133                            )
10134                            .map(SquaringTaskErrors::IncorrectSquareResult)
10135                    }
10136                    IncorrectSquareResult
10137                },
10138                {
10139                    fn InputEmptyQuorumNumbers(
10140                        data: &[u8],
10141                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10142                        <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_decode_raw(
10143                                data,
10144                            )
10145                            .map(SquaringTaskErrors::InputEmptyQuorumNumbers)
10146                    }
10147                    InputEmptyQuorumNumbers
10148                },
10149                {
10150                    fn InputArrayLengthMismatch(
10151                        data: &[u8],
10152                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10153                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
10154                                data,
10155                            )
10156                            .map(SquaringTaskErrors::InputArrayLengthMismatch)
10157                    }
10158                    InputArrayLengthMismatch
10159                },
10160                {
10161                    fn ECMulFailed(
10162                        data: &[u8],
10163                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10164                        <ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
10165                            .map(SquaringTaskErrors::ECMulFailed)
10166                    }
10167                    ECMulFailed
10168                },
10169                {
10170                    fn InvalidReferenceBlocknumber(
10171                        data: &[u8],
10172                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10173                        <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_decode_raw(
10174                                data,
10175                            )
10176                            .map(SquaringTaskErrors::InvalidReferenceBlocknumber)
10177                    }
10178                    InvalidReferenceBlocknumber
10179                },
10180                {
10181                    fn InputNonSignerLengthMismatch(
10182                        data: &[u8],
10183                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10184                        <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
10185                                data,
10186                            )
10187                            .map(SquaringTaskErrors::InputNonSignerLengthMismatch)
10188                    }
10189                    InputNonSignerLengthMismatch
10190                },
10191                {
10192                    fn InvalidBLSPairingKey(
10193                        data: &[u8],
10194                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10195                        <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_decode_raw(
10196                                data,
10197                            )
10198                            .map(SquaringTaskErrors::InvalidBLSPairingKey)
10199                    }
10200                    InvalidBLSPairingKey
10201                },
10202                {
10203                    fn ZeroValue(
10204                        data: &[u8],
10205                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10206                        <ZeroValue as alloy_sol_types::SolError>::abi_decode_raw(data)
10207                            .map(SquaringTaskErrors::ZeroValue)
10208                    }
10209                    ZeroValue
10210                },
10211                {
10212                    fn BytesArrayNotOrdered(
10213                        data: &[u8],
10214                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10215                        <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_decode_raw(
10216                                data,
10217                            )
10218                            .map(SquaringTaskErrors::BytesArrayNotOrdered)
10219                    }
10220                    BytesArrayNotOrdered
10221                },
10222                {
10223                    fn AlreadySet(
10224                        data: &[u8],
10225                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10226                        <AlreadySet as alloy_sol_types::SolError>::abi_decode_raw(data)
10227                            .map(SquaringTaskErrors::AlreadySet)
10228                    }
10229                    AlreadySet
10230                },
10231                {
10232                    fn InvalidBLSSignature(
10233                        data: &[u8],
10234                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10235                        <InvalidBLSSignature as alloy_sol_types::SolError>::abi_decode_raw(
10236                                data,
10237                            )
10238                            .map(SquaringTaskErrors::InvalidBLSSignature)
10239                    }
10240                    InvalidBLSSignature
10241                },
10242                {
10243                    fn NoOngoingDeployment(
10244                        data: &[u8],
10245                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10246                        <NoOngoingDeployment as alloy_sol_types::SolError>::abi_decode_raw(
10247                                data,
10248                            )
10249                            .map(SquaringTaskErrors::NoOngoingDeployment)
10250                    }
10251                    NoOngoingDeployment
10252                },
10253                {
10254                    fn BitmapValueTooLarge(
10255                        data: &[u8],
10256                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10257                        <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
10258                                data,
10259                            )
10260                            .map(SquaringTaskErrors::BitmapValueTooLarge)
10261                    }
10262                    BitmapValueTooLarge
10263                },
10264                {
10265                    fn ECAddFailed(
10266                        data: &[u8],
10267                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10268                        <ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
10269                            .map(SquaringTaskErrors::ECAddFailed)
10270                    }
10271                    ECAddFailed
10272                },
10273                {
10274                    fn ExpModFailed(
10275                        data: &[u8],
10276                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10277                        <ExpModFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
10278                            .map(SquaringTaskErrors::ExpModFailed)
10279                    }
10280                    ExpModFailed
10281                },
10282                {
10283                    fn ZeroAddress(
10284                        data: &[u8],
10285                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10286                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
10287                            .map(SquaringTaskErrors::ZeroAddress)
10288                    }
10289                    ZeroAddress
10290                },
10291                {
10292                    fn OnlyRegistryCoordinatorOwner(
10293                        data: &[u8],
10294                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10295                        <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
10296                                data,
10297                            )
10298                            .map(SquaringTaskErrors::OnlyRegistryCoordinatorOwner)
10299                    }
10300                    OnlyRegistryCoordinatorOwner
10301                },
10302                {
10303                    fn InvalidQuorumApkHash(
10304                        data: &[u8],
10305                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10306                        <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_decode_raw(
10307                                data,
10308                            )
10309                            .map(SquaringTaskErrors::InvalidQuorumApkHash)
10310                    }
10311                    InvalidQuorumApkHash
10312                },
10313                {
10314                    fn BytesArrayLengthTooLong(
10315                        data: &[u8],
10316                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10317                        <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_decode_raw(
10318                                data,
10319                            )
10320                            .map(SquaringTaskErrors::BytesArrayLengthTooLong)
10321                    }
10322                    BytesArrayLengthTooLong
10323                },
10324                {
10325                    fn NonSignerPubkeysNotSorted(
10326                        data: &[u8],
10327                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10328                        <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_decode_raw(
10329                                data,
10330                            )
10331                            .map(SquaringTaskErrors::NonSignerPubkeysNotSorted)
10332                    }
10333                    NonSignerPubkeysNotSorted
10334                },
10335                {
10336                    fn ScalarTooLarge(
10337                        data: &[u8],
10338                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10339                        <ScalarTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
10340                                data,
10341                            )
10342                            .map(SquaringTaskErrors::ScalarTooLarge)
10343                    }
10344                    ScalarTooLarge
10345                },
10346            ];
10347            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10348                return Err(
10349                    alloy_sol_types::Error::unknown_selector(
10350                        <Self as alloy_sol_types::SolInterface>::NAME,
10351                        selector,
10352                    ),
10353                );
10354            };
10355            DECODE_SHIMS[idx](data)
10356        }
10357        #[inline]
10358        #[allow(non_snake_case)]
10359        fn abi_decode_raw_validate(
10360            selector: [u8; 4],
10361            data: &[u8],
10362        ) -> alloy_sol_types::Result<Self> {
10363            static DECODE_VALIDATE_SHIMS: &[fn(
10364                &[u8],
10365            ) -> alloy_sol_types::Result<SquaringTaskErrors>] = &[
10366                {
10367                    fn IncorrectSquareResult(
10368                        data: &[u8],
10369                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10370                        <IncorrectSquareResult as alloy_sol_types::SolError>::abi_decode_raw_validate(
10371                                data,
10372                            )
10373                            .map(SquaringTaskErrors::IncorrectSquareResult)
10374                    }
10375                    IncorrectSquareResult
10376                },
10377                {
10378                    fn InputEmptyQuorumNumbers(
10379                        data: &[u8],
10380                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10381                        <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_decode_raw_validate(
10382                                data,
10383                            )
10384                            .map(SquaringTaskErrors::InputEmptyQuorumNumbers)
10385                    }
10386                    InputEmptyQuorumNumbers
10387                },
10388                {
10389                    fn InputArrayLengthMismatch(
10390                        data: &[u8],
10391                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10392                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
10393                                data,
10394                            )
10395                            .map(SquaringTaskErrors::InputArrayLengthMismatch)
10396                    }
10397                    InputArrayLengthMismatch
10398                },
10399                {
10400                    fn ECMulFailed(
10401                        data: &[u8],
10402                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10403                        <ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
10404                                data,
10405                            )
10406                            .map(SquaringTaskErrors::ECMulFailed)
10407                    }
10408                    ECMulFailed
10409                },
10410                {
10411                    fn InvalidReferenceBlocknumber(
10412                        data: &[u8],
10413                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10414                        <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_decode_raw_validate(
10415                                data,
10416                            )
10417                            .map(SquaringTaskErrors::InvalidReferenceBlocknumber)
10418                    }
10419                    InvalidReferenceBlocknumber
10420                },
10421                {
10422                    fn InputNonSignerLengthMismatch(
10423                        data: &[u8],
10424                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10425                        <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
10426                                data,
10427                            )
10428                            .map(SquaringTaskErrors::InputNonSignerLengthMismatch)
10429                    }
10430                    InputNonSignerLengthMismatch
10431                },
10432                {
10433                    fn InvalidBLSPairingKey(
10434                        data: &[u8],
10435                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10436                        <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_decode_raw_validate(
10437                                data,
10438                            )
10439                            .map(SquaringTaskErrors::InvalidBLSPairingKey)
10440                    }
10441                    InvalidBLSPairingKey
10442                },
10443                {
10444                    fn ZeroValue(
10445                        data: &[u8],
10446                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10447                        <ZeroValue as alloy_sol_types::SolError>::abi_decode_raw_validate(
10448                                data,
10449                            )
10450                            .map(SquaringTaskErrors::ZeroValue)
10451                    }
10452                    ZeroValue
10453                },
10454                {
10455                    fn BytesArrayNotOrdered(
10456                        data: &[u8],
10457                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10458                        <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_decode_raw_validate(
10459                                data,
10460                            )
10461                            .map(SquaringTaskErrors::BytesArrayNotOrdered)
10462                    }
10463                    BytesArrayNotOrdered
10464                },
10465                {
10466                    fn AlreadySet(
10467                        data: &[u8],
10468                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10469                        <AlreadySet as alloy_sol_types::SolError>::abi_decode_raw_validate(
10470                                data,
10471                            )
10472                            .map(SquaringTaskErrors::AlreadySet)
10473                    }
10474                    AlreadySet
10475                },
10476                {
10477                    fn InvalidBLSSignature(
10478                        data: &[u8],
10479                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10480                        <InvalidBLSSignature as alloy_sol_types::SolError>::abi_decode_raw_validate(
10481                                data,
10482                            )
10483                            .map(SquaringTaskErrors::InvalidBLSSignature)
10484                    }
10485                    InvalidBLSSignature
10486                },
10487                {
10488                    fn NoOngoingDeployment(
10489                        data: &[u8],
10490                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10491                        <NoOngoingDeployment as alloy_sol_types::SolError>::abi_decode_raw_validate(
10492                                data,
10493                            )
10494                            .map(SquaringTaskErrors::NoOngoingDeployment)
10495                    }
10496                    NoOngoingDeployment
10497                },
10498                {
10499                    fn BitmapValueTooLarge(
10500                        data: &[u8],
10501                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10502                        <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_decode_raw_validate(
10503                                data,
10504                            )
10505                            .map(SquaringTaskErrors::BitmapValueTooLarge)
10506                    }
10507                    BitmapValueTooLarge
10508                },
10509                {
10510                    fn ECAddFailed(
10511                        data: &[u8],
10512                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10513                        <ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
10514                                data,
10515                            )
10516                            .map(SquaringTaskErrors::ECAddFailed)
10517                    }
10518                    ECAddFailed
10519                },
10520                {
10521                    fn ExpModFailed(
10522                        data: &[u8],
10523                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10524                        <ExpModFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
10525                                data,
10526                            )
10527                            .map(SquaringTaskErrors::ExpModFailed)
10528                    }
10529                    ExpModFailed
10530                },
10531                {
10532                    fn ZeroAddress(
10533                        data: &[u8],
10534                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10535                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
10536                                data,
10537                            )
10538                            .map(SquaringTaskErrors::ZeroAddress)
10539                    }
10540                    ZeroAddress
10541                },
10542                {
10543                    fn OnlyRegistryCoordinatorOwner(
10544                        data: &[u8],
10545                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10546                        <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
10547                                data,
10548                            )
10549                            .map(SquaringTaskErrors::OnlyRegistryCoordinatorOwner)
10550                    }
10551                    OnlyRegistryCoordinatorOwner
10552                },
10553                {
10554                    fn InvalidQuorumApkHash(
10555                        data: &[u8],
10556                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10557                        <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_decode_raw_validate(
10558                                data,
10559                            )
10560                            .map(SquaringTaskErrors::InvalidQuorumApkHash)
10561                    }
10562                    InvalidQuorumApkHash
10563                },
10564                {
10565                    fn BytesArrayLengthTooLong(
10566                        data: &[u8],
10567                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10568                        <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
10569                                data,
10570                            )
10571                            .map(SquaringTaskErrors::BytesArrayLengthTooLong)
10572                    }
10573                    BytesArrayLengthTooLong
10574                },
10575                {
10576                    fn NonSignerPubkeysNotSorted(
10577                        data: &[u8],
10578                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10579                        <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_decode_raw_validate(
10580                                data,
10581                            )
10582                            .map(SquaringTaskErrors::NonSignerPubkeysNotSorted)
10583                    }
10584                    NonSignerPubkeysNotSorted
10585                },
10586                {
10587                    fn ScalarTooLarge(
10588                        data: &[u8],
10589                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10590                        <ScalarTooLarge as alloy_sol_types::SolError>::abi_decode_raw_validate(
10591                                data,
10592                            )
10593                            .map(SquaringTaskErrors::ScalarTooLarge)
10594                    }
10595                    ScalarTooLarge
10596                },
10597            ];
10598            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10599                return Err(
10600                    alloy_sol_types::Error::unknown_selector(
10601                        <Self as alloy_sol_types::SolInterface>::NAME,
10602                        selector,
10603                    ),
10604                );
10605            };
10606            DECODE_VALIDATE_SHIMS[idx](data)
10607        }
10608        #[inline]
10609        fn abi_encoded_size(&self) -> usize {
10610            match self {
10611                Self::AlreadySet(inner) => {
10612                    <AlreadySet as alloy_sol_types::SolError>::abi_encoded_size(inner)
10613                }
10614                Self::BitmapValueTooLarge(inner) => {
10615                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encoded_size(
10616                        inner,
10617                    )
10618                }
10619                Self::BytesArrayLengthTooLong(inner) => {
10620                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encoded_size(
10621                        inner,
10622                    )
10623                }
10624                Self::BytesArrayNotOrdered(inner) => {
10625                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encoded_size(
10626                        inner,
10627                    )
10628                }
10629                Self::ECAddFailed(inner) => {
10630                    <ECAddFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10631                }
10632                Self::ECMulFailed(inner) => {
10633                    <ECMulFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10634                }
10635                Self::ExpModFailed(inner) => {
10636                    <ExpModFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10637                }
10638                Self::IncorrectSquareResult(inner) => {
10639                    <IncorrectSquareResult as alloy_sol_types::SolError>::abi_encoded_size(
10640                        inner,
10641                    )
10642                }
10643                Self::InputArrayLengthMismatch(inner) => {
10644                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
10645                        inner,
10646                    )
10647                }
10648                Self::InputEmptyQuorumNumbers(inner) => {
10649                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encoded_size(
10650                        inner,
10651                    )
10652                }
10653                Self::InputNonSignerLengthMismatch(inner) => {
10654                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
10655                        inner,
10656                    )
10657                }
10658                Self::InvalidBLSPairingKey(inner) => {
10659                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encoded_size(
10660                        inner,
10661                    )
10662                }
10663                Self::InvalidBLSSignature(inner) => {
10664                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encoded_size(
10665                        inner,
10666                    )
10667                }
10668                Self::InvalidQuorumApkHash(inner) => {
10669                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encoded_size(
10670                        inner,
10671                    )
10672                }
10673                Self::InvalidReferenceBlocknumber(inner) => {
10674                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encoded_size(
10675                        inner,
10676                    )
10677                }
10678                Self::NoOngoingDeployment(inner) => {
10679                    <NoOngoingDeployment as alloy_sol_types::SolError>::abi_encoded_size(
10680                        inner,
10681                    )
10682                }
10683                Self::NonSignerPubkeysNotSorted(inner) => {
10684                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encoded_size(
10685                        inner,
10686                    )
10687                }
10688                Self::OnlyRegistryCoordinatorOwner(inner) => {
10689                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
10690                        inner,
10691                    )
10692                }
10693                Self::ScalarTooLarge(inner) => {
10694                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encoded_size(
10695                        inner,
10696                    )
10697                }
10698                Self::ZeroAddress(inner) => {
10699                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
10700                }
10701                Self::ZeroValue(inner) => {
10702                    <ZeroValue as alloy_sol_types::SolError>::abi_encoded_size(inner)
10703                }
10704            }
10705        }
10706        #[inline]
10707        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10708            match self {
10709                Self::AlreadySet(inner) => {
10710                    <AlreadySet as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10711                }
10712                Self::BitmapValueTooLarge(inner) => {
10713                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encode_raw(
10714                        inner,
10715                        out,
10716                    )
10717                }
10718                Self::BytesArrayLengthTooLong(inner) => {
10719                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encode_raw(
10720                        inner,
10721                        out,
10722                    )
10723                }
10724                Self::BytesArrayNotOrdered(inner) => {
10725                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encode_raw(
10726                        inner,
10727                        out,
10728                    )
10729                }
10730                Self::ECAddFailed(inner) => {
10731                    <ECAddFailed as alloy_sol_types::SolError>::abi_encode_raw(
10732                        inner,
10733                        out,
10734                    )
10735                }
10736                Self::ECMulFailed(inner) => {
10737                    <ECMulFailed as alloy_sol_types::SolError>::abi_encode_raw(
10738                        inner,
10739                        out,
10740                    )
10741                }
10742                Self::ExpModFailed(inner) => {
10743                    <ExpModFailed as alloy_sol_types::SolError>::abi_encode_raw(
10744                        inner,
10745                        out,
10746                    )
10747                }
10748                Self::IncorrectSquareResult(inner) => {
10749                    <IncorrectSquareResult as alloy_sol_types::SolError>::abi_encode_raw(
10750                        inner,
10751                        out,
10752                    )
10753                }
10754                Self::InputArrayLengthMismatch(inner) => {
10755                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
10756                        inner,
10757                        out,
10758                    )
10759                }
10760                Self::InputEmptyQuorumNumbers(inner) => {
10761                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encode_raw(
10762                        inner,
10763                        out,
10764                    )
10765                }
10766                Self::InputNonSignerLengthMismatch(inner) => {
10767                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
10768                        inner,
10769                        out,
10770                    )
10771                }
10772                Self::InvalidBLSPairingKey(inner) => {
10773                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encode_raw(
10774                        inner,
10775                        out,
10776                    )
10777                }
10778                Self::InvalidBLSSignature(inner) => {
10779                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encode_raw(
10780                        inner,
10781                        out,
10782                    )
10783                }
10784                Self::InvalidQuorumApkHash(inner) => {
10785                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encode_raw(
10786                        inner,
10787                        out,
10788                    )
10789                }
10790                Self::InvalidReferenceBlocknumber(inner) => {
10791                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encode_raw(
10792                        inner,
10793                        out,
10794                    )
10795                }
10796                Self::NoOngoingDeployment(inner) => {
10797                    <NoOngoingDeployment as alloy_sol_types::SolError>::abi_encode_raw(
10798                        inner,
10799                        out,
10800                    )
10801                }
10802                Self::NonSignerPubkeysNotSorted(inner) => {
10803                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encode_raw(
10804                        inner,
10805                        out,
10806                    )
10807                }
10808                Self::OnlyRegistryCoordinatorOwner(inner) => {
10809                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
10810                        inner,
10811                        out,
10812                    )
10813                }
10814                Self::ScalarTooLarge(inner) => {
10815                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encode_raw(
10816                        inner,
10817                        out,
10818                    )
10819                }
10820                Self::ZeroAddress(inner) => {
10821                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
10822                        inner,
10823                        out,
10824                    )
10825                }
10826                Self::ZeroValue(inner) => {
10827                    <ZeroValue as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10828                }
10829            }
10830        }
10831    }
10832    ///Container for all the [`SquaringTask`](self) events.
10833    #[derive(serde::Serialize, serde::Deserialize)]
10834    #[derive(Debug, PartialEq, Eq, Hash)]
10835    pub enum SquaringTaskEvents {
10836        #[allow(missing_docs)]
10837        AggregatorUpdated(AggregatorUpdated),
10838        #[allow(missing_docs)]
10839        GeneratorUpdated(GeneratorUpdated),
10840        #[allow(missing_docs)]
10841        Initialized(Initialized),
10842        #[allow(missing_docs)]
10843        NewTaskCreated(NewTaskCreated),
10844        #[allow(missing_docs)]
10845        OwnershipTransferred(OwnershipTransferred),
10846        #[allow(missing_docs)]
10847        SquaringTaskCompleted(SquaringTaskCompleted),
10848        #[allow(missing_docs)]
10849        TaskResponded(TaskResponded),
10850    }
10851    #[automatically_derived]
10852    impl SquaringTaskEvents {
10853        /// All the selectors of this enum.
10854        ///
10855        /// Note that the selectors might not be in the same order as the variants.
10856        /// No guarantees are made about the order of the selectors.
10857        ///
10858        /// Prefer using `SolInterface` methods instead.
10859        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10860            [
10861                13u8, 223u8, 171u8, 138u8, 99u8, 93u8, 113u8, 241u8, 93u8, 114u8, 226u8,
10862                210u8, 223u8, 245u8, 93u8, 50u8, 17u8, 157u8, 19u8, 39u8, 13u8, 46u8,
10863                164u8, 195u8, 220u8, 0u8, 67u8, 182u8, 108u8, 44u8, 71u8, 107u8,
10864            ],
10865            [
10866                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
10867                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
10868                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
10869            ],
10870            [
10871                137u8, 186u8, 171u8, 239u8, 125u8, 253u8, 6u8, 131u8, 192u8, 172u8, 22u8,
10872                253u8, 42u8, 132u8, 49u8, 197u8, 27u8, 73u8, 251u8, 230u8, 84u8, 195u8,
10873                247u8, 181u8, 239u8, 25u8, 118u8, 62u8, 44u8, 205u8, 136u8, 242u8,
10874            ],
10875            [
10876                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
10877                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
10878                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10879            ],
10880            [
10881                155u8, 150u8, 201u8, 129u8, 199u8, 199u8, 10u8, 159u8, 23u8, 2u8, 171u8,
10882                176u8, 68u8, 120u8, 39u8, 70u8, 193u8, 29u8, 9u8, 15u8, 88u8, 234u8,
10883                52u8, 177u8, 45u8, 175u8, 44u8, 197u8, 60u8, 248u8, 171u8, 95u8,
10884            ],
10885            [
10886                167u8, 167u8, 7u8, 221u8, 127u8, 76u8, 160u8, 15u8, 225u8, 175u8, 205u8,
10887                52u8, 223u8, 126u8, 187u8, 108u8, 71u8, 242u8, 56u8, 128u8, 195u8, 77u8,
10888                37u8, 76u8, 195u8, 18u8, 229u8, 196u8, 30u8, 57u8, 116u8, 197u8,
10889            ],
10890            [
10891                186u8, 55u8, 131u8, 43u8, 221u8, 33u8, 116u8, 43u8, 134u8, 166u8, 51u8,
10892                4u8, 59u8, 146u8, 58u8, 154u8, 169u8, 120u8, 241u8, 207u8, 178u8, 178u8,
10893                116u8, 198u8, 102u8, 30u8, 181u8, 115u8, 207u8, 9u8, 43u8, 240u8,
10894            ],
10895        ];
10896    }
10897    #[automatically_derived]
10898    impl alloy_sol_types::SolEventInterface for SquaringTaskEvents {
10899        const NAME: &'static str = "SquaringTaskEvents";
10900        const COUNT: usize = 7usize;
10901        fn decode_raw_log(
10902            topics: &[alloy_sol_types::Word],
10903            data: &[u8],
10904        ) -> alloy_sol_types::Result<Self> {
10905            match topics.first().copied() {
10906                Some(
10907                    <AggregatorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10908                ) => {
10909                    <AggregatorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10910                            topics,
10911                            data,
10912                        )
10913                        .map(Self::AggregatorUpdated)
10914                }
10915                Some(<GeneratorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10916                    <GeneratorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10917                            topics,
10918                            data,
10919                        )
10920                        .map(Self::GeneratorUpdated)
10921                }
10922                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10923                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10924                            topics,
10925                            data,
10926                        )
10927                        .map(Self::Initialized)
10928                }
10929                Some(<NewTaskCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10930                    <NewTaskCreated as alloy_sol_types::SolEvent>::decode_raw_log(
10931                            topics,
10932                            data,
10933                        )
10934                        .map(Self::NewTaskCreated)
10935                }
10936                Some(
10937                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10938                ) => {
10939                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10940                            topics,
10941                            data,
10942                        )
10943                        .map(Self::OwnershipTransferred)
10944                }
10945                Some(
10946                    <SquaringTaskCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10947                ) => {
10948                    <SquaringTaskCompleted as alloy_sol_types::SolEvent>::decode_raw_log(
10949                            topics,
10950                            data,
10951                        )
10952                        .map(Self::SquaringTaskCompleted)
10953                }
10954                Some(<TaskResponded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10955                    <TaskResponded as alloy_sol_types::SolEvent>::decode_raw_log(
10956                            topics,
10957                            data,
10958                        )
10959                        .map(Self::TaskResponded)
10960                }
10961                _ => {
10962                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10963                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10964                        log: alloy_sol_types::private::Box::new(
10965                            alloy_sol_types::private::LogData::new_unchecked(
10966                                topics.to_vec(),
10967                                data.to_vec().into(),
10968                            ),
10969                        ),
10970                    })
10971                }
10972            }
10973        }
10974    }
10975    #[automatically_derived]
10976    impl alloy_sol_types::private::IntoLogData for SquaringTaskEvents {
10977        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10978            match self {
10979                Self::AggregatorUpdated(inner) => {
10980                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10981                }
10982                Self::GeneratorUpdated(inner) => {
10983                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10984                }
10985                Self::Initialized(inner) => {
10986                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10987                }
10988                Self::NewTaskCreated(inner) => {
10989                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10990                }
10991                Self::OwnershipTransferred(inner) => {
10992                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10993                }
10994                Self::SquaringTaskCompleted(inner) => {
10995                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10996                }
10997                Self::TaskResponded(inner) => {
10998                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10999                }
11000            }
11001        }
11002        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11003            match self {
11004                Self::AggregatorUpdated(inner) => {
11005                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11006                }
11007                Self::GeneratorUpdated(inner) => {
11008                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11009                }
11010                Self::Initialized(inner) => {
11011                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11012                }
11013                Self::NewTaskCreated(inner) => {
11014                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11015                }
11016                Self::OwnershipTransferred(inner) => {
11017                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11018                }
11019                Self::SquaringTaskCompleted(inner) => {
11020                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11021                }
11022                Self::TaskResponded(inner) => {
11023                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11024                }
11025            }
11026        }
11027    }
11028    use alloy::contract as alloy_contract;
11029    /**Creates a new wrapper around an on-chain [`SquaringTask`](self) contract instance.
11030
11031See the [wrapper's documentation](`SquaringTaskInstance`) for more details.*/
11032    #[inline]
11033    pub const fn new<
11034        P: alloy_contract::private::Provider<N>,
11035        N: alloy_contract::private::Network,
11036    >(
11037        address: alloy_sol_types::private::Address,
11038        provider: P,
11039    ) -> SquaringTaskInstance<P, N> {
11040        SquaringTaskInstance::<P, N>::new(address, provider)
11041    }
11042    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11043
11044Returns a new instance of the contract, if the deployment was successful.
11045
11046For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11047    #[inline]
11048    pub fn deploy<
11049        P: alloy_contract::private::Provider<N>,
11050        N: alloy_contract::private::Network,
11051    >(
11052        provider: P,
11053        _registryCoordinator: alloy::sol_types::private::Address,
11054        _taskResponseWindowBlock: u32,
11055    ) -> impl ::core::future::Future<
11056        Output = alloy_contract::Result<SquaringTaskInstance<P, N>>,
11057    > {
11058        SquaringTaskInstance::<
11059            P,
11060            N,
11061        >::deploy(provider, _registryCoordinator, _taskResponseWindowBlock)
11062    }
11063    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11064and constructor arguments, if any.
11065
11066This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11067the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11068    #[inline]
11069    pub fn deploy_builder<
11070        P: alloy_contract::private::Provider<N>,
11071        N: alloy_contract::private::Network,
11072    >(
11073        provider: P,
11074        _registryCoordinator: alloy::sol_types::private::Address,
11075        _taskResponseWindowBlock: u32,
11076    ) -> alloy_contract::RawCallBuilder<P, N> {
11077        SquaringTaskInstance::<
11078            P,
11079            N,
11080        >::deploy_builder(provider, _registryCoordinator, _taskResponseWindowBlock)
11081    }
11082    /**A [`SquaringTask`](self) instance.
11083
11084Contains type-safe methods for interacting with an on-chain instance of the
11085[`SquaringTask`](self) contract located at a given `address`, using a given
11086provider `P`.
11087
11088If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11089documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11090be used to deploy a new instance of the contract.
11091
11092See the [module-level documentation](self) for all the available methods.*/
11093    #[derive(Clone)]
11094    pub struct SquaringTaskInstance<P, N = alloy_contract::private::Ethereum> {
11095        address: alloy_sol_types::private::Address,
11096        provider: P,
11097        _network: ::core::marker::PhantomData<N>,
11098    }
11099    #[automatically_derived]
11100    impl<P, N> ::core::fmt::Debug for SquaringTaskInstance<P, N> {
11101        #[inline]
11102        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11103            f.debug_tuple("SquaringTaskInstance").field(&self.address).finish()
11104        }
11105    }
11106    /// Instantiation and getters/setters.
11107    #[automatically_derived]
11108    impl<
11109        P: alloy_contract::private::Provider<N>,
11110        N: alloy_contract::private::Network,
11111    > SquaringTaskInstance<P, N> {
11112        /**Creates a new wrapper around an on-chain [`SquaringTask`](self) contract instance.
11113
11114See the [wrapper's documentation](`SquaringTaskInstance`) for more details.*/
11115        #[inline]
11116        pub const fn new(
11117            address: alloy_sol_types::private::Address,
11118            provider: P,
11119        ) -> Self {
11120            Self {
11121                address,
11122                provider,
11123                _network: ::core::marker::PhantomData,
11124            }
11125        }
11126        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11127
11128Returns a new instance of the contract, if the deployment was successful.
11129
11130For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11131        #[inline]
11132        pub async fn deploy(
11133            provider: P,
11134            _registryCoordinator: alloy::sol_types::private::Address,
11135            _taskResponseWindowBlock: u32,
11136        ) -> alloy_contract::Result<SquaringTaskInstance<P, N>> {
11137            let call_builder = Self::deploy_builder(
11138                provider,
11139                _registryCoordinator,
11140                _taskResponseWindowBlock,
11141            );
11142            let contract_address = call_builder.deploy().await?;
11143            Ok(Self::new(contract_address, call_builder.provider))
11144        }
11145        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11146and constructor arguments, if any.
11147
11148This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11149the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11150        #[inline]
11151        pub fn deploy_builder(
11152            provider: P,
11153            _registryCoordinator: alloy::sol_types::private::Address,
11154            _taskResponseWindowBlock: u32,
11155        ) -> alloy_contract::RawCallBuilder<P, N> {
11156            alloy_contract::RawCallBuilder::new_raw_deploy(
11157                provider,
11158                [
11159                    &BYTECODE[..],
11160                    &alloy_sol_types::SolConstructor::abi_encode(
11161                        &constructorCall {
11162                            _registryCoordinator,
11163                            _taskResponseWindowBlock,
11164                        },
11165                    )[..],
11166                ]
11167                    .concat()
11168                    .into(),
11169            )
11170        }
11171        /// Returns a reference to the address.
11172        #[inline]
11173        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11174            &self.address
11175        }
11176        /// Sets the address.
11177        #[inline]
11178        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11179            self.address = address;
11180        }
11181        /// Sets the address and returns `self`.
11182        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11183            self.set_address(address);
11184            self
11185        }
11186        /// Returns a reference to the provider.
11187        #[inline]
11188        pub const fn provider(&self) -> &P {
11189            &self.provider
11190        }
11191    }
11192    impl<P: ::core::clone::Clone, N> SquaringTaskInstance<&P, N> {
11193        /// Clones the provider and returns a new instance with the cloned provider.
11194        #[inline]
11195        pub fn with_cloned_provider(self) -> SquaringTaskInstance<P, N> {
11196            SquaringTaskInstance {
11197                address: self.address,
11198                provider: ::core::clone::Clone::clone(&self.provider),
11199                _network: ::core::marker::PhantomData,
11200            }
11201        }
11202    }
11203    /// Function calls.
11204    #[automatically_derived]
11205    impl<
11206        P: alloy_contract::private::Provider<N>,
11207        N: alloy_contract::private::Network,
11208    > SquaringTaskInstance<P, N> {
11209        /// Creates a new call builder using this contract instance's provider and address.
11210        ///
11211        /// Note that the call can be any function call, not just those defined in this
11212        /// contract. Prefer using the other methods for building type-safe contract calls.
11213        pub fn call_builder<C: alloy_sol_types::SolCall>(
11214            &self,
11215            call: &C,
11216        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
11217            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11218        }
11219        ///Creates a new call builder for the [`TASK_RESPONSE_WINDOW_BLOCK`] function.
11220        pub fn TASK_RESPONSE_WINDOW_BLOCK(
11221            &self,
11222        ) -> alloy_contract::SolCallBuilder<&P, TASK_RESPONSE_WINDOW_BLOCKCall, N> {
11223            self.call_builder(&TASK_RESPONSE_WINDOW_BLOCKCall)
11224        }
11225        ///Creates a new call builder for the [`__TaskManager_init`] function.
11226        pub fn __TaskManager_init(
11227            &self,
11228            _aggregator: alloy::sol_types::private::Address,
11229            _generator: alloy::sol_types::private::Address,
11230            initialOwner: alloy::sol_types::private::Address,
11231        ) -> alloy_contract::SolCallBuilder<&P, __TaskManager_initCall, N> {
11232            self.call_builder(
11233                &__TaskManager_initCall {
11234                    _aggregator,
11235                    _generator,
11236                    initialOwner,
11237                },
11238            )
11239        }
11240        ///Creates a new call builder for the [`aggregator`] function.
11241        pub fn aggregator(
11242            &self,
11243        ) -> alloy_contract::SolCallBuilder<&P, aggregatorCall, N> {
11244            self.call_builder(&aggregatorCall)
11245        }
11246        ///Creates a new call builder for the [`allTaskHashes`] function.
11247        pub fn allTaskHashes(
11248            &self,
11249            _0: u32,
11250        ) -> alloy_contract::SolCallBuilder<&P, allTaskHashesCall, N> {
11251            self.call_builder(&allTaskHashesCall(_0))
11252        }
11253        ///Creates a new call builder for the [`allTaskResponses`] function.
11254        pub fn allTaskResponses(
11255            &self,
11256            _0: u32,
11257        ) -> alloy_contract::SolCallBuilder<&P, allTaskResponsesCall, N> {
11258            self.call_builder(&allTaskResponsesCall(_0))
11259        }
11260        ///Creates a new call builder for the [`blsApkRegistry`] function.
11261        pub fn blsApkRegistry(
11262            &self,
11263        ) -> alloy_contract::SolCallBuilder<&P, blsApkRegistryCall, N> {
11264            self.call_builder(&blsApkRegistryCall)
11265        }
11266        ///Creates a new call builder for the [`checkSignatures`] function.
11267        pub fn checkSignatures(
11268            &self,
11269            msgHash: alloy::sol_types::private::FixedBytes<32>,
11270            quorumNumbers: alloy::sol_types::private::Bytes,
11271            referenceBlockNumber: u32,
11272            params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
11273        ) -> alloy_contract::SolCallBuilder<&P, checkSignaturesCall, N> {
11274            self.call_builder(
11275                &checkSignaturesCall {
11276                    msgHash,
11277                    quorumNumbers,
11278                    referenceBlockNumber,
11279                    params,
11280                },
11281            )
11282        }
11283        ///Creates a new call builder for the [`createSquaringTask`] function.
11284        pub fn createSquaringTask(
11285            &self,
11286            number: alloy::sol_types::private::primitives::aliases::U256,
11287            quorumThresholdPercentage: u32,
11288            quorumNumbers: alloy::sol_types::private::Bytes,
11289        ) -> alloy_contract::SolCallBuilder<&P, createSquaringTaskCall, N> {
11290            self.call_builder(
11291                &createSquaringTaskCall {
11292                    number,
11293                    quorumThresholdPercentage,
11294                    quorumNumbers,
11295                },
11296            )
11297        }
11298        ///Creates a new call builder for the [`delegation`] function.
11299        pub fn delegation(
11300            &self,
11301        ) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
11302            self.call_builder(&delegationCall)
11303        }
11304        ///Creates a new call builder for the [`generator`] function.
11305        pub fn generator(&self) -> alloy_contract::SolCallBuilder<&P, generatorCall, N> {
11306            self.call_builder(&generatorCall)
11307        }
11308        ///Creates a new call builder for the [`initialize`] function.
11309        pub fn initialize(
11310            &self,
11311            _aggregator: alloy::sol_types::private::Address,
11312            _generator: alloy::sol_types::private::Address,
11313            initialOwner: alloy::sol_types::private::Address,
11314        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
11315            self.call_builder(
11316                &initializeCall {
11317                    _aggregator,
11318                    _generator,
11319                    initialOwner,
11320                },
11321            )
11322        }
11323        ///Creates a new call builder for the [`latestTaskNum`] function.
11324        pub fn latestTaskNum(
11325            &self,
11326        ) -> alloy_contract::SolCallBuilder<&P, latestTaskNumCall, N> {
11327            self.call_builder(&latestTaskNumCall)
11328        }
11329        ///Creates a new call builder for the [`owner`] function.
11330        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
11331            self.call_builder(&ownerCall)
11332        }
11333        ///Creates a new call builder for the [`registryCoordinator`] function.
11334        pub fn registryCoordinator(
11335            &self,
11336        ) -> alloy_contract::SolCallBuilder<&P, registryCoordinatorCall, N> {
11337            self.call_builder(&registryCoordinatorCall)
11338        }
11339        ///Creates a new call builder for the [`renounceOwnership`] function.
11340        pub fn renounceOwnership(
11341            &self,
11342        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
11343            self.call_builder(&renounceOwnershipCall)
11344        }
11345        ///Creates a new call builder for the [`respondToSquaringTask`] function.
11346        pub fn respondToSquaringTask(
11347            &self,
11348            task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
11349            taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
11350            nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
11351        ) -> alloy_contract::SolCallBuilder<&P, respondToSquaringTaskCall, N> {
11352            self.call_builder(
11353                &respondToSquaringTaskCall {
11354                    task,
11355                    taskResponse,
11356                    nonSignerStakesAndSignature,
11357                },
11358            )
11359        }
11360        ///Creates a new call builder for the [`setAggregator`] function.
11361        pub fn setAggregator(
11362            &self,
11363            newAggregator: alloy::sol_types::private::Address,
11364        ) -> alloy_contract::SolCallBuilder<&P, setAggregatorCall, N> {
11365            self.call_builder(&setAggregatorCall { newAggregator })
11366        }
11367        ///Creates a new call builder for the [`setGenerator`] function.
11368        pub fn setGenerator(
11369            &self,
11370            newGenerator: alloy::sol_types::private::Address,
11371        ) -> alloy_contract::SolCallBuilder<&P, setGeneratorCall, N> {
11372            self.call_builder(&setGeneratorCall { newGenerator })
11373        }
11374        ///Creates a new call builder for the [`stakeRegistry`] function.
11375        pub fn stakeRegistry(
11376            &self,
11377        ) -> alloy_contract::SolCallBuilder<&P, stakeRegistryCall, N> {
11378            self.call_builder(&stakeRegistryCall)
11379        }
11380        ///Creates a new call builder for the [`transferOwnership`] function.
11381        pub fn transferOwnership(
11382            &self,
11383            newOwner: alloy::sol_types::private::Address,
11384        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
11385            self.call_builder(&transferOwnershipCall { newOwner })
11386        }
11387        ///Creates a new call builder for the [`trySignatureAndApkVerification`] function.
11388        pub fn trySignatureAndApkVerification(
11389            &self,
11390            msgHash: alloy::sol_types::private::FixedBytes<32>,
11391            apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11392            apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11393            sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11394        ) -> alloy_contract::SolCallBuilder<&P, trySignatureAndApkVerificationCall, N> {
11395            self.call_builder(
11396                &trySignatureAndApkVerificationCall {
11397                    msgHash,
11398                    apk,
11399                    apkG2,
11400                    sigma,
11401                },
11402            )
11403        }
11404    }
11405    /// Event filters.
11406    #[automatically_derived]
11407    impl<
11408        P: alloy_contract::private::Provider<N>,
11409        N: alloy_contract::private::Network,
11410    > SquaringTaskInstance<P, N> {
11411        /// Creates a new event filter using this contract instance's provider and address.
11412        ///
11413        /// Note that the type can be any event, not just those defined in this contract.
11414        /// Prefer using the other methods for building type-safe event filters.
11415        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11416            &self,
11417        ) -> alloy_contract::Event<&P, E, N> {
11418            alloy_contract::Event::new_sol(&self.provider, &self.address)
11419        }
11420        ///Creates a new event filter for the [`AggregatorUpdated`] event.
11421        pub fn AggregatorUpdated_filter(
11422            &self,
11423        ) -> alloy_contract::Event<&P, AggregatorUpdated, N> {
11424            self.event_filter::<AggregatorUpdated>()
11425        }
11426        ///Creates a new event filter for the [`GeneratorUpdated`] event.
11427        pub fn GeneratorUpdated_filter(
11428            &self,
11429        ) -> alloy_contract::Event<&P, GeneratorUpdated, N> {
11430            self.event_filter::<GeneratorUpdated>()
11431        }
11432        ///Creates a new event filter for the [`Initialized`] event.
11433        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
11434            self.event_filter::<Initialized>()
11435        }
11436        ///Creates a new event filter for the [`NewTaskCreated`] event.
11437        pub fn NewTaskCreated_filter(
11438            &self,
11439        ) -> alloy_contract::Event<&P, NewTaskCreated, N> {
11440            self.event_filter::<NewTaskCreated>()
11441        }
11442        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11443        pub fn OwnershipTransferred_filter(
11444            &self,
11445        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
11446            self.event_filter::<OwnershipTransferred>()
11447        }
11448        ///Creates a new event filter for the [`SquaringTaskCompleted`] event.
11449        pub fn SquaringTaskCompleted_filter(
11450            &self,
11451        ) -> alloy_contract::Event<&P, SquaringTaskCompleted, N> {
11452            self.event_filter::<SquaringTaskCompleted>()
11453        }
11454        ///Creates a new event filter for the [`TaskResponded`] event.
11455        pub fn TaskResponded_filter(
11456            &self,
11457        ) -> alloy_contract::Event<&P, TaskResponded, N> {
11458            self.event_filter::<TaskResponded>()
11459        }
11460    }
11461}