hotshot_contract_adapter/bindings/
staketablev2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    /**```solidity
141    struct G1Point { BaseField x; BaseField y; }
142    ```*/
143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
144    #[derive(Clone)]
145    pub struct G1Point {
146        #[allow(missing_docs)]
147        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
148        #[allow(missing_docs)]
149        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
150    }
151    #[allow(
152        non_camel_case_types,
153        non_snake_case,
154        clippy::pub_underscore_fields,
155        clippy::style
156    )]
157    const _: () = {
158        use alloy::sol_types as alloy_sol_types;
159        #[doc(hidden)]
160        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
161        #[doc(hidden)]
162        type UnderlyingRustTuple<'a> = (
163            <BaseField as alloy::sol_types::SolType>::RustType,
164            <BaseField as alloy::sol_types::SolType>::RustType,
165        );
166        #[cfg(test)]
167        #[allow(dead_code, unreachable_patterns)]
168        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
169            match _t {
170                alloy_sol_types::private::AssertTypeEq::<
171                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
172                >(_) => {},
173            }
174        }
175        #[automatically_derived]
176        #[doc(hidden)]
177        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
178            fn from(value: G1Point) -> Self {
179                (value.x, value.y)
180            }
181        }
182        #[automatically_derived]
183        #[doc(hidden)]
184        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
185            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
186                Self {
187                    x: tuple.0,
188                    y: tuple.1,
189                }
190            }
191        }
192        #[automatically_derived]
193        impl alloy_sol_types::SolValue for G1Point {
194            type SolType = Self;
195        }
196        #[automatically_derived]
197        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
198            #[inline]
199            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
200                (
201                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
202                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
203                )
204            }
205            #[inline]
206            fn stv_abi_encoded_size(&self) -> usize {
207                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
208                    return size;
209                }
210                let tuple =
211                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
212                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
213            }
214            #[inline]
215            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
216                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
217            }
218            #[inline]
219            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
220                let tuple =
221                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
222                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
223                    &tuple, out,
224                )
225            }
226            #[inline]
227            fn stv_abi_packed_encoded_size(&self) -> usize {
228                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
229                    return size;
230                }
231                let tuple =
232                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
233                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
234                    &tuple,
235                )
236            }
237        }
238        #[automatically_derived]
239        impl alloy_sol_types::SolType for G1Point {
240            type RustType = Self;
241            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
242            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
243            const ENCODED_SIZE: Option<usize> =
244                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
245            const PACKED_ENCODED_SIZE: Option<usize> =
246                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
247            #[inline]
248            fn valid_token(token: &Self::Token<'_>) -> bool {
249                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
250            }
251            #[inline]
252            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
253                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
254                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
255            }
256        }
257        #[automatically_derived]
258        impl alloy_sol_types::SolStruct for G1Point {
259            const NAME: &'static str = "G1Point";
260            #[inline]
261            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
262                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
263            }
264            #[inline]
265            fn eip712_components(
266            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
267            {
268                alloy_sol_types::private::Vec::new()
269            }
270            #[inline]
271            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
272                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
273            }
274            #[inline]
275            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
276                [
277                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
278                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
279                ]
280                .concat()
281            }
282        }
283        #[automatically_derived]
284        impl alloy_sol_types::EventTopic for G1Point {
285            #[inline]
286            fn topic_preimage_length(rust: &Self::RustType) -> usize {
287                0usize
288                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
289                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
290            }
291            #[inline]
292            fn encode_topic_preimage(
293                rust: &Self::RustType,
294                out: &mut alloy_sol_types::private::Vec<u8>,
295            ) {
296                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
297                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
298                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
299            }
300            #[inline]
301            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
302                let mut out = alloy_sol_types::private::Vec::new();
303                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
304                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
305            }
306        }
307    };
308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
309    /**```solidity
310    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
311    ```*/
312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
313    #[derive(Clone)]
314    pub struct G2Point {
315        #[allow(missing_docs)]
316        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
317        #[allow(missing_docs)]
318        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339            <BaseField as alloy::sol_types::SolType>::RustType,
340        );
341        #[cfg(test)]
342        #[allow(dead_code, unreachable_patterns)]
343        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {},
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G2Point) -> Self {
354                (value.x0, value.x1, value.y0, value.y1)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self {
362                    x0: tuple.0,
363                    x1: tuple.1,
364                    y0: tuple.2,
365                    y1: tuple.3,
366                }
367            }
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::SolValue for G2Point {
371            type SolType = Self;
372        }
373        #[automatically_derived]
374        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
375            #[inline]
376            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
377                (
378                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
379                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
380                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
381                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
382                )
383            }
384            #[inline]
385            fn stv_abi_encoded_size(&self) -> usize {
386                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
387                    return size;
388                }
389                let tuple =
390                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
391                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
392            }
393            #[inline]
394            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
395                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
396            }
397            #[inline]
398            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
399                let tuple =
400                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
402                    &tuple, out,
403                )
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple =
411                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
413                    &tuple,
414                )
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G2Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
421            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
422            const ENCODED_SIZE: Option<usize> =
423                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
424            const PACKED_ENCODED_SIZE: Option<usize> =
425                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
426            #[inline]
427            fn valid_token(token: &Self::Token<'_>) -> bool {
428                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
429            }
430            #[inline]
431            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
432                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
433                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
434            }
435        }
436        #[automatically_derived]
437        impl alloy_sol_types::SolStruct for G2Point {
438            const NAME: &'static str = "G2Point";
439            #[inline]
440            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
441                alloy_sol_types::private::Cow::Borrowed(
442                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
443                )
444            }
445            #[inline]
446            fn eip712_components(
447            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
448            {
449                alloy_sol_types::private::Vec::new()
450            }
451            #[inline]
452            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
453                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
454            }
455            #[inline]
456            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
457                [
458                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0).0,
459                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1).0,
460                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0).0,
461                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
462                ]
463                .concat()
464            }
465        }
466        #[automatically_derived]
467        impl alloy_sol_types::EventTopic for G2Point {
468            #[inline]
469            fn topic_preimage_length(rust: &Self::RustType) -> usize {
470                0usize
471                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x0)
472                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x1)
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y0)
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y1)
475            }
476            #[inline]
477            fn encode_topic_preimage(
478                rust: &Self::RustType,
479                out: &mut alloy_sol_types::private::Vec<u8>,
480            ) {
481                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
482                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x0, out);
483                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x1, out);
484                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y0, out);
485                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y1, out);
486            }
487            #[inline]
488            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
489                let mut out = alloy_sol_types::private::Vec::new();
490                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
491                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
492            }
493        }
494    };
495    use alloy::contract as alloy_contract;
496    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
497
498    See the [wrapper's documentation](`BN254Instance`) for more details.*/
499    #[inline]
500    pub const fn new<
501        T: alloy_contract::private::Transport + ::core::clone::Clone,
502        P: alloy_contract::private::Provider<T, N>,
503        N: alloy_contract::private::Network,
504    >(
505        address: alloy_sol_types::private::Address,
506        provider: P,
507    ) -> BN254Instance<T, P, N> {
508        BN254Instance::<T, P, N>::new(address, provider)
509    }
510    /**A [`BN254`](self) instance.
511
512    Contains type-safe methods for interacting with an on-chain instance of the
513    [`BN254`](self) contract located at a given `address`, using a given
514    provider `P`.
515
516    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
517    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
518    be used to deploy a new instance of the contract.
519
520    See the [module-level documentation](self) for all the available methods.*/
521    #[derive(Clone)]
522    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
523        address: alloy_sol_types::private::Address,
524        provider: P,
525        _network_transport: ::core::marker::PhantomData<(N, T)>,
526    }
527    #[automatically_derived]
528    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
529        #[inline]
530        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
531            f.debug_tuple("BN254Instance").field(&self.address).finish()
532        }
533    }
534    /// Instantiation and getters/setters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
543
544        See the [wrapper's documentation](`BN254Instance`) for more details.*/
545        #[inline]
546        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
547            Self {
548                address,
549                provider,
550                _network_transport: ::core::marker::PhantomData,
551            }
552        }
553        /// Returns a reference to the address.
554        #[inline]
555        pub const fn address(&self) -> &alloy_sol_types::private::Address {
556            &self.address
557        }
558        /// Sets the address.
559        #[inline]
560        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
561            self.address = address;
562        }
563        /// Sets the address and returns `self`.
564        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
565            self.set_address(address);
566            self
567        }
568        /// Returns a reference to the provider.
569        #[inline]
570        pub const fn provider(&self) -> &P {
571            &self.provider
572        }
573    }
574    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
575        /// Clones the provider and returns a new instance with the cloned provider.
576        #[inline]
577        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
578            BN254Instance {
579                address: self.address,
580                provider: ::core::clone::Clone::clone(&self.provider),
581                _network_transport: ::core::marker::PhantomData,
582            }
583        }
584    }
585    /// Function calls.
586    #[automatically_derived]
587    impl<
588            T: alloy_contract::private::Transport + ::core::clone::Clone,
589            P: alloy_contract::private::Provider<T, N>,
590            N: alloy_contract::private::Network,
591        > BN254Instance<T, P, N>
592    {
593        /// Creates a new call builder using this contract instance's provider and address.
594        ///
595        /// Note that the call can be any function call, not just those defined in this
596        /// contract. Prefer using the other methods for building type-safe contract calls.
597        pub fn call_builder<C: alloy_sol_types::SolCall>(
598            &self,
599            call: &C,
600        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
601            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
602        }
603    }
604    /// Event filters.
605    #[automatically_derived]
606    impl<
607            T: alloy_contract::private::Transport + ::core::clone::Clone,
608            P: alloy_contract::private::Provider<T, N>,
609            N: alloy_contract::private::Network,
610        > BN254Instance<T, P, N>
611    {
612        /// Creates a new event filter using this contract instance's provider and address.
613        ///
614        /// Note that the type can be any event, not just those defined in this contract.
615        /// Prefer using the other methods for building type-safe event filters.
616        pub fn event_filter<E: alloy_sol_types::SolEvent>(
617            &self,
618        ) -> alloy_contract::Event<T, &P, E, N> {
619            alloy_contract::Event::new_sol(&self.provider, &self.address)
620        }
621    }
622}
623///Module containing a contract's types and functions.
624/**
625
626```solidity
627library EdOnBN254 {
628    struct EdOnBN254Point { uint256 x; uint256 y; }
629}
630```*/
631#[allow(
632    non_camel_case_types,
633    non_snake_case,
634    clippy::pub_underscore_fields,
635    clippy::style,
636    clippy::empty_structs_with_brackets
637)]
638pub mod EdOnBN254 {
639    use alloy::sol_types as alloy_sol_types;
640
641    use super::*;
642    #[derive(Default, Debug, PartialEq, Eq, Hash)]
643    /**```solidity
644    struct EdOnBN254Point { uint256 x; uint256 y; }
645    ```*/
646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
647    #[derive(Clone)]
648    pub struct EdOnBN254Point {
649        #[allow(missing_docs)]
650        pub x: alloy::sol_types::private::primitives::aliases::U256,
651        #[allow(missing_docs)]
652        pub y: alloy::sol_types::private::primitives::aliases::U256,
653    }
654    #[allow(
655        non_camel_case_types,
656        non_snake_case,
657        clippy::pub_underscore_fields,
658        clippy::style
659    )]
660    const _: () = {
661        use alloy::sol_types as alloy_sol_types;
662        #[doc(hidden)]
663        type UnderlyingSolTuple<'a> = (
664            alloy::sol_types::sol_data::Uint<256>,
665            alloy::sol_types::sol_data::Uint<256>,
666        );
667        #[doc(hidden)]
668        type UnderlyingRustTuple<'a> = (
669            alloy::sol_types::private::primitives::aliases::U256,
670            alloy::sol_types::private::primitives::aliases::U256,
671        );
672        #[cfg(test)]
673        #[allow(dead_code, unreachable_patterns)]
674        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
675            match _t {
676                alloy_sol_types::private::AssertTypeEq::<
677                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
678                >(_) => {},
679            }
680        }
681        #[automatically_derived]
682        #[doc(hidden)]
683        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
684            fn from(value: EdOnBN254Point) -> Self {
685                (value.x, value.y)
686            }
687        }
688        #[automatically_derived]
689        #[doc(hidden)]
690        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
691            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
692                Self {
693                    x: tuple.0,
694                    y: tuple.1,
695                }
696            }
697        }
698        #[automatically_derived]
699        impl alloy_sol_types::SolValue for EdOnBN254Point {
700            type SolType = Self;
701        }
702        #[automatically_derived]
703        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
704            #[inline]
705            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
706                (
707                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
708                        &self.x,
709                    ),
710                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
711                        &self.y,
712                    ),
713                )
714            }
715            #[inline]
716            fn stv_abi_encoded_size(&self) -> usize {
717                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
718                    return size;
719                }
720                let tuple =
721                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
722                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
723            }
724            #[inline]
725            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
726                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
727            }
728            #[inline]
729            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
730                let tuple =
731                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
732                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
733                    &tuple, out,
734                )
735            }
736            #[inline]
737            fn stv_abi_packed_encoded_size(&self) -> usize {
738                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
739                    return size;
740                }
741                let tuple =
742                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
743                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
744                    &tuple,
745                )
746            }
747        }
748        #[automatically_derived]
749        impl alloy_sol_types::SolType for EdOnBN254Point {
750            type RustType = Self;
751            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
752            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
753            const ENCODED_SIZE: Option<usize> =
754                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
755            const PACKED_ENCODED_SIZE: Option<usize> =
756                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
757            #[inline]
758            fn valid_token(token: &Self::Token<'_>) -> bool {
759                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
760            }
761            #[inline]
762            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
763                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
764                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
765            }
766        }
767        #[automatically_derived]
768        impl alloy_sol_types::SolStruct for EdOnBN254Point {
769            const NAME: &'static str = "EdOnBN254Point";
770            #[inline]
771            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
772                alloy_sol_types::private::Cow::Borrowed("EdOnBN254Point(uint256 x,uint256 y)")
773            }
774            #[inline]
775            fn eip712_components(
776            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
777            {
778                alloy_sol_types::private::Vec::new()
779            }
780            #[inline]
781            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
782                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
783            }
784            #[inline]
785            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
786                [
787                    <alloy::sol_types::sol_data::Uint<
788                        256,
789                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
790                        .0,
791                    <alloy::sol_types::sol_data::Uint<
792                        256,
793                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
794                        .0,
795                ]
796                    .concat()
797            }
798        }
799        #[automatically_derived]
800        impl alloy_sol_types::EventTopic for EdOnBN254Point {
801            #[inline]
802            fn topic_preimage_length(rust: &Self::RustType) -> usize {
803                0usize
804                    + <alloy::sol_types::sol_data::Uint<
805                        256,
806                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
807                    + <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
810            }
811            #[inline]
812            fn encode_topic_preimage(
813                rust: &Self::RustType,
814                out: &mut alloy_sol_types::private::Vec<u8>,
815            ) {
816                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
817                <alloy::sol_types::sol_data::Uint<
818                    256,
819                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
820                <alloy::sol_types::sol_data::Uint<
821                    256,
822                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
823            }
824            #[inline]
825            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
826                let mut out = alloy_sol_types::private::Vec::new();
827                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
828                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
829            }
830        }
831    };
832    use alloy::contract as alloy_contract;
833    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
834
835    See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
836    #[inline]
837    pub const fn new<
838        T: alloy_contract::private::Transport + ::core::clone::Clone,
839        P: alloy_contract::private::Provider<T, N>,
840        N: alloy_contract::private::Network,
841    >(
842        address: alloy_sol_types::private::Address,
843        provider: P,
844    ) -> EdOnBN254Instance<T, P, N> {
845        EdOnBN254Instance::<T, P, N>::new(address, provider)
846    }
847    /**A [`EdOnBN254`](self) instance.
848
849    Contains type-safe methods for interacting with an on-chain instance of the
850    [`EdOnBN254`](self) contract located at a given `address`, using a given
851    provider `P`.
852
853    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
854    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
855    be used to deploy a new instance of the contract.
856
857    See the [module-level documentation](self) for all the available methods.*/
858    #[derive(Clone)]
859    pub struct EdOnBN254Instance<T, P, N = alloy_contract::private::Ethereum> {
860        address: alloy_sol_types::private::Address,
861        provider: P,
862        _network_transport: ::core::marker::PhantomData<(N, T)>,
863    }
864    #[automatically_derived]
865    impl<T, P, N> ::core::fmt::Debug for EdOnBN254Instance<T, P, N> {
866        #[inline]
867        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
868            f.debug_tuple("EdOnBN254Instance")
869                .field(&self.address)
870                .finish()
871        }
872    }
873    /// Instantiation and getters/setters.
874    #[automatically_derived]
875    impl<
876            T: alloy_contract::private::Transport + ::core::clone::Clone,
877            P: alloy_contract::private::Provider<T, N>,
878            N: alloy_contract::private::Network,
879        > EdOnBN254Instance<T, P, N>
880    {
881        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
882
883        See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
884        #[inline]
885        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
886            Self {
887                address,
888                provider,
889                _network_transport: ::core::marker::PhantomData,
890            }
891        }
892        /// Returns a reference to the address.
893        #[inline]
894        pub const fn address(&self) -> &alloy_sol_types::private::Address {
895            &self.address
896        }
897        /// Sets the address.
898        #[inline]
899        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
900            self.address = address;
901        }
902        /// Sets the address and returns `self`.
903        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
904            self.set_address(address);
905            self
906        }
907        /// Returns a reference to the provider.
908        #[inline]
909        pub const fn provider(&self) -> &P {
910            &self.provider
911        }
912    }
913    impl<T, P: ::core::clone::Clone, N> EdOnBN254Instance<T, &P, N> {
914        /// Clones the provider and returns a new instance with the cloned provider.
915        #[inline]
916        pub fn with_cloned_provider(self) -> EdOnBN254Instance<T, P, N> {
917            EdOnBN254Instance {
918                address: self.address,
919                provider: ::core::clone::Clone::clone(&self.provider),
920                _network_transport: ::core::marker::PhantomData,
921            }
922        }
923    }
924    /// Function calls.
925    #[automatically_derived]
926    impl<
927            T: alloy_contract::private::Transport + ::core::clone::Clone,
928            P: alloy_contract::private::Provider<T, N>,
929            N: alloy_contract::private::Network,
930        > EdOnBN254Instance<T, P, N>
931    {
932        /// Creates a new call builder using this contract instance's provider and address.
933        ///
934        /// Note that the call can be any function call, not just those defined in this
935        /// contract. Prefer using the other methods for building type-safe contract calls.
936        pub fn call_builder<C: alloy_sol_types::SolCall>(
937            &self,
938            call: &C,
939        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
940            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
941        }
942    }
943    /// Event filters.
944    #[automatically_derived]
945    impl<
946            T: alloy_contract::private::Transport + ::core::clone::Clone,
947            P: alloy_contract::private::Provider<T, N>,
948            N: alloy_contract::private::Network,
949        > EdOnBN254Instance<T, P, N>
950    {
951        /// Creates a new event filter using this contract instance's provider and address.
952        ///
953        /// Note that the type can be any event, not just those defined in this contract.
954        /// Prefer using the other methods for building type-safe event filters.
955        pub fn event_filter<E: alloy_sol_types::SolEvent>(
956            &self,
957        ) -> alloy_contract::Event<T, &P, E, N> {
958            alloy_contract::Event::new_sol(&self.provider, &self.address)
959        }
960    }
961}
962///Module containing a contract's types and functions.
963/**
964
965```solidity
966library StakeTable {
967    type ValidatorStatus is uint8;
968}
969```*/
970#[allow(
971    non_camel_case_types,
972    non_snake_case,
973    clippy::pub_underscore_fields,
974    clippy::style,
975    clippy::empty_structs_with_brackets
976)]
977pub mod StakeTable {
978    use alloy::sol_types as alloy_sol_types;
979
980    use super::*;
981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
983    #[derive(Clone)]
984    pub struct ValidatorStatus(u8);
985    const _: () = {
986        use alloy::sol_types as alloy_sol_types;
987        #[automatically_derived]
988        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
989            #[inline]
990            fn stv_to_tokens(
991                &self,
992            ) -> <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'_>
993            {
994                alloy_sol_types::private::SolTypeValue::<
995                    alloy::sol_types::sol_data::Uint<8>,
996                >::stv_to_tokens(self)
997            }
998            #[inline]
999            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1000                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(self).0
1001            }
1002            #[inline]
1003            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1004                <alloy::sol_types::sol_data::Uint<
1005                    8,
1006                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1007            }
1008            #[inline]
1009            fn stv_abi_packed_encoded_size(&self) -> usize {
1010                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::abi_encoded_size(
1011                    self,
1012                )
1013            }
1014        }
1015        #[automatically_derived]
1016        impl ValidatorStatus {
1017            /// The Solidity type name.
1018            pub const NAME: &'static str = stringify!(@ name);
1019            /// Convert from the underlying value type.
1020            #[inline]
1021            pub const fn from(value: u8) -> Self {
1022                Self(value)
1023            }
1024            /// Return the underlying value.
1025            #[inline]
1026            pub const fn into(self) -> u8 {
1027                self.0
1028            }
1029            /// Return the single encoding of this value, delegating to the
1030            /// underlying type.
1031            #[inline]
1032            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1033                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1034            }
1035            /// Return the packed encoding of this value, delegating to the
1036            /// underlying type.
1037            #[inline]
1038            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1039                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1040            }
1041        }
1042        #[automatically_derived]
1043        impl alloy_sol_types::SolType for ValidatorStatus {
1044            type RustType = u8;
1045            type Token<'a> =
1046                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'a>;
1047            const SOL_NAME: &'static str = Self::NAME;
1048            const ENCODED_SIZE: Option<usize> =
1049                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::ENCODED_SIZE;
1050            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1051                8,
1052            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1053            #[inline]
1054            fn valid_token(token: &Self::Token<'_>) -> bool {
1055                Self::type_check(token).is_ok()
1056            }
1057            #[inline]
1058            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1059                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::type_check(token)
1060            }
1061            #[inline]
1062            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1063                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::detokenize(token)
1064            }
1065        }
1066        #[automatically_derived]
1067        impl alloy_sol_types::EventTopic for ValidatorStatus {
1068            #[inline]
1069            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1070                <alloy::sol_types::sol_data::Uint<
1071                    8,
1072                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1073            }
1074            #[inline]
1075            fn encode_topic_preimage(
1076                rust: &Self::RustType,
1077                out: &mut alloy_sol_types::private::Vec<u8>,
1078            ) {
1079                <alloy::sol_types::sol_data::Uint<
1080                    8,
1081                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1082            }
1083            #[inline]
1084            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1085                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::EventTopic>::encode_topic(
1086                    rust,
1087                )
1088            }
1089        }
1090    };
1091    use alloy::contract as alloy_contract;
1092    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1093
1094    See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1095    #[inline]
1096    pub const fn new<
1097        T: alloy_contract::private::Transport + ::core::clone::Clone,
1098        P: alloy_contract::private::Provider<T, N>,
1099        N: alloy_contract::private::Network,
1100    >(
1101        address: alloy_sol_types::private::Address,
1102        provider: P,
1103    ) -> StakeTableInstance<T, P, N> {
1104        StakeTableInstance::<T, P, N>::new(address, provider)
1105    }
1106    /**A [`StakeTable`](self) instance.
1107
1108    Contains type-safe methods for interacting with an on-chain instance of the
1109    [`StakeTable`](self) contract located at a given `address`, using a given
1110    provider `P`.
1111
1112    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1113    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1114    be used to deploy a new instance of the contract.
1115
1116    See the [module-level documentation](self) for all the available methods.*/
1117    #[derive(Clone)]
1118    pub struct StakeTableInstance<T, P, N = alloy_contract::private::Ethereum> {
1119        address: alloy_sol_types::private::Address,
1120        provider: P,
1121        _network_transport: ::core::marker::PhantomData<(N, T)>,
1122    }
1123    #[automatically_derived]
1124    impl<T, P, N> ::core::fmt::Debug for StakeTableInstance<T, P, N> {
1125        #[inline]
1126        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1127            f.debug_tuple("StakeTableInstance")
1128                .field(&self.address)
1129                .finish()
1130        }
1131    }
1132    /// Instantiation and getters/setters.
1133    #[automatically_derived]
1134    impl<
1135            T: alloy_contract::private::Transport + ::core::clone::Clone,
1136            P: alloy_contract::private::Provider<T, N>,
1137            N: alloy_contract::private::Network,
1138        > StakeTableInstance<T, P, N>
1139    {
1140        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1141
1142        See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1143        #[inline]
1144        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1145            Self {
1146                address,
1147                provider,
1148                _network_transport: ::core::marker::PhantomData,
1149            }
1150        }
1151        /// Returns a reference to the address.
1152        #[inline]
1153        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1154            &self.address
1155        }
1156        /// Sets the address.
1157        #[inline]
1158        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1159            self.address = address;
1160        }
1161        /// Sets the address and returns `self`.
1162        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1163            self.set_address(address);
1164            self
1165        }
1166        /// Returns a reference to the provider.
1167        #[inline]
1168        pub const fn provider(&self) -> &P {
1169            &self.provider
1170        }
1171    }
1172    impl<T, P: ::core::clone::Clone, N> StakeTableInstance<T, &P, N> {
1173        /// Clones the provider and returns a new instance with the cloned provider.
1174        #[inline]
1175        pub fn with_cloned_provider(self) -> StakeTableInstance<T, P, N> {
1176            StakeTableInstance {
1177                address: self.address,
1178                provider: ::core::clone::Clone::clone(&self.provider),
1179                _network_transport: ::core::marker::PhantomData,
1180            }
1181        }
1182    }
1183    /// Function calls.
1184    #[automatically_derived]
1185    impl<
1186            T: alloy_contract::private::Transport + ::core::clone::Clone,
1187            P: alloy_contract::private::Provider<T, N>,
1188            N: alloy_contract::private::Network,
1189        > StakeTableInstance<T, P, N>
1190    {
1191        /// Creates a new call builder using this contract instance's provider and address.
1192        ///
1193        /// Note that the call can be any function call, not just those defined in this
1194        /// contract. Prefer using the other methods for building type-safe contract calls.
1195        pub fn call_builder<C: alloy_sol_types::SolCall>(
1196            &self,
1197            call: &C,
1198        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1199            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1200        }
1201    }
1202    /// Event filters.
1203    #[automatically_derived]
1204    impl<
1205            T: alloy_contract::private::Transport + ::core::clone::Clone,
1206            P: alloy_contract::private::Provider<T, N>,
1207            N: alloy_contract::private::Network,
1208        > StakeTableInstance<T, P, N>
1209    {
1210        /// Creates a new event filter using this contract instance's provider and address.
1211        ///
1212        /// Note that the type can be any event, not just those defined in this contract.
1213        /// Prefer using the other methods for building type-safe event filters.
1214        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1215            &self,
1216        ) -> alloy_contract::Event<T, &P, E, N> {
1217            alloy_contract::Event::new_sol(&self.provider, &self.address)
1218        }
1219    }
1220}
1221/**
1222
1223Generated by the following Solidity interface...
1224```solidity
1225library BN254 {
1226    type BaseField is uint256;
1227    struct G1Point {
1228        BaseField x;
1229        BaseField y;
1230    }
1231    struct G2Point {
1232        BaseField x0;
1233        BaseField x1;
1234        BaseField y0;
1235        BaseField y1;
1236    }
1237}
1238
1239library EdOnBN254 {
1240    struct EdOnBN254Point {
1241        uint256 x;
1242        uint256 y;
1243    }
1244}
1245
1246library StakeTable {
1247    type ValidatorStatus is uint8;
1248}
1249
1250interface StakeTableV2 {
1251    error AccessControlBadConfirmation();
1252    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1253    error AddressEmptyCode(address target);
1254    error BLSSigVerificationFailed();
1255    error BlsKeyAlreadyUsed();
1256    error DeprecatedFunction();
1257    error ERC1967InvalidImplementation(address implementation);
1258    error ERC1967NonPayable();
1259    error EnforcedPause();
1260    error ExitEscrowPeriodInvalid();
1261    error ExpectedPause();
1262    error FailedInnerCall();
1263    error InsufficientAllowance(uint256, uint256);
1264    error InsufficientBalance(uint256);
1265    error InvalidCommission();
1266    error InvalidInitialization();
1267    error InvalidSchnorrVK();
1268    error NotInitializing();
1269    error NothingToWithdraw();
1270    error OwnableInvalidOwner(address owner);
1271    error OwnableUnauthorizedAccount(address account);
1272    error PrematureWithdrawal();
1273    error UUPSUnauthorizedCallContext();
1274    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1275    error UndelegationAlreadyExists();
1276    error ValidatorAlreadyExited();
1277    error ValidatorAlreadyRegistered();
1278    error ValidatorInactive();
1279    error ValidatorNotExited();
1280    error ZeroAddress();
1281    error ZeroAmount();
1282
1283    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1284    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1285    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1286    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1287    event Initialized(uint64 version);
1288    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1289    event Paused(address account);
1290    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1291    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1292    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1293    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1294    event Unpaused(address account);
1295    event Upgrade(address implementation);
1296    event Upgraded(address indexed implementation);
1297    event ValidatorExit(address indexed validator);
1298    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1299    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
1300    event Withdrawal(address indexed account, uint256 amount);
1301
1302    constructor();
1303
1304    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1305    function PAUSER_ROLE() external view returns (bytes32);
1306    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1307    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1308    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1309    function claimValidatorExit(address validator) external;
1310    function claimWithdrawal(address validator) external;
1311    function delegate(address validator, uint256 amount) external;
1312    function delegations(address validator, address delegator) external view returns (uint256 amount);
1313    function deregisterValidator() external;
1314    function exitEscrowPeriod() external view returns (uint256);
1315    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1316    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1317    function grantRole(bytes32 role, address account) external;
1318    function hasRole(bytes32 role, address account) external view returns (bool);
1319    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1320    function initializeV2(address pauser, address admin) external;
1321    function initializedAtBlock() external view returns (uint256);
1322    function lightClient() external view returns (address);
1323    function owner() external view returns (address);
1324    function pause() external;
1325    function paused() external view returns (bool);
1326    function proxiableUUID() external view returns (bytes32);
1327    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1328    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
1329    function renounceOwnership() external;
1330    function renounceRole(bytes32 role, address callerConfirmation) external;
1331    function revokeRole(bytes32 role, address account) external;
1332    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1333    function token() external view returns (address);
1334    function transferOwnership(address newOwner) external;
1335    function undelegate(address validator, uint256 amount) external;
1336    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1337    function unpause() external;
1338    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1339    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1340    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1341    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1342    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1343    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1344}
1345```
1346
1347...which was generated by the following JSON ABI:
1348```json
1349[
1350  {
1351    "type": "constructor",
1352    "inputs": [],
1353    "stateMutability": "nonpayable"
1354  },
1355  {
1356    "type": "function",
1357    "name": "DEFAULT_ADMIN_ROLE",
1358    "inputs": [],
1359    "outputs": [
1360      {
1361        "name": "",
1362        "type": "bytes32",
1363        "internalType": "bytes32"
1364      }
1365    ],
1366    "stateMutability": "view"
1367  },
1368  {
1369    "type": "function",
1370    "name": "PAUSER_ROLE",
1371    "inputs": [],
1372    "outputs": [
1373      {
1374        "name": "",
1375        "type": "bytes32",
1376        "internalType": "bytes32"
1377      }
1378    ],
1379    "stateMutability": "view"
1380  },
1381  {
1382    "type": "function",
1383    "name": "UPGRADE_INTERFACE_VERSION",
1384    "inputs": [],
1385    "outputs": [
1386      {
1387        "name": "",
1388        "type": "string",
1389        "internalType": "string"
1390      }
1391    ],
1392    "stateMutability": "view"
1393  },
1394  {
1395    "type": "function",
1396    "name": "_hashBlsKey",
1397    "inputs": [
1398      {
1399        "name": "blsVK",
1400        "type": "tuple",
1401        "internalType": "struct BN254.G2Point",
1402        "components": [
1403          {
1404            "name": "x0",
1405            "type": "uint256",
1406            "internalType": "BN254.BaseField"
1407          },
1408          {
1409            "name": "x1",
1410            "type": "uint256",
1411            "internalType": "BN254.BaseField"
1412          },
1413          {
1414            "name": "y0",
1415            "type": "uint256",
1416            "internalType": "BN254.BaseField"
1417          },
1418          {
1419            "name": "y1",
1420            "type": "uint256",
1421            "internalType": "BN254.BaseField"
1422          }
1423        ]
1424      }
1425    ],
1426    "outputs": [
1427      {
1428        "name": "",
1429        "type": "bytes32",
1430        "internalType": "bytes32"
1431      }
1432    ],
1433    "stateMutability": "pure"
1434  },
1435  {
1436    "type": "function",
1437    "name": "blsKeys",
1438    "inputs": [
1439      {
1440        "name": "blsKeyHash",
1441        "type": "bytes32",
1442        "internalType": "bytes32"
1443      }
1444    ],
1445    "outputs": [
1446      {
1447        "name": "used",
1448        "type": "bool",
1449        "internalType": "bool"
1450      }
1451    ],
1452    "stateMutability": "view"
1453  },
1454  {
1455    "type": "function",
1456    "name": "claimValidatorExit",
1457    "inputs": [
1458      {
1459        "name": "validator",
1460        "type": "address",
1461        "internalType": "address"
1462      }
1463    ],
1464    "outputs": [],
1465    "stateMutability": "nonpayable"
1466  },
1467  {
1468    "type": "function",
1469    "name": "claimWithdrawal",
1470    "inputs": [
1471      {
1472        "name": "validator",
1473        "type": "address",
1474        "internalType": "address"
1475      }
1476    ],
1477    "outputs": [],
1478    "stateMutability": "nonpayable"
1479  },
1480  {
1481    "type": "function",
1482    "name": "delegate",
1483    "inputs": [
1484      {
1485        "name": "validator",
1486        "type": "address",
1487        "internalType": "address"
1488      },
1489      {
1490        "name": "amount",
1491        "type": "uint256",
1492        "internalType": "uint256"
1493      }
1494    ],
1495    "outputs": [],
1496    "stateMutability": "nonpayable"
1497  },
1498  {
1499    "type": "function",
1500    "name": "delegations",
1501    "inputs": [
1502      {
1503        "name": "validator",
1504        "type": "address",
1505        "internalType": "address"
1506      },
1507      {
1508        "name": "delegator",
1509        "type": "address",
1510        "internalType": "address"
1511      }
1512    ],
1513    "outputs": [
1514      {
1515        "name": "amount",
1516        "type": "uint256",
1517        "internalType": "uint256"
1518      }
1519    ],
1520    "stateMutability": "view"
1521  },
1522  {
1523    "type": "function",
1524    "name": "deregisterValidator",
1525    "inputs": [],
1526    "outputs": [],
1527    "stateMutability": "nonpayable"
1528  },
1529  {
1530    "type": "function",
1531    "name": "exitEscrowPeriod",
1532    "inputs": [],
1533    "outputs": [
1534      {
1535        "name": "",
1536        "type": "uint256",
1537        "internalType": "uint256"
1538      }
1539    ],
1540    "stateMutability": "view"
1541  },
1542  {
1543    "type": "function",
1544    "name": "getRoleAdmin",
1545    "inputs": [
1546      {
1547        "name": "role",
1548        "type": "bytes32",
1549        "internalType": "bytes32"
1550      }
1551    ],
1552    "outputs": [
1553      {
1554        "name": "",
1555        "type": "bytes32",
1556        "internalType": "bytes32"
1557      }
1558    ],
1559    "stateMutability": "view"
1560  },
1561  {
1562    "type": "function",
1563    "name": "getVersion",
1564    "inputs": [],
1565    "outputs": [
1566      {
1567        "name": "majorVersion",
1568        "type": "uint8",
1569        "internalType": "uint8"
1570      },
1571      {
1572        "name": "minorVersion",
1573        "type": "uint8",
1574        "internalType": "uint8"
1575      },
1576      {
1577        "name": "patchVersion",
1578        "type": "uint8",
1579        "internalType": "uint8"
1580      }
1581    ],
1582    "stateMutability": "pure"
1583  },
1584  {
1585    "type": "function",
1586    "name": "grantRole",
1587    "inputs": [
1588      {
1589        "name": "role",
1590        "type": "bytes32",
1591        "internalType": "bytes32"
1592      },
1593      {
1594        "name": "account",
1595        "type": "address",
1596        "internalType": "address"
1597      }
1598    ],
1599    "outputs": [],
1600    "stateMutability": "nonpayable"
1601  },
1602  {
1603    "type": "function",
1604    "name": "hasRole",
1605    "inputs": [
1606      {
1607        "name": "role",
1608        "type": "bytes32",
1609        "internalType": "bytes32"
1610      },
1611      {
1612        "name": "account",
1613        "type": "address",
1614        "internalType": "address"
1615      }
1616    ],
1617    "outputs": [
1618      {
1619        "name": "",
1620        "type": "bool",
1621        "internalType": "bool"
1622      }
1623    ],
1624    "stateMutability": "view"
1625  },
1626  {
1627    "type": "function",
1628    "name": "initialize",
1629    "inputs": [
1630      {
1631        "name": "_tokenAddress",
1632        "type": "address",
1633        "internalType": "address"
1634      },
1635      {
1636        "name": "_lightClientAddress",
1637        "type": "address",
1638        "internalType": "address"
1639      },
1640      {
1641        "name": "_exitEscrowPeriod",
1642        "type": "uint256",
1643        "internalType": "uint256"
1644      },
1645      {
1646        "name": "_timelock",
1647        "type": "address",
1648        "internalType": "address"
1649      }
1650    ],
1651    "outputs": [],
1652    "stateMutability": "nonpayable"
1653  },
1654  {
1655    "type": "function",
1656    "name": "initializeV2",
1657    "inputs": [
1658      {
1659        "name": "pauser",
1660        "type": "address",
1661        "internalType": "address"
1662      },
1663      {
1664        "name": "admin",
1665        "type": "address",
1666        "internalType": "address"
1667      }
1668    ],
1669    "outputs": [],
1670    "stateMutability": "nonpayable"
1671  },
1672  {
1673    "type": "function",
1674    "name": "initializedAtBlock",
1675    "inputs": [],
1676    "outputs": [
1677      {
1678        "name": "",
1679        "type": "uint256",
1680        "internalType": "uint256"
1681      }
1682    ],
1683    "stateMutability": "view"
1684  },
1685  {
1686    "type": "function",
1687    "name": "lightClient",
1688    "inputs": [],
1689    "outputs": [
1690      {
1691        "name": "",
1692        "type": "address",
1693        "internalType": "contract LightClientV2"
1694      }
1695    ],
1696    "stateMutability": "view"
1697  },
1698  {
1699    "type": "function",
1700    "name": "owner",
1701    "inputs": [],
1702    "outputs": [
1703      {
1704        "name": "",
1705        "type": "address",
1706        "internalType": "address"
1707      }
1708    ],
1709    "stateMutability": "view"
1710  },
1711  {
1712    "type": "function",
1713    "name": "pause",
1714    "inputs": [],
1715    "outputs": [],
1716    "stateMutability": "nonpayable"
1717  },
1718  {
1719    "type": "function",
1720    "name": "paused",
1721    "inputs": [],
1722    "outputs": [
1723      {
1724        "name": "",
1725        "type": "bool",
1726        "internalType": "bool"
1727      }
1728    ],
1729    "stateMutability": "view"
1730  },
1731  {
1732    "type": "function",
1733    "name": "proxiableUUID",
1734    "inputs": [],
1735    "outputs": [
1736      {
1737        "name": "",
1738        "type": "bytes32",
1739        "internalType": "bytes32"
1740      }
1741    ],
1742    "stateMutability": "view"
1743  },
1744  {
1745    "type": "function",
1746    "name": "registerValidator",
1747    "inputs": [
1748      {
1749        "name": "",
1750        "type": "tuple",
1751        "internalType": "struct BN254.G2Point",
1752        "components": [
1753          {
1754            "name": "x0",
1755            "type": "uint256",
1756            "internalType": "BN254.BaseField"
1757          },
1758          {
1759            "name": "x1",
1760            "type": "uint256",
1761            "internalType": "BN254.BaseField"
1762          },
1763          {
1764            "name": "y0",
1765            "type": "uint256",
1766            "internalType": "BN254.BaseField"
1767          },
1768          {
1769            "name": "y1",
1770            "type": "uint256",
1771            "internalType": "BN254.BaseField"
1772          }
1773        ]
1774      },
1775      {
1776        "name": "",
1777        "type": "tuple",
1778        "internalType": "struct EdOnBN254.EdOnBN254Point",
1779        "components": [
1780          {
1781            "name": "x",
1782            "type": "uint256",
1783            "internalType": "uint256"
1784          },
1785          {
1786            "name": "y",
1787            "type": "uint256",
1788            "internalType": "uint256"
1789          }
1790        ]
1791      },
1792      {
1793        "name": "",
1794        "type": "tuple",
1795        "internalType": "struct BN254.G1Point",
1796        "components": [
1797          {
1798            "name": "x",
1799            "type": "uint256",
1800            "internalType": "BN254.BaseField"
1801          },
1802          {
1803            "name": "y",
1804            "type": "uint256",
1805            "internalType": "BN254.BaseField"
1806          }
1807        ]
1808      },
1809      {
1810        "name": "",
1811        "type": "uint16",
1812        "internalType": "uint16"
1813      }
1814    ],
1815    "outputs": [],
1816    "stateMutability": "pure"
1817  },
1818  {
1819    "type": "function",
1820    "name": "registerValidatorV2",
1821    "inputs": [
1822      {
1823        "name": "blsVK",
1824        "type": "tuple",
1825        "internalType": "struct BN254.G2Point",
1826        "components": [
1827          {
1828            "name": "x0",
1829            "type": "uint256",
1830            "internalType": "BN254.BaseField"
1831          },
1832          {
1833            "name": "x1",
1834            "type": "uint256",
1835            "internalType": "BN254.BaseField"
1836          },
1837          {
1838            "name": "y0",
1839            "type": "uint256",
1840            "internalType": "BN254.BaseField"
1841          },
1842          {
1843            "name": "y1",
1844            "type": "uint256",
1845            "internalType": "BN254.BaseField"
1846          }
1847        ]
1848      },
1849      {
1850        "name": "schnorrVK",
1851        "type": "tuple",
1852        "internalType": "struct EdOnBN254.EdOnBN254Point",
1853        "components": [
1854          {
1855            "name": "x",
1856            "type": "uint256",
1857            "internalType": "uint256"
1858          },
1859          {
1860            "name": "y",
1861            "type": "uint256",
1862            "internalType": "uint256"
1863          }
1864        ]
1865      },
1866      {
1867        "name": "blsSig",
1868        "type": "tuple",
1869        "internalType": "struct BN254.G1Point",
1870        "components": [
1871          {
1872            "name": "x",
1873            "type": "uint256",
1874            "internalType": "BN254.BaseField"
1875          },
1876          {
1877            "name": "y",
1878            "type": "uint256",
1879            "internalType": "BN254.BaseField"
1880          }
1881        ]
1882      },
1883      {
1884        "name": "schnorrSig",
1885        "type": "bytes",
1886        "internalType": "bytes"
1887      },
1888      {
1889        "name": "commission",
1890        "type": "uint16",
1891        "internalType": "uint16"
1892      }
1893    ],
1894    "outputs": [],
1895    "stateMutability": "nonpayable"
1896  },
1897  {
1898    "type": "function",
1899    "name": "renounceOwnership",
1900    "inputs": [],
1901    "outputs": [],
1902    "stateMutability": "nonpayable"
1903  },
1904  {
1905    "type": "function",
1906    "name": "renounceRole",
1907    "inputs": [
1908      {
1909        "name": "role",
1910        "type": "bytes32",
1911        "internalType": "bytes32"
1912      },
1913      {
1914        "name": "callerConfirmation",
1915        "type": "address",
1916        "internalType": "address"
1917      }
1918    ],
1919    "outputs": [],
1920    "stateMutability": "nonpayable"
1921  },
1922  {
1923    "type": "function",
1924    "name": "revokeRole",
1925    "inputs": [
1926      {
1927        "name": "role",
1928        "type": "bytes32",
1929        "internalType": "bytes32"
1930      },
1931      {
1932        "name": "account",
1933        "type": "address",
1934        "internalType": "address"
1935      }
1936    ],
1937    "outputs": [],
1938    "stateMutability": "nonpayable"
1939  },
1940  {
1941    "type": "function",
1942    "name": "supportsInterface",
1943    "inputs": [
1944      {
1945        "name": "interfaceId",
1946        "type": "bytes4",
1947        "internalType": "bytes4"
1948      }
1949    ],
1950    "outputs": [
1951      {
1952        "name": "",
1953        "type": "bool",
1954        "internalType": "bool"
1955      }
1956    ],
1957    "stateMutability": "view"
1958  },
1959  {
1960    "type": "function",
1961    "name": "token",
1962    "inputs": [],
1963    "outputs": [
1964      {
1965        "name": "",
1966        "type": "address",
1967        "internalType": "contract ERC20"
1968      }
1969    ],
1970    "stateMutability": "view"
1971  },
1972  {
1973    "type": "function",
1974    "name": "transferOwnership",
1975    "inputs": [
1976      {
1977        "name": "newOwner",
1978        "type": "address",
1979        "internalType": "address"
1980      }
1981    ],
1982    "outputs": [],
1983    "stateMutability": "nonpayable"
1984  },
1985  {
1986    "type": "function",
1987    "name": "undelegate",
1988    "inputs": [
1989      {
1990        "name": "validator",
1991        "type": "address",
1992        "internalType": "address"
1993      },
1994      {
1995        "name": "amount",
1996        "type": "uint256",
1997        "internalType": "uint256"
1998      }
1999    ],
2000    "outputs": [],
2001    "stateMutability": "nonpayable"
2002  },
2003  {
2004    "type": "function",
2005    "name": "undelegations",
2006    "inputs": [
2007      {
2008        "name": "validator",
2009        "type": "address",
2010        "internalType": "address"
2011      },
2012      {
2013        "name": "delegator",
2014        "type": "address",
2015        "internalType": "address"
2016      }
2017    ],
2018    "outputs": [
2019      {
2020        "name": "amount",
2021        "type": "uint256",
2022        "internalType": "uint256"
2023      },
2024      {
2025        "name": "unlocksAt",
2026        "type": "uint256",
2027        "internalType": "uint256"
2028      }
2029    ],
2030    "stateMutability": "view"
2031  },
2032  {
2033    "type": "function",
2034    "name": "unpause",
2035    "inputs": [],
2036    "outputs": [],
2037    "stateMutability": "nonpayable"
2038  },
2039  {
2040    "type": "function",
2041    "name": "updateConsensusKeys",
2042    "inputs": [
2043      {
2044        "name": "",
2045        "type": "tuple",
2046        "internalType": "struct BN254.G2Point",
2047        "components": [
2048          {
2049            "name": "x0",
2050            "type": "uint256",
2051            "internalType": "BN254.BaseField"
2052          },
2053          {
2054            "name": "x1",
2055            "type": "uint256",
2056            "internalType": "BN254.BaseField"
2057          },
2058          {
2059            "name": "y0",
2060            "type": "uint256",
2061            "internalType": "BN254.BaseField"
2062          },
2063          {
2064            "name": "y1",
2065            "type": "uint256",
2066            "internalType": "BN254.BaseField"
2067          }
2068        ]
2069      },
2070      {
2071        "name": "",
2072        "type": "tuple",
2073        "internalType": "struct EdOnBN254.EdOnBN254Point",
2074        "components": [
2075          {
2076            "name": "x",
2077            "type": "uint256",
2078            "internalType": "uint256"
2079          },
2080          {
2081            "name": "y",
2082            "type": "uint256",
2083            "internalType": "uint256"
2084          }
2085        ]
2086      },
2087      {
2088        "name": "",
2089        "type": "tuple",
2090        "internalType": "struct BN254.G1Point",
2091        "components": [
2092          {
2093            "name": "x",
2094            "type": "uint256",
2095            "internalType": "BN254.BaseField"
2096          },
2097          {
2098            "name": "y",
2099            "type": "uint256",
2100            "internalType": "BN254.BaseField"
2101          }
2102        ]
2103      }
2104    ],
2105    "outputs": [],
2106    "stateMutability": "pure"
2107  },
2108  {
2109    "type": "function",
2110    "name": "updateConsensusKeysV2",
2111    "inputs": [
2112      {
2113        "name": "blsVK",
2114        "type": "tuple",
2115        "internalType": "struct BN254.G2Point",
2116        "components": [
2117          {
2118            "name": "x0",
2119            "type": "uint256",
2120            "internalType": "BN254.BaseField"
2121          },
2122          {
2123            "name": "x1",
2124            "type": "uint256",
2125            "internalType": "BN254.BaseField"
2126          },
2127          {
2128            "name": "y0",
2129            "type": "uint256",
2130            "internalType": "BN254.BaseField"
2131          },
2132          {
2133            "name": "y1",
2134            "type": "uint256",
2135            "internalType": "BN254.BaseField"
2136          }
2137        ]
2138      },
2139      {
2140        "name": "schnorrVK",
2141        "type": "tuple",
2142        "internalType": "struct EdOnBN254.EdOnBN254Point",
2143        "components": [
2144          {
2145            "name": "x",
2146            "type": "uint256",
2147            "internalType": "uint256"
2148          },
2149          {
2150            "name": "y",
2151            "type": "uint256",
2152            "internalType": "uint256"
2153          }
2154        ]
2155      },
2156      {
2157        "name": "blsSig",
2158        "type": "tuple",
2159        "internalType": "struct BN254.G1Point",
2160        "components": [
2161          {
2162            "name": "x",
2163            "type": "uint256",
2164            "internalType": "BN254.BaseField"
2165          },
2166          {
2167            "name": "y",
2168            "type": "uint256",
2169            "internalType": "BN254.BaseField"
2170          }
2171        ]
2172      },
2173      {
2174        "name": "schnorrSig",
2175        "type": "bytes",
2176        "internalType": "bytes"
2177      }
2178    ],
2179    "outputs": [],
2180    "stateMutability": "nonpayable"
2181  },
2182  {
2183    "type": "function",
2184    "name": "updateExitEscrowPeriod",
2185    "inputs": [
2186      {
2187        "name": "newExitEscrowPeriod",
2188        "type": "uint64",
2189        "internalType": "uint64"
2190      }
2191    ],
2192    "outputs": [],
2193    "stateMutability": "nonpayable"
2194  },
2195  {
2196    "type": "function",
2197    "name": "upgradeToAndCall",
2198    "inputs": [
2199      {
2200        "name": "newImplementation",
2201        "type": "address",
2202        "internalType": "address"
2203      },
2204      {
2205        "name": "data",
2206        "type": "bytes",
2207        "internalType": "bytes"
2208      }
2209    ],
2210    "outputs": [],
2211    "stateMutability": "payable"
2212  },
2213  {
2214    "type": "function",
2215    "name": "validatorExits",
2216    "inputs": [
2217      {
2218        "name": "validator",
2219        "type": "address",
2220        "internalType": "address"
2221      }
2222    ],
2223    "outputs": [
2224      {
2225        "name": "unlocksAt",
2226        "type": "uint256",
2227        "internalType": "uint256"
2228      }
2229    ],
2230    "stateMutability": "view"
2231  },
2232  {
2233    "type": "function",
2234    "name": "validators",
2235    "inputs": [
2236      {
2237        "name": "account",
2238        "type": "address",
2239        "internalType": "address"
2240      }
2241    ],
2242    "outputs": [
2243      {
2244        "name": "delegatedAmount",
2245        "type": "uint256",
2246        "internalType": "uint256"
2247      },
2248      {
2249        "name": "status",
2250        "type": "uint8",
2251        "internalType": "enum StakeTable.ValidatorStatus"
2252      }
2253    ],
2254    "stateMutability": "view"
2255  },
2256  {
2257    "type": "event",
2258    "name": "ConsensusKeysUpdated",
2259    "inputs": [
2260      {
2261        "name": "account",
2262        "type": "address",
2263        "indexed": true,
2264        "internalType": "address"
2265      },
2266      {
2267        "name": "blsVK",
2268        "type": "tuple",
2269        "indexed": false,
2270        "internalType": "struct BN254.G2Point",
2271        "components": [
2272          {
2273            "name": "x0",
2274            "type": "uint256",
2275            "internalType": "BN254.BaseField"
2276          },
2277          {
2278            "name": "x1",
2279            "type": "uint256",
2280            "internalType": "BN254.BaseField"
2281          },
2282          {
2283            "name": "y0",
2284            "type": "uint256",
2285            "internalType": "BN254.BaseField"
2286          },
2287          {
2288            "name": "y1",
2289            "type": "uint256",
2290            "internalType": "BN254.BaseField"
2291          }
2292        ]
2293      },
2294      {
2295        "name": "schnorrVK",
2296        "type": "tuple",
2297        "indexed": false,
2298        "internalType": "struct EdOnBN254.EdOnBN254Point",
2299        "components": [
2300          {
2301            "name": "x",
2302            "type": "uint256",
2303            "internalType": "uint256"
2304          },
2305          {
2306            "name": "y",
2307            "type": "uint256",
2308            "internalType": "uint256"
2309          }
2310        ]
2311      }
2312    ],
2313    "anonymous": false
2314  },
2315  {
2316    "type": "event",
2317    "name": "ConsensusKeysUpdatedV2",
2318    "inputs": [
2319      {
2320        "name": "account",
2321        "type": "address",
2322        "indexed": true,
2323        "internalType": "address"
2324      },
2325      {
2326        "name": "blsVK",
2327        "type": "tuple",
2328        "indexed": false,
2329        "internalType": "struct BN254.G2Point",
2330        "components": [
2331          {
2332            "name": "x0",
2333            "type": "uint256",
2334            "internalType": "BN254.BaseField"
2335          },
2336          {
2337            "name": "x1",
2338            "type": "uint256",
2339            "internalType": "BN254.BaseField"
2340          },
2341          {
2342            "name": "y0",
2343            "type": "uint256",
2344            "internalType": "BN254.BaseField"
2345          },
2346          {
2347            "name": "y1",
2348            "type": "uint256",
2349            "internalType": "BN254.BaseField"
2350          }
2351        ]
2352      },
2353      {
2354        "name": "schnorrVK",
2355        "type": "tuple",
2356        "indexed": false,
2357        "internalType": "struct EdOnBN254.EdOnBN254Point",
2358        "components": [
2359          {
2360            "name": "x",
2361            "type": "uint256",
2362            "internalType": "uint256"
2363          },
2364          {
2365            "name": "y",
2366            "type": "uint256",
2367            "internalType": "uint256"
2368          }
2369        ]
2370      },
2371      {
2372        "name": "blsSig",
2373        "type": "tuple",
2374        "indexed": false,
2375        "internalType": "struct BN254.G1Point",
2376        "components": [
2377          {
2378            "name": "x",
2379            "type": "uint256",
2380            "internalType": "BN254.BaseField"
2381          },
2382          {
2383            "name": "y",
2384            "type": "uint256",
2385            "internalType": "BN254.BaseField"
2386          }
2387        ]
2388      },
2389      {
2390        "name": "schnorrSig",
2391        "type": "bytes",
2392        "indexed": false,
2393        "internalType": "bytes"
2394      }
2395    ],
2396    "anonymous": false
2397  },
2398  {
2399    "type": "event",
2400    "name": "Delegated",
2401    "inputs": [
2402      {
2403        "name": "delegator",
2404        "type": "address",
2405        "indexed": true,
2406        "internalType": "address"
2407      },
2408      {
2409        "name": "validator",
2410        "type": "address",
2411        "indexed": true,
2412        "internalType": "address"
2413      },
2414      {
2415        "name": "amount",
2416        "type": "uint256",
2417        "indexed": false,
2418        "internalType": "uint256"
2419      }
2420    ],
2421    "anonymous": false
2422  },
2423  {
2424    "type": "event",
2425    "name": "ExitEscrowPeriodUpdated",
2426    "inputs": [
2427      {
2428        "name": "newExitEscrowPeriod",
2429        "type": "uint64",
2430        "indexed": false,
2431        "internalType": "uint64"
2432      }
2433    ],
2434    "anonymous": false
2435  },
2436  {
2437    "type": "event",
2438    "name": "Initialized",
2439    "inputs": [
2440      {
2441        "name": "version",
2442        "type": "uint64",
2443        "indexed": false,
2444        "internalType": "uint64"
2445      }
2446    ],
2447    "anonymous": false
2448  },
2449  {
2450    "type": "event",
2451    "name": "OwnershipTransferred",
2452    "inputs": [
2453      {
2454        "name": "previousOwner",
2455        "type": "address",
2456        "indexed": true,
2457        "internalType": "address"
2458      },
2459      {
2460        "name": "newOwner",
2461        "type": "address",
2462        "indexed": true,
2463        "internalType": "address"
2464      }
2465    ],
2466    "anonymous": false
2467  },
2468  {
2469    "type": "event",
2470    "name": "Paused",
2471    "inputs": [
2472      {
2473        "name": "account",
2474        "type": "address",
2475        "indexed": false,
2476        "internalType": "address"
2477      }
2478    ],
2479    "anonymous": false
2480  },
2481  {
2482    "type": "event",
2483    "name": "RoleAdminChanged",
2484    "inputs": [
2485      {
2486        "name": "role",
2487        "type": "bytes32",
2488        "indexed": true,
2489        "internalType": "bytes32"
2490      },
2491      {
2492        "name": "previousAdminRole",
2493        "type": "bytes32",
2494        "indexed": true,
2495        "internalType": "bytes32"
2496      },
2497      {
2498        "name": "newAdminRole",
2499        "type": "bytes32",
2500        "indexed": true,
2501        "internalType": "bytes32"
2502      }
2503    ],
2504    "anonymous": false
2505  },
2506  {
2507    "type": "event",
2508    "name": "RoleGranted",
2509    "inputs": [
2510      {
2511        "name": "role",
2512        "type": "bytes32",
2513        "indexed": true,
2514        "internalType": "bytes32"
2515      },
2516      {
2517        "name": "account",
2518        "type": "address",
2519        "indexed": true,
2520        "internalType": "address"
2521      },
2522      {
2523        "name": "sender",
2524        "type": "address",
2525        "indexed": true,
2526        "internalType": "address"
2527      }
2528    ],
2529    "anonymous": false
2530  },
2531  {
2532    "type": "event",
2533    "name": "RoleRevoked",
2534    "inputs": [
2535      {
2536        "name": "role",
2537        "type": "bytes32",
2538        "indexed": true,
2539        "internalType": "bytes32"
2540      },
2541      {
2542        "name": "account",
2543        "type": "address",
2544        "indexed": true,
2545        "internalType": "address"
2546      },
2547      {
2548        "name": "sender",
2549        "type": "address",
2550        "indexed": true,
2551        "internalType": "address"
2552      }
2553    ],
2554    "anonymous": false
2555  },
2556  {
2557    "type": "event",
2558    "name": "Undelegated",
2559    "inputs": [
2560      {
2561        "name": "delegator",
2562        "type": "address",
2563        "indexed": true,
2564        "internalType": "address"
2565      },
2566      {
2567        "name": "validator",
2568        "type": "address",
2569        "indexed": true,
2570        "internalType": "address"
2571      },
2572      {
2573        "name": "amount",
2574        "type": "uint256",
2575        "indexed": false,
2576        "internalType": "uint256"
2577      }
2578    ],
2579    "anonymous": false
2580  },
2581  {
2582    "type": "event",
2583    "name": "Unpaused",
2584    "inputs": [
2585      {
2586        "name": "account",
2587        "type": "address",
2588        "indexed": false,
2589        "internalType": "address"
2590      }
2591    ],
2592    "anonymous": false
2593  },
2594  {
2595    "type": "event",
2596    "name": "Upgrade",
2597    "inputs": [
2598      {
2599        "name": "implementation",
2600        "type": "address",
2601        "indexed": false,
2602        "internalType": "address"
2603      }
2604    ],
2605    "anonymous": false
2606  },
2607  {
2608    "type": "event",
2609    "name": "Upgraded",
2610    "inputs": [
2611      {
2612        "name": "implementation",
2613        "type": "address",
2614        "indexed": true,
2615        "internalType": "address"
2616      }
2617    ],
2618    "anonymous": false
2619  },
2620  {
2621    "type": "event",
2622    "name": "ValidatorExit",
2623    "inputs": [
2624      {
2625        "name": "validator",
2626        "type": "address",
2627        "indexed": true,
2628        "internalType": "address"
2629      }
2630    ],
2631    "anonymous": false
2632  },
2633  {
2634    "type": "event",
2635    "name": "ValidatorRegistered",
2636    "inputs": [
2637      {
2638        "name": "account",
2639        "type": "address",
2640        "indexed": true,
2641        "internalType": "address"
2642      },
2643      {
2644        "name": "blsVk",
2645        "type": "tuple",
2646        "indexed": false,
2647        "internalType": "struct BN254.G2Point",
2648        "components": [
2649          {
2650            "name": "x0",
2651            "type": "uint256",
2652            "internalType": "BN254.BaseField"
2653          },
2654          {
2655            "name": "x1",
2656            "type": "uint256",
2657            "internalType": "BN254.BaseField"
2658          },
2659          {
2660            "name": "y0",
2661            "type": "uint256",
2662            "internalType": "BN254.BaseField"
2663          },
2664          {
2665            "name": "y1",
2666            "type": "uint256",
2667            "internalType": "BN254.BaseField"
2668          }
2669        ]
2670      },
2671      {
2672        "name": "schnorrVk",
2673        "type": "tuple",
2674        "indexed": false,
2675        "internalType": "struct EdOnBN254.EdOnBN254Point",
2676        "components": [
2677          {
2678            "name": "x",
2679            "type": "uint256",
2680            "internalType": "uint256"
2681          },
2682          {
2683            "name": "y",
2684            "type": "uint256",
2685            "internalType": "uint256"
2686          }
2687        ]
2688      },
2689      {
2690        "name": "commission",
2691        "type": "uint16",
2692        "indexed": false,
2693        "internalType": "uint16"
2694      }
2695    ],
2696    "anonymous": false
2697  },
2698  {
2699    "type": "event",
2700    "name": "ValidatorRegisteredV2",
2701    "inputs": [
2702      {
2703        "name": "account",
2704        "type": "address",
2705        "indexed": true,
2706        "internalType": "address"
2707      },
2708      {
2709        "name": "blsVK",
2710        "type": "tuple",
2711        "indexed": false,
2712        "internalType": "struct BN254.G2Point",
2713        "components": [
2714          {
2715            "name": "x0",
2716            "type": "uint256",
2717            "internalType": "BN254.BaseField"
2718          },
2719          {
2720            "name": "x1",
2721            "type": "uint256",
2722            "internalType": "BN254.BaseField"
2723          },
2724          {
2725            "name": "y0",
2726            "type": "uint256",
2727            "internalType": "BN254.BaseField"
2728          },
2729          {
2730            "name": "y1",
2731            "type": "uint256",
2732            "internalType": "BN254.BaseField"
2733          }
2734        ]
2735      },
2736      {
2737        "name": "schnorrVK",
2738        "type": "tuple",
2739        "indexed": false,
2740        "internalType": "struct EdOnBN254.EdOnBN254Point",
2741        "components": [
2742          {
2743            "name": "x",
2744            "type": "uint256",
2745            "internalType": "uint256"
2746          },
2747          {
2748            "name": "y",
2749            "type": "uint256",
2750            "internalType": "uint256"
2751          }
2752        ]
2753      },
2754      {
2755        "name": "commission",
2756        "type": "uint16",
2757        "indexed": false,
2758        "internalType": "uint16"
2759      },
2760      {
2761        "name": "blsSig",
2762        "type": "tuple",
2763        "indexed": false,
2764        "internalType": "struct BN254.G1Point",
2765        "components": [
2766          {
2767            "name": "x",
2768            "type": "uint256",
2769            "internalType": "BN254.BaseField"
2770          },
2771          {
2772            "name": "y",
2773            "type": "uint256",
2774            "internalType": "BN254.BaseField"
2775          }
2776        ]
2777      },
2778      {
2779        "name": "schnorrSig",
2780        "type": "bytes",
2781        "indexed": false,
2782        "internalType": "bytes"
2783      }
2784    ],
2785    "anonymous": false
2786  },
2787  {
2788    "type": "event",
2789    "name": "Withdrawal",
2790    "inputs": [
2791      {
2792        "name": "account",
2793        "type": "address",
2794        "indexed": true,
2795        "internalType": "address"
2796      },
2797      {
2798        "name": "amount",
2799        "type": "uint256",
2800        "indexed": false,
2801        "internalType": "uint256"
2802      }
2803    ],
2804    "anonymous": false
2805  },
2806  {
2807    "type": "error",
2808    "name": "AccessControlBadConfirmation",
2809    "inputs": []
2810  },
2811  {
2812    "type": "error",
2813    "name": "AccessControlUnauthorizedAccount",
2814    "inputs": [
2815      {
2816        "name": "account",
2817        "type": "address",
2818        "internalType": "address"
2819      },
2820      {
2821        "name": "neededRole",
2822        "type": "bytes32",
2823        "internalType": "bytes32"
2824      }
2825    ]
2826  },
2827  {
2828    "type": "error",
2829    "name": "AddressEmptyCode",
2830    "inputs": [
2831      {
2832        "name": "target",
2833        "type": "address",
2834        "internalType": "address"
2835      }
2836    ]
2837  },
2838  {
2839    "type": "error",
2840    "name": "BLSSigVerificationFailed",
2841    "inputs": []
2842  },
2843  {
2844    "type": "error",
2845    "name": "BlsKeyAlreadyUsed",
2846    "inputs": []
2847  },
2848  {
2849    "type": "error",
2850    "name": "DeprecatedFunction",
2851    "inputs": []
2852  },
2853  {
2854    "type": "error",
2855    "name": "ERC1967InvalidImplementation",
2856    "inputs": [
2857      {
2858        "name": "implementation",
2859        "type": "address",
2860        "internalType": "address"
2861      }
2862    ]
2863  },
2864  {
2865    "type": "error",
2866    "name": "ERC1967NonPayable",
2867    "inputs": []
2868  },
2869  {
2870    "type": "error",
2871    "name": "EnforcedPause",
2872    "inputs": []
2873  },
2874  {
2875    "type": "error",
2876    "name": "ExitEscrowPeriodInvalid",
2877    "inputs": []
2878  },
2879  {
2880    "type": "error",
2881    "name": "ExpectedPause",
2882    "inputs": []
2883  },
2884  {
2885    "type": "error",
2886    "name": "FailedInnerCall",
2887    "inputs": []
2888  },
2889  {
2890    "type": "error",
2891    "name": "InsufficientAllowance",
2892    "inputs": [
2893      {
2894        "name": "",
2895        "type": "uint256",
2896        "internalType": "uint256"
2897      },
2898      {
2899        "name": "",
2900        "type": "uint256",
2901        "internalType": "uint256"
2902      }
2903    ]
2904  },
2905  {
2906    "type": "error",
2907    "name": "InsufficientBalance",
2908    "inputs": [
2909      {
2910        "name": "",
2911        "type": "uint256",
2912        "internalType": "uint256"
2913      }
2914    ]
2915  },
2916  {
2917    "type": "error",
2918    "name": "InvalidCommission",
2919    "inputs": []
2920  },
2921  {
2922    "type": "error",
2923    "name": "InvalidInitialization",
2924    "inputs": []
2925  },
2926  {
2927    "type": "error",
2928    "name": "InvalidSchnorrVK",
2929    "inputs": []
2930  },
2931  {
2932    "type": "error",
2933    "name": "NotInitializing",
2934    "inputs": []
2935  },
2936  {
2937    "type": "error",
2938    "name": "NothingToWithdraw",
2939    "inputs": []
2940  },
2941  {
2942    "type": "error",
2943    "name": "OwnableInvalidOwner",
2944    "inputs": [
2945      {
2946        "name": "owner",
2947        "type": "address",
2948        "internalType": "address"
2949      }
2950    ]
2951  },
2952  {
2953    "type": "error",
2954    "name": "OwnableUnauthorizedAccount",
2955    "inputs": [
2956      {
2957        "name": "account",
2958        "type": "address",
2959        "internalType": "address"
2960      }
2961    ]
2962  },
2963  {
2964    "type": "error",
2965    "name": "PrematureWithdrawal",
2966    "inputs": []
2967  },
2968  {
2969    "type": "error",
2970    "name": "UUPSUnauthorizedCallContext",
2971    "inputs": []
2972  },
2973  {
2974    "type": "error",
2975    "name": "UUPSUnsupportedProxiableUUID",
2976    "inputs": [
2977      {
2978        "name": "slot",
2979        "type": "bytes32",
2980        "internalType": "bytes32"
2981      }
2982    ]
2983  },
2984  {
2985    "type": "error",
2986    "name": "UndelegationAlreadyExists",
2987    "inputs": []
2988  },
2989  {
2990    "type": "error",
2991    "name": "ValidatorAlreadyExited",
2992    "inputs": []
2993  },
2994  {
2995    "type": "error",
2996    "name": "ValidatorAlreadyRegistered",
2997    "inputs": []
2998  },
2999  {
3000    "type": "error",
3001    "name": "ValidatorInactive",
3002    "inputs": []
3003  },
3004  {
3005    "type": "error",
3006    "name": "ValidatorNotExited",
3007    "inputs": []
3008  },
3009  {
3010    "type": "error",
3011    "name": "ZeroAddress",
3012    "inputs": []
3013  },
3014  {
3015    "type": "error",
3016    "name": "ZeroAmount",
3017    "inputs": []
3018  }
3019]
3020```*/
3021#[allow(
3022    non_camel_case_types,
3023    non_snake_case,
3024    clippy::pub_underscore_fields,
3025    clippy::style,
3026    clippy::empty_structs_with_brackets
3027)]
3028pub mod StakeTableV2 {
3029    use alloy::sol_types as alloy_sol_types;
3030
3031    use super::*;
3032    /// The creation / init bytecode of the contract.
3033    ///
3034    /// ```text
3035    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516135b86101095f395f8181611797015281816117c0015261193801526135b85ff3fe608060405260043610610233575f3560e01c80638456cb5911610129578063b3e6ebd5116100a8578063d547741f1161006d578063d547741f146106f4578063e63ab1e914610713578063f2fde38b14610733578063fa52c7d814610752578063fc0c546a14610795575f5ffd5b8063b3e6ebd514610627578063b5700e6814610655578063b5ecb34414610674578063be2030941461069f578063c64814dd146106be575f5ffd5b8063a217fddf116100ee578063a217fddf14610547578063a2d78dd51461055a578063a3066aab146105ac578063ac5c2ad0146105cb578063ad3cb1cc146105ea575f5ffd5b80638456cb59146104905780638da5cb5b146104a457806391d14854146104f45780639b30a5e6146105135780639e9a8f3114610532575f5ffd5b806336568abe116101b557806352d1902d1161017a57806352d1902d146104175780635544c2f11461042b5780635c975abb146104455780636a911ccf14610468578063715018a61461047c575f5ffd5b806336568abe1461039e5780633e9df9b5146103bd5780633f4ba83a146103d15780634d99dd16146103e55780634f1ef28614610404575f5ffd5b80631a20cd63116101fb5780631a20cd63146102f55780632140fecd14610314578063248a9ca3146103335780632f2ff15d14610360578063304240bf1461037f575f5ffd5b806301ffc9a714610237578063026e402b1461026b5780630840ba721461028c5780630d8e6e2c146102ab57806313b9057a146102d6575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612bd6565b6107b4565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061028a610285366004612c18565b6107ea565b005b348015610297575f5ffd5b5061028a6102a6366004612c40565b610800565b3480156102b6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610262565b3480156102e1575f5ffd5b5061028a6102f0366004612d4d565b6108ed565b348015610300575f5ffd5b5061028a61030f366004612db7565b610906565b34801561031f575f5ffd5b5061028a61032e366004612dd2565b610a1a565b34801561033e575f5ffd5b5061035261034d366004612deb565b610a2e565b604051908152602001610262565b34801561036b575f5ffd5b5061028a61037a366004612e02565b610a4e565b34801561038a575f5ffd5b5061028a610399366004612eac565b610a70565b3480156103a9575f5ffd5b5061028a6103b8366004612e02565b610bda565b3480156103c8575f5ffd5b506103525f5481565b3480156103dc575f5ffd5b5061028a610c12565b3480156103f0575f5ffd5b5061028a6103ff366004612c18565b610c31565b61028a610412366004612f2c565b610c43565b348015610422575f5ffd5b50610352610c5e565b348015610436575f5ffd5b5061028a6102f0366004612f76565b348015610450575f5ffd5b505f51602061356c5f395f51905f525460ff16610256565b348015610473575f5ffd5b5061028a610c79565b348015610487575f5ffd5b5061028a610c8b565b34801561049b575f5ffd5b5061028a610c9c565b3480156104af575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610262565b3480156104ff575f5ffd5b5061025661050e366004612e02565b610cbb565b34801561051e575f5ffd5b5061035261052d366004612fba565b610cf1565b34801561053d575f5ffd5b5061035260085481565b348015610552575f5ffd5b506103525f81565b348015610565575f5ffd5b50610597610574366004612c40565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610262565b3480156105b7575f5ffd5b5061028a6105c6366004612dd2565b610d4b565b3480156105d6575f5ffd5b5061028a6105e5366004612fd4565b610d5c565b3480156105f5575f5ffd5b5061061a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102629190613071565b348015610632575f5ffd5b50610256610641366004612deb565b60046020525f908152604090205460ff1681565b348015610660575f5ffd5b506001546104dc906001600160a01b031681565b34801561067f575f5ffd5b5061035261068e366004612dd2565b60056020525f908152604090205481565b3480156106aa575f5ffd5b5061028a6106b9366004613083565b610e32565b3480156106c9575f5ffd5b506103526106d8366004612c40565b600660209081525f928352604080842090915290825290205481565b3480156106ff575f5ffd5b5061028a61070e366004612e02565b610f49565b34801561071e575f5ffd5b506103525f51602061352c5f395f51905f5281565b34801561073e575f5ffd5b5061028a61074d366004612dd2565b610f65565b34801561075d575f5ffd5b5061078761076c366004612dd2565b60036020525f90815260409020805460019091015460ff1682565b6040516102629291906130d6565b3480156107a0575f5ffd5b506002546104dc906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b14806107e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6107f2610fa4565b6107fc8282610fd4565b5050565b5f51602061358c5f395f51905f52805460029190600160401b900460ff1680610836575080546001600160401b03808416911610155b156108545760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561087d611172565b6108875f8461117a565b5061089f5f51602061352c5f395f51905f528561117a565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b60405163c2d7f81360e01b815260040160405180910390fd5b61090e611222565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa158015610955573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109799190613106565b61098490600f613135565b9050621275006001600160401b0380831690841610806109b55750806001600160401b0316836001600160401b0316115b156109d35760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610a22610fa4565b610a2b8161127d565b50565b5f9081525f51602061354c5f395f51905f52602052604090206001015490565b610a5782610a2e565b610a608161139e565b610a6a838361117a565b50505050565b33610a7a816113a8565b610a83856113f5565b610a8c86611430565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610abe81868961146c565b6127108361ffff161115610ae55760405163dc81db8560e01b815260040160405180910390fd5b600160045f610af38a610cf1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610b3a57610b3a6130c2565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610b8057610b806130c2565b0217905550905050816001600160a01b03167ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a8888868989604051610bc9959493929190613157565b60405180910390a250505050505050565b6001600160a01b0381163314610c035760405163334bd91960e11b815260040160405180910390fd5b610c0d8282611501565b505050565b5f51602061352c5f395f51905f52610c298161139e565b610a2b61157a565b610c39610fa4565b6107fc82826115da565b610c4b61178c565b610c5482611830565b6107fc8282611871565b5f610c6761192d565b505f51602061350c5f395f51905f5290565b610c81610fa4565b610c89611976565b565b610c93611222565b610c895f611a04565b5f51602061352c5f395f51905f52610cb38161139e565b610a2b611a74565b5f9182525f51602061354c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001610d2e949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b610d53610fa4565b610a2b81611abc565b610d64610fa4565b33610d6e81611bcc565b610d77846113f5565b610d8085611430565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610db281858861146c565b600160045f610dc089610cf1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051610e2294939291906131c9565b60405180910390a2505050505050565b5f51602061358c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610e635750825b90505f826001600160401b03166001148015610e7e5750303b155b905081158015610e8c575080155b15610eaa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ed457845460ff60401b1916600160401b1785555b610edd86611c4d565b610ee5611172565b610eed611c5e565b610ef8898989611d50565b8315610f3e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f5282610a2e565b610f5b8161139e565b610a6a8383611501565b610f6d611222565b6001600160a01b038116610f9b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a2b81611a04565b5f51602061356c5f395f51905f525460ff1615610c895760405163d93c066560e01b815260040160405180910390fd5b610fdd82611bcc565b335f829003610fff57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa15801561104d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611071919061322f565b90508281101561109e5760405163054365bb60e31b81526004810182905260248101849052604401610f92565b6002546110b6906001600160a01b0316833086611dd3565b6001600160a01b0384165f90815260036020526040812080548592906110dd908490613246565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611118908490613246565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8560405161116491815260200190565b60405180910390a350505050565b610c89611e70565b5f5f51602061354c5f395f51905f526111938484610cbb565b611212575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556111c83390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e4565b5f9150506107e4565b5092915050565b336112547f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c895760405163118cdaa760e01b8152336004820152602401610f92565b6001600160a01b0381165f9081526005602052604081205433918190036112b7576040516379298a5360e11b815260040160405180910390fd5b804210156112d857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361132057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461135591168483611ea6565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161139091815260200190565b60405180910390a250505050565b610a2b8133611f2f565b6001600160a01b0381165f9081526003602052604081206001015460ff1660028111156113d7576113d76130c2565b14610a2b5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526114128282611f68565b156107fc576040516306cf438f60e01b815260040160405180910390fd5b60045f61143c83610cf1565b815260208101919091526040015f205460ff1615610a2b5760405162da8a5760e11b815260040160405180910390fd5b61147582611f89565b5f6040518060600160405280602481526020016134c86024913990505f84826040516020016114a5929190613270565b60405160208183030381529060405290505f6114c08261201f565b90506114dd81856114d08861210c565b6114d8612183565b612250565b6114f95760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f5f51602061354c5f395f51905f5261151a8484610cbb565b15611212575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e4565b61158261232e565b5f51602061356c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b6115e382611bcc565b335f82900361160557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156116485760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561169157604051639266535160e01b815260048101829052602401610f92565b6001600160a01b038085165f908152600660209081526040808320938616835292905290812080548592906116c790849061328c565b925050819055506040518060400160405280848152602001600854426116ed9190613246565b90526001600160a01b038086165f8181526007602090815260408083209488168352938152838220855181559481015160019095019490945590815260039092528120805485929061174090849061328c565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c8560405161116491815260200190565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061181257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118065f51602061350c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c895760405163703e46dd60e11b815260040160405180910390fd5b611838611222565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016115cf565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118cb575060408051601f3d908101601f191682019092526118c89181019061322f565b60015b6118f357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f92565b5f51602061350c5f395f51905f52811461192357604051632a87526960e21b815260048101829052602401610f92565b610c0d838361235d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c895760405163703e46dd60e11b815260040160405180910390fd5b3361198081611bcc565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546119b29042613246565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a7c610fa4565b5f51602061356c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336115bb565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b0157604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611b4957604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254611b8491168383611ea6565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051611bbf91815260200190565b60405180910390a2505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611bfd57611bfd6130c2565b03611c1b5760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611c2f57611c2f6130c2565b036107fc5760405163eab4a96360e01b815260040160405180910390fd5b611c55611e70565b610a2b816123b2565b5f51602061358c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611c8f5750825b90505f826001600160401b03166001148015611caa5750303b155b905081158015611cb8575080155b15611cd65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d0057845460ff60401b1916600160401b1785555b435f558315611d4957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b038316611d775760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611d9e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b039485166001600160a01b0319918216179091556001805493909416921691909117909155600855565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f511416151615611e2c5750833b153d17155b80611d495760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610f92565b5f51602061358c5f395f51905f5254600160401b900460ff16610c8957604051631afcd79f60e31b815260040160405180910390fd5b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615611ef05750823b153d17155b80610a6a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610f92565b611f398282610cbb565b6107fc5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f92565b805182515f91148015611f82575081602001518360200151145b9392505050565b805160208201515f915f5160206134ec5f395f51905f52911590151615611faf57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610c0d5760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e740000000000000000006044820152606401610f92565b604080518082019091525f80825260208201525f61203c836123ba565b90505f5160206134ec5f395f51905f5260035f82848509905082806120635761206361329f565b848209905082806120765761207661329f565b82820890505f5f612086836125c2565b925090505b806120ef57848061209e5761209e61329f565b60018708955084806120b2576120b261329f565b868709925084806120c5576120c561329f565b868409925084806120d8576120d861329f565b84840892506120e6836125c2565b9250905061208b565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612133575090565b6040518060400160405280835f015181526020015f5160206134ec5f395f51905f52846020015161216491906132b3565b61217b905f5160206134ec5f395f51905f5261328c565b905292915050565b6121aa60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806123225760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c656421000000006044820152606401610f92565b50151595945050505050565b5f51602061356c5f395f51905f525460ff16610c8957604051638dfc202b60e01b815260040160405180910390fd5b612366826126b9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156123aa57610c0d828261271c565b6107fc61278e565b610f6d611e70565b5f5f6123c5836127ad565b8051909150603081146123da576123da6132d2565b5f816001600160401b038111156123f3576123f3612c71565b6040519080825280601f01601f19166020018201604052801561241d576020820181803683370190505b5090505f5b8281101561248c57836001612437838661328c565b612441919061328c565b81518110612451576124516132e6565b602001015160f81c60f81b82828151811061246e5761246e6132e6565b60200101906001600160f81b03191690815f1a905350600101612422565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561251c5783816124c8858861328c565b6124d29190613246565b815181106124e2576124e26132e6565b602001015160f81c60f81b60f81c828281518110612502576125026132e6565b60ff909216602092830291909101909101526001016124b4565b505f61252782612af8565b90506101005f5160206134ec5f395f51905f525f612545868961328c565b90505f5b818110156125b2575f88600161255f848661328c565b612569919061328c565b81518110612579576125796132e6565b016020015160f81c905083806125915761259161329f565b858709955083806125a4576125a461329f565b818708955050600101612549565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206134ec5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361267f5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c65642100000000006044820152606401610f92565b80600184901b111561269857612695838261328c565b92505b80806126a6576126a661329f565b8384099690961496919550909350505050565b806001600160a01b03163b5f036126ee57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f92565b5f51602061350c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161273891906132fa565b5f60405180830381855af49150503d805f8114612770576040519150601f19603f3d011682016040523d82523d5f602084013e612775565b606091505b5091509150612785858383612b58565b95945050505050565b3415610c895760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016127ed929190613270565b6040516020818303038152906040529050808460f81b604051602001612814929190613305565b604051602081830303815290604052905080604051602001612836919061332f565b60408051601f1981840301815290829052915061010160f01b906128609083908390602001613347565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156128cf576128cf612c71565b6040519080825280601f01601f1916602001820160405280156128f9576020820181803683370190505b5090505f8260405160200161291091815260200190565b60408051601f1981840301815291905290505f5b815181101561297a5781818151811061293f5761293f6132e6565b602001015160f81c60f81b83828151811061295c5761295c6132e6565b60200101906001600160f81b03191690815f1a905350600101612924565b505f8460405160200161298f91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612a21575f8382815181106129c8576129c86132e6565b602001015160f81c60f81b8383815181106129e5576129e56132e6565b602001015160f81c60f81b1890508881604051602001612a0692919061336b565b60408051601f198184030181529190529850506001016129ad565b50868887604051602001612a379392919061338f565b60405160208183030381529060405296508680519060200120935083604051602001612a6591815260200190565b60408051601f1981840301815291905291505f5b612a868a60ff8d1661328c565b811015612ae757828181518110612a9f57612a9f6132e6565b01602001516001600160f81b03191684612ab9838d613246565b81518110612ac957612ac96132e6565b60200101906001600160f81b03191690815f1a905350600101612a79565b50919b9a5050505050505050505050565b5f80805b835181101561121b57838181518110612b1757612b176132e6565b602002602001015160ff16816008612b2f91906133c2565b612b3a9060026134bc565b612b4491906133c2565b612b4e9083613246565b9150600101612afc565b606082612b6d57612b6882612bad565b611f82565b8151158015612b8457506001600160a01b0384163b155b1561121b57604051639996b31560e01b81526001600160a01b0385166004820152602401610f92565b805115612bbd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215612be6575f5ffd5b81356001600160e01b031981168114611f82575f5ffd5b80356001600160a01b0381168114612c13575f5ffd5b919050565b5f5f60408385031215612c29575f5ffd5b612c3283612bfd565b946020939093013593505050565b5f5f60408385031215612c51575f5ffd5b612c5a83612bfd565b9150612c6860208401612bfd565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612ca757612ca7612c71565b60405290565b5f60808284031215612cbd575f5ffd5b604051608081016001600160401b0381118282101715612cdf57612cdf612c71565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215612d1d575f5ffd5b612d25612c85565b823581526020928301359281019290925250919050565b803561ffff81168114612c13575f5ffd5b5f5f5f5f6101208587031215612d61575f5ffd5b612d6b8686612cad565b9350612d7a8660808701612d0d565b9250612d898660c08701612d0d565b9150612d986101008601612d3c565b905092959194509250565b6001600160401b0381168114610a2b575f5ffd5b5f60208284031215612dc7575f5ffd5b8135611f8281612da3565b5f60208284031215612de2575f5ffd5b611f8282612bfd565b5f60208284031215612dfb575f5ffd5b5035919050565b5f5f60408385031215612e13575f5ffd5b82359150612c6860208401612bfd565b5f82601f830112612e32575f5ffd5b81356001600160401b03811115612e4b57612e4b612c71565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612e7957612e79612c71565b604052818152838201602001851015612e90575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215612ec1575f5ffd5b612ecb8787612cad565b9450612eda8760808801612d0d565b9350612ee98760c08801612d0d565b92506101008601356001600160401b03811115612f04575f5ffd5b612f1088828901612e23565b925050612f206101208701612d3c565b90509295509295909350565b5f5f60408385031215612f3d575f5ffd5b612f4683612bfd565b915060208301356001600160401b03811115612f60575f5ffd5b612f6c85828601612e23565b9150509250929050565b5f5f5f6101008486031215612f89575f5ffd5b612f938585612cad565b9250612fa28560808601612d0d565b9150612fb18560c08601612d0d565b90509250925092565b5f60808284031215612fca575f5ffd5b611f828383612cad565b5f5f5f5f6101208587031215612fe8575f5ffd5b612ff28686612cad565b93506130018660808701612d0d565b92506130108660c08701612d0d565b91506101008501356001600160401b0381111561302b575f5ffd5b61303787828801612e23565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611f826020830184613043565b5f5f5f5f60808587031215613096575f5ffd5b61309f85612bfd565b93506130ad60208601612bfd565b925060408501359150612d9860608601612bfd565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106130f957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613116575f5ffd5b8151611f8281612da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216029081169081811461121b5761121b613121565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f6131be610140830184613043565b979650505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f613225610120830184613043565b9695505050505050565b5f6020828403121561323f575f5ffd5b5051919050565b808201808211156107e4576107e4613121565b5f81518060208401855e5f93019283525090919050565b5f61328461327e8386613259565b84613259565b949350505050565b818103818111156107e4576107e4613121565b634e487b7160e01b5f52601260045260245ffd5b5f826132cd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611f828284613259565b5f6133108285613259565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61333a8284613259565b5f81526001019392505050565b5f6133528285613259565b6001600160f01b03199390931683525050600201919050565b5f6133768285613259565b6001600160f81b03199390931683525050600101919050565b5f61339a8286613259565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b80820281158282048414176107e4576107e4613121565b6001815b6001841115613414578085048111156133f8576133f8613121565b600184161561340657908102905b60019390931c9280026133dd565b935093915050565b5f8261342a575060016107e4565b8161343657505f6107e4565b816001811461344c576002811461345657613472565b60019150506107e4565b60ff84111561346757613467613121565b50506001821b6107e4565b5060208310610133831016604e8410600b8410161715613495575081810a6107e4565b6134a15f1984846133d9565b805f19048211156134b4576134b4613121565b029392505050565b5f611f82838361341c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3036    /// ```
3037    #[rustfmt::skip]
3038    #[allow(clippy::all)]
3039    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3040        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\x001V[a\0$a\x001V[a\0,a\x001V[a\0\xE3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x81W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xE0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa5\xB8a\x01\t_9_\x81\x81a\x17\x97\x01R\x81\x81a\x17\xC0\x01Ra\x198\x01Ra5\xB8_\xF3\xFE`\x80`@R`\x046\x10a\x023W_5`\xE0\x1C\x80c\x84V\xCBY\x11a\x01)W\x80c\xB3\xE6\xEB\xD5\x11a\0\xA8W\x80c\xD5Gt\x1F\x11a\0mW\x80c\xD5Gt\x1F\x14a\x06\xF4W\x80c\xE6:\xB1\xE9\x14a\x07\x13W\x80c\xF2\xFD\xE3\x8B\x14a\x073W\x80c\xFAR\xC7\xD8\x14a\x07RW\x80c\xFC\x0CTj\x14a\x07\x95W__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\x06'W\x80c\xB5p\x0Eh\x14a\x06UW\x80c\xB5\xEC\xB3D\x14a\x06tW\x80c\xBE 0\x94\x14a\x06\x9FW\x80c\xC6H\x14\xDD\x14a\x06\xBEW__\xFD[\x80c\xA2\x17\xFD\xDF\x11a\0\xEEW\x80c\xA2\x17\xFD\xDF\x14a\x05GW\x80c\xA2\xD7\x8D\xD5\x14a\x05ZW\x80c\xA3\x06j\xAB\x14a\x05\xACW\x80c\xAC\\*\xD0\x14a\x05\xCBW\x80c\xAD<\xB1\xCC\x14a\x05\xEAW__\xFD[\x80c\x84V\xCBY\x14a\x04\x90W\x80c\x8D\xA5\xCB[\x14a\x04\xA4W\x80c\x91\xD1HT\x14a\x04\xF4W\x80c\x9B0\xA5\xE6\x14a\x05\x13W\x80c\x9E\x9A\x8F1\x14a\x052W__\xFD[\x80c6V\x8A\xBE\x11a\x01\xB5W\x80cR\xD1\x90-\x11a\x01zW\x80cR\xD1\x90-\x14a\x04\x17W\x80cUD\xC2\xF1\x14a\x04+W\x80c\\\x97Z\xBB\x14a\x04EW\x80cj\x91\x1C\xCF\x14a\x04hW\x80cqP\x18\xA6\x14a\x04|W__\xFD[\x80c6V\x8A\xBE\x14a\x03\x9EW\x80c>\x9D\xF9\xB5\x14a\x03\xBDW\x80c?K\xA8:\x14a\x03\xD1W\x80cM\x99\xDD\x16\x14a\x03\xE5W\x80cO\x1E\xF2\x86\x14a\x04\x04W__\xFD[\x80c\x1A \xCDc\x11a\x01\xFBW\x80c\x1A \xCDc\x14a\x02\xF5W\x80c!@\xFE\xCD\x14a\x03\x14W\x80c$\x8A\x9C\xA3\x14a\x033W\x80c//\xF1]\x14a\x03`W\x80c0B@\xBF\x14a\x03\x7FW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x027W\x80c\x02n@+\x14a\x02kW\x80c\x08@\xBAr\x14a\x02\x8CW\x80c\r\x8En,\x14a\x02\xABW\x80c\x13\xB9\x05z\x14a\x02\xD6W[__\xFD[4\x80\x15a\x02BW__\xFD[Pa\x02Va\x02Q6`\x04a+\xD6V[a\x07\xB4V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02vW__\xFD[Pa\x02\x8Aa\x02\x856`\x04a,\x18V[a\x07\xEAV[\0[4\x80\x15a\x02\x97W__\xFD[Pa\x02\x8Aa\x02\xA66`\x04a,@V[a\x08\0V[4\x80\x15a\x02\xB6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02bV[4\x80\x15a\x02\xE1W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a-MV[a\x08\xEDV[4\x80\x15a\x03\0W__\xFD[Pa\x02\x8Aa\x03\x0F6`\x04a-\xB7V[a\t\x06V[4\x80\x15a\x03\x1FW__\xFD[Pa\x02\x8Aa\x03.6`\x04a-\xD2V[a\n\x1AV[4\x80\x15a\x03>W__\xFD[Pa\x03Ra\x03M6`\x04a-\xEBV[a\n.V[`@Q\x90\x81R` \x01a\x02bV[4\x80\x15a\x03kW__\xFD[Pa\x02\x8Aa\x03z6`\x04a.\x02V[a\nNV[4\x80\x15a\x03\x8AW__\xFD[Pa\x02\x8Aa\x03\x996`\x04a.\xACV[a\npV[4\x80\x15a\x03\xA9W__\xFD[Pa\x02\x8Aa\x03\xB86`\x04a.\x02V[a\x0B\xDAV[4\x80\x15a\x03\xC8W__\xFD[Pa\x03R_T\x81V[4\x80\x15a\x03\xDCW__\xFD[Pa\x02\x8Aa\x0C\x12V[4\x80\x15a\x03\xF0W__\xFD[Pa\x02\x8Aa\x03\xFF6`\x04a,\x18V[a\x0C1V[a\x02\x8Aa\x04\x126`\x04a/,V[a\x0CCV[4\x80\x15a\x04\"W__\xFD[Pa\x03Ra\x0C^V[4\x80\x15a\x046W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a/vV[4\x80\x15a\x04PW__\xFD[P_Q` a5l_9_Q\x90_RT`\xFF\x16a\x02VV[4\x80\x15a\x04sW__\xFD[Pa\x02\x8Aa\x0CyV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x8Aa\x0C\x8BV[4\x80\x15a\x04\x9BW__\xFD[Pa\x02\x8Aa\x0C\x9CV[4\x80\x15a\x04\xAFW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02bV[4\x80\x15a\x04\xFFW__\xFD[Pa\x02Va\x05\x0E6`\x04a.\x02V[a\x0C\xBBV[4\x80\x15a\x05\x1EW__\xFD[Pa\x03Ra\x05-6`\x04a/\xBAV[a\x0C\xF1V[4\x80\x15a\x05=W__\xFD[Pa\x03R`\x08T\x81V[4\x80\x15a\x05RW__\xFD[Pa\x03R_\x81V[4\x80\x15a\x05eW__\xFD[Pa\x05\x97a\x05t6`\x04a,@V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02bV[4\x80\x15a\x05\xB7W__\xFD[Pa\x02\x8Aa\x05\xC66`\x04a-\xD2V[a\rKV[4\x80\x15a\x05\xD6W__\xFD[Pa\x02\x8Aa\x05\xE56`\x04a/\xD4V[a\r\\V[4\x80\x15a\x05\xF5W__\xFD[Pa\x06\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02b\x91\x90a0qV[4\x80\x15a\x062W__\xFD[Pa\x02Va\x06A6`\x04a-\xEBV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06`W__\xFD[P`\x01Ta\x04\xDC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x06\x7FW__\xFD[Pa\x03Ra\x06\x8E6`\x04a-\xD2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06\xAAW__\xFD[Pa\x02\x8Aa\x06\xB96`\x04a0\x83V[a\x0E2V[4\x80\x15a\x06\xC9W__\xFD[Pa\x03Ra\x06\xD86`\x04a,@V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x06\xFFW__\xFD[Pa\x02\x8Aa\x07\x0E6`\x04a.\x02V[a\x0FIV[4\x80\x15a\x07\x1EW__\xFD[Pa\x03R_Q` a5,_9_Q\x90_R\x81V[4\x80\x15a\x07>W__\xFD[Pa\x02\x8Aa\x07M6`\x04a-\xD2V[a\x0FeV[4\x80\x15a\x07]W__\xFD[Pa\x07\x87a\x07l6`\x04a-\xD2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02b\x92\x91\x90a0\xD6V[4\x80\x15a\x07\xA0W__\xFD[P`\x02Ta\x04\xDC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x07\xE4WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x07\xF2a\x0F\xA4V[a\x07\xFC\x82\x82a\x0F\xD4V[PPV[_Q` a5\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x086WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x08TW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81Ua\x08}a\x11rV[a\x08\x87_\x84a\x11zV[Pa\x08\x9F_Q` a5,_9_Q\x90_R\x85a\x11zV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x0Ea\x12\"V[`\x01T`@\x80Qc<\x1A\x08\x15`\xE2\x1B\x81R\x90Q_\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xF0h T\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\tUW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\ty\x91\x90a1\x06V[a\t\x84\x90`\x0Fa15V[\x90Pb\x12u\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x90\x84\x16\x10\x80a\t\xB5WP\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11[\x15a\t\xD3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x83\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[a\n\"a\x0F\xA4V[a\n+\x81a\x12}V[PV[_\x90\x81R_Q` a5L_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\nW\x82a\n.V[a\n`\x81a\x13\x9EV[a\nj\x83\x83a\x11zV[PPPPV[3a\nz\x81a\x13\xA8V[a\n\x83\x85a\x13\xF5V[a\n\x8C\x86a\x140V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\n\xBE\x81\x86\x89a\x14lV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\n\xE5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\n\xF3\x8Aa\x0C\xF1V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x0B:Wa\x0B:a0\xC2V[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x0B\x80Wa\x0B\x80a0\xC2V[\x02\x17\x90UP\x90PP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0W\xD4\xEA\x81\xE9\x86(e:\x8F\x90x\x85A\x97 x\x13s4\xA9+B4~\xAC\xCD\xA8\x0F\xC4\n\x88\x88\x86\x89\x89`@Qa\x0B\xC9\x95\x94\x93\x92\x91\x90a1WV[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0C\x03W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\r\x82\x82a\x15\x01V[PPPV[_Q` a5,_9_Q\x90_Ra\x0C)\x81a\x13\x9EV[a\n+a\x15zV[a\x0C9a\x0F\xA4V[a\x07\xFC\x82\x82a\x15\xDAV[a\x0CKa\x17\x8CV[a\x0CT\x82a\x180V[a\x07\xFC\x82\x82a\x18qV[_a\x0Cga\x19-V[P_Q` a5\x0C_9_Q\x90_R\x90V[a\x0C\x81a\x0F\xA4V[a\x0C\x89a\x19vV[V[a\x0C\x93a\x12\"V[a\x0C\x89_a\x1A\x04V[_Q` a5,_9_Q\x90_Ra\x0C\xB3\x81a\x13\x9EV[a\n+a\x1AtV[_\x91\x82R_Q` a5L_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r.\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\rSa\x0F\xA4V[a\n+\x81a\x1A\xBCV[a\rda\x0F\xA4V[3a\rn\x81a\x1B\xCCV[a\rw\x84a\x13\xF5V[a\r\x80\x85a\x140V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\xB2\x81\x85\x88a\x14lV[`\x01`\x04_a\r\xC0\x89a\x0C\xF1V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x0E\"\x94\x93\x92\x91\x90a1\xC9V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a5\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0EcWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E~WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\x8CWP\x80\x15[\x15a\x0E\xAAW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0E\xD4W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0E\xDD\x86a\x1CMV[a\x0E\xE5a\x11rV[a\x0E\xEDa\x1C^V[a\x0E\xF8\x89\x89\x89a\x1DPV[\x83\x15a\x0F>W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0FR\x82a\n.V[a\x0F[\x81a\x13\x9EV[a\nj\x83\x83a\x15\x01V[a\x0Fma\x12\"V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\x9BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n+\x81a\x1A\x04V[_Q` a5l_9_Q\x90_RT`\xFF\x16\x15a\x0C\x89W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xDD\x82a\x1B\xCCV[3_\x82\x90\x03a\x0F\xFFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10MW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10q\x91\x90a2/V[\x90P\x82\x81\x10\x15a\x10\x9EW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x0F\x92V[`\x02Ta\x10\xB6\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x1D\xD3V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x10\xDD\x90\x84\x90a2FV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x11\x18\x90\x84\x90a2FV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x11d\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0C\x89a\x1EpV[__Q` a5L_9_Q\x90_Ra\x11\x93\x84\x84a\x0C\xBBV[a\x12\x12W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x11\xC83\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x07\xE4V[_\x91PPa\x07\xE4V[P\x92\x91PPV[3a\x12T\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x89W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0F\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x12\xB7W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x12\xD8W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13 W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\x13U\x91\x16\x84\x83a\x1E\xA6V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x13\x90\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\n+\x813a\x1F/V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x13\xD7Wa\x13\xD7a0\xC2V[\x14a\n+W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x14\x12\x82\x82a\x1FhV[\x15a\x07\xFCW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x14<\x83a\x0C\xF1V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\n+W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14u\x82a\x1F\x89V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a4\xC8`$\x919\x90P_\x84\x82`@Q` \x01a\x14\xA5\x92\x91\x90a2pV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x14\xC0\x82a \x1FV[\x90Pa\x14\xDD\x81\x85a\x14\xD0\x88a!\x0CV[a\x14\xD8a!\x83V[a\"PV[a\x14\xF9W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[__Q` a5L_9_Q\x90_Ra\x15\x1A\x84\x84a\x0C\xBBV[\x15a\x12\x12W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x07\xE4V[a\x15\x82a#.V[_Q` a5l_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PV[a\x15\xE3\x82a\x1B\xCCV[3_\x82\x90\x03a\x16\x05W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x16HW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x16\x91W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\x92V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x16\xC7\x90\x84\x90a2\x8CV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x16\xED\x91\x90a2FV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\x17@\x90\x84\x90a2\x8CV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x11d\x91\x81R` \x01\x90V[0`\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\x14\x80a\x18\x12WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x06_Q` a5\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\x89W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x188a\x12\"V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x15\xCFV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xCBWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC8\x91\x81\x01\x90a2/V[`\x01[a\x18\xF3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0F\x92V[_Q` a5\x0C_9_Q\x90_R\x81\x14a\x19#W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\x92V[a\x0C\r\x83\x83a#]V[0`\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\x14a\x0C\x89W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x19\x80\x81a\x1B\xCCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19\xB2\x90Ba2FV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\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\xA3PPPV[a\x1A|a\x0F\xA4V[_Q` a5l_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x15\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1B\x01W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1BIW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x1B\x84\x91\x16\x83\x83a\x1E\xA6V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x1B\xBF\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x1B\xFDWa\x1B\xFDa0\xC2V[\x03a\x1C\x1BW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1C/Wa\x1C/a0\xC2V[\x03a\x07\xFCW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CUa\x1EpV[a\n+\x81a#\xB2V[_Q` a5\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1C\x8FWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1C\xAAWP0;\x15[\x90P\x81\x15\x80\x15a\x1C\xB8WP\x80\x15[\x15a\x1C\xD6W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1D\0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x1DIW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x1DwW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1D\x9EW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x93\x90\x94\x16\x92\x16\x91\x90\x91\x17\x90\x91U`\x08UV[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x1E,WP\x83;\x15=\x17\x15[\x80a\x1DIW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0F\x92V[_Q` a5\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\x89W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x1E\xF0WP\x82;\x15=\x17\x15[\x80a\njW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0F\x92V[a\x1F9\x82\x82a\x0C\xBBV[a\x07\xFCW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0F\x92V[\x80Q\x82Q_\x91\x14\x80\x15a\x1F\x82WP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a4\xEC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x1F\xAFWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x0C\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a <\x83a#\xBAV[\x90P_Q` a4\xEC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a cWa ca2\x9FV[\x84\x82\t\x90P\x82\x80a vWa va2\x9FV[\x82\x82\x08\x90P__a \x86\x83a%\xC2V[\x92P\x90P[\x80a \xEFW\x84\x80a \x9EWa \x9Ea2\x9FV[`\x01\x87\x08\x95P\x84\x80a \xB2Wa \xB2a2\x9FV[\x86\x87\t\x92P\x84\x80a \xC5Wa \xC5a2\x9FV[\x86\x84\t\x92P\x84\x80a \xD8Wa \xD8a2\x9FV[\x84\x84\x08\x92Pa \xE6\x83a%\xC2V[\x92P\x90Pa \x8BV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a!3WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a4\xEC_9_Q\x90_R\x84` \x01Qa!d\x91\x90a2\xB3V[a!{\x90_Q` a4\xEC_9_Q\x90_Ra2\x8CV[\x90R\x92\x91PPV[a!\xAA`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a#\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[P\x15\x15\x95\x94PPPPPV[_Q` a5l_9_Q\x90_RT`\xFF\x16a\x0C\x89W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#f\x82a&\xB9V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#\xAAWa\x0C\r\x82\x82a'\x1CV[a\x07\xFCa'\x8EV[a\x0Fma\x1EpV[__a#\xC5\x83a'\xADV[\x80Q\x90\x91P`0\x81\x14a#\xDAWa#\xDAa2\xD2V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF3Wa#\xF3a,qV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$\x1DW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a$\x8CW\x83`\x01a$7\x83\x86a2\x8CV[a$A\x91\x90a2\x8CV[\x81Q\x81\x10a$QWa$Qa2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a$nWa$na2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a$\"V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a%\x1CW\x83\x81a$\xC8\x85\x88a2\x8CV[a$\xD2\x91\x90a2FV[\x81Q\x81\x10a$\xE2Wa$\xE2a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a%\x02Wa%\x02a2\xE6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$\xB4V[P_a%'\x82a*\xF8V[\x90Pa\x01\0_Q` a4\xEC_9_Q\x90_R_a%E\x86\x89a2\x8CV[\x90P_[\x81\x81\x10\x15a%\xB2W_\x88`\x01a%_\x84\x86a2\x8CV[a%i\x91\x90a2\x8CV[\x81Q\x81\x10a%yWa%ya2\xE6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a%\x91Wa%\x91a2\x9FV[\x85\x87\t\x95P\x83\x80a%\xA4Wa%\xA4a2\x9FV[\x81\x87\x08\x95PP`\x01\x01a%IV[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` a4\xEC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a&\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fpow precompile call failed!\0\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[\x80`\x01\x84\x90\x1B\x11\x15a&\x98Wa&\x95\x83\x82a2\x8CV[\x92P[\x80\x80a&\xA6Wa&\xA6a2\x9FV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a&\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F\x92V[_Q` a5\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa'8\x91\x90a2\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a'pW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a'uV[``\x91P[P\x91P\x91Pa'\x85\x85\x83\x83a+XV[\x95\x94PPPPPV[4\x15a\x0C\x89W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a'\xED\x92\x91\x90a2pV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a(\x14\x92\x91\x90a3\x05V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a(6\x91\x90a3/V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a(`\x90\x83\x90\x83\x90` \x01a3GV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCFWa(\xCFa,qV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a(\xF9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a)\x10\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a)zW\x81\x81\x81Q\x81\x10a)?Wa)?a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a)\\Wa)\\a2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a)$V[P_\x84`@Q` \x01a)\x8F\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a*!W_\x83\x82\x81Q\x81\x10a)\xC8Wa)\xC8a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xE5Wa)\xE5a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a*\x06\x92\x91\x90a3kV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a)\xADV[P\x86\x88\x87`@Q` \x01a*7\x93\x92\x91\x90a3\x8FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a*e\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a*\x86\x8A`\xFF\x8D\x16a2\x8CV[\x81\x10\x15a*\xE7W\x82\x81\x81Q\x81\x10a*\x9FWa*\x9Fa2\xE6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a*\xB9\x83\x8Da2FV[\x81Q\x81\x10a*\xC9Wa*\xC9a2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*yV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x12\x1BW\x83\x81\x81Q\x81\x10a+\x17Wa+\x17a2\xE6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a+/\x91\x90a3\xC2V[a+:\x90`\x02a4\xBCV[a+D\x91\x90a3\xC2V[a+N\x90\x83a2FV[\x91P`\x01\x01a*\xFCV[``\x82a+mWa+h\x82a+\xADV[a\x1F\x82V[\x81Q\x15\x80\x15a+\x84WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x12\x1BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F\x92V[\x80Q\x15a+\xBDW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a+\xE6W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1F\x82W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a,\x13W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a,)W__\xFD[a,2\x83a+\xFDV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a,QW__\xFD[a,Z\x83a+\xFDV[\x91Pa,h` \x84\x01a+\xFDV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA7Wa,\xA7a,qV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a,\xBDW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xDFWa,\xDFa,qV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a-\x1DW__\xFD[a-%a,\x85V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a,\x13W__\xFD[____a\x01 \x85\x87\x03\x12\x15a-aW__\xFD[a-k\x86\x86a,\xADV[\x93Pa-z\x86`\x80\x87\x01a-\rV[\x92Pa-\x89\x86`\xC0\x87\x01a-\rV[\x91Pa-\x98a\x01\0\x86\x01a-<V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\n+W__\xFD[_` \x82\x84\x03\x12\x15a-\xC7W__\xFD[\x815a\x1F\x82\x81a-\xA3V[_` \x82\x84\x03\x12\x15a-\xE2W__\xFD[a\x1F\x82\x82a+\xFDV[_` \x82\x84\x03\x12\x15a-\xFBW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a.\x13W__\xFD[\x825\x91Pa,h` \x84\x01a+\xFDV[_\x82`\x1F\x83\x01\x12a.2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.KWa.Ka,qV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.yWa.ya,qV[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a.\x90W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a.\xC1W__\xFD[a.\xCB\x87\x87a,\xADV[\x94Pa.\xDA\x87`\x80\x88\x01a-\rV[\x93Pa.\xE9\x87`\xC0\x88\x01a-\rV[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x04W__\xFD[a/\x10\x88\x82\x89\x01a.#V[\x92PPa/ a\x01 \x87\x01a-<V[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a/=W__\xFD[a/F\x83a+\xFDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/`W__\xFD[a/l\x85\x82\x86\x01a.#V[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a/\x89W__\xFD[a/\x93\x85\x85a,\xADV[\x92Pa/\xA2\x85`\x80\x86\x01a-\rV[\x91Pa/\xB1\x85`\xC0\x86\x01a-\rV[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a/\xCAW__\xFD[a\x1F\x82\x83\x83a,\xADV[____a\x01 \x85\x87\x03\x12\x15a/\xE8W__\xFD[a/\xF2\x86\x86a,\xADV[\x93Pa0\x01\x86`\x80\x87\x01a-\rV[\x92Pa0\x10\x86`\xC0\x87\x01a-\rV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0+W__\xFD[a07\x87\x82\x88\x01a.#V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x1F\x82` \x83\x01\x84a0CV[____`\x80\x85\x87\x03\x12\x15a0\x96W__\xFD[a0\x9F\x85a+\xFDV[\x93Pa0\xAD` \x86\x01a+\xFDV[\x92P`@\x85\x015\x91Pa-\x98``\x86\x01a+\xFDV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a0\xF9WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a1\x16W__\xFD[\x81Qa\x1F\x82\x81a-\xA3V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a\x12\x1BWa\x12\x1Ba1!V[\x85Q\x81R` \x80\x87\x01Q\x90\x82\x01R`@\x80\x87\x01Q\x90\x82\x01R``\x80\x87\x01Q\x90\x82\x01R\x84Q`\x80\x82\x01R` \x85\x01Q`\xA0\x82\x01Ra\xFF\xFF\x84\x16`\xC0\x82\x01R\x82Q`\xE0\x82\x01R` \x83\x01Qa\x01\0\x82\x01Ra\x01@a\x01 \x82\x01R_a1\xBEa\x01@\x83\x01\x84a0CV[\x97\x96PPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_a2%a\x01 \x83\x01\x84a0CV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a2?W__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x07\xE4Wa\x07\xE4a1!V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x84a2~\x83\x86a2YV[\x84a2YV[\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x07\xE4Wa\x07\xE4a1!V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a2\xCDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x1F\x82\x82\x84a2YV[_a3\x10\x82\x85a2YV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a3:\x82\x84a2YV[_\x81R`\x01\x01\x93\x92PPPV[_a3R\x82\x85a2YV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a3v\x82\x85a2YV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a3\x9A\x82\x86a2YV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xE4Wa\x07\xE4a1!V[`\x01\x81[`\x01\x84\x11\x15a4\x14W\x80\x85\x04\x81\x11\x15a3\xF8Wa3\xF8a1!V[`\x01\x84\x16\x15a4\x06W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a3\xDDV[\x93P\x93\x91PPV[_\x82a4*WP`\x01a\x07\xE4V[\x81a46WP_a\x07\xE4V[\x81`\x01\x81\x14a4LW`\x02\x81\x14a4VWa4rV[`\x01\x91PPa\x07\xE4V[`\xFF\x84\x11\x15a4gWa4ga1!V[PP`\x01\x82\x1Ba\x07\xE4V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a4\x95WP\x81\x81\na\x07\xE4V[a4\xA1_\x19\x84\x84a3\xD9V[\x80_\x19\x04\x82\x11\x15a4\xB4Wa4\xB4a1!V[\x02\x93\x92PPPV[_a\x1F\x82\x83\x83a4\x1CV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
3041    );
3042    /// The runtime bytecode of the contract, as deployed on the network.
3043    ///
3044    /// ```text
3045    ///0x608060405260043610610233575f3560e01c80638456cb5911610129578063b3e6ebd5116100a8578063d547741f1161006d578063d547741f146106f4578063e63ab1e914610713578063f2fde38b14610733578063fa52c7d814610752578063fc0c546a14610795575f5ffd5b8063b3e6ebd514610627578063b5700e6814610655578063b5ecb34414610674578063be2030941461069f578063c64814dd146106be575f5ffd5b8063a217fddf116100ee578063a217fddf14610547578063a2d78dd51461055a578063a3066aab146105ac578063ac5c2ad0146105cb578063ad3cb1cc146105ea575f5ffd5b80638456cb59146104905780638da5cb5b146104a457806391d14854146104f45780639b30a5e6146105135780639e9a8f3114610532575f5ffd5b806336568abe116101b557806352d1902d1161017a57806352d1902d146104175780635544c2f11461042b5780635c975abb146104455780636a911ccf14610468578063715018a61461047c575f5ffd5b806336568abe1461039e5780633e9df9b5146103bd5780633f4ba83a146103d15780634d99dd16146103e55780634f1ef28614610404575f5ffd5b80631a20cd63116101fb5780631a20cd63146102f55780632140fecd14610314578063248a9ca3146103335780632f2ff15d14610360578063304240bf1461037f575f5ffd5b806301ffc9a714610237578063026e402b1461026b5780630840ba721461028c5780630d8e6e2c146102ab57806313b9057a146102d6575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612bd6565b6107b4565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061028a610285366004612c18565b6107ea565b005b348015610297575f5ffd5b5061028a6102a6366004612c40565b610800565b3480156102b6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610262565b3480156102e1575f5ffd5b5061028a6102f0366004612d4d565b6108ed565b348015610300575f5ffd5b5061028a61030f366004612db7565b610906565b34801561031f575f5ffd5b5061028a61032e366004612dd2565b610a1a565b34801561033e575f5ffd5b5061035261034d366004612deb565b610a2e565b604051908152602001610262565b34801561036b575f5ffd5b5061028a61037a366004612e02565b610a4e565b34801561038a575f5ffd5b5061028a610399366004612eac565b610a70565b3480156103a9575f5ffd5b5061028a6103b8366004612e02565b610bda565b3480156103c8575f5ffd5b506103525f5481565b3480156103dc575f5ffd5b5061028a610c12565b3480156103f0575f5ffd5b5061028a6103ff366004612c18565b610c31565b61028a610412366004612f2c565b610c43565b348015610422575f5ffd5b50610352610c5e565b348015610436575f5ffd5b5061028a6102f0366004612f76565b348015610450575f5ffd5b505f51602061356c5f395f51905f525460ff16610256565b348015610473575f5ffd5b5061028a610c79565b348015610487575f5ffd5b5061028a610c8b565b34801561049b575f5ffd5b5061028a610c9c565b3480156104af575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610262565b3480156104ff575f5ffd5b5061025661050e366004612e02565b610cbb565b34801561051e575f5ffd5b5061035261052d366004612fba565b610cf1565b34801561053d575f5ffd5b5061035260085481565b348015610552575f5ffd5b506103525f81565b348015610565575f5ffd5b50610597610574366004612c40565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610262565b3480156105b7575f5ffd5b5061028a6105c6366004612dd2565b610d4b565b3480156105d6575f5ffd5b5061028a6105e5366004612fd4565b610d5c565b3480156105f5575f5ffd5b5061061a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102629190613071565b348015610632575f5ffd5b50610256610641366004612deb565b60046020525f908152604090205460ff1681565b348015610660575f5ffd5b506001546104dc906001600160a01b031681565b34801561067f575f5ffd5b5061035261068e366004612dd2565b60056020525f908152604090205481565b3480156106aa575f5ffd5b5061028a6106b9366004613083565b610e32565b3480156106c9575f5ffd5b506103526106d8366004612c40565b600660209081525f928352604080842090915290825290205481565b3480156106ff575f5ffd5b5061028a61070e366004612e02565b610f49565b34801561071e575f5ffd5b506103525f51602061352c5f395f51905f5281565b34801561073e575f5ffd5b5061028a61074d366004612dd2565b610f65565b34801561075d575f5ffd5b5061078761076c366004612dd2565b60036020525f90815260409020805460019091015460ff1682565b6040516102629291906130d6565b3480156107a0575f5ffd5b506002546104dc906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b14806107e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6107f2610fa4565b6107fc8282610fd4565b5050565b5f51602061358c5f395f51905f52805460029190600160401b900460ff1680610836575080546001600160401b03808416911610155b156108545760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561087d611172565b6108875f8461117a565b5061089f5f51602061352c5f395f51905f528561117a565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b60405163c2d7f81360e01b815260040160405180910390fd5b61090e611222565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa158015610955573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109799190613106565b61098490600f613135565b9050621275006001600160401b0380831690841610806109b55750806001600160401b0316836001600160401b0316115b156109d35760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610a22610fa4565b610a2b8161127d565b50565b5f9081525f51602061354c5f395f51905f52602052604090206001015490565b610a5782610a2e565b610a608161139e565b610a6a838361117a565b50505050565b33610a7a816113a8565b610a83856113f5565b610a8c86611430565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610abe81868961146c565b6127108361ffff161115610ae55760405163dc81db8560e01b815260040160405180910390fd5b600160045f610af38a610cf1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610b3a57610b3a6130c2565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610b8057610b806130c2565b0217905550905050816001600160a01b03167ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a8888868989604051610bc9959493929190613157565b60405180910390a250505050505050565b6001600160a01b0381163314610c035760405163334bd91960e11b815260040160405180910390fd5b610c0d8282611501565b505050565b5f51602061352c5f395f51905f52610c298161139e565b610a2b61157a565b610c39610fa4565b6107fc82826115da565b610c4b61178c565b610c5482611830565b6107fc8282611871565b5f610c6761192d565b505f51602061350c5f395f51905f5290565b610c81610fa4565b610c89611976565b565b610c93611222565b610c895f611a04565b5f51602061352c5f395f51905f52610cb38161139e565b610a2b611a74565b5f9182525f51602061354c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001610d2e949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b610d53610fa4565b610a2b81611abc565b610d64610fa4565b33610d6e81611bcc565b610d77846113f5565b610d8085611430565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610db281858861146c565b600160045f610dc089610cf1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051610e2294939291906131c9565b60405180910390a2505050505050565b5f51602061358c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610e635750825b90505f826001600160401b03166001148015610e7e5750303b155b905081158015610e8c575080155b15610eaa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ed457845460ff60401b1916600160401b1785555b610edd86611c4d565b610ee5611172565b610eed611c5e565b610ef8898989611d50565b8315610f3e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f5282610a2e565b610f5b8161139e565b610a6a8383611501565b610f6d611222565b6001600160a01b038116610f9b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a2b81611a04565b5f51602061356c5f395f51905f525460ff1615610c895760405163d93c066560e01b815260040160405180910390fd5b610fdd82611bcc565b335f829003610fff57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa15801561104d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611071919061322f565b90508281101561109e5760405163054365bb60e31b81526004810182905260248101849052604401610f92565b6002546110b6906001600160a01b0316833086611dd3565b6001600160a01b0384165f90815260036020526040812080548592906110dd908490613246565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611118908490613246565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8560405161116491815260200190565b60405180910390a350505050565b610c89611e70565b5f5f51602061354c5f395f51905f526111938484610cbb565b611212575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556111c83390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e4565b5f9150506107e4565b5092915050565b336112547f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c895760405163118cdaa760e01b8152336004820152602401610f92565b6001600160a01b0381165f9081526005602052604081205433918190036112b7576040516379298a5360e11b815260040160405180910390fd5b804210156112d857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361132057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461135591168483611ea6565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161139091815260200190565b60405180910390a250505050565b610a2b8133611f2f565b6001600160a01b0381165f9081526003602052604081206001015460ff1660028111156113d7576113d76130c2565b14610a2b5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526114128282611f68565b156107fc576040516306cf438f60e01b815260040160405180910390fd5b60045f61143c83610cf1565b815260208101919091526040015f205460ff1615610a2b5760405162da8a5760e11b815260040160405180910390fd5b61147582611f89565b5f6040518060600160405280602481526020016134c86024913990505f84826040516020016114a5929190613270565b60405160208183030381529060405290505f6114c08261201f565b90506114dd81856114d08861210c565b6114d8612183565b612250565b6114f95760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f5f51602061354c5f395f51905f5261151a8484610cbb565b15611212575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e4565b61158261232e565b5f51602061356c5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b6115e382611bcc565b335f82900361160557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156116485760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561169157604051639266535160e01b815260048101829052602401610f92565b6001600160a01b038085165f908152600660209081526040808320938616835292905290812080548592906116c790849061328c565b925050819055506040518060400160405280848152602001600854426116ed9190613246565b90526001600160a01b038086165f8181526007602090815260408083209488168352938152838220855181559481015160019095019490945590815260039092528120805485929061174090849061328c565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c8560405161116491815260200190565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061181257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118065f51602061350c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c895760405163703e46dd60e11b815260040160405180910390fd5b611838611222565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016115cf565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118cb575060408051601f3d908101601f191682019092526118c89181019061322f565b60015b6118f357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f92565b5f51602061350c5f395f51905f52811461192357604051632a87526960e21b815260048101829052602401610f92565b610c0d838361235d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c895760405163703e46dd60e11b815260040160405180910390fd5b3361198081611bcc565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546119b29042613246565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a7c610fa4565b5f51602061356c5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336115bb565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b0157604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611b4957604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254611b8491168383611ea6565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051611bbf91815260200190565b60405180910390a2505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611bfd57611bfd6130c2565b03611c1b5760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611c2f57611c2f6130c2565b036107fc5760405163eab4a96360e01b815260040160405180910390fd5b611c55611e70565b610a2b816123b2565b5f51602061358c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611c8f5750825b90505f826001600160401b03166001148015611caa5750303b155b905081158015611cb8575080155b15611cd65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d0057845460ff60401b1916600160401b1785555b435f558315611d4957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b038316611d775760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611d9e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b039485166001600160a01b0319918216179091556001805493909416921691909117909155600855565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f511416151615611e2c5750833b153d17155b80611d495760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610f92565b5f51602061358c5f395f51905f5254600160401b900460ff16610c8957604051631afcd79f60e31b815260040160405180910390fd5b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615611ef05750823b153d17155b80610a6a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610f92565b611f398282610cbb565b6107fc5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f92565b805182515f91148015611f82575081602001518360200151145b9392505050565b805160208201515f915f5160206134ec5f395f51905f52911590151615611faf57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610c0d5760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e740000000000000000006044820152606401610f92565b604080518082019091525f80825260208201525f61203c836123ba565b90505f5160206134ec5f395f51905f5260035f82848509905082806120635761206361329f565b848209905082806120765761207661329f565b82820890505f5f612086836125c2565b925090505b806120ef57848061209e5761209e61329f565b60018708955084806120b2576120b261329f565b868709925084806120c5576120c561329f565b868409925084806120d8576120d861329f565b84840892506120e6836125c2565b9250905061208b565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612133575090565b6040518060400160405280835f015181526020015f5160206134ec5f395f51905f52846020015161216491906132b3565b61217b905f5160206134ec5f395f51905f5261328c565b905292915050565b6121aa60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806123225760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c656421000000006044820152606401610f92565b50151595945050505050565b5f51602061356c5f395f51905f525460ff16610c8957604051638dfc202b60e01b815260040160405180910390fd5b612366826126b9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156123aa57610c0d828261271c565b6107fc61278e565b610f6d611e70565b5f5f6123c5836127ad565b8051909150603081146123da576123da6132d2565b5f816001600160401b038111156123f3576123f3612c71565b6040519080825280601f01601f19166020018201604052801561241d576020820181803683370190505b5090505f5b8281101561248c57836001612437838661328c565b612441919061328c565b81518110612451576124516132e6565b602001015160f81c60f81b82828151811061246e5761246e6132e6565b60200101906001600160f81b03191690815f1a905350600101612422565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561251c5783816124c8858861328c565b6124d29190613246565b815181106124e2576124e26132e6565b602001015160f81c60f81b60f81c828281518110612502576125026132e6565b60ff909216602092830291909101909101526001016124b4565b505f61252782612af8565b90506101005f5160206134ec5f395f51905f525f612545868961328c565b90505f5b818110156125b2575f88600161255f848661328c565b612569919061328c565b81518110612579576125796132e6565b016020015160f81c905083806125915761259161329f565b858709955083806125a4576125a461329f565b818708955050600101612549565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206134ec5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361267f5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c65642100000000006044820152606401610f92565b80600184901b111561269857612695838261328c565b92505b80806126a6576126a661329f565b8384099690961496919550909350505050565b806001600160a01b03163b5f036126ee57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f92565b5f51602061350c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161273891906132fa565b5f60405180830381855af49150503d805f8114612770576040519150601f19603f3d011682016040523d82523d5f602084013e612775565b606091505b5091509150612785858383612b58565b95945050505050565b3415610c895760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016127ed929190613270565b6040516020818303038152906040529050808460f81b604051602001612814929190613305565b604051602081830303815290604052905080604051602001612836919061332f565b60408051601f1981840301815290829052915061010160f01b906128609083908390602001613347565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156128cf576128cf612c71565b6040519080825280601f01601f1916602001820160405280156128f9576020820181803683370190505b5090505f8260405160200161291091815260200190565b60408051601f1981840301815291905290505f5b815181101561297a5781818151811061293f5761293f6132e6565b602001015160f81c60f81b83828151811061295c5761295c6132e6565b60200101906001600160f81b03191690815f1a905350600101612924565b505f8460405160200161298f91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612a21575f8382815181106129c8576129c86132e6565b602001015160f81c60f81b8383815181106129e5576129e56132e6565b602001015160f81c60f81b1890508881604051602001612a0692919061336b565b60408051601f198184030181529190529850506001016129ad565b50868887604051602001612a379392919061338f565b60405160208183030381529060405296508680519060200120935083604051602001612a6591815260200190565b60408051601f1981840301815291905291505f5b612a868a60ff8d1661328c565b811015612ae757828181518110612a9f57612a9f6132e6565b01602001516001600160f81b03191684612ab9838d613246565b81518110612ac957612ac96132e6565b60200101906001600160f81b03191690815f1a905350600101612a79565b50919b9a5050505050505050505050565b5f80805b835181101561121b57838181518110612b1757612b176132e6565b602002602001015160ff16816008612b2f91906133c2565b612b3a9060026134bc565b612b4491906133c2565b612b4e9083613246565b9150600101612afc565b606082612b6d57612b6882612bad565b611f82565b8151158015612b8457506001600160a01b0384163b155b1561121b57604051639996b31560e01b81526001600160a01b0385166004820152602401610f92565b805115612bbd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215612be6575f5ffd5b81356001600160e01b031981168114611f82575f5ffd5b80356001600160a01b0381168114612c13575f5ffd5b919050565b5f5f60408385031215612c29575f5ffd5b612c3283612bfd565b946020939093013593505050565b5f5f60408385031215612c51575f5ffd5b612c5a83612bfd565b9150612c6860208401612bfd565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612ca757612ca7612c71565b60405290565b5f60808284031215612cbd575f5ffd5b604051608081016001600160401b0381118282101715612cdf57612cdf612c71565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215612d1d575f5ffd5b612d25612c85565b823581526020928301359281019290925250919050565b803561ffff81168114612c13575f5ffd5b5f5f5f5f6101208587031215612d61575f5ffd5b612d6b8686612cad565b9350612d7a8660808701612d0d565b9250612d898660c08701612d0d565b9150612d986101008601612d3c565b905092959194509250565b6001600160401b0381168114610a2b575f5ffd5b5f60208284031215612dc7575f5ffd5b8135611f8281612da3565b5f60208284031215612de2575f5ffd5b611f8282612bfd565b5f60208284031215612dfb575f5ffd5b5035919050565b5f5f60408385031215612e13575f5ffd5b82359150612c6860208401612bfd565b5f82601f830112612e32575f5ffd5b81356001600160401b03811115612e4b57612e4b612c71565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612e7957612e79612c71565b604052818152838201602001851015612e90575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215612ec1575f5ffd5b612ecb8787612cad565b9450612eda8760808801612d0d565b9350612ee98760c08801612d0d565b92506101008601356001600160401b03811115612f04575f5ffd5b612f1088828901612e23565b925050612f206101208701612d3c565b90509295509295909350565b5f5f60408385031215612f3d575f5ffd5b612f4683612bfd565b915060208301356001600160401b03811115612f60575f5ffd5b612f6c85828601612e23565b9150509250929050565b5f5f5f6101008486031215612f89575f5ffd5b612f938585612cad565b9250612fa28560808601612d0d565b9150612fb18560c08601612d0d565b90509250925092565b5f60808284031215612fca575f5ffd5b611f828383612cad565b5f5f5f5f6101208587031215612fe8575f5ffd5b612ff28686612cad565b93506130018660808701612d0d565b92506130108660c08701612d0d565b91506101008501356001600160401b0381111561302b575f5ffd5b61303787828801612e23565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611f826020830184613043565b5f5f5f5f60808587031215613096575f5ffd5b61309f85612bfd565b93506130ad60208601612bfd565b925060408501359150612d9860608601612bfd565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106130f957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613116575f5ffd5b8151611f8281612da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216029081169081811461121b5761121b613121565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f6131be610140830184613043565b979650505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f613225610120830184613043565b9695505050505050565b5f6020828403121561323f575f5ffd5b5051919050565b808201808211156107e4576107e4613121565b5f81518060208401855e5f93019283525090919050565b5f61328461327e8386613259565b84613259565b949350505050565b818103818111156107e4576107e4613121565b634e487b7160e01b5f52601260045260245ffd5b5f826132cd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611f828284613259565b5f6133108285613259565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61333a8284613259565b5f81526001019392505050565b5f6133528285613259565b6001600160f01b03199390931683525050600201919050565b5f6133768285613259565b6001600160f81b03199390931683525050600101919050565b5f61339a8286613259565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b80820281158282048414176107e4576107e4613121565b6001815b6001841115613414578085048111156133f8576133f8613121565b600184161561340657908102905b60019390931c9280026133dd565b935093915050565b5f8261342a575060016107e4565b8161343657505f6107e4565b816001811461344c576002811461345657613472565b60019150506107e4565b60ff84111561346757613467613121565b50506001821b6107e4565b5060208310610133831016604e8410600b8410161715613495575081810a6107e4565b6134a15f1984846133d9565b805f19048211156134b4576134b4613121565b029392505050565b5f611f82838361341c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3046    /// ```
3047    #[rustfmt::skip]
3048    #[allow(clippy::all)]
3049    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3050        b"`\x80`@R`\x046\x10a\x023W_5`\xE0\x1C\x80c\x84V\xCBY\x11a\x01)W\x80c\xB3\xE6\xEB\xD5\x11a\0\xA8W\x80c\xD5Gt\x1F\x11a\0mW\x80c\xD5Gt\x1F\x14a\x06\xF4W\x80c\xE6:\xB1\xE9\x14a\x07\x13W\x80c\xF2\xFD\xE3\x8B\x14a\x073W\x80c\xFAR\xC7\xD8\x14a\x07RW\x80c\xFC\x0CTj\x14a\x07\x95W__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\x06'W\x80c\xB5p\x0Eh\x14a\x06UW\x80c\xB5\xEC\xB3D\x14a\x06tW\x80c\xBE 0\x94\x14a\x06\x9FW\x80c\xC6H\x14\xDD\x14a\x06\xBEW__\xFD[\x80c\xA2\x17\xFD\xDF\x11a\0\xEEW\x80c\xA2\x17\xFD\xDF\x14a\x05GW\x80c\xA2\xD7\x8D\xD5\x14a\x05ZW\x80c\xA3\x06j\xAB\x14a\x05\xACW\x80c\xAC\\*\xD0\x14a\x05\xCBW\x80c\xAD<\xB1\xCC\x14a\x05\xEAW__\xFD[\x80c\x84V\xCBY\x14a\x04\x90W\x80c\x8D\xA5\xCB[\x14a\x04\xA4W\x80c\x91\xD1HT\x14a\x04\xF4W\x80c\x9B0\xA5\xE6\x14a\x05\x13W\x80c\x9E\x9A\x8F1\x14a\x052W__\xFD[\x80c6V\x8A\xBE\x11a\x01\xB5W\x80cR\xD1\x90-\x11a\x01zW\x80cR\xD1\x90-\x14a\x04\x17W\x80cUD\xC2\xF1\x14a\x04+W\x80c\\\x97Z\xBB\x14a\x04EW\x80cj\x91\x1C\xCF\x14a\x04hW\x80cqP\x18\xA6\x14a\x04|W__\xFD[\x80c6V\x8A\xBE\x14a\x03\x9EW\x80c>\x9D\xF9\xB5\x14a\x03\xBDW\x80c?K\xA8:\x14a\x03\xD1W\x80cM\x99\xDD\x16\x14a\x03\xE5W\x80cO\x1E\xF2\x86\x14a\x04\x04W__\xFD[\x80c\x1A \xCDc\x11a\x01\xFBW\x80c\x1A \xCDc\x14a\x02\xF5W\x80c!@\xFE\xCD\x14a\x03\x14W\x80c$\x8A\x9C\xA3\x14a\x033W\x80c//\xF1]\x14a\x03`W\x80c0B@\xBF\x14a\x03\x7FW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x027W\x80c\x02n@+\x14a\x02kW\x80c\x08@\xBAr\x14a\x02\x8CW\x80c\r\x8En,\x14a\x02\xABW\x80c\x13\xB9\x05z\x14a\x02\xD6W[__\xFD[4\x80\x15a\x02BW__\xFD[Pa\x02Va\x02Q6`\x04a+\xD6V[a\x07\xB4V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02vW__\xFD[Pa\x02\x8Aa\x02\x856`\x04a,\x18V[a\x07\xEAV[\0[4\x80\x15a\x02\x97W__\xFD[Pa\x02\x8Aa\x02\xA66`\x04a,@V[a\x08\0V[4\x80\x15a\x02\xB6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02bV[4\x80\x15a\x02\xE1W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a-MV[a\x08\xEDV[4\x80\x15a\x03\0W__\xFD[Pa\x02\x8Aa\x03\x0F6`\x04a-\xB7V[a\t\x06V[4\x80\x15a\x03\x1FW__\xFD[Pa\x02\x8Aa\x03.6`\x04a-\xD2V[a\n\x1AV[4\x80\x15a\x03>W__\xFD[Pa\x03Ra\x03M6`\x04a-\xEBV[a\n.V[`@Q\x90\x81R` \x01a\x02bV[4\x80\x15a\x03kW__\xFD[Pa\x02\x8Aa\x03z6`\x04a.\x02V[a\nNV[4\x80\x15a\x03\x8AW__\xFD[Pa\x02\x8Aa\x03\x996`\x04a.\xACV[a\npV[4\x80\x15a\x03\xA9W__\xFD[Pa\x02\x8Aa\x03\xB86`\x04a.\x02V[a\x0B\xDAV[4\x80\x15a\x03\xC8W__\xFD[Pa\x03R_T\x81V[4\x80\x15a\x03\xDCW__\xFD[Pa\x02\x8Aa\x0C\x12V[4\x80\x15a\x03\xF0W__\xFD[Pa\x02\x8Aa\x03\xFF6`\x04a,\x18V[a\x0C1V[a\x02\x8Aa\x04\x126`\x04a/,V[a\x0CCV[4\x80\x15a\x04\"W__\xFD[Pa\x03Ra\x0C^V[4\x80\x15a\x046W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a/vV[4\x80\x15a\x04PW__\xFD[P_Q` a5l_9_Q\x90_RT`\xFF\x16a\x02VV[4\x80\x15a\x04sW__\xFD[Pa\x02\x8Aa\x0CyV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x8Aa\x0C\x8BV[4\x80\x15a\x04\x9BW__\xFD[Pa\x02\x8Aa\x0C\x9CV[4\x80\x15a\x04\xAFW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02bV[4\x80\x15a\x04\xFFW__\xFD[Pa\x02Va\x05\x0E6`\x04a.\x02V[a\x0C\xBBV[4\x80\x15a\x05\x1EW__\xFD[Pa\x03Ra\x05-6`\x04a/\xBAV[a\x0C\xF1V[4\x80\x15a\x05=W__\xFD[Pa\x03R`\x08T\x81V[4\x80\x15a\x05RW__\xFD[Pa\x03R_\x81V[4\x80\x15a\x05eW__\xFD[Pa\x05\x97a\x05t6`\x04a,@V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02bV[4\x80\x15a\x05\xB7W__\xFD[Pa\x02\x8Aa\x05\xC66`\x04a-\xD2V[a\rKV[4\x80\x15a\x05\xD6W__\xFD[Pa\x02\x8Aa\x05\xE56`\x04a/\xD4V[a\r\\V[4\x80\x15a\x05\xF5W__\xFD[Pa\x06\x1A`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02b\x91\x90a0qV[4\x80\x15a\x062W__\xFD[Pa\x02Va\x06A6`\x04a-\xEBV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06`W__\xFD[P`\x01Ta\x04\xDC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x06\x7FW__\xFD[Pa\x03Ra\x06\x8E6`\x04a-\xD2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06\xAAW__\xFD[Pa\x02\x8Aa\x06\xB96`\x04a0\x83V[a\x0E2V[4\x80\x15a\x06\xC9W__\xFD[Pa\x03Ra\x06\xD86`\x04a,@V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x06\xFFW__\xFD[Pa\x02\x8Aa\x07\x0E6`\x04a.\x02V[a\x0FIV[4\x80\x15a\x07\x1EW__\xFD[Pa\x03R_Q` a5,_9_Q\x90_R\x81V[4\x80\x15a\x07>W__\xFD[Pa\x02\x8Aa\x07M6`\x04a-\xD2V[a\x0FeV[4\x80\x15a\x07]W__\xFD[Pa\x07\x87a\x07l6`\x04a-\xD2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02b\x92\x91\x90a0\xD6V[4\x80\x15a\x07\xA0W__\xFD[P`\x02Ta\x04\xDC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x07\xE4WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x07\xF2a\x0F\xA4V[a\x07\xFC\x82\x82a\x0F\xD4V[PPV[_Q` a5\x8C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x086WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x08TW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81Ua\x08}a\x11rV[a\x08\x87_\x84a\x11zV[Pa\x08\x9F_Q` a5,_9_Q\x90_R\x85a\x11zV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x0Ea\x12\"V[`\x01T`@\x80Qc<\x1A\x08\x15`\xE2\x1B\x81R\x90Q_\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xF0h T\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\tUW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\ty\x91\x90a1\x06V[a\t\x84\x90`\x0Fa15V[\x90Pb\x12u\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x90\x84\x16\x10\x80a\t\xB5WP\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11[\x15a\t\xD3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x83\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[a\n\"a\x0F\xA4V[a\n+\x81a\x12}V[PV[_\x90\x81R_Q` a5L_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\nW\x82a\n.V[a\n`\x81a\x13\x9EV[a\nj\x83\x83a\x11zV[PPPPV[3a\nz\x81a\x13\xA8V[a\n\x83\x85a\x13\xF5V[a\n\x8C\x86a\x140V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\n\xBE\x81\x86\x89a\x14lV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\n\xE5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\n\xF3\x8Aa\x0C\xF1V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x0B:Wa\x0B:a0\xC2V[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x0B\x80Wa\x0B\x80a0\xC2V[\x02\x17\x90UP\x90PP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0W\xD4\xEA\x81\xE9\x86(e:\x8F\x90x\x85A\x97 x\x13s4\xA9+B4~\xAC\xCD\xA8\x0F\xC4\n\x88\x88\x86\x89\x89`@Qa\x0B\xC9\x95\x94\x93\x92\x91\x90a1WV[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0C\x03W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\r\x82\x82a\x15\x01V[PPPV[_Q` a5,_9_Q\x90_Ra\x0C)\x81a\x13\x9EV[a\n+a\x15zV[a\x0C9a\x0F\xA4V[a\x07\xFC\x82\x82a\x15\xDAV[a\x0CKa\x17\x8CV[a\x0CT\x82a\x180V[a\x07\xFC\x82\x82a\x18qV[_a\x0Cga\x19-V[P_Q` a5\x0C_9_Q\x90_R\x90V[a\x0C\x81a\x0F\xA4V[a\x0C\x89a\x19vV[V[a\x0C\x93a\x12\"V[a\x0C\x89_a\x1A\x04V[_Q` a5,_9_Q\x90_Ra\x0C\xB3\x81a\x13\x9EV[a\n+a\x1AtV[_\x91\x82R_Q` a5L_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r.\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\rSa\x0F\xA4V[a\n+\x81a\x1A\xBCV[a\rda\x0F\xA4V[3a\rn\x81a\x1B\xCCV[a\rw\x84a\x13\xF5V[a\r\x80\x85a\x140V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\xB2\x81\x85\x88a\x14lV[`\x01`\x04_a\r\xC0\x89a\x0C\xF1V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x0E\"\x94\x93\x92\x91\x90a1\xC9V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a5\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0EcWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E~WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\x8CWP\x80\x15[\x15a\x0E\xAAW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0E\xD4W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0E\xDD\x86a\x1CMV[a\x0E\xE5a\x11rV[a\x0E\xEDa\x1C^V[a\x0E\xF8\x89\x89\x89a\x1DPV[\x83\x15a\x0F>W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0FR\x82a\n.V[a\x0F[\x81a\x13\x9EV[a\nj\x83\x83a\x15\x01V[a\x0Fma\x12\"V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\x9BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n+\x81a\x1A\x04V[_Q` a5l_9_Q\x90_RT`\xFF\x16\x15a\x0C\x89W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xDD\x82a\x1B\xCCV[3_\x82\x90\x03a\x0F\xFFW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10MW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10q\x91\x90a2/V[\x90P\x82\x81\x10\x15a\x10\x9EW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x0F\x92V[`\x02Ta\x10\xB6\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x1D\xD3V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x10\xDD\x90\x84\x90a2FV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x11\x18\x90\x84\x90a2FV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x11d\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0C\x89a\x1EpV[__Q` a5L_9_Q\x90_Ra\x11\x93\x84\x84a\x0C\xBBV[a\x12\x12W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x11\xC83\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x07\xE4V[_\x91PPa\x07\xE4V[P\x92\x91PPV[3a\x12T\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\x89W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0F\x92V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x12\xB7W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x12\xD8W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13 W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\x13U\x91\x16\x84\x83a\x1E\xA6V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x13\x90\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\n+\x813a\x1F/V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x13\xD7Wa\x13\xD7a0\xC2V[\x14a\n+W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x14\x12\x82\x82a\x1FhV[\x15a\x07\xFCW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x14<\x83a\x0C\xF1V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\n+W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14u\x82a\x1F\x89V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a4\xC8`$\x919\x90P_\x84\x82`@Q` \x01a\x14\xA5\x92\x91\x90a2pV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x14\xC0\x82a \x1FV[\x90Pa\x14\xDD\x81\x85a\x14\xD0\x88a!\x0CV[a\x14\xD8a!\x83V[a\"PV[a\x14\xF9W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[__Q` a5L_9_Q\x90_Ra\x15\x1A\x84\x84a\x0C\xBBV[\x15a\x12\x12W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x07\xE4V[a\x15\x82a#.V[_Q` a5l_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PV[a\x15\xE3\x82a\x1B\xCCV[3_\x82\x90\x03a\x16\x05W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x16HW`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x16\x91W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\x92V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x16\xC7\x90\x84\x90a2\x8CV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x16\xED\x91\x90a2FV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\x17@\x90\x84\x90a2\x8CV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x11d\x91\x81R` \x01\x90V[0`\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\x14\x80a\x18\x12WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x06_Q` a5\x0C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\x89W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x188a\x12\"V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x15\xCFV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xCBWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC8\x91\x81\x01\x90a2/V[`\x01[a\x18\xF3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0F\x92V[_Q` a5\x0C_9_Q\x90_R\x81\x14a\x19#W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\x92V[a\x0C\r\x83\x83a#]V[0`\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\x14a\x0C\x89W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x19\x80\x81a\x1B\xCCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19\xB2\x90Ba2FV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\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\xA3PPPV[a\x1A|a\x0F\xA4V[_Q` a5l_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x15\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1B\x01W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1BIW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x1B\x84\x91\x16\x83\x83a\x1E\xA6V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x1B\xBF\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x1B\xFDWa\x1B\xFDa0\xC2V[\x03a\x1C\x1BW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1C/Wa\x1C/a0\xC2V[\x03a\x07\xFCW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CUa\x1EpV[a\n+\x81a#\xB2V[_Q` a5\x8C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1C\x8FWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1C\xAAWP0;\x15[\x90P\x81\x15\x80\x15a\x1C\xB8WP\x80\x15[\x15a\x1C\xD6W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1D\0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x1DIW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x1DwW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1D\x9EW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x93\x90\x94\x16\x92\x16\x91\x90\x91\x17\x90\x91U`\x08UV[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x1E,WP\x83;\x15=\x17\x15[\x80a\x1DIW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0F\x92V[_Q` a5\x8C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\x89W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x1E\xF0WP\x82;\x15=\x17\x15[\x80a\njW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0F\x92V[a\x1F9\x82\x82a\x0C\xBBV[a\x07\xFCW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0F\x92V[\x80Q\x82Q_\x91\x14\x80\x15a\x1F\x82WP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a4\xEC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x1F\xAFWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x0C\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a <\x83a#\xBAV[\x90P_Q` a4\xEC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a cWa ca2\x9FV[\x84\x82\t\x90P\x82\x80a vWa va2\x9FV[\x82\x82\x08\x90P__a \x86\x83a%\xC2V[\x92P\x90P[\x80a \xEFW\x84\x80a \x9EWa \x9Ea2\x9FV[`\x01\x87\x08\x95P\x84\x80a \xB2Wa \xB2a2\x9FV[\x86\x87\t\x92P\x84\x80a \xC5Wa \xC5a2\x9FV[\x86\x84\t\x92P\x84\x80a \xD8Wa \xD8a2\x9FV[\x84\x84\x08\x92Pa \xE6\x83a%\xC2V[\x92P\x90Pa \x8BV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a!3WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a4\xEC_9_Q\x90_R\x84` \x01Qa!d\x91\x90a2\xB3V[a!{\x90_Q` a4\xEC_9_Q\x90_Ra2\x8CV[\x90R\x92\x91PPV[a!\xAA`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a#\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[P\x15\x15\x95\x94PPPPPV[_Q` a5l_9_Q\x90_RT`\xFF\x16a\x0C\x89W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#f\x82a&\xB9V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#\xAAWa\x0C\r\x82\x82a'\x1CV[a\x07\xFCa'\x8EV[a\x0Fma\x1EpV[__a#\xC5\x83a'\xADV[\x80Q\x90\x91P`0\x81\x14a#\xDAWa#\xDAa2\xD2V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF3Wa#\xF3a,qV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$\x1DW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a$\x8CW\x83`\x01a$7\x83\x86a2\x8CV[a$A\x91\x90a2\x8CV[\x81Q\x81\x10a$QWa$Qa2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a$nWa$na2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a$\"V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a%\x1CW\x83\x81a$\xC8\x85\x88a2\x8CV[a$\xD2\x91\x90a2FV[\x81Q\x81\x10a$\xE2Wa$\xE2a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a%\x02Wa%\x02a2\xE6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$\xB4V[P_a%'\x82a*\xF8V[\x90Pa\x01\0_Q` a4\xEC_9_Q\x90_R_a%E\x86\x89a2\x8CV[\x90P_[\x81\x81\x10\x15a%\xB2W_\x88`\x01a%_\x84\x86a2\x8CV[a%i\x91\x90a2\x8CV[\x81Q\x81\x10a%yWa%ya2\xE6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a%\x91Wa%\x91a2\x9FV[\x85\x87\t\x95P\x83\x80a%\xA4Wa%\xA4a2\x9FV[\x81\x87\x08\x95PP`\x01\x01a%IV[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` a4\xEC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a&\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fpow precompile call failed!\0\0\0\0\0`D\x82\x01R`d\x01a\x0F\x92V[\x80`\x01\x84\x90\x1B\x11\x15a&\x98Wa&\x95\x83\x82a2\x8CV[\x92P[\x80\x80a&\xA6Wa&\xA6a2\x9FV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a&\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F\x92V[_Q` a5\x0C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa'8\x91\x90a2\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a'pW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a'uV[``\x91P[P\x91P\x91Pa'\x85\x85\x83\x83a+XV[\x95\x94PPPPPV[4\x15a\x0C\x89W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a'\xED\x92\x91\x90a2pV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a(\x14\x92\x91\x90a3\x05V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a(6\x91\x90a3/V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a(`\x90\x83\x90\x83\x90` \x01a3GV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCFWa(\xCFa,qV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a(\xF9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a)\x10\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a)zW\x81\x81\x81Q\x81\x10a)?Wa)?a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a)\\Wa)\\a2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a)$V[P_\x84`@Q` \x01a)\x8F\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a*!W_\x83\x82\x81Q\x81\x10a)\xC8Wa)\xC8a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xE5Wa)\xE5a2\xE6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a*\x06\x92\x91\x90a3kV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a)\xADV[P\x86\x88\x87`@Q` \x01a*7\x93\x92\x91\x90a3\x8FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a*e\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a*\x86\x8A`\xFF\x8D\x16a2\x8CV[\x81\x10\x15a*\xE7W\x82\x81\x81Q\x81\x10a*\x9FWa*\x9Fa2\xE6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a*\xB9\x83\x8Da2FV[\x81Q\x81\x10a*\xC9Wa*\xC9a2\xE6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*yV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x12\x1BW\x83\x81\x81Q\x81\x10a+\x17Wa+\x17a2\xE6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a+/\x91\x90a3\xC2V[a+:\x90`\x02a4\xBCV[a+D\x91\x90a3\xC2V[a+N\x90\x83a2FV[\x91P`\x01\x01a*\xFCV[``\x82a+mWa+h\x82a+\xADV[a\x1F\x82V[\x81Q\x15\x80\x15a+\x84WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x12\x1BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F\x92V[\x80Q\x15a+\xBDW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a+\xE6W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1F\x82W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a,\x13W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a,)W__\xFD[a,2\x83a+\xFDV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a,QW__\xFD[a,Z\x83a+\xFDV[\x91Pa,h` \x84\x01a+\xFDV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA7Wa,\xA7a,qV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a,\xBDW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xDFWa,\xDFa,qV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a-\x1DW__\xFD[a-%a,\x85V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a,\x13W__\xFD[____a\x01 \x85\x87\x03\x12\x15a-aW__\xFD[a-k\x86\x86a,\xADV[\x93Pa-z\x86`\x80\x87\x01a-\rV[\x92Pa-\x89\x86`\xC0\x87\x01a-\rV[\x91Pa-\x98a\x01\0\x86\x01a-<V[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\n+W__\xFD[_` \x82\x84\x03\x12\x15a-\xC7W__\xFD[\x815a\x1F\x82\x81a-\xA3V[_` \x82\x84\x03\x12\x15a-\xE2W__\xFD[a\x1F\x82\x82a+\xFDV[_` \x82\x84\x03\x12\x15a-\xFBW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a.\x13W__\xFD[\x825\x91Pa,h` \x84\x01a+\xFDV[_\x82`\x1F\x83\x01\x12a.2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.KWa.Ka,qV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.yWa.ya,qV[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a.\x90W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a.\xC1W__\xFD[a.\xCB\x87\x87a,\xADV[\x94Pa.\xDA\x87`\x80\x88\x01a-\rV[\x93Pa.\xE9\x87`\xC0\x88\x01a-\rV[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x04W__\xFD[a/\x10\x88\x82\x89\x01a.#V[\x92PPa/ a\x01 \x87\x01a-<V[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a/=W__\xFD[a/F\x83a+\xFDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/`W__\xFD[a/l\x85\x82\x86\x01a.#V[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a/\x89W__\xFD[a/\x93\x85\x85a,\xADV[\x92Pa/\xA2\x85`\x80\x86\x01a-\rV[\x91Pa/\xB1\x85`\xC0\x86\x01a-\rV[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a/\xCAW__\xFD[a\x1F\x82\x83\x83a,\xADV[____a\x01 \x85\x87\x03\x12\x15a/\xE8W__\xFD[a/\xF2\x86\x86a,\xADV[\x93Pa0\x01\x86`\x80\x87\x01a-\rV[\x92Pa0\x10\x86`\xC0\x87\x01a-\rV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0+W__\xFD[a07\x87\x82\x88\x01a.#V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x1F\x82` \x83\x01\x84a0CV[____`\x80\x85\x87\x03\x12\x15a0\x96W__\xFD[a0\x9F\x85a+\xFDV[\x93Pa0\xAD` \x86\x01a+\xFDV[\x92P`@\x85\x015\x91Pa-\x98``\x86\x01a+\xFDV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a0\xF9WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a1\x16W__\xFD[\x81Qa\x1F\x82\x81a-\xA3V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a\x12\x1BWa\x12\x1Ba1!V[\x85Q\x81R` \x80\x87\x01Q\x90\x82\x01R`@\x80\x87\x01Q\x90\x82\x01R``\x80\x87\x01Q\x90\x82\x01R\x84Q`\x80\x82\x01R` \x85\x01Q`\xA0\x82\x01Ra\xFF\xFF\x84\x16`\xC0\x82\x01R\x82Q`\xE0\x82\x01R` \x83\x01Qa\x01\0\x82\x01Ra\x01@a\x01 \x82\x01R_a1\xBEa\x01@\x83\x01\x84a0CV[\x97\x96PPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_a2%a\x01 \x83\x01\x84a0CV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a2?W__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x07\xE4Wa\x07\xE4a1!V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x84a2~\x83\x86a2YV[\x84a2YV[\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x07\xE4Wa\x07\xE4a1!V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a2\xCDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x1F\x82\x82\x84a2YV[_a3\x10\x82\x85a2YV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a3:\x82\x84a2YV[_\x81R`\x01\x01\x93\x92PPPV[_a3R\x82\x85a2YV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a3v\x82\x85a2YV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a3\x9A\x82\x86a2YV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xE4Wa\x07\xE4a1!V[`\x01\x81[`\x01\x84\x11\x15a4\x14W\x80\x85\x04\x81\x11\x15a3\xF8Wa3\xF8a1!V[`\x01\x84\x16\x15a4\x06W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a3\xDDV[\x93P\x93\x91PPV[_\x82a4*WP`\x01a\x07\xE4V[\x81a46WP_a\x07\xE4V[\x81`\x01\x81\x14a4LW`\x02\x81\x14a4VWa4rV[`\x01\x91PPa\x07\xE4V[`\xFF\x84\x11\x15a4gWa4ga1!V[PP`\x01\x82\x1Ba\x07\xE4V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a4\x95WP\x81\x81\na\x07\xE4V[a4\xA1_\x19\x84\x84a3\xD9V[\x80_\x19\x04\x82\x11\x15a4\xB4Wa4\xB4a1!V[\x02\x93\x92PPPV[_a\x1F\x82\x83\x83a4\x1CV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
3051    );
3052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3053    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
3054    ```solidity
3055    error AccessControlBadConfirmation();
3056    ```*/
3057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3058    #[derive(Clone)]
3059    pub struct AccessControlBadConfirmation {}
3060    #[allow(
3061        non_camel_case_types,
3062        non_snake_case,
3063        clippy::pub_underscore_fields,
3064        clippy::style
3065    )]
3066    const _: () = {
3067        use alloy::sol_types as alloy_sol_types;
3068        #[doc(hidden)]
3069        type UnderlyingSolTuple<'a> = ();
3070        #[doc(hidden)]
3071        type UnderlyingRustTuple<'a> = ();
3072        #[cfg(test)]
3073        #[allow(dead_code, unreachable_patterns)]
3074        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3075            match _t {
3076                alloy_sol_types::private::AssertTypeEq::<
3077                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3078                >(_) => {},
3079            }
3080        }
3081        #[automatically_derived]
3082        #[doc(hidden)]
3083        impl ::core::convert::From<AccessControlBadConfirmation> for UnderlyingRustTuple<'_> {
3084            fn from(value: AccessControlBadConfirmation) -> Self {
3085                ()
3086            }
3087        }
3088        #[automatically_derived]
3089        #[doc(hidden)]
3090        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AccessControlBadConfirmation {
3091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3092                Self {}
3093            }
3094        }
3095        #[automatically_derived]
3096        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
3097            type Parameters<'a> = UnderlyingSolTuple<'a>;
3098            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3099            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
3100            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
3101            #[inline]
3102            fn new<'a>(
3103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3104            ) -> Self {
3105                tuple.into()
3106            }
3107            #[inline]
3108            fn tokenize(&self) -> Self::Token<'_> {
3109                ()
3110            }
3111        }
3112    };
3113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3114    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
3115    ```solidity
3116    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
3117    ```*/
3118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3119    #[derive(Clone)]
3120    pub struct AccessControlUnauthorizedAccount {
3121        #[allow(missing_docs)]
3122        pub account: alloy::sol_types::private::Address,
3123        #[allow(missing_docs)]
3124        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
3125    }
3126    #[allow(
3127        non_camel_case_types,
3128        non_snake_case,
3129        clippy::pub_underscore_fields,
3130        clippy::style
3131    )]
3132    const _: () = {
3133        use alloy::sol_types as alloy_sol_types;
3134        #[doc(hidden)]
3135        type UnderlyingSolTuple<'a> = (
3136            alloy::sol_types::sol_data::Address,
3137            alloy::sol_types::sol_data::FixedBytes<32>,
3138        );
3139        #[doc(hidden)]
3140        type UnderlyingRustTuple<'a> = (
3141            alloy::sol_types::private::Address,
3142            alloy::sol_types::private::FixedBytes<32>,
3143        );
3144        #[cfg(test)]
3145        #[allow(dead_code, unreachable_patterns)]
3146        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3147            match _t {
3148                alloy_sol_types::private::AssertTypeEq::<
3149                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3150                >(_) => {},
3151            }
3152        }
3153        #[automatically_derived]
3154        #[doc(hidden)]
3155        impl ::core::convert::From<AccessControlUnauthorizedAccount> for UnderlyingRustTuple<'_> {
3156            fn from(value: AccessControlUnauthorizedAccount) -> Self {
3157                (value.account, value.neededRole)
3158            }
3159        }
3160        #[automatically_derived]
3161        #[doc(hidden)]
3162        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AccessControlUnauthorizedAccount {
3163            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3164                Self {
3165                    account: tuple.0,
3166                    neededRole: tuple.1,
3167                }
3168            }
3169        }
3170        #[automatically_derived]
3171        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
3172            type Parameters<'a> = UnderlyingSolTuple<'a>;
3173            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3174            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
3175            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
3176            #[inline]
3177            fn new<'a>(
3178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3179            ) -> Self {
3180                tuple.into()
3181            }
3182            #[inline]
3183            fn tokenize(&self) -> Self::Token<'_> {
3184                (
3185                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3186                        &self.account,
3187                    ),
3188                    <alloy::sol_types::sol_data::FixedBytes<
3189                        32,
3190                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
3191                )
3192            }
3193        }
3194    };
3195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3196    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
3197    ```solidity
3198    error AddressEmptyCode(address target);
3199    ```*/
3200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3201    #[derive(Clone)]
3202    pub struct AddressEmptyCode {
3203        #[allow(missing_docs)]
3204        pub target: alloy::sol_types::private::Address,
3205    }
3206    #[allow(
3207        non_camel_case_types,
3208        non_snake_case,
3209        clippy::pub_underscore_fields,
3210        clippy::style
3211    )]
3212    const _: () = {
3213        use alloy::sol_types as alloy_sol_types;
3214        #[doc(hidden)]
3215        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3216        #[doc(hidden)]
3217        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3218        #[cfg(test)]
3219        #[allow(dead_code, unreachable_patterns)]
3220        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3221            match _t {
3222                alloy_sol_types::private::AssertTypeEq::<
3223                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3224                >(_) => {},
3225            }
3226        }
3227        #[automatically_derived]
3228        #[doc(hidden)]
3229        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
3230            fn from(value: AddressEmptyCode) -> Self {
3231                (value.target,)
3232            }
3233        }
3234        #[automatically_derived]
3235        #[doc(hidden)]
3236        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
3237            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3238                Self { target: tuple.0 }
3239            }
3240        }
3241        #[automatically_derived]
3242        impl alloy_sol_types::SolError for AddressEmptyCode {
3243            type Parameters<'a> = UnderlyingSolTuple<'a>;
3244            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3245            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
3246            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
3247            #[inline]
3248            fn new<'a>(
3249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3250            ) -> Self {
3251                tuple.into()
3252            }
3253            #[inline]
3254            fn tokenize(&self) -> Self::Token<'_> {
3255                (
3256                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3257                        &self.target,
3258                    ),
3259                )
3260            }
3261        }
3262    };
3263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3264    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
3265    ```solidity
3266    error BLSSigVerificationFailed();
3267    ```*/
3268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3269    #[derive(Clone)]
3270    pub struct BLSSigVerificationFailed {}
3271    #[allow(
3272        non_camel_case_types,
3273        non_snake_case,
3274        clippy::pub_underscore_fields,
3275        clippy::style
3276    )]
3277    const _: () = {
3278        use alloy::sol_types as alloy_sol_types;
3279        #[doc(hidden)]
3280        type UnderlyingSolTuple<'a> = ();
3281        #[doc(hidden)]
3282        type UnderlyingRustTuple<'a> = ();
3283        #[cfg(test)]
3284        #[allow(dead_code, unreachable_patterns)]
3285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3286            match _t {
3287                alloy_sol_types::private::AssertTypeEq::<
3288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3289                >(_) => {},
3290            }
3291        }
3292        #[automatically_derived]
3293        #[doc(hidden)]
3294        impl ::core::convert::From<BLSSigVerificationFailed> for UnderlyingRustTuple<'_> {
3295            fn from(value: BLSSigVerificationFailed) -> Self {
3296                ()
3297            }
3298        }
3299        #[automatically_derived]
3300        #[doc(hidden)]
3301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigVerificationFailed {
3302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3303                Self {}
3304            }
3305        }
3306        #[automatically_derived]
3307        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
3308            type Parameters<'a> = UnderlyingSolTuple<'a>;
3309            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3310            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
3311            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
3312            #[inline]
3313            fn new<'a>(
3314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3315            ) -> Self {
3316                tuple.into()
3317            }
3318            #[inline]
3319            fn tokenize(&self) -> Self::Token<'_> {
3320                ()
3321            }
3322        }
3323    };
3324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3325    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
3326    ```solidity
3327    error BlsKeyAlreadyUsed();
3328    ```*/
3329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3330    #[derive(Clone)]
3331    pub struct BlsKeyAlreadyUsed {}
3332    #[allow(
3333        non_camel_case_types,
3334        non_snake_case,
3335        clippy::pub_underscore_fields,
3336        clippy::style
3337    )]
3338    const _: () = {
3339        use alloy::sol_types as alloy_sol_types;
3340        #[doc(hidden)]
3341        type UnderlyingSolTuple<'a> = ();
3342        #[doc(hidden)]
3343        type UnderlyingRustTuple<'a> = ();
3344        #[cfg(test)]
3345        #[allow(dead_code, unreachable_patterns)]
3346        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3347            match _t {
3348                alloy_sol_types::private::AssertTypeEq::<
3349                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3350                >(_) => {},
3351            }
3352        }
3353        #[automatically_derived]
3354        #[doc(hidden)]
3355        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
3356            fn from(value: BlsKeyAlreadyUsed) -> Self {
3357                ()
3358            }
3359        }
3360        #[automatically_derived]
3361        #[doc(hidden)]
3362        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
3363            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3364                Self {}
3365            }
3366        }
3367        #[automatically_derived]
3368        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
3369            type Parameters<'a> = UnderlyingSolTuple<'a>;
3370            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3371            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
3372            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
3373            #[inline]
3374            fn new<'a>(
3375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3376            ) -> Self {
3377                tuple.into()
3378            }
3379            #[inline]
3380            fn tokenize(&self) -> Self::Token<'_> {
3381                ()
3382            }
3383        }
3384    };
3385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3386    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
3387    ```solidity
3388    error DeprecatedFunction();
3389    ```*/
3390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3391    #[derive(Clone)]
3392    pub struct DeprecatedFunction {}
3393    #[allow(
3394        non_camel_case_types,
3395        non_snake_case,
3396        clippy::pub_underscore_fields,
3397        clippy::style
3398    )]
3399    const _: () = {
3400        use alloy::sol_types as alloy_sol_types;
3401        #[doc(hidden)]
3402        type UnderlyingSolTuple<'a> = ();
3403        #[doc(hidden)]
3404        type UnderlyingRustTuple<'a> = ();
3405        #[cfg(test)]
3406        #[allow(dead_code, unreachable_patterns)]
3407        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3408            match _t {
3409                alloy_sol_types::private::AssertTypeEq::<
3410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3411                >(_) => {},
3412            }
3413        }
3414        #[automatically_derived]
3415        #[doc(hidden)]
3416        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
3417            fn from(value: DeprecatedFunction) -> Self {
3418                ()
3419            }
3420        }
3421        #[automatically_derived]
3422        #[doc(hidden)]
3423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
3424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3425                Self {}
3426            }
3427        }
3428        #[automatically_derived]
3429        impl alloy_sol_types::SolError for DeprecatedFunction {
3430            type Parameters<'a> = UnderlyingSolTuple<'a>;
3431            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3432            const SIGNATURE: &'static str = "DeprecatedFunction()";
3433            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
3434            #[inline]
3435            fn new<'a>(
3436                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3437            ) -> Self {
3438                tuple.into()
3439            }
3440            #[inline]
3441            fn tokenize(&self) -> Self::Token<'_> {
3442                ()
3443            }
3444        }
3445    };
3446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3447    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
3448    ```solidity
3449    error ERC1967InvalidImplementation(address implementation);
3450    ```*/
3451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3452    #[derive(Clone)]
3453    pub struct ERC1967InvalidImplementation {
3454        #[allow(missing_docs)]
3455        pub implementation: alloy::sol_types::private::Address,
3456    }
3457    #[allow(
3458        non_camel_case_types,
3459        non_snake_case,
3460        clippy::pub_underscore_fields,
3461        clippy::style
3462    )]
3463    const _: () = {
3464        use alloy::sol_types as alloy_sol_types;
3465        #[doc(hidden)]
3466        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3467        #[doc(hidden)]
3468        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3469        #[cfg(test)]
3470        #[allow(dead_code, unreachable_patterns)]
3471        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3472            match _t {
3473                alloy_sol_types::private::AssertTypeEq::<
3474                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3475                >(_) => {},
3476            }
3477        }
3478        #[automatically_derived]
3479        #[doc(hidden)]
3480        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
3481            fn from(value: ERC1967InvalidImplementation) -> Self {
3482                (value.implementation,)
3483            }
3484        }
3485        #[automatically_derived]
3486        #[doc(hidden)]
3487        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
3488            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3489                Self {
3490                    implementation: tuple.0,
3491                }
3492            }
3493        }
3494        #[automatically_derived]
3495        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
3496            type Parameters<'a> = UnderlyingSolTuple<'a>;
3497            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3498            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
3499            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
3500            #[inline]
3501            fn new<'a>(
3502                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3503            ) -> Self {
3504                tuple.into()
3505            }
3506            #[inline]
3507            fn tokenize(&self) -> Self::Token<'_> {
3508                (
3509                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3510                        &self.implementation,
3511                    ),
3512                )
3513            }
3514        }
3515    };
3516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3517    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
3518    ```solidity
3519    error ERC1967NonPayable();
3520    ```*/
3521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3522    #[derive(Clone)]
3523    pub struct ERC1967NonPayable {}
3524    #[allow(
3525        non_camel_case_types,
3526        non_snake_case,
3527        clippy::pub_underscore_fields,
3528        clippy::style
3529    )]
3530    const _: () = {
3531        use alloy::sol_types as alloy_sol_types;
3532        #[doc(hidden)]
3533        type UnderlyingSolTuple<'a> = ();
3534        #[doc(hidden)]
3535        type UnderlyingRustTuple<'a> = ();
3536        #[cfg(test)]
3537        #[allow(dead_code, unreachable_patterns)]
3538        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3539            match _t {
3540                alloy_sol_types::private::AssertTypeEq::<
3541                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3542                >(_) => {},
3543            }
3544        }
3545        #[automatically_derived]
3546        #[doc(hidden)]
3547        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
3548            fn from(value: ERC1967NonPayable) -> Self {
3549                ()
3550            }
3551        }
3552        #[automatically_derived]
3553        #[doc(hidden)]
3554        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
3555            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3556                Self {}
3557            }
3558        }
3559        #[automatically_derived]
3560        impl alloy_sol_types::SolError for ERC1967NonPayable {
3561            type Parameters<'a> = UnderlyingSolTuple<'a>;
3562            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3563            const SIGNATURE: &'static str = "ERC1967NonPayable()";
3564            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
3565            #[inline]
3566            fn new<'a>(
3567                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3568            ) -> Self {
3569                tuple.into()
3570            }
3571            #[inline]
3572            fn tokenize(&self) -> Self::Token<'_> {
3573                ()
3574            }
3575        }
3576    };
3577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3578    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
3579    ```solidity
3580    error EnforcedPause();
3581    ```*/
3582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3583    #[derive(Clone)]
3584    pub struct EnforcedPause {}
3585    #[allow(
3586        non_camel_case_types,
3587        non_snake_case,
3588        clippy::pub_underscore_fields,
3589        clippy::style
3590    )]
3591    const _: () = {
3592        use alloy::sol_types as alloy_sol_types;
3593        #[doc(hidden)]
3594        type UnderlyingSolTuple<'a> = ();
3595        #[doc(hidden)]
3596        type UnderlyingRustTuple<'a> = ();
3597        #[cfg(test)]
3598        #[allow(dead_code, unreachable_patterns)]
3599        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3600            match _t {
3601                alloy_sol_types::private::AssertTypeEq::<
3602                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3603                >(_) => {},
3604            }
3605        }
3606        #[automatically_derived]
3607        #[doc(hidden)]
3608        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
3609            fn from(value: EnforcedPause) -> Self {
3610                ()
3611            }
3612        }
3613        #[automatically_derived]
3614        #[doc(hidden)]
3615        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
3616            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3617                Self {}
3618            }
3619        }
3620        #[automatically_derived]
3621        impl alloy_sol_types::SolError for EnforcedPause {
3622            type Parameters<'a> = UnderlyingSolTuple<'a>;
3623            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3624            const SIGNATURE: &'static str = "EnforcedPause()";
3625            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
3626            #[inline]
3627            fn new<'a>(
3628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3629            ) -> Self {
3630                tuple.into()
3631            }
3632            #[inline]
3633            fn tokenize(&self) -> Self::Token<'_> {
3634                ()
3635            }
3636        }
3637    };
3638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3639    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
3640    ```solidity
3641    error ExitEscrowPeriodInvalid();
3642    ```*/
3643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3644    #[derive(Clone)]
3645    pub struct ExitEscrowPeriodInvalid {}
3646    #[allow(
3647        non_camel_case_types,
3648        non_snake_case,
3649        clippy::pub_underscore_fields,
3650        clippy::style
3651    )]
3652    const _: () = {
3653        use alloy::sol_types as alloy_sol_types;
3654        #[doc(hidden)]
3655        type UnderlyingSolTuple<'a> = ();
3656        #[doc(hidden)]
3657        type UnderlyingRustTuple<'a> = ();
3658        #[cfg(test)]
3659        #[allow(dead_code, unreachable_patterns)]
3660        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3661            match _t {
3662                alloy_sol_types::private::AssertTypeEq::<
3663                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3664                >(_) => {},
3665            }
3666        }
3667        #[automatically_derived]
3668        #[doc(hidden)]
3669        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
3670            fn from(value: ExitEscrowPeriodInvalid) -> Self {
3671                ()
3672            }
3673        }
3674        #[automatically_derived]
3675        #[doc(hidden)]
3676        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
3677            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3678                Self {}
3679            }
3680        }
3681        #[automatically_derived]
3682        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
3683            type Parameters<'a> = UnderlyingSolTuple<'a>;
3684            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3685            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
3686            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
3687            #[inline]
3688            fn new<'a>(
3689                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3690            ) -> Self {
3691                tuple.into()
3692            }
3693            #[inline]
3694            fn tokenize(&self) -> Self::Token<'_> {
3695                ()
3696            }
3697        }
3698    };
3699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3700    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
3701    ```solidity
3702    error ExpectedPause();
3703    ```*/
3704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3705    #[derive(Clone)]
3706    pub struct ExpectedPause {}
3707    #[allow(
3708        non_camel_case_types,
3709        non_snake_case,
3710        clippy::pub_underscore_fields,
3711        clippy::style
3712    )]
3713    const _: () = {
3714        use alloy::sol_types as alloy_sol_types;
3715        #[doc(hidden)]
3716        type UnderlyingSolTuple<'a> = ();
3717        #[doc(hidden)]
3718        type UnderlyingRustTuple<'a> = ();
3719        #[cfg(test)]
3720        #[allow(dead_code, unreachable_patterns)]
3721        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3722            match _t {
3723                alloy_sol_types::private::AssertTypeEq::<
3724                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3725                >(_) => {},
3726            }
3727        }
3728        #[automatically_derived]
3729        #[doc(hidden)]
3730        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
3731            fn from(value: ExpectedPause) -> Self {
3732                ()
3733            }
3734        }
3735        #[automatically_derived]
3736        #[doc(hidden)]
3737        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
3738            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3739                Self {}
3740            }
3741        }
3742        #[automatically_derived]
3743        impl alloy_sol_types::SolError for ExpectedPause {
3744            type Parameters<'a> = UnderlyingSolTuple<'a>;
3745            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3746            const SIGNATURE: &'static str = "ExpectedPause()";
3747            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
3748            #[inline]
3749            fn new<'a>(
3750                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3751            ) -> Self {
3752                tuple.into()
3753            }
3754            #[inline]
3755            fn tokenize(&self) -> Self::Token<'_> {
3756                ()
3757            }
3758        }
3759    };
3760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3761    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
3762    ```solidity
3763    error FailedInnerCall();
3764    ```*/
3765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3766    #[derive(Clone)]
3767    pub struct FailedInnerCall {}
3768    #[allow(
3769        non_camel_case_types,
3770        non_snake_case,
3771        clippy::pub_underscore_fields,
3772        clippy::style
3773    )]
3774    const _: () = {
3775        use alloy::sol_types as alloy_sol_types;
3776        #[doc(hidden)]
3777        type UnderlyingSolTuple<'a> = ();
3778        #[doc(hidden)]
3779        type UnderlyingRustTuple<'a> = ();
3780        #[cfg(test)]
3781        #[allow(dead_code, unreachable_patterns)]
3782        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3783            match _t {
3784                alloy_sol_types::private::AssertTypeEq::<
3785                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3786                >(_) => {},
3787            }
3788        }
3789        #[automatically_derived]
3790        #[doc(hidden)]
3791        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
3792            fn from(value: FailedInnerCall) -> Self {
3793                ()
3794            }
3795        }
3796        #[automatically_derived]
3797        #[doc(hidden)]
3798        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
3799            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3800                Self {}
3801            }
3802        }
3803        #[automatically_derived]
3804        impl alloy_sol_types::SolError for FailedInnerCall {
3805            type Parameters<'a> = UnderlyingSolTuple<'a>;
3806            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3807            const SIGNATURE: &'static str = "FailedInnerCall()";
3808            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
3809            #[inline]
3810            fn new<'a>(
3811                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3812            ) -> Self {
3813                tuple.into()
3814            }
3815            #[inline]
3816            fn tokenize(&self) -> Self::Token<'_> {
3817                ()
3818            }
3819        }
3820    };
3821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3822    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
3823    ```solidity
3824    error InsufficientAllowance(uint256, uint256);
3825    ```*/
3826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3827    #[derive(Clone)]
3828    pub struct InsufficientAllowance {
3829        #[allow(missing_docs)]
3830        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3831        #[allow(missing_docs)]
3832        pub _1: alloy::sol_types::private::primitives::aliases::U256,
3833    }
3834    #[allow(
3835        non_camel_case_types,
3836        non_snake_case,
3837        clippy::pub_underscore_fields,
3838        clippy::style
3839    )]
3840    const _: () = {
3841        use alloy::sol_types as alloy_sol_types;
3842        #[doc(hidden)]
3843        type UnderlyingSolTuple<'a> = (
3844            alloy::sol_types::sol_data::Uint<256>,
3845            alloy::sol_types::sol_data::Uint<256>,
3846        );
3847        #[doc(hidden)]
3848        type UnderlyingRustTuple<'a> = (
3849            alloy::sol_types::private::primitives::aliases::U256,
3850            alloy::sol_types::private::primitives::aliases::U256,
3851        );
3852        #[cfg(test)]
3853        #[allow(dead_code, unreachable_patterns)]
3854        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3855            match _t {
3856                alloy_sol_types::private::AssertTypeEq::<
3857                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3858                >(_) => {},
3859            }
3860        }
3861        #[automatically_derived]
3862        #[doc(hidden)]
3863        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
3864            fn from(value: InsufficientAllowance) -> Self {
3865                (value._0, value._1)
3866            }
3867        }
3868        #[automatically_derived]
3869        #[doc(hidden)]
3870        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
3871            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3872                Self {
3873                    _0: tuple.0,
3874                    _1: tuple.1,
3875                }
3876            }
3877        }
3878        #[automatically_derived]
3879        impl alloy_sol_types::SolError for InsufficientAllowance {
3880            type Parameters<'a> = UnderlyingSolTuple<'a>;
3881            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3882            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
3883            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
3884            #[inline]
3885            fn new<'a>(
3886                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3887            ) -> Self {
3888                tuple.into()
3889            }
3890            #[inline]
3891            fn tokenize(&self) -> Self::Token<'_> {
3892                (
3893                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3894                        &self._0,
3895                    ),
3896                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3897                        &self._1,
3898                    ),
3899                )
3900            }
3901        }
3902    };
3903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3904    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
3905    ```solidity
3906    error InsufficientBalance(uint256);
3907    ```*/
3908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3909    #[derive(Clone)]
3910    pub struct InsufficientBalance {
3911        #[allow(missing_docs)]
3912        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3913    }
3914    #[allow(
3915        non_camel_case_types,
3916        non_snake_case,
3917        clippy::pub_underscore_fields,
3918        clippy::style
3919    )]
3920    const _: () = {
3921        use alloy::sol_types as alloy_sol_types;
3922        #[doc(hidden)]
3923        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3924        #[doc(hidden)]
3925        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3926        #[cfg(test)]
3927        #[allow(dead_code, unreachable_patterns)]
3928        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3929            match _t {
3930                alloy_sol_types::private::AssertTypeEq::<
3931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3932                >(_) => {},
3933            }
3934        }
3935        #[automatically_derived]
3936        #[doc(hidden)]
3937        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
3938            fn from(value: InsufficientBalance) -> Self {
3939                (value._0,)
3940            }
3941        }
3942        #[automatically_derived]
3943        #[doc(hidden)]
3944        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
3945            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3946                Self { _0: tuple.0 }
3947            }
3948        }
3949        #[automatically_derived]
3950        impl alloy_sol_types::SolError for InsufficientBalance {
3951            type Parameters<'a> = UnderlyingSolTuple<'a>;
3952            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3953            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
3954            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
3955            #[inline]
3956            fn new<'a>(
3957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3958            ) -> Self {
3959                tuple.into()
3960            }
3961            #[inline]
3962            fn tokenize(&self) -> Self::Token<'_> {
3963                (
3964                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3965                        &self._0,
3966                    ),
3967                )
3968            }
3969        }
3970    };
3971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3972    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
3973    ```solidity
3974    error InvalidCommission();
3975    ```*/
3976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3977    #[derive(Clone)]
3978    pub struct InvalidCommission {}
3979    #[allow(
3980        non_camel_case_types,
3981        non_snake_case,
3982        clippy::pub_underscore_fields,
3983        clippy::style
3984    )]
3985    const _: () = {
3986        use alloy::sol_types as alloy_sol_types;
3987        #[doc(hidden)]
3988        type UnderlyingSolTuple<'a> = ();
3989        #[doc(hidden)]
3990        type UnderlyingRustTuple<'a> = ();
3991        #[cfg(test)]
3992        #[allow(dead_code, unreachable_patterns)]
3993        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3994            match _t {
3995                alloy_sol_types::private::AssertTypeEq::<
3996                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3997                >(_) => {},
3998            }
3999        }
4000        #[automatically_derived]
4001        #[doc(hidden)]
4002        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
4003            fn from(value: InvalidCommission) -> Self {
4004                ()
4005            }
4006        }
4007        #[automatically_derived]
4008        #[doc(hidden)]
4009        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
4010            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4011                Self {}
4012            }
4013        }
4014        #[automatically_derived]
4015        impl alloy_sol_types::SolError for InvalidCommission {
4016            type Parameters<'a> = UnderlyingSolTuple<'a>;
4017            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4018            const SIGNATURE: &'static str = "InvalidCommission()";
4019            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
4020            #[inline]
4021            fn new<'a>(
4022                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4023            ) -> Self {
4024                tuple.into()
4025            }
4026            #[inline]
4027            fn tokenize(&self) -> Self::Token<'_> {
4028                ()
4029            }
4030        }
4031    };
4032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4033    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4034    ```solidity
4035    error InvalidInitialization();
4036    ```*/
4037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4038    #[derive(Clone)]
4039    pub struct InvalidInitialization {}
4040    #[allow(
4041        non_camel_case_types,
4042        non_snake_case,
4043        clippy::pub_underscore_fields,
4044        clippy::style
4045    )]
4046    const _: () = {
4047        use alloy::sol_types as alloy_sol_types;
4048        #[doc(hidden)]
4049        type UnderlyingSolTuple<'a> = ();
4050        #[doc(hidden)]
4051        type UnderlyingRustTuple<'a> = ();
4052        #[cfg(test)]
4053        #[allow(dead_code, unreachable_patterns)]
4054        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4055            match _t {
4056                alloy_sol_types::private::AssertTypeEq::<
4057                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4058                >(_) => {},
4059            }
4060        }
4061        #[automatically_derived]
4062        #[doc(hidden)]
4063        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4064            fn from(value: InvalidInitialization) -> Self {
4065                ()
4066            }
4067        }
4068        #[automatically_derived]
4069        #[doc(hidden)]
4070        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4071            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4072                Self {}
4073            }
4074        }
4075        #[automatically_derived]
4076        impl alloy_sol_types::SolError for InvalidInitialization {
4077            type Parameters<'a> = UnderlyingSolTuple<'a>;
4078            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4079            const SIGNATURE: &'static str = "InvalidInitialization()";
4080            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4081            #[inline]
4082            fn new<'a>(
4083                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4084            ) -> Self {
4085                tuple.into()
4086            }
4087            #[inline]
4088            fn tokenize(&self) -> Self::Token<'_> {
4089                ()
4090            }
4091        }
4092    };
4093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4094    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
4095    ```solidity
4096    error InvalidSchnorrVK();
4097    ```*/
4098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4099    #[derive(Clone)]
4100    pub struct InvalidSchnorrVK {}
4101    #[allow(
4102        non_camel_case_types,
4103        non_snake_case,
4104        clippy::pub_underscore_fields,
4105        clippy::style
4106    )]
4107    const _: () = {
4108        use alloy::sol_types as alloy_sol_types;
4109        #[doc(hidden)]
4110        type UnderlyingSolTuple<'a> = ();
4111        #[doc(hidden)]
4112        type UnderlyingRustTuple<'a> = ();
4113        #[cfg(test)]
4114        #[allow(dead_code, unreachable_patterns)]
4115        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4116            match _t {
4117                alloy_sol_types::private::AssertTypeEq::<
4118                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4119                >(_) => {},
4120            }
4121        }
4122        #[automatically_derived]
4123        #[doc(hidden)]
4124        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
4125            fn from(value: InvalidSchnorrVK) -> Self {
4126                ()
4127            }
4128        }
4129        #[automatically_derived]
4130        #[doc(hidden)]
4131        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
4132            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4133                Self {}
4134            }
4135        }
4136        #[automatically_derived]
4137        impl alloy_sol_types::SolError for InvalidSchnorrVK {
4138            type Parameters<'a> = UnderlyingSolTuple<'a>;
4139            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4140            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
4141            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
4142            #[inline]
4143            fn new<'a>(
4144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4145            ) -> Self {
4146                tuple.into()
4147            }
4148            #[inline]
4149            fn tokenize(&self) -> Self::Token<'_> {
4150                ()
4151            }
4152        }
4153    };
4154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4155    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
4156    ```solidity
4157    error NotInitializing();
4158    ```*/
4159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4160    #[derive(Clone)]
4161    pub struct NotInitializing {}
4162    #[allow(
4163        non_camel_case_types,
4164        non_snake_case,
4165        clippy::pub_underscore_fields,
4166        clippy::style
4167    )]
4168    const _: () = {
4169        use alloy::sol_types as alloy_sol_types;
4170        #[doc(hidden)]
4171        type UnderlyingSolTuple<'a> = ();
4172        #[doc(hidden)]
4173        type UnderlyingRustTuple<'a> = ();
4174        #[cfg(test)]
4175        #[allow(dead_code, unreachable_patterns)]
4176        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4177            match _t {
4178                alloy_sol_types::private::AssertTypeEq::<
4179                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4180                >(_) => {},
4181            }
4182        }
4183        #[automatically_derived]
4184        #[doc(hidden)]
4185        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
4186            fn from(value: NotInitializing) -> Self {
4187                ()
4188            }
4189        }
4190        #[automatically_derived]
4191        #[doc(hidden)]
4192        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
4193            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4194                Self {}
4195            }
4196        }
4197        #[automatically_derived]
4198        impl alloy_sol_types::SolError for NotInitializing {
4199            type Parameters<'a> = UnderlyingSolTuple<'a>;
4200            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4201            const SIGNATURE: &'static str = "NotInitializing()";
4202            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
4203            #[inline]
4204            fn new<'a>(
4205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4206            ) -> Self {
4207                tuple.into()
4208            }
4209            #[inline]
4210            fn tokenize(&self) -> Self::Token<'_> {
4211                ()
4212            }
4213        }
4214    };
4215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4216    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
4217    ```solidity
4218    error NothingToWithdraw();
4219    ```*/
4220    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4221    #[derive(Clone)]
4222    pub struct NothingToWithdraw {}
4223    #[allow(
4224        non_camel_case_types,
4225        non_snake_case,
4226        clippy::pub_underscore_fields,
4227        clippy::style
4228    )]
4229    const _: () = {
4230        use alloy::sol_types as alloy_sol_types;
4231        #[doc(hidden)]
4232        type UnderlyingSolTuple<'a> = ();
4233        #[doc(hidden)]
4234        type UnderlyingRustTuple<'a> = ();
4235        #[cfg(test)]
4236        #[allow(dead_code, unreachable_patterns)]
4237        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4238            match _t {
4239                alloy_sol_types::private::AssertTypeEq::<
4240                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4241                >(_) => {},
4242            }
4243        }
4244        #[automatically_derived]
4245        #[doc(hidden)]
4246        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
4247            fn from(value: NothingToWithdraw) -> Self {
4248                ()
4249            }
4250        }
4251        #[automatically_derived]
4252        #[doc(hidden)]
4253        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
4254            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4255                Self {}
4256            }
4257        }
4258        #[automatically_derived]
4259        impl alloy_sol_types::SolError for NothingToWithdraw {
4260            type Parameters<'a> = UnderlyingSolTuple<'a>;
4261            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4262            const SIGNATURE: &'static str = "NothingToWithdraw()";
4263            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
4264            #[inline]
4265            fn new<'a>(
4266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4267            ) -> Self {
4268                tuple.into()
4269            }
4270            #[inline]
4271            fn tokenize(&self) -> Self::Token<'_> {
4272                ()
4273            }
4274        }
4275    };
4276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4277    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
4278    ```solidity
4279    error OwnableInvalidOwner(address owner);
4280    ```*/
4281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4282    #[derive(Clone)]
4283    pub struct OwnableInvalidOwner {
4284        #[allow(missing_docs)]
4285        pub owner: alloy::sol_types::private::Address,
4286    }
4287    #[allow(
4288        non_camel_case_types,
4289        non_snake_case,
4290        clippy::pub_underscore_fields,
4291        clippy::style
4292    )]
4293    const _: () = {
4294        use alloy::sol_types as alloy_sol_types;
4295        #[doc(hidden)]
4296        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4297        #[doc(hidden)]
4298        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4299        #[cfg(test)]
4300        #[allow(dead_code, unreachable_patterns)]
4301        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4302            match _t {
4303                alloy_sol_types::private::AssertTypeEq::<
4304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4305                >(_) => {},
4306            }
4307        }
4308        #[automatically_derived]
4309        #[doc(hidden)]
4310        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
4311            fn from(value: OwnableInvalidOwner) -> Self {
4312                (value.owner,)
4313            }
4314        }
4315        #[automatically_derived]
4316        #[doc(hidden)]
4317        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
4318            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4319                Self { owner: tuple.0 }
4320            }
4321        }
4322        #[automatically_derived]
4323        impl alloy_sol_types::SolError for OwnableInvalidOwner {
4324            type Parameters<'a> = UnderlyingSolTuple<'a>;
4325            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4326            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
4327            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
4328            #[inline]
4329            fn new<'a>(
4330                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4331            ) -> Self {
4332                tuple.into()
4333            }
4334            #[inline]
4335            fn tokenize(&self) -> Self::Token<'_> {
4336                (
4337                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4338                        &self.owner,
4339                    ),
4340                )
4341            }
4342        }
4343    };
4344    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4345    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
4346    ```solidity
4347    error OwnableUnauthorizedAccount(address account);
4348    ```*/
4349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4350    #[derive(Clone)]
4351    pub struct OwnableUnauthorizedAccount {
4352        #[allow(missing_docs)]
4353        pub account: alloy::sol_types::private::Address,
4354    }
4355    #[allow(
4356        non_camel_case_types,
4357        non_snake_case,
4358        clippy::pub_underscore_fields,
4359        clippy::style
4360    )]
4361    const _: () = {
4362        use alloy::sol_types as alloy_sol_types;
4363        #[doc(hidden)]
4364        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4365        #[doc(hidden)]
4366        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4367        #[cfg(test)]
4368        #[allow(dead_code, unreachable_patterns)]
4369        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4370            match _t {
4371                alloy_sol_types::private::AssertTypeEq::<
4372                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4373                >(_) => {},
4374            }
4375        }
4376        #[automatically_derived]
4377        #[doc(hidden)]
4378        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
4379            fn from(value: OwnableUnauthorizedAccount) -> Self {
4380                (value.account,)
4381            }
4382        }
4383        #[automatically_derived]
4384        #[doc(hidden)]
4385        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
4386            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4387                Self { account: tuple.0 }
4388            }
4389        }
4390        #[automatically_derived]
4391        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
4392            type Parameters<'a> = UnderlyingSolTuple<'a>;
4393            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4394            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
4395            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
4396            #[inline]
4397            fn new<'a>(
4398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4399            ) -> Self {
4400                tuple.into()
4401            }
4402            #[inline]
4403            fn tokenize(&self) -> Self::Token<'_> {
4404                (
4405                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4406                        &self.account,
4407                    ),
4408                )
4409            }
4410        }
4411    };
4412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4413    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
4414    ```solidity
4415    error PrematureWithdrawal();
4416    ```*/
4417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4418    #[derive(Clone)]
4419    pub struct PrematureWithdrawal {}
4420    #[allow(
4421        non_camel_case_types,
4422        non_snake_case,
4423        clippy::pub_underscore_fields,
4424        clippy::style
4425    )]
4426    const _: () = {
4427        use alloy::sol_types as alloy_sol_types;
4428        #[doc(hidden)]
4429        type UnderlyingSolTuple<'a> = ();
4430        #[doc(hidden)]
4431        type UnderlyingRustTuple<'a> = ();
4432        #[cfg(test)]
4433        #[allow(dead_code, unreachable_patterns)]
4434        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4435            match _t {
4436                alloy_sol_types::private::AssertTypeEq::<
4437                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4438                >(_) => {},
4439            }
4440        }
4441        #[automatically_derived]
4442        #[doc(hidden)]
4443        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
4444            fn from(value: PrematureWithdrawal) -> Self {
4445                ()
4446            }
4447        }
4448        #[automatically_derived]
4449        #[doc(hidden)]
4450        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
4451            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4452                Self {}
4453            }
4454        }
4455        #[automatically_derived]
4456        impl alloy_sol_types::SolError for PrematureWithdrawal {
4457            type Parameters<'a> = UnderlyingSolTuple<'a>;
4458            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4459            const SIGNATURE: &'static str = "PrematureWithdrawal()";
4460            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
4461            #[inline]
4462            fn new<'a>(
4463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4464            ) -> Self {
4465                tuple.into()
4466            }
4467            #[inline]
4468            fn tokenize(&self) -> Self::Token<'_> {
4469                ()
4470            }
4471        }
4472    };
4473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4474    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
4475    ```solidity
4476    error UUPSUnauthorizedCallContext();
4477    ```*/
4478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4479    #[derive(Clone)]
4480    pub struct UUPSUnauthorizedCallContext {}
4481    #[allow(
4482        non_camel_case_types,
4483        non_snake_case,
4484        clippy::pub_underscore_fields,
4485        clippy::style
4486    )]
4487    const _: () = {
4488        use alloy::sol_types as alloy_sol_types;
4489        #[doc(hidden)]
4490        type UnderlyingSolTuple<'a> = ();
4491        #[doc(hidden)]
4492        type UnderlyingRustTuple<'a> = ();
4493        #[cfg(test)]
4494        #[allow(dead_code, unreachable_patterns)]
4495        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4496            match _t {
4497                alloy_sol_types::private::AssertTypeEq::<
4498                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4499                >(_) => {},
4500            }
4501        }
4502        #[automatically_derived]
4503        #[doc(hidden)]
4504        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
4505            fn from(value: UUPSUnauthorizedCallContext) -> Self {
4506                ()
4507            }
4508        }
4509        #[automatically_derived]
4510        #[doc(hidden)]
4511        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
4512            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4513                Self {}
4514            }
4515        }
4516        #[automatically_derived]
4517        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4518            type Parameters<'a> = UnderlyingSolTuple<'a>;
4519            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4520            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4521            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4522            #[inline]
4523            fn new<'a>(
4524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4525            ) -> Self {
4526                tuple.into()
4527            }
4528            #[inline]
4529            fn tokenize(&self) -> Self::Token<'_> {
4530                ()
4531            }
4532        }
4533    };
4534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4535    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4536    ```solidity
4537    error UUPSUnsupportedProxiableUUID(bytes32 slot);
4538    ```*/
4539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4540    #[derive(Clone)]
4541    pub struct UUPSUnsupportedProxiableUUID {
4542        #[allow(missing_docs)]
4543        pub slot: alloy::sol_types::private::FixedBytes<32>,
4544    }
4545    #[allow(
4546        non_camel_case_types,
4547        non_snake_case,
4548        clippy::pub_underscore_fields,
4549        clippy::style
4550    )]
4551    const _: () = {
4552        use alloy::sol_types as alloy_sol_types;
4553        #[doc(hidden)]
4554        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4555        #[doc(hidden)]
4556        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4557        #[cfg(test)]
4558        #[allow(dead_code, unreachable_patterns)]
4559        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4560            match _t {
4561                alloy_sol_types::private::AssertTypeEq::<
4562                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4563                >(_) => {},
4564            }
4565        }
4566        #[automatically_derived]
4567        #[doc(hidden)]
4568        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
4569            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4570                (value.slot,)
4571            }
4572        }
4573        #[automatically_derived]
4574        #[doc(hidden)]
4575        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
4576            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4577                Self { slot: tuple.0 }
4578            }
4579        }
4580        #[automatically_derived]
4581        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4582            type Parameters<'a> = UnderlyingSolTuple<'a>;
4583            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4584            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4585            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4586            #[inline]
4587            fn new<'a>(
4588                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4589            ) -> Self {
4590                tuple.into()
4591            }
4592            #[inline]
4593            fn tokenize(&self) -> Self::Token<'_> {
4594                (
4595                    <alloy::sol_types::sol_data::FixedBytes<
4596                        32,
4597                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4598                )
4599            }
4600        }
4601    };
4602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4603    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4604    ```solidity
4605    error UndelegationAlreadyExists();
4606    ```*/
4607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4608    #[derive(Clone)]
4609    pub struct UndelegationAlreadyExists {}
4610    #[allow(
4611        non_camel_case_types,
4612        non_snake_case,
4613        clippy::pub_underscore_fields,
4614        clippy::style
4615    )]
4616    const _: () = {
4617        use alloy::sol_types as alloy_sol_types;
4618        #[doc(hidden)]
4619        type UnderlyingSolTuple<'a> = ();
4620        #[doc(hidden)]
4621        type UnderlyingRustTuple<'a> = ();
4622        #[cfg(test)]
4623        #[allow(dead_code, unreachable_patterns)]
4624        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4625            match _t {
4626                alloy_sol_types::private::AssertTypeEq::<
4627                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4628                >(_) => {},
4629            }
4630        }
4631        #[automatically_derived]
4632        #[doc(hidden)]
4633        impl ::core::convert::From<UndelegationAlreadyExists> for UnderlyingRustTuple<'_> {
4634            fn from(value: UndelegationAlreadyExists) -> Self {
4635                ()
4636            }
4637        }
4638        #[automatically_derived]
4639        #[doc(hidden)]
4640        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UndelegationAlreadyExists {
4641            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4642                Self {}
4643            }
4644        }
4645        #[automatically_derived]
4646        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4647            type Parameters<'a> = UnderlyingSolTuple<'a>;
4648            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4649            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4650            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4651            #[inline]
4652            fn new<'a>(
4653                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4654            ) -> Self {
4655                tuple.into()
4656            }
4657            #[inline]
4658            fn tokenize(&self) -> Self::Token<'_> {
4659                ()
4660            }
4661        }
4662    };
4663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4664    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4665    ```solidity
4666    error ValidatorAlreadyExited();
4667    ```*/
4668    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4669    #[derive(Clone)]
4670    pub struct ValidatorAlreadyExited {}
4671    #[allow(
4672        non_camel_case_types,
4673        non_snake_case,
4674        clippy::pub_underscore_fields,
4675        clippy::style
4676    )]
4677    const _: () = {
4678        use alloy::sol_types as alloy_sol_types;
4679        #[doc(hidden)]
4680        type UnderlyingSolTuple<'a> = ();
4681        #[doc(hidden)]
4682        type UnderlyingRustTuple<'a> = ();
4683        #[cfg(test)]
4684        #[allow(dead_code, unreachable_patterns)]
4685        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4686            match _t {
4687                alloy_sol_types::private::AssertTypeEq::<
4688                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4689                >(_) => {},
4690            }
4691        }
4692        #[automatically_derived]
4693        #[doc(hidden)]
4694        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
4695            fn from(value: ValidatorAlreadyExited) -> Self {
4696                ()
4697            }
4698        }
4699        #[automatically_derived]
4700        #[doc(hidden)]
4701        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
4702            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4703                Self {}
4704            }
4705        }
4706        #[automatically_derived]
4707        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
4708            type Parameters<'a> = UnderlyingSolTuple<'a>;
4709            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4710            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
4711            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
4712            #[inline]
4713            fn new<'a>(
4714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4715            ) -> Self {
4716                tuple.into()
4717            }
4718            #[inline]
4719            fn tokenize(&self) -> Self::Token<'_> {
4720                ()
4721            }
4722        }
4723    };
4724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4725    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
4726    ```solidity
4727    error ValidatorAlreadyRegistered();
4728    ```*/
4729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4730    #[derive(Clone)]
4731    pub struct ValidatorAlreadyRegistered {}
4732    #[allow(
4733        non_camel_case_types,
4734        non_snake_case,
4735        clippy::pub_underscore_fields,
4736        clippy::style
4737    )]
4738    const _: () = {
4739        use alloy::sol_types as alloy_sol_types;
4740        #[doc(hidden)]
4741        type UnderlyingSolTuple<'a> = ();
4742        #[doc(hidden)]
4743        type UnderlyingRustTuple<'a> = ();
4744        #[cfg(test)]
4745        #[allow(dead_code, unreachable_patterns)]
4746        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4747            match _t {
4748                alloy_sol_types::private::AssertTypeEq::<
4749                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4750                >(_) => {},
4751            }
4752        }
4753        #[automatically_derived]
4754        #[doc(hidden)]
4755        impl ::core::convert::From<ValidatorAlreadyRegistered> for UnderlyingRustTuple<'_> {
4756            fn from(value: ValidatorAlreadyRegistered) -> Self {
4757                ()
4758            }
4759        }
4760        #[automatically_derived]
4761        #[doc(hidden)]
4762        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyRegistered {
4763            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4764                Self {}
4765            }
4766        }
4767        #[automatically_derived]
4768        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
4769            type Parameters<'a> = UnderlyingSolTuple<'a>;
4770            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4771            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
4772            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
4773            #[inline]
4774            fn new<'a>(
4775                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4776            ) -> Self {
4777                tuple.into()
4778            }
4779            #[inline]
4780            fn tokenize(&self) -> Self::Token<'_> {
4781                ()
4782            }
4783        }
4784    };
4785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4786    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
4787    ```solidity
4788    error ValidatorInactive();
4789    ```*/
4790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4791    #[derive(Clone)]
4792    pub struct ValidatorInactive {}
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(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4808            match _t {
4809                alloy_sol_types::private::AssertTypeEq::<
4810                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4811                >(_) => {},
4812            }
4813        }
4814        #[automatically_derived]
4815        #[doc(hidden)]
4816        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
4817            fn from(value: ValidatorInactive) -> Self {
4818                ()
4819            }
4820        }
4821        #[automatically_derived]
4822        #[doc(hidden)]
4823        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
4824            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4825                Self {}
4826            }
4827        }
4828        #[automatically_derived]
4829        impl alloy_sol_types::SolError for ValidatorInactive {
4830            type Parameters<'a> = UnderlyingSolTuple<'a>;
4831            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4832            const SIGNATURE: &'static str = "ValidatorInactive()";
4833            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
4834            #[inline]
4835            fn new<'a>(
4836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4837            ) -> Self {
4838                tuple.into()
4839            }
4840            #[inline]
4841            fn tokenize(&self) -> Self::Token<'_> {
4842                ()
4843            }
4844        }
4845    };
4846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4847    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
4848    ```solidity
4849    error ValidatorNotExited();
4850    ```*/
4851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4852    #[derive(Clone)]
4853    pub struct ValidatorNotExited {}
4854    #[allow(
4855        non_camel_case_types,
4856        non_snake_case,
4857        clippy::pub_underscore_fields,
4858        clippy::style
4859    )]
4860    const _: () = {
4861        use alloy::sol_types as alloy_sol_types;
4862        #[doc(hidden)]
4863        type UnderlyingSolTuple<'a> = ();
4864        #[doc(hidden)]
4865        type UnderlyingRustTuple<'a> = ();
4866        #[cfg(test)]
4867        #[allow(dead_code, unreachable_patterns)]
4868        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4869            match _t {
4870                alloy_sol_types::private::AssertTypeEq::<
4871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4872                >(_) => {},
4873            }
4874        }
4875        #[automatically_derived]
4876        #[doc(hidden)]
4877        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
4878            fn from(value: ValidatorNotExited) -> Self {
4879                ()
4880            }
4881        }
4882        #[automatically_derived]
4883        #[doc(hidden)]
4884        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
4885            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4886                Self {}
4887            }
4888        }
4889        #[automatically_derived]
4890        impl alloy_sol_types::SolError for ValidatorNotExited {
4891            type Parameters<'a> = UnderlyingSolTuple<'a>;
4892            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4893            const SIGNATURE: &'static str = "ValidatorNotExited()";
4894            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
4895            #[inline]
4896            fn new<'a>(
4897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4898            ) -> Self {
4899                tuple.into()
4900            }
4901            #[inline]
4902            fn tokenize(&self) -> Self::Token<'_> {
4903                ()
4904            }
4905        }
4906    };
4907    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4908    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4909    ```solidity
4910    error ZeroAddress();
4911    ```*/
4912    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4913    #[derive(Clone)]
4914    pub struct ZeroAddress {}
4915    #[allow(
4916        non_camel_case_types,
4917        non_snake_case,
4918        clippy::pub_underscore_fields,
4919        clippy::style
4920    )]
4921    const _: () = {
4922        use alloy::sol_types as alloy_sol_types;
4923        #[doc(hidden)]
4924        type UnderlyingSolTuple<'a> = ();
4925        #[doc(hidden)]
4926        type UnderlyingRustTuple<'a> = ();
4927        #[cfg(test)]
4928        #[allow(dead_code, unreachable_patterns)]
4929        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4930            match _t {
4931                alloy_sol_types::private::AssertTypeEq::<
4932                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4933                >(_) => {},
4934            }
4935        }
4936        #[automatically_derived]
4937        #[doc(hidden)]
4938        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4939            fn from(value: ZeroAddress) -> Self {
4940                ()
4941            }
4942        }
4943        #[automatically_derived]
4944        #[doc(hidden)]
4945        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4946            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4947                Self {}
4948            }
4949        }
4950        #[automatically_derived]
4951        impl alloy_sol_types::SolError for ZeroAddress {
4952            type Parameters<'a> = UnderlyingSolTuple<'a>;
4953            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4954            const SIGNATURE: &'static str = "ZeroAddress()";
4955            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4956            #[inline]
4957            fn new<'a>(
4958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4959            ) -> Self {
4960                tuple.into()
4961            }
4962            #[inline]
4963            fn tokenize(&self) -> Self::Token<'_> {
4964                ()
4965            }
4966        }
4967    };
4968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4969    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
4970    ```solidity
4971    error ZeroAmount();
4972    ```*/
4973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4974    #[derive(Clone)]
4975    pub struct ZeroAmount {}
4976    #[allow(
4977        non_camel_case_types,
4978        non_snake_case,
4979        clippy::pub_underscore_fields,
4980        clippy::style
4981    )]
4982    const _: () = {
4983        use alloy::sol_types as alloy_sol_types;
4984        #[doc(hidden)]
4985        type UnderlyingSolTuple<'a> = ();
4986        #[doc(hidden)]
4987        type UnderlyingRustTuple<'a> = ();
4988        #[cfg(test)]
4989        #[allow(dead_code, unreachable_patterns)]
4990        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4991            match _t {
4992                alloy_sol_types::private::AssertTypeEq::<
4993                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4994                >(_) => {},
4995            }
4996        }
4997        #[automatically_derived]
4998        #[doc(hidden)]
4999        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
5000            fn from(value: ZeroAmount) -> Self {
5001                ()
5002            }
5003        }
5004        #[automatically_derived]
5005        #[doc(hidden)]
5006        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
5007            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5008                Self {}
5009            }
5010        }
5011        #[automatically_derived]
5012        impl alloy_sol_types::SolError for ZeroAmount {
5013            type Parameters<'a> = UnderlyingSolTuple<'a>;
5014            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5015            const SIGNATURE: &'static str = "ZeroAmount()";
5016            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
5017            #[inline]
5018            fn new<'a>(
5019                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5020            ) -> Self {
5021                tuple.into()
5022            }
5023            #[inline]
5024            fn tokenize(&self) -> Self::Token<'_> {
5025                ()
5026            }
5027        }
5028    };
5029    #[derive()]
5030    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
5031    ```solidity
5032    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
5033    ```*/
5034    #[allow(
5035        non_camel_case_types,
5036        non_snake_case,
5037        clippy::pub_underscore_fields,
5038        clippy::style
5039    )]
5040    #[derive(Clone)]
5041    pub struct ConsensusKeysUpdated {
5042        #[allow(missing_docs)]
5043        pub account: alloy::sol_types::private::Address,
5044        #[allow(missing_docs)]
5045        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5046        #[allow(missing_docs)]
5047        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5048    }
5049    #[allow(
5050        non_camel_case_types,
5051        non_snake_case,
5052        clippy::pub_underscore_fields,
5053        clippy::style
5054    )]
5055    const _: () = {
5056        use alloy::sol_types as alloy_sol_types;
5057        #[automatically_derived]
5058        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
5059            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
5060            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5061            type TopicList = (
5062                alloy_sol_types::sol_data::FixedBytes<32>,
5063                alloy::sol_types::sol_data::Address,
5064            );
5065            const SIGNATURE: &'static str =
5066                "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
5067            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5068                alloy_sol_types::private::B256::new([
5069                    128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8, 91u8,
5070                    162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8, 157u8, 39u8,
5071                    249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
5072                ]);
5073            const ANONYMOUS: bool = false;
5074            #[allow(unused_variables)]
5075            #[inline]
5076            fn new(
5077                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5078                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5079            ) -> Self {
5080                Self {
5081                    account: topics.1,
5082                    blsVK: data.0,
5083                    schnorrVK: data.1,
5084                }
5085            }
5086            #[inline]
5087            fn check_signature(
5088                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5089            ) -> alloy_sol_types::Result<()> {
5090                if topics.0 != Self::SIGNATURE_HASH {
5091                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5092                        Self::SIGNATURE,
5093                        topics.0,
5094                        Self::SIGNATURE_HASH,
5095                    ));
5096                }
5097                Ok(())
5098            }
5099            #[inline]
5100            fn tokenize_body(&self) -> Self::DataToken<'_> {
5101                (
5102                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
5103                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5104                        &self.schnorrVK,
5105                    ),
5106                )
5107            }
5108            #[inline]
5109            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5110                (Self::SIGNATURE_HASH.into(), self.account.clone())
5111            }
5112            #[inline]
5113            fn encode_topics_raw(
5114                &self,
5115                out: &mut [alloy_sol_types::abi::token::WordToken],
5116            ) -> alloy_sol_types::Result<()> {
5117                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5118                    return Err(alloy_sol_types::Error::Overrun);
5119                }
5120                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5121                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5122                    &self.account,
5123                );
5124                Ok(())
5125            }
5126        }
5127        #[automatically_derived]
5128        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
5129            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5130                From::from(self)
5131            }
5132            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5133                From::from(&self)
5134            }
5135        }
5136        #[automatically_derived]
5137        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
5138            #[inline]
5139            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
5140                alloy_sol_types::SolEvent::encode_log_data(this)
5141            }
5142        }
5143    };
5144    #[derive()]
5145    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
5146    ```solidity
5147    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
5148    ```*/
5149    #[allow(
5150        non_camel_case_types,
5151        non_snake_case,
5152        clippy::pub_underscore_fields,
5153        clippy::style
5154    )]
5155    #[derive(Clone)]
5156    pub struct ConsensusKeysUpdatedV2 {
5157        #[allow(missing_docs)]
5158        pub account: alloy::sol_types::private::Address,
5159        #[allow(missing_docs)]
5160        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5161        #[allow(missing_docs)]
5162        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5163        #[allow(missing_docs)]
5164        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
5165        #[allow(missing_docs)]
5166        pub schnorrSig: alloy::sol_types::private::Bytes,
5167    }
5168    #[allow(
5169        non_camel_case_types,
5170        non_snake_case,
5171        clippy::pub_underscore_fields,
5172        clippy::style
5173    )]
5174    const _: () = {
5175        use alloy::sol_types as alloy_sol_types;
5176        #[automatically_derived]
5177        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
5178            type DataTuple<'a> = (
5179                BN254::G2Point,
5180                EdOnBN254::EdOnBN254Point,
5181                BN254::G1Point,
5182                alloy::sol_types::sol_data::Bytes,
5183            );
5184            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5185            type TopicList = (
5186                alloy_sol_types::sol_data::FixedBytes<32>,
5187                alloy::sol_types::sol_data::Address,
5188            );
5189            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
5190            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5191                alloy_sol_types::private::B256::new([
5192                    200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8, 60u8,
5193                    81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8, 106u8, 183u8,
5194                    88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
5195                ]);
5196            const ANONYMOUS: bool = false;
5197            #[allow(unused_variables)]
5198            #[inline]
5199            fn new(
5200                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5201                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5202            ) -> Self {
5203                Self {
5204                    account: topics.1,
5205                    blsVK: data.0,
5206                    schnorrVK: data.1,
5207                    blsSig: data.2,
5208                    schnorrSig: data.3,
5209                }
5210            }
5211            #[inline]
5212            fn check_signature(
5213                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5214            ) -> alloy_sol_types::Result<()> {
5215                if topics.0 != Self::SIGNATURE_HASH {
5216                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5217                        Self::SIGNATURE,
5218                        topics.0,
5219                        Self::SIGNATURE_HASH,
5220                    ));
5221                }
5222                Ok(())
5223            }
5224            #[inline]
5225            fn tokenize_body(&self) -> Self::DataToken<'_> {
5226                (
5227                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
5228                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5229                        &self.schnorrVK,
5230                    ),
5231                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
5232                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5233                        &self.schnorrSig,
5234                    ),
5235                )
5236            }
5237            #[inline]
5238            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5239                (Self::SIGNATURE_HASH.into(), self.account.clone())
5240            }
5241            #[inline]
5242            fn encode_topics_raw(
5243                &self,
5244                out: &mut [alloy_sol_types::abi::token::WordToken],
5245            ) -> alloy_sol_types::Result<()> {
5246                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5247                    return Err(alloy_sol_types::Error::Overrun);
5248                }
5249                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5250                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5251                    &self.account,
5252                );
5253                Ok(())
5254            }
5255        }
5256        #[automatically_derived]
5257        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
5258            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5259                From::from(self)
5260            }
5261            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5262                From::from(&self)
5263            }
5264        }
5265        #[automatically_derived]
5266        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
5267            #[inline]
5268            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
5269                alloy_sol_types::SolEvent::encode_log_data(this)
5270            }
5271        }
5272    };
5273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5274    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
5275    ```solidity
5276    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
5277    ```*/
5278    #[allow(
5279        non_camel_case_types,
5280        non_snake_case,
5281        clippy::pub_underscore_fields,
5282        clippy::style
5283    )]
5284    #[derive(Clone)]
5285    pub struct Delegated {
5286        #[allow(missing_docs)]
5287        pub delegator: alloy::sol_types::private::Address,
5288        #[allow(missing_docs)]
5289        pub validator: alloy::sol_types::private::Address,
5290        #[allow(missing_docs)]
5291        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5292    }
5293    #[allow(
5294        non_camel_case_types,
5295        non_snake_case,
5296        clippy::pub_underscore_fields,
5297        clippy::style
5298    )]
5299    const _: () = {
5300        use alloy::sol_types as alloy_sol_types;
5301        #[automatically_derived]
5302        impl alloy_sol_types::SolEvent for Delegated {
5303            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5304            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5305            type TopicList = (
5306                alloy_sol_types::sol_data::FixedBytes<32>,
5307                alloy::sol_types::sol_data::Address,
5308                alloy::sol_types::sol_data::Address,
5309            );
5310            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
5311            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5312                alloy_sol_types::private::B256::new([
5313                    229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8, 213u8,
5314                    79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8, 55u8, 76u8,
5315                    246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
5316                ]);
5317            const ANONYMOUS: bool = false;
5318            #[allow(unused_variables)]
5319            #[inline]
5320            fn new(
5321                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5322                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5323            ) -> Self {
5324                Self {
5325                    delegator: topics.1,
5326                    validator: topics.2,
5327                    amount: 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(alloy_sol_types::Error::invalid_event_signature_hash(
5336                        Self::SIGNATURE,
5337                        topics.0,
5338                        Self::SIGNATURE_HASH,
5339                    ));
5340                }
5341                Ok(())
5342            }
5343            #[inline]
5344            fn tokenize_body(&self) -> Self::DataToken<'_> {
5345                (
5346                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5347                        &self.amount,
5348                    ),
5349                )
5350            }
5351            #[inline]
5352            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5353                (
5354                    Self::SIGNATURE_HASH.into(),
5355                    self.delegator.clone(),
5356                    self.validator.clone(),
5357                )
5358            }
5359            #[inline]
5360            fn encode_topics_raw(
5361                &self,
5362                out: &mut [alloy_sol_types::abi::token::WordToken],
5363            ) -> alloy_sol_types::Result<()> {
5364                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5365                    return Err(alloy_sol_types::Error::Overrun);
5366                }
5367                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5368                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5369                    &self.delegator,
5370                );
5371                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5372                    &self.validator,
5373                );
5374                Ok(())
5375            }
5376        }
5377        #[automatically_derived]
5378        impl alloy_sol_types::private::IntoLogData for Delegated {
5379            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5380                From::from(self)
5381            }
5382            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5383                From::from(&self)
5384            }
5385        }
5386        #[automatically_derived]
5387        impl From<&Delegated> for alloy_sol_types::private::LogData {
5388            #[inline]
5389            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
5390                alloy_sol_types::SolEvent::encode_log_data(this)
5391            }
5392        }
5393    };
5394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5395    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
5396    ```solidity
5397    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
5398    ```*/
5399    #[allow(
5400        non_camel_case_types,
5401        non_snake_case,
5402        clippy::pub_underscore_fields,
5403        clippy::style
5404    )]
5405    #[derive(Clone)]
5406    pub struct ExitEscrowPeriodUpdated {
5407        #[allow(missing_docs)]
5408        pub newExitEscrowPeriod: u64,
5409    }
5410    #[allow(
5411        non_camel_case_types,
5412        non_snake_case,
5413        clippy::pub_underscore_fields,
5414        clippy::style
5415    )]
5416    const _: () = {
5417        use alloy::sol_types as alloy_sol_types;
5418        #[automatically_derived]
5419        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
5420            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5421            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5422            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5423            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
5424            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5425                alloy_sol_types::private::B256::new([
5426                    121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8, 200u8,
5427                    49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8, 151u8, 138u8,
5428                    12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
5429                ]);
5430            const ANONYMOUS: bool = false;
5431            #[allow(unused_variables)]
5432            #[inline]
5433            fn new(
5434                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5435                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5436            ) -> Self {
5437                Self {
5438                    newExitEscrowPeriod: data.0,
5439                }
5440            }
5441            #[inline]
5442            fn check_signature(
5443                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5444            ) -> alloy_sol_types::Result<()> {
5445                if topics.0 != Self::SIGNATURE_HASH {
5446                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5447                        Self::SIGNATURE,
5448                        topics.0,
5449                        Self::SIGNATURE_HASH,
5450                    ));
5451                }
5452                Ok(())
5453            }
5454            #[inline]
5455            fn tokenize_body(&self) -> Self::DataToken<'_> {
5456                (
5457                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5458                        &self.newExitEscrowPeriod,
5459                    ),
5460                )
5461            }
5462            #[inline]
5463            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5464                (Self::SIGNATURE_HASH.into(),)
5465            }
5466            #[inline]
5467            fn encode_topics_raw(
5468                &self,
5469                out: &mut [alloy_sol_types::abi::token::WordToken],
5470            ) -> alloy_sol_types::Result<()> {
5471                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5472                    return Err(alloy_sol_types::Error::Overrun);
5473                }
5474                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5475                Ok(())
5476            }
5477        }
5478        #[automatically_derived]
5479        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
5480            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5481                From::from(self)
5482            }
5483            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5484                From::from(&self)
5485            }
5486        }
5487        #[automatically_derived]
5488        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
5489            #[inline]
5490            fn from(this: &ExitEscrowPeriodUpdated) -> alloy_sol_types::private::LogData {
5491                alloy_sol_types::SolEvent::encode_log_data(this)
5492            }
5493        }
5494    };
5495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5496    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5497    ```solidity
5498    event Initialized(uint64 version);
5499    ```*/
5500    #[allow(
5501        non_camel_case_types,
5502        non_snake_case,
5503        clippy::pub_underscore_fields,
5504        clippy::style
5505    )]
5506    #[derive(Clone)]
5507    pub struct Initialized {
5508        #[allow(missing_docs)]
5509        pub version: u64,
5510    }
5511    #[allow(
5512        non_camel_case_types,
5513        non_snake_case,
5514        clippy::pub_underscore_fields,
5515        clippy::style
5516    )]
5517    const _: () = {
5518        use alloy::sol_types as alloy_sol_types;
5519        #[automatically_derived]
5520        impl alloy_sol_types::SolEvent for Initialized {
5521            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5522            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5523            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5524            const SIGNATURE: &'static str = "Initialized(uint64)";
5525            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5526                alloy_sol_types::private::B256::new([
5527                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
5528                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
5529                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5530                ]);
5531            const ANONYMOUS: bool = false;
5532            #[allow(unused_variables)]
5533            #[inline]
5534            fn new(
5535                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5536                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5537            ) -> Self {
5538                Self { version: data.0 }
5539            }
5540            #[inline]
5541            fn check_signature(
5542                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5543            ) -> alloy_sol_types::Result<()> {
5544                if topics.0 != Self::SIGNATURE_HASH {
5545                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5546                        Self::SIGNATURE,
5547                        topics.0,
5548                        Self::SIGNATURE_HASH,
5549                    ));
5550                }
5551                Ok(())
5552            }
5553            #[inline]
5554            fn tokenize_body(&self) -> Self::DataToken<'_> {
5555                (
5556                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5557                        &self.version,
5558                    ),
5559                )
5560            }
5561            #[inline]
5562            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5563                (Self::SIGNATURE_HASH.into(),)
5564            }
5565            #[inline]
5566            fn encode_topics_raw(
5567                &self,
5568                out: &mut [alloy_sol_types::abi::token::WordToken],
5569            ) -> alloy_sol_types::Result<()> {
5570                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5571                    return Err(alloy_sol_types::Error::Overrun);
5572                }
5573                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5574                Ok(())
5575            }
5576        }
5577        #[automatically_derived]
5578        impl alloy_sol_types::private::IntoLogData for Initialized {
5579            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5580                From::from(self)
5581            }
5582            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5583                From::from(&self)
5584            }
5585        }
5586        #[automatically_derived]
5587        impl From<&Initialized> for alloy_sol_types::private::LogData {
5588            #[inline]
5589            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5590                alloy_sol_types::SolEvent::encode_log_data(this)
5591            }
5592        }
5593    };
5594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5595    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5596    ```solidity
5597    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5598    ```*/
5599    #[allow(
5600        non_camel_case_types,
5601        non_snake_case,
5602        clippy::pub_underscore_fields,
5603        clippy::style
5604    )]
5605    #[derive(Clone)]
5606    pub struct OwnershipTransferred {
5607        #[allow(missing_docs)]
5608        pub previousOwner: alloy::sol_types::private::Address,
5609        #[allow(missing_docs)]
5610        pub newOwner: alloy::sol_types::private::Address,
5611    }
5612    #[allow(
5613        non_camel_case_types,
5614        non_snake_case,
5615        clippy::pub_underscore_fields,
5616        clippy::style
5617    )]
5618    const _: () = {
5619        use alloy::sol_types as alloy_sol_types;
5620        #[automatically_derived]
5621        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5622            type DataTuple<'a> = ();
5623            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5624            type TopicList = (
5625                alloy_sol_types::sol_data::FixedBytes<32>,
5626                alloy::sol_types::sol_data::Address,
5627                alloy::sol_types::sol_data::Address,
5628            );
5629            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5630            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5631                alloy_sol_types::private::B256::new([
5632                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
5633                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
5634                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5635                ]);
5636            const ANONYMOUS: bool = false;
5637            #[allow(unused_variables)]
5638            #[inline]
5639            fn new(
5640                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5641                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5642            ) -> Self {
5643                Self {
5644                    previousOwner: topics.1,
5645                    newOwner: topics.2,
5646                }
5647            }
5648            #[inline]
5649            fn check_signature(
5650                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5651            ) -> alloy_sol_types::Result<()> {
5652                if topics.0 != Self::SIGNATURE_HASH {
5653                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5654                        Self::SIGNATURE,
5655                        topics.0,
5656                        Self::SIGNATURE_HASH,
5657                    ));
5658                }
5659                Ok(())
5660            }
5661            #[inline]
5662            fn tokenize_body(&self) -> Self::DataToken<'_> {
5663                ()
5664            }
5665            #[inline]
5666            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5667                (
5668                    Self::SIGNATURE_HASH.into(),
5669                    self.previousOwner.clone(),
5670                    self.newOwner.clone(),
5671                )
5672            }
5673            #[inline]
5674            fn encode_topics_raw(
5675                &self,
5676                out: &mut [alloy_sol_types::abi::token::WordToken],
5677            ) -> alloy_sol_types::Result<()> {
5678                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5679                    return Err(alloy_sol_types::Error::Overrun);
5680                }
5681                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5682                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5683                    &self.previousOwner,
5684                );
5685                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5686                    &self.newOwner,
5687                );
5688                Ok(())
5689            }
5690        }
5691        #[automatically_derived]
5692        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5693            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5694                From::from(self)
5695            }
5696            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5697                From::from(&self)
5698            }
5699        }
5700        #[automatically_derived]
5701        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5702            #[inline]
5703            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5704                alloy_sol_types::SolEvent::encode_log_data(this)
5705            }
5706        }
5707    };
5708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5709    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
5710    ```solidity
5711    event Paused(address account);
5712    ```*/
5713    #[allow(
5714        non_camel_case_types,
5715        non_snake_case,
5716        clippy::pub_underscore_fields,
5717        clippy::style
5718    )]
5719    #[derive(Clone)]
5720    pub struct Paused {
5721        #[allow(missing_docs)]
5722        pub account: alloy::sol_types::private::Address,
5723    }
5724    #[allow(
5725        non_camel_case_types,
5726        non_snake_case,
5727        clippy::pub_underscore_fields,
5728        clippy::style
5729    )]
5730    const _: () = {
5731        use alloy::sol_types as alloy_sol_types;
5732        #[automatically_derived]
5733        impl alloy_sol_types::SolEvent for Paused {
5734            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5735            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5736            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5737            const SIGNATURE: &'static str = "Paused(address)";
5738            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5739                alloy_sol_types::private::B256::new([
5740                    98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8, 2u8,
5741                    112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8, 71u8, 84u8,
5742                    235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
5743                ]);
5744            const ANONYMOUS: bool = false;
5745            #[allow(unused_variables)]
5746            #[inline]
5747            fn new(
5748                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5749                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5750            ) -> Self {
5751                Self { account: data.0 }
5752            }
5753            #[inline]
5754            fn check_signature(
5755                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5756            ) -> alloy_sol_types::Result<()> {
5757                if topics.0 != Self::SIGNATURE_HASH {
5758                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5759                        Self::SIGNATURE,
5760                        topics.0,
5761                        Self::SIGNATURE_HASH,
5762                    ));
5763                }
5764                Ok(())
5765            }
5766            #[inline]
5767            fn tokenize_body(&self) -> Self::DataToken<'_> {
5768                (
5769                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5770                        &self.account,
5771                    ),
5772                )
5773            }
5774            #[inline]
5775            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5776                (Self::SIGNATURE_HASH.into(),)
5777            }
5778            #[inline]
5779            fn encode_topics_raw(
5780                &self,
5781                out: &mut [alloy_sol_types::abi::token::WordToken],
5782            ) -> alloy_sol_types::Result<()> {
5783                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5784                    return Err(alloy_sol_types::Error::Overrun);
5785                }
5786                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5787                Ok(())
5788            }
5789        }
5790        #[automatically_derived]
5791        impl alloy_sol_types::private::IntoLogData for Paused {
5792            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5793                From::from(self)
5794            }
5795            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5796                From::from(&self)
5797            }
5798        }
5799        #[automatically_derived]
5800        impl From<&Paused> for alloy_sol_types::private::LogData {
5801            #[inline]
5802            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
5803                alloy_sol_types::SolEvent::encode_log_data(this)
5804            }
5805        }
5806    };
5807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5808    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
5809    ```solidity
5810    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
5811    ```*/
5812    #[allow(
5813        non_camel_case_types,
5814        non_snake_case,
5815        clippy::pub_underscore_fields,
5816        clippy::style
5817    )]
5818    #[derive(Clone)]
5819    pub struct RoleAdminChanged {
5820        #[allow(missing_docs)]
5821        pub role: alloy::sol_types::private::FixedBytes<32>,
5822        #[allow(missing_docs)]
5823        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
5824        #[allow(missing_docs)]
5825        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
5826    }
5827    #[allow(
5828        non_camel_case_types,
5829        non_snake_case,
5830        clippy::pub_underscore_fields,
5831        clippy::style
5832    )]
5833    const _: () = {
5834        use alloy::sol_types as alloy_sol_types;
5835        #[automatically_derived]
5836        impl alloy_sol_types::SolEvent for RoleAdminChanged {
5837            type DataTuple<'a> = ();
5838            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5839            type TopicList = (
5840                alloy_sol_types::sol_data::FixedBytes<32>,
5841                alloy::sol_types::sol_data::FixedBytes<32>,
5842                alloy::sol_types::sol_data::FixedBytes<32>,
5843                alloy::sol_types::sol_data::FixedBytes<32>,
5844            );
5845            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
5846            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5847                alloy_sol_types::private::B256::new([
5848                    189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8, 81u8,
5849                    66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8, 71u8, 92u8,
5850                    58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
5851                ]);
5852            const ANONYMOUS: bool = false;
5853            #[allow(unused_variables)]
5854            #[inline]
5855            fn new(
5856                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5857                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5858            ) -> Self {
5859                Self {
5860                    role: topics.1,
5861                    previousAdminRole: topics.2,
5862                    newAdminRole: topics.3,
5863                }
5864            }
5865            #[inline]
5866            fn check_signature(
5867                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5868            ) -> alloy_sol_types::Result<()> {
5869                if topics.0 != Self::SIGNATURE_HASH {
5870                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5871                        Self::SIGNATURE,
5872                        topics.0,
5873                        Self::SIGNATURE_HASH,
5874                    ));
5875                }
5876                Ok(())
5877            }
5878            #[inline]
5879            fn tokenize_body(&self) -> Self::DataToken<'_> {
5880                ()
5881            }
5882            #[inline]
5883            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5884                (
5885                    Self::SIGNATURE_HASH.into(),
5886                    self.role.clone(),
5887                    self.previousAdminRole.clone(),
5888                    self.newAdminRole.clone(),
5889                )
5890            }
5891            #[inline]
5892            fn encode_topics_raw(
5893                &self,
5894                out: &mut [alloy_sol_types::abi::token::WordToken],
5895            ) -> alloy_sol_types::Result<()> {
5896                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5897                    return Err(alloy_sol_types::Error::Overrun);
5898                }
5899                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5900                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
5901                    32,
5902                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
5903                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
5904                    32,
5905                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
5906                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
5907                    32,
5908                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
5909                Ok(())
5910            }
5911        }
5912        #[automatically_derived]
5913        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
5914            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5915                From::from(self)
5916            }
5917            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5918                From::from(&self)
5919            }
5920        }
5921        #[automatically_derived]
5922        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
5923            #[inline]
5924            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
5925                alloy_sol_types::SolEvent::encode_log_data(this)
5926            }
5927        }
5928    };
5929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5930    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
5931    ```solidity
5932    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
5933    ```*/
5934    #[allow(
5935        non_camel_case_types,
5936        non_snake_case,
5937        clippy::pub_underscore_fields,
5938        clippy::style
5939    )]
5940    #[derive(Clone)]
5941    pub struct RoleGranted {
5942        #[allow(missing_docs)]
5943        pub role: alloy::sol_types::private::FixedBytes<32>,
5944        #[allow(missing_docs)]
5945        pub account: alloy::sol_types::private::Address,
5946        #[allow(missing_docs)]
5947        pub sender: alloy::sol_types::private::Address,
5948    }
5949    #[allow(
5950        non_camel_case_types,
5951        non_snake_case,
5952        clippy::pub_underscore_fields,
5953        clippy::style
5954    )]
5955    const _: () = {
5956        use alloy::sol_types as alloy_sol_types;
5957        #[automatically_derived]
5958        impl alloy_sol_types::SolEvent for RoleGranted {
5959            type DataTuple<'a> = ();
5960            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5961            type TopicList = (
5962                alloy_sol_types::sol_data::FixedBytes<32>,
5963                alloy::sol_types::sol_data::FixedBytes<32>,
5964                alloy::sol_types::sol_data::Address,
5965                alloy::sol_types::sol_data::Address,
5966            );
5967            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
5968            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5969                alloy_sol_types::private::B256::new([
5970                    47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8, 236u8,
5971                    121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8, 64u8, 48u8,
5972                    69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
5973                ]);
5974            const ANONYMOUS: bool = false;
5975            #[allow(unused_variables)]
5976            #[inline]
5977            fn new(
5978                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5979                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5980            ) -> Self {
5981                Self {
5982                    role: topics.1,
5983                    account: topics.2,
5984                    sender: topics.3,
5985                }
5986            }
5987            #[inline]
5988            fn check_signature(
5989                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5990            ) -> alloy_sol_types::Result<()> {
5991                if topics.0 != Self::SIGNATURE_HASH {
5992                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5993                        Self::SIGNATURE,
5994                        topics.0,
5995                        Self::SIGNATURE_HASH,
5996                    ));
5997                }
5998                Ok(())
5999            }
6000            #[inline]
6001            fn tokenize_body(&self) -> Self::DataToken<'_> {
6002                ()
6003            }
6004            #[inline]
6005            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6006                (
6007                    Self::SIGNATURE_HASH.into(),
6008                    self.role.clone(),
6009                    self.account.clone(),
6010                    self.sender.clone(),
6011                )
6012            }
6013            #[inline]
6014            fn encode_topics_raw(
6015                &self,
6016                out: &mut [alloy_sol_types::abi::token::WordToken],
6017            ) -> alloy_sol_types::Result<()> {
6018                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6019                    return Err(alloy_sol_types::Error::Overrun);
6020                }
6021                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6022                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
6023                    32,
6024                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
6025                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6026                    &self.account,
6027                );
6028                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6029                    &self.sender,
6030                );
6031                Ok(())
6032            }
6033        }
6034        #[automatically_derived]
6035        impl alloy_sol_types::private::IntoLogData for RoleGranted {
6036            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6037                From::from(self)
6038            }
6039            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6040                From::from(&self)
6041            }
6042        }
6043        #[automatically_derived]
6044        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
6045            #[inline]
6046            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
6047                alloy_sol_types::SolEvent::encode_log_data(this)
6048            }
6049        }
6050    };
6051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6052    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
6053    ```solidity
6054    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
6055    ```*/
6056    #[allow(
6057        non_camel_case_types,
6058        non_snake_case,
6059        clippy::pub_underscore_fields,
6060        clippy::style
6061    )]
6062    #[derive(Clone)]
6063    pub struct RoleRevoked {
6064        #[allow(missing_docs)]
6065        pub role: alloy::sol_types::private::FixedBytes<32>,
6066        #[allow(missing_docs)]
6067        pub account: alloy::sol_types::private::Address,
6068        #[allow(missing_docs)]
6069        pub sender: alloy::sol_types::private::Address,
6070    }
6071    #[allow(
6072        non_camel_case_types,
6073        non_snake_case,
6074        clippy::pub_underscore_fields,
6075        clippy::style
6076    )]
6077    const _: () = {
6078        use alloy::sol_types as alloy_sol_types;
6079        #[automatically_derived]
6080        impl alloy_sol_types::SolEvent for RoleRevoked {
6081            type DataTuple<'a> = ();
6082            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6083            type TopicList = (
6084                alloy_sol_types::sol_data::FixedBytes<32>,
6085                alloy::sol_types::sol_data::FixedBytes<32>,
6086                alloy::sol_types::sol_data::Address,
6087                alloy::sol_types::sol_data::Address,
6088            );
6089            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
6090            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6091                alloy_sol_types::private::B256::new([
6092                    246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8, 103u8,
6093                    11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8, 253u8, 100u8,
6094                    235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
6095                ]);
6096            const ANONYMOUS: bool = false;
6097            #[allow(unused_variables)]
6098            #[inline]
6099            fn new(
6100                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6101                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6102            ) -> Self {
6103                Self {
6104                    role: topics.1,
6105                    account: topics.2,
6106                    sender: topics.3,
6107                }
6108            }
6109            #[inline]
6110            fn check_signature(
6111                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6112            ) -> alloy_sol_types::Result<()> {
6113                if topics.0 != Self::SIGNATURE_HASH {
6114                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6115                        Self::SIGNATURE,
6116                        topics.0,
6117                        Self::SIGNATURE_HASH,
6118                    ));
6119                }
6120                Ok(())
6121            }
6122            #[inline]
6123            fn tokenize_body(&self) -> Self::DataToken<'_> {
6124                ()
6125            }
6126            #[inline]
6127            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6128                (
6129                    Self::SIGNATURE_HASH.into(),
6130                    self.role.clone(),
6131                    self.account.clone(),
6132                    self.sender.clone(),
6133                )
6134            }
6135            #[inline]
6136            fn encode_topics_raw(
6137                &self,
6138                out: &mut [alloy_sol_types::abi::token::WordToken],
6139            ) -> alloy_sol_types::Result<()> {
6140                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6141                    return Err(alloy_sol_types::Error::Overrun);
6142                }
6143                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6144                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
6145                    32,
6146                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
6147                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6148                    &self.account,
6149                );
6150                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6151                    &self.sender,
6152                );
6153                Ok(())
6154            }
6155        }
6156        #[automatically_derived]
6157        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
6158            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6159                From::from(self)
6160            }
6161            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6162                From::from(&self)
6163            }
6164        }
6165        #[automatically_derived]
6166        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
6167            #[inline]
6168            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
6169                alloy_sol_types::SolEvent::encode_log_data(this)
6170            }
6171        }
6172    };
6173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6174    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
6175    ```solidity
6176    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
6177    ```*/
6178    #[allow(
6179        non_camel_case_types,
6180        non_snake_case,
6181        clippy::pub_underscore_fields,
6182        clippy::style
6183    )]
6184    #[derive(Clone)]
6185    pub struct Undelegated {
6186        #[allow(missing_docs)]
6187        pub delegator: alloy::sol_types::private::Address,
6188        #[allow(missing_docs)]
6189        pub validator: alloy::sol_types::private::Address,
6190        #[allow(missing_docs)]
6191        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6192    }
6193    #[allow(
6194        non_camel_case_types,
6195        non_snake_case,
6196        clippy::pub_underscore_fields,
6197        clippy::style
6198    )]
6199    const _: () = {
6200        use alloy::sol_types as alloy_sol_types;
6201        #[automatically_derived]
6202        impl alloy_sol_types::SolEvent for Undelegated {
6203            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6204            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6205            type TopicList = (
6206                alloy_sol_types::sol_data::FixedBytes<32>,
6207                alloy::sol_types::sol_data::Address,
6208                alloy::sol_types::sol_data::Address,
6209            );
6210            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
6211            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6212                alloy_sol_types::private::B256::new([
6213                    77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8, 25u8,
6214                    90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8, 119u8, 211u8,
6215                    147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
6216                ]);
6217            const ANONYMOUS: bool = false;
6218            #[allow(unused_variables)]
6219            #[inline]
6220            fn new(
6221                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6222                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6223            ) -> Self {
6224                Self {
6225                    delegator: topics.1,
6226                    validator: topics.2,
6227                    amount: data.0,
6228                }
6229            }
6230            #[inline]
6231            fn check_signature(
6232                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6233            ) -> alloy_sol_types::Result<()> {
6234                if topics.0 != Self::SIGNATURE_HASH {
6235                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6236                        Self::SIGNATURE,
6237                        topics.0,
6238                        Self::SIGNATURE_HASH,
6239                    ));
6240                }
6241                Ok(())
6242            }
6243            #[inline]
6244            fn tokenize_body(&self) -> Self::DataToken<'_> {
6245                (
6246                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6247                        &self.amount,
6248                    ),
6249                )
6250            }
6251            #[inline]
6252            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6253                (
6254                    Self::SIGNATURE_HASH.into(),
6255                    self.delegator.clone(),
6256                    self.validator.clone(),
6257                )
6258            }
6259            #[inline]
6260            fn encode_topics_raw(
6261                &self,
6262                out: &mut [alloy_sol_types::abi::token::WordToken],
6263            ) -> alloy_sol_types::Result<()> {
6264                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6265                    return Err(alloy_sol_types::Error::Overrun);
6266                }
6267                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6268                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6269                    &self.delegator,
6270                );
6271                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6272                    &self.validator,
6273                );
6274                Ok(())
6275            }
6276        }
6277        #[automatically_derived]
6278        impl alloy_sol_types::private::IntoLogData for Undelegated {
6279            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6280                From::from(self)
6281            }
6282            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6283                From::from(&self)
6284            }
6285        }
6286        #[automatically_derived]
6287        impl From<&Undelegated> for alloy_sol_types::private::LogData {
6288            #[inline]
6289            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
6290                alloy_sol_types::SolEvent::encode_log_data(this)
6291            }
6292        }
6293    };
6294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6295    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
6296    ```solidity
6297    event Unpaused(address account);
6298    ```*/
6299    #[allow(
6300        non_camel_case_types,
6301        non_snake_case,
6302        clippy::pub_underscore_fields,
6303        clippy::style
6304    )]
6305    #[derive(Clone)]
6306    pub struct Unpaused {
6307        #[allow(missing_docs)]
6308        pub account: alloy::sol_types::private::Address,
6309    }
6310    #[allow(
6311        non_camel_case_types,
6312        non_snake_case,
6313        clippy::pub_underscore_fields,
6314        clippy::style
6315    )]
6316    const _: () = {
6317        use alloy::sol_types as alloy_sol_types;
6318        #[automatically_derived]
6319        impl alloy_sol_types::SolEvent for Unpaused {
6320            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6321            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6322            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6323            const SIGNATURE: &'static str = "Unpaused(address)";
6324            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6325                alloy_sol_types::private::B256::new([
6326                    93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8, 167u8,
6327                    131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8, 78u8, 83u8,
6328                    123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
6329                ]);
6330            const ANONYMOUS: bool = false;
6331            #[allow(unused_variables)]
6332            #[inline]
6333            fn new(
6334                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6335                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6336            ) -> Self {
6337                Self { account: data.0 }
6338            }
6339            #[inline]
6340            fn check_signature(
6341                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6342            ) -> alloy_sol_types::Result<()> {
6343                if topics.0 != Self::SIGNATURE_HASH {
6344                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6345                        Self::SIGNATURE,
6346                        topics.0,
6347                        Self::SIGNATURE_HASH,
6348                    ));
6349                }
6350                Ok(())
6351            }
6352            #[inline]
6353            fn tokenize_body(&self) -> Self::DataToken<'_> {
6354                (
6355                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6356                        &self.account,
6357                    ),
6358                )
6359            }
6360            #[inline]
6361            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6362                (Self::SIGNATURE_HASH.into(),)
6363            }
6364            #[inline]
6365            fn encode_topics_raw(
6366                &self,
6367                out: &mut [alloy_sol_types::abi::token::WordToken],
6368            ) -> alloy_sol_types::Result<()> {
6369                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6370                    return Err(alloy_sol_types::Error::Overrun);
6371                }
6372                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6373                Ok(())
6374            }
6375        }
6376        #[automatically_derived]
6377        impl alloy_sol_types::private::IntoLogData for Unpaused {
6378            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6379                From::from(self)
6380            }
6381            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6382                From::from(&self)
6383            }
6384        }
6385        #[automatically_derived]
6386        impl From<&Unpaused> for alloy_sol_types::private::LogData {
6387            #[inline]
6388            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
6389                alloy_sol_types::SolEvent::encode_log_data(this)
6390            }
6391        }
6392    };
6393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6394    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6395    ```solidity
6396    event Upgrade(address implementation);
6397    ```*/
6398    #[allow(
6399        non_camel_case_types,
6400        non_snake_case,
6401        clippy::pub_underscore_fields,
6402        clippy::style
6403    )]
6404    #[derive(Clone)]
6405    pub struct Upgrade {
6406        #[allow(missing_docs)]
6407        pub implementation: alloy::sol_types::private::Address,
6408    }
6409    #[allow(
6410        non_camel_case_types,
6411        non_snake_case,
6412        clippy::pub_underscore_fields,
6413        clippy::style
6414    )]
6415    const _: () = {
6416        use alloy::sol_types as alloy_sol_types;
6417        #[automatically_derived]
6418        impl alloy_sol_types::SolEvent for Upgrade {
6419            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6420            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6421            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6422            const SIGNATURE: &'static str = "Upgrade(address)";
6423            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6424                alloy_sol_types::private::B256::new([
6425                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
6426                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
6427                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6428                ]);
6429            const ANONYMOUS: bool = false;
6430            #[allow(unused_variables)]
6431            #[inline]
6432            fn new(
6433                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6434                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6435            ) -> Self {
6436                Self {
6437                    implementation: data.0,
6438                }
6439            }
6440            #[inline]
6441            fn check_signature(
6442                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6443            ) -> alloy_sol_types::Result<()> {
6444                if topics.0 != Self::SIGNATURE_HASH {
6445                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6446                        Self::SIGNATURE,
6447                        topics.0,
6448                        Self::SIGNATURE_HASH,
6449                    ));
6450                }
6451                Ok(())
6452            }
6453            #[inline]
6454            fn tokenize_body(&self) -> Self::DataToken<'_> {
6455                (
6456                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6457                        &self.implementation,
6458                    ),
6459                )
6460            }
6461            #[inline]
6462            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6463                (Self::SIGNATURE_HASH.into(),)
6464            }
6465            #[inline]
6466            fn encode_topics_raw(
6467                &self,
6468                out: &mut [alloy_sol_types::abi::token::WordToken],
6469            ) -> alloy_sol_types::Result<()> {
6470                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6471                    return Err(alloy_sol_types::Error::Overrun);
6472                }
6473                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6474                Ok(())
6475            }
6476        }
6477        #[automatically_derived]
6478        impl alloy_sol_types::private::IntoLogData for Upgrade {
6479            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6480                From::from(self)
6481            }
6482            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6483                From::from(&self)
6484            }
6485        }
6486        #[automatically_derived]
6487        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6488            #[inline]
6489            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6490                alloy_sol_types::SolEvent::encode_log_data(this)
6491            }
6492        }
6493    };
6494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6495    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6496    ```solidity
6497    event Upgraded(address indexed implementation);
6498    ```*/
6499    #[allow(
6500        non_camel_case_types,
6501        non_snake_case,
6502        clippy::pub_underscore_fields,
6503        clippy::style
6504    )]
6505    #[derive(Clone)]
6506    pub struct Upgraded {
6507        #[allow(missing_docs)]
6508        pub implementation: alloy::sol_types::private::Address,
6509    }
6510    #[allow(
6511        non_camel_case_types,
6512        non_snake_case,
6513        clippy::pub_underscore_fields,
6514        clippy::style
6515    )]
6516    const _: () = {
6517        use alloy::sol_types as alloy_sol_types;
6518        #[automatically_derived]
6519        impl alloy_sol_types::SolEvent for Upgraded {
6520            type DataTuple<'a> = ();
6521            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6522            type TopicList = (
6523                alloy_sol_types::sol_data::FixedBytes<32>,
6524                alloy::sol_types::sol_data::Address,
6525            );
6526            const SIGNATURE: &'static str = "Upgraded(address)";
6527            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6528                alloy_sol_types::private::B256::new([
6529                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6530                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
6531                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6532                ]);
6533            const ANONYMOUS: bool = false;
6534            #[allow(unused_variables)]
6535            #[inline]
6536            fn new(
6537                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6538                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6539            ) -> Self {
6540                Self {
6541                    implementation: topics.1,
6542                }
6543            }
6544            #[inline]
6545            fn check_signature(
6546                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6547            ) -> alloy_sol_types::Result<()> {
6548                if topics.0 != Self::SIGNATURE_HASH {
6549                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6550                        Self::SIGNATURE,
6551                        topics.0,
6552                        Self::SIGNATURE_HASH,
6553                    ));
6554                }
6555                Ok(())
6556            }
6557            #[inline]
6558            fn tokenize_body(&self) -> Self::DataToken<'_> {
6559                ()
6560            }
6561            #[inline]
6562            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6563                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6564            }
6565            #[inline]
6566            fn encode_topics_raw(
6567                &self,
6568                out: &mut [alloy_sol_types::abi::token::WordToken],
6569            ) -> alloy_sol_types::Result<()> {
6570                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6571                    return Err(alloy_sol_types::Error::Overrun);
6572                }
6573                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6574                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6575                    &self.implementation,
6576                );
6577                Ok(())
6578            }
6579        }
6580        #[automatically_derived]
6581        impl alloy_sol_types::private::IntoLogData for Upgraded {
6582            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6583                From::from(self)
6584            }
6585            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6586                From::from(&self)
6587            }
6588        }
6589        #[automatically_derived]
6590        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6591            #[inline]
6592            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6593                alloy_sol_types::SolEvent::encode_log_data(this)
6594            }
6595        }
6596    };
6597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6598    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
6599    ```solidity
6600    event ValidatorExit(address indexed validator);
6601    ```*/
6602    #[allow(
6603        non_camel_case_types,
6604        non_snake_case,
6605        clippy::pub_underscore_fields,
6606        clippy::style
6607    )]
6608    #[derive(Clone)]
6609    pub struct ValidatorExit {
6610        #[allow(missing_docs)]
6611        pub validator: alloy::sol_types::private::Address,
6612    }
6613    #[allow(
6614        non_camel_case_types,
6615        non_snake_case,
6616        clippy::pub_underscore_fields,
6617        clippy::style
6618    )]
6619    const _: () = {
6620        use alloy::sol_types as alloy_sol_types;
6621        #[automatically_derived]
6622        impl alloy_sol_types::SolEvent for ValidatorExit {
6623            type DataTuple<'a> = ();
6624            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6625            type TopicList = (
6626                alloy_sol_types::sol_data::FixedBytes<32>,
6627                alloy::sol_types::sol_data::Address,
6628            );
6629            const SIGNATURE: &'static str = "ValidatorExit(address)";
6630            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6631                alloy_sol_types::private::B256::new([
6632                    251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8, 122u8,
6633                    228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8, 125u8, 216u8,
6634                    175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
6635                ]);
6636            const ANONYMOUS: bool = false;
6637            #[allow(unused_variables)]
6638            #[inline]
6639            fn new(
6640                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6641                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6642            ) -> Self {
6643                Self {
6644                    validator: topics.1,
6645                }
6646            }
6647            #[inline]
6648            fn check_signature(
6649                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6650            ) -> alloy_sol_types::Result<()> {
6651                if topics.0 != Self::SIGNATURE_HASH {
6652                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6653                        Self::SIGNATURE,
6654                        topics.0,
6655                        Self::SIGNATURE_HASH,
6656                    ));
6657                }
6658                Ok(())
6659            }
6660            #[inline]
6661            fn tokenize_body(&self) -> Self::DataToken<'_> {
6662                ()
6663            }
6664            #[inline]
6665            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6666                (Self::SIGNATURE_HASH.into(), self.validator.clone())
6667            }
6668            #[inline]
6669            fn encode_topics_raw(
6670                &self,
6671                out: &mut [alloy_sol_types::abi::token::WordToken],
6672            ) -> alloy_sol_types::Result<()> {
6673                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6674                    return Err(alloy_sol_types::Error::Overrun);
6675                }
6676                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6677                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6678                    &self.validator,
6679                );
6680                Ok(())
6681            }
6682        }
6683        #[automatically_derived]
6684        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
6685            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6686                From::from(self)
6687            }
6688            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6689                From::from(&self)
6690            }
6691        }
6692        #[automatically_derived]
6693        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
6694            #[inline]
6695            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
6696                alloy_sol_types::SolEvent::encode_log_data(this)
6697            }
6698        }
6699    };
6700    #[derive()]
6701    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
6702    ```solidity
6703    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
6704    ```*/
6705    #[allow(
6706        non_camel_case_types,
6707        non_snake_case,
6708        clippy::pub_underscore_fields,
6709        clippy::style
6710    )]
6711    #[derive(Clone)]
6712    pub struct ValidatorRegistered {
6713        #[allow(missing_docs)]
6714        pub account: alloy::sol_types::private::Address,
6715        #[allow(missing_docs)]
6716        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
6717        #[allow(missing_docs)]
6718        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
6719        #[allow(missing_docs)]
6720        pub commission: u16,
6721    }
6722    #[allow(
6723        non_camel_case_types,
6724        non_snake_case,
6725        clippy::pub_underscore_fields,
6726        clippy::style
6727    )]
6728    const _: () = {
6729        use alloy::sol_types as alloy_sol_types;
6730        #[automatically_derived]
6731        impl alloy_sol_types::SolEvent for ValidatorRegistered {
6732            type DataTuple<'a> = (
6733                BN254::G2Point,
6734                EdOnBN254::EdOnBN254Point,
6735                alloy::sol_types::sol_data::Uint<16>,
6736            );
6737            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6738            type TopicList = (
6739                alloy_sol_types::sol_data::FixedBytes<32>,
6740                alloy::sol_types::sol_data::Address,
6741            );
6742            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
6743            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6744                alloy_sol_types::private::B256::new([
6745                    246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8, 107u8,
6746                    252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8, 16u8, 168u8,
6747                    39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
6748                ]);
6749            const ANONYMOUS: bool = false;
6750            #[allow(unused_variables)]
6751            #[inline]
6752            fn new(
6753                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6754                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6755            ) -> Self {
6756                Self {
6757                    account: topics.1,
6758                    blsVk: data.0,
6759                    schnorrVk: data.1,
6760                    commission: data.2,
6761                }
6762            }
6763            #[inline]
6764            fn check_signature(
6765                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6766            ) -> alloy_sol_types::Result<()> {
6767                if topics.0 != Self::SIGNATURE_HASH {
6768                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6769                        Self::SIGNATURE,
6770                        topics.0,
6771                        Self::SIGNATURE_HASH,
6772                    ));
6773                }
6774                Ok(())
6775            }
6776            #[inline]
6777            fn tokenize_body(&self) -> Self::DataToken<'_> {
6778                (
6779                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
6780                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
6781                        &self.schnorrVk,
6782                    ),
6783                    <alloy::sol_types::sol_data::Uint<16> as alloy_sol_types::SolType>::tokenize(
6784                        &self.commission,
6785                    ),
6786                )
6787            }
6788            #[inline]
6789            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6790                (Self::SIGNATURE_HASH.into(), self.account.clone())
6791            }
6792            #[inline]
6793            fn encode_topics_raw(
6794                &self,
6795                out: &mut [alloy_sol_types::abi::token::WordToken],
6796            ) -> alloy_sol_types::Result<()> {
6797                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6798                    return Err(alloy_sol_types::Error::Overrun);
6799                }
6800                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6801                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6802                    &self.account,
6803                );
6804                Ok(())
6805            }
6806        }
6807        #[automatically_derived]
6808        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
6809            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6810                From::from(self)
6811            }
6812            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6813                From::from(&self)
6814            }
6815        }
6816        #[automatically_derived]
6817        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
6818            #[inline]
6819            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
6820                alloy_sol_types::SolEvent::encode_log_data(this)
6821            }
6822        }
6823    };
6824    #[derive()]
6825    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)` and selector `0xf057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a`.
6826    ```solidity
6827    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
6828    ```*/
6829    #[allow(
6830        non_camel_case_types,
6831        non_snake_case,
6832        clippy::pub_underscore_fields,
6833        clippy::style
6834    )]
6835    #[derive(Clone)]
6836    pub struct ValidatorRegisteredV2 {
6837        #[allow(missing_docs)]
6838        pub account: alloy::sol_types::private::Address,
6839        #[allow(missing_docs)]
6840        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
6841        #[allow(missing_docs)]
6842        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
6843        #[allow(missing_docs)]
6844        pub commission: u16,
6845        #[allow(missing_docs)]
6846        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
6847        #[allow(missing_docs)]
6848        pub schnorrSig: alloy::sol_types::private::Bytes,
6849    }
6850    #[allow(
6851        non_camel_case_types,
6852        non_snake_case,
6853        clippy::pub_underscore_fields,
6854        clippy::style
6855    )]
6856    const _: () = {
6857        use alloy::sol_types as alloy_sol_types;
6858        #[automatically_derived]
6859        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
6860            type DataTuple<'a> = (
6861                BN254::G2Point,
6862                EdOnBN254::EdOnBN254Point,
6863                alloy::sol_types::sol_data::Uint<16>,
6864                BN254::G1Point,
6865                alloy::sol_types::sol_data::Bytes,
6866            );
6867            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6868            type TopicList = (
6869                alloy_sol_types::sol_data::FixedBytes<32>,
6870                alloy::sol_types::sol_data::Address,
6871            );
6872            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)";
6873            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6874                alloy_sol_types::private::B256::new([
6875                    240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8,
6876                    144u8, 120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8, 43u8,
6877                    66u8, 52u8, 126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
6878                ]);
6879            const ANONYMOUS: bool = false;
6880            #[allow(unused_variables)]
6881            #[inline]
6882            fn new(
6883                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6884                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6885            ) -> Self {
6886                Self {
6887                    account: topics.1,
6888                    blsVK: data.0,
6889                    schnorrVK: data.1,
6890                    commission: data.2,
6891                    blsSig: data.3,
6892                    schnorrSig: data.4,
6893                }
6894            }
6895            #[inline]
6896            fn check_signature(
6897                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6898            ) -> alloy_sol_types::Result<()> {
6899                if topics.0 != Self::SIGNATURE_HASH {
6900                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6901                        Self::SIGNATURE,
6902                        topics.0,
6903                        Self::SIGNATURE_HASH,
6904                    ));
6905                }
6906                Ok(())
6907            }
6908            #[inline]
6909            fn tokenize_body(&self) -> Self::DataToken<'_> {
6910                (
6911                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
6912                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
6913                        &self.schnorrVK,
6914                    ),
6915                    <alloy::sol_types::sol_data::Uint<16> as alloy_sol_types::SolType>::tokenize(
6916                        &self.commission,
6917                    ),
6918                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
6919                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6920                        &self.schnorrSig,
6921                    ),
6922                )
6923            }
6924            #[inline]
6925            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6926                (Self::SIGNATURE_HASH.into(), self.account.clone())
6927            }
6928            #[inline]
6929            fn encode_topics_raw(
6930                &self,
6931                out: &mut [alloy_sol_types::abi::token::WordToken],
6932            ) -> alloy_sol_types::Result<()> {
6933                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6934                    return Err(alloy_sol_types::Error::Overrun);
6935                }
6936                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6937                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6938                    &self.account,
6939                );
6940                Ok(())
6941            }
6942        }
6943        #[automatically_derived]
6944        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
6945            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6946                From::from(self)
6947            }
6948            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6949                From::from(&self)
6950            }
6951        }
6952        #[automatically_derived]
6953        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
6954            #[inline]
6955            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
6956                alloy_sol_types::SolEvent::encode_log_data(this)
6957            }
6958        }
6959    };
6960    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6961    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
6962    ```solidity
6963    event Withdrawal(address indexed account, uint256 amount);
6964    ```*/
6965    #[allow(
6966        non_camel_case_types,
6967        non_snake_case,
6968        clippy::pub_underscore_fields,
6969        clippy::style
6970    )]
6971    #[derive(Clone)]
6972    pub struct Withdrawal {
6973        #[allow(missing_docs)]
6974        pub account: alloy::sol_types::private::Address,
6975        #[allow(missing_docs)]
6976        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6977    }
6978    #[allow(
6979        non_camel_case_types,
6980        non_snake_case,
6981        clippy::pub_underscore_fields,
6982        clippy::style
6983    )]
6984    const _: () = {
6985        use alloy::sol_types as alloy_sol_types;
6986        #[automatically_derived]
6987        impl alloy_sol_types::SolEvent for Withdrawal {
6988            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6989            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6990            type TopicList = (
6991                alloy_sol_types::sol_data::FixedBytes<32>,
6992                alloy::sol_types::sol_data::Address,
6993            );
6994            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
6995            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6996                alloy_sol_types::private::B256::new([
6997                    127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8, 224u8,
6998                    56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8, 179u8, 191u8,
6999                    114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
7000                ]);
7001            const ANONYMOUS: bool = false;
7002            #[allow(unused_variables)]
7003            #[inline]
7004            fn new(
7005                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7006                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7007            ) -> Self {
7008                Self {
7009                    account: topics.1,
7010                    amount: data.0,
7011                }
7012            }
7013            #[inline]
7014            fn check_signature(
7015                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7016            ) -> alloy_sol_types::Result<()> {
7017                if topics.0 != Self::SIGNATURE_HASH {
7018                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
7019                        Self::SIGNATURE,
7020                        topics.0,
7021                        Self::SIGNATURE_HASH,
7022                    ));
7023                }
7024                Ok(())
7025            }
7026            #[inline]
7027            fn tokenize_body(&self) -> Self::DataToken<'_> {
7028                (
7029                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7030                        &self.amount,
7031                    ),
7032                )
7033            }
7034            #[inline]
7035            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7036                (Self::SIGNATURE_HASH.into(), self.account.clone())
7037            }
7038            #[inline]
7039            fn encode_topics_raw(
7040                &self,
7041                out: &mut [alloy_sol_types::abi::token::WordToken],
7042            ) -> alloy_sol_types::Result<()> {
7043                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7044                    return Err(alloy_sol_types::Error::Overrun);
7045                }
7046                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
7047                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7048                    &self.account,
7049                );
7050                Ok(())
7051            }
7052        }
7053        #[automatically_derived]
7054        impl alloy_sol_types::private::IntoLogData for Withdrawal {
7055            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7056                From::from(self)
7057            }
7058            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7059                From::from(&self)
7060            }
7061        }
7062        #[automatically_derived]
7063        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
7064            #[inline]
7065            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
7066                alloy_sol_types::SolEvent::encode_log_data(this)
7067            }
7068        }
7069    };
7070    /**Constructor`.
7071    ```solidity
7072    constructor();
7073    ```*/
7074    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7075    #[derive(Clone)]
7076    pub struct constructorCall {}
7077    const _: () = {
7078        use alloy::sol_types as alloy_sol_types;
7079        {
7080            #[doc(hidden)]
7081            type UnderlyingSolTuple<'a> = ();
7082            #[doc(hidden)]
7083            type UnderlyingRustTuple<'a> = ();
7084            #[cfg(test)]
7085            #[allow(dead_code, unreachable_patterns)]
7086            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7087                match _t {
7088                    alloy_sol_types::private::AssertTypeEq::<
7089                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7090                    >(_) => {},
7091                }
7092            }
7093            #[automatically_derived]
7094            #[doc(hidden)]
7095            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
7096                fn from(value: constructorCall) -> Self {
7097                    ()
7098                }
7099            }
7100            #[automatically_derived]
7101            #[doc(hidden)]
7102            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
7103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7104                    Self {}
7105                }
7106            }
7107        }
7108        #[automatically_derived]
7109        impl alloy_sol_types::SolConstructor for constructorCall {
7110            type Parameters<'a> = ();
7111            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7112            #[inline]
7113            fn new<'a>(
7114                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7115            ) -> Self {
7116                tuple.into()
7117            }
7118            #[inline]
7119            fn tokenize(&self) -> Self::Token<'_> {
7120                ()
7121            }
7122        }
7123    };
7124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7125    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
7126    ```solidity
7127    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
7128    ```*/
7129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7130    #[derive(Clone)]
7131    pub struct DEFAULT_ADMIN_ROLECall {}
7132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7133    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
7134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7135    #[derive(Clone)]
7136    pub struct DEFAULT_ADMIN_ROLEReturn {
7137        #[allow(missing_docs)]
7138        pub _0: alloy::sol_types::private::FixedBytes<32>,
7139    }
7140    #[allow(
7141        non_camel_case_types,
7142        non_snake_case,
7143        clippy::pub_underscore_fields,
7144        clippy::style
7145    )]
7146    const _: () = {
7147        use alloy::sol_types as alloy_sol_types;
7148        {
7149            #[doc(hidden)]
7150            type UnderlyingSolTuple<'a> = ();
7151            #[doc(hidden)]
7152            type UnderlyingRustTuple<'a> = ();
7153            #[cfg(test)]
7154            #[allow(dead_code, unreachable_patterns)]
7155            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7156                match _t {
7157                    alloy_sol_types::private::AssertTypeEq::<
7158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7159                    >(_) => {},
7160                }
7161            }
7162            #[automatically_derived]
7163            #[doc(hidden)]
7164            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall> for UnderlyingRustTuple<'_> {
7165                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
7166                    ()
7167                }
7168            }
7169            #[automatically_derived]
7170            #[doc(hidden)]
7171            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_ADMIN_ROLECall {
7172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7173                    Self {}
7174                }
7175            }
7176        }
7177        {
7178            #[doc(hidden)]
7179            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7180            #[doc(hidden)]
7181            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7182            #[cfg(test)]
7183            #[allow(dead_code, unreachable_patterns)]
7184            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7185                match _t {
7186                    alloy_sol_types::private::AssertTypeEq::<
7187                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7188                    >(_) => {},
7189                }
7190            }
7191            #[automatically_derived]
7192            #[doc(hidden)]
7193            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn> for UnderlyingRustTuple<'_> {
7194                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
7195                    (value._0,)
7196                }
7197            }
7198            #[automatically_derived]
7199            #[doc(hidden)]
7200            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_ADMIN_ROLEReturn {
7201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7202                    Self { _0: tuple.0 }
7203                }
7204            }
7205        }
7206        #[automatically_derived]
7207        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
7208            type Parameters<'a> = ();
7209            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7210            type Return = DEFAULT_ADMIN_ROLEReturn;
7211            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7212            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7213            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
7214            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
7215            #[inline]
7216            fn new<'a>(
7217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7218            ) -> Self {
7219                tuple.into()
7220            }
7221            #[inline]
7222            fn tokenize(&self) -> Self::Token<'_> {
7223                ()
7224            }
7225            #[inline]
7226            fn abi_decode_returns(
7227                data: &[u8],
7228                validate: bool,
7229            ) -> alloy_sol_types::Result<Self::Return> {
7230                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7231                    data, validate,
7232                )
7233                .map(Into::into)
7234            }
7235        }
7236    };
7237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7238    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
7239    ```solidity
7240    function PAUSER_ROLE() external view returns (bytes32);
7241    ```*/
7242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7243    #[derive(Clone)]
7244    pub struct PAUSER_ROLECall {}
7245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7246    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
7247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7248    #[derive(Clone)]
7249    pub struct PAUSER_ROLEReturn {
7250        #[allow(missing_docs)]
7251        pub _0: alloy::sol_types::private::FixedBytes<32>,
7252    }
7253    #[allow(
7254        non_camel_case_types,
7255        non_snake_case,
7256        clippy::pub_underscore_fields,
7257        clippy::style
7258    )]
7259    const _: () = {
7260        use alloy::sol_types as alloy_sol_types;
7261        {
7262            #[doc(hidden)]
7263            type UnderlyingSolTuple<'a> = ();
7264            #[doc(hidden)]
7265            type UnderlyingRustTuple<'a> = ();
7266            #[cfg(test)]
7267            #[allow(dead_code, unreachable_patterns)]
7268            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7269                match _t {
7270                    alloy_sol_types::private::AssertTypeEq::<
7271                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7272                    >(_) => {},
7273                }
7274            }
7275            #[automatically_derived]
7276            #[doc(hidden)]
7277            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
7278                fn from(value: PAUSER_ROLECall) -> Self {
7279                    ()
7280                }
7281            }
7282            #[automatically_derived]
7283            #[doc(hidden)]
7284            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
7285                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7286                    Self {}
7287                }
7288            }
7289        }
7290        {
7291            #[doc(hidden)]
7292            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7293            #[doc(hidden)]
7294            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7295            #[cfg(test)]
7296            #[allow(dead_code, unreachable_patterns)]
7297            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7298                match _t {
7299                    alloy_sol_types::private::AssertTypeEq::<
7300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7301                    >(_) => {},
7302                }
7303            }
7304            #[automatically_derived]
7305            #[doc(hidden)]
7306            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
7307                fn from(value: PAUSER_ROLEReturn) -> Self {
7308                    (value._0,)
7309                }
7310            }
7311            #[automatically_derived]
7312            #[doc(hidden)]
7313            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
7314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7315                    Self { _0: tuple.0 }
7316                }
7317            }
7318        }
7319        #[automatically_derived]
7320        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
7321            type Parameters<'a> = ();
7322            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7323            type Return = PAUSER_ROLEReturn;
7324            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7325            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7326            const SIGNATURE: &'static str = "PAUSER_ROLE()";
7327            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
7328            #[inline]
7329            fn new<'a>(
7330                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7331            ) -> Self {
7332                tuple.into()
7333            }
7334            #[inline]
7335            fn tokenize(&self) -> Self::Token<'_> {
7336                ()
7337            }
7338            #[inline]
7339            fn abi_decode_returns(
7340                data: &[u8],
7341                validate: bool,
7342            ) -> alloy_sol_types::Result<Self::Return> {
7343                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7344                    data, validate,
7345                )
7346                .map(Into::into)
7347            }
7348        }
7349    };
7350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7351    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7352    ```solidity
7353    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7354    ```*/
7355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7356    #[derive(Clone)]
7357    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7358    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7359    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7361    #[derive(Clone)]
7362    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7363        #[allow(missing_docs)]
7364        pub _0: alloy::sol_types::private::String,
7365    }
7366    #[allow(
7367        non_camel_case_types,
7368        non_snake_case,
7369        clippy::pub_underscore_fields,
7370        clippy::style
7371    )]
7372    const _: () = {
7373        use alloy::sol_types as alloy_sol_types;
7374        {
7375            #[doc(hidden)]
7376            type UnderlyingSolTuple<'a> = ();
7377            #[doc(hidden)]
7378            type UnderlyingRustTuple<'a> = ();
7379            #[cfg(test)]
7380            #[allow(dead_code, unreachable_patterns)]
7381            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7382                match _t {
7383                    alloy_sol_types::private::AssertTypeEq::<
7384                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7385                    >(_) => {},
7386                }
7387            }
7388            #[automatically_derived]
7389            #[doc(hidden)]
7390            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
7391                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7392                    ()
7393                }
7394            }
7395            #[automatically_derived]
7396            #[doc(hidden)]
7397            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
7398                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7399                    Self {}
7400                }
7401            }
7402        }
7403        {
7404            #[doc(hidden)]
7405            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7406            #[doc(hidden)]
7407            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7408            #[cfg(test)]
7409            #[allow(dead_code, unreachable_patterns)]
7410            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7411                match _t {
7412                    alloy_sol_types::private::AssertTypeEq::<
7413                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7414                    >(_) => {},
7415                }
7416            }
7417            #[automatically_derived]
7418            #[doc(hidden)]
7419            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
7420                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7421                    (value._0,)
7422                }
7423            }
7424            #[automatically_derived]
7425            #[doc(hidden)]
7426            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
7427                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7428                    Self { _0: tuple.0 }
7429                }
7430            }
7431        }
7432        #[automatically_derived]
7433        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7434            type Parameters<'a> = ();
7435            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7436            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7437            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7438            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7439            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7440            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7441            #[inline]
7442            fn new<'a>(
7443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7444            ) -> Self {
7445                tuple.into()
7446            }
7447            #[inline]
7448            fn tokenize(&self) -> Self::Token<'_> {
7449                ()
7450            }
7451            #[inline]
7452            fn abi_decode_returns(
7453                data: &[u8],
7454                validate: bool,
7455            ) -> alloy_sol_types::Result<Self::Return> {
7456                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7457                    data, validate,
7458                )
7459                .map(Into::into)
7460            }
7461        }
7462    };
7463    #[derive()]
7464    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
7465    ```solidity
7466    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
7467    ```*/
7468    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7469    #[derive(Clone)]
7470    pub struct _hashBlsKeyCall {
7471        #[allow(missing_docs)]
7472        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7473    }
7474    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7475    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
7476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7477    #[derive(Clone)]
7478    pub struct _hashBlsKeyReturn {
7479        #[allow(missing_docs)]
7480        pub _0: alloy::sol_types::private::FixedBytes<32>,
7481    }
7482    #[allow(
7483        non_camel_case_types,
7484        non_snake_case,
7485        clippy::pub_underscore_fields,
7486        clippy::style
7487    )]
7488    const _: () = {
7489        use alloy::sol_types as alloy_sol_types;
7490        {
7491            #[doc(hidden)]
7492            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
7493            #[doc(hidden)]
7494            type UnderlyingRustTuple<'a> =
7495                (<BN254::G2Point as alloy::sol_types::SolType>::RustType,);
7496            #[cfg(test)]
7497            #[allow(dead_code, unreachable_patterns)]
7498            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7499                match _t {
7500                    alloy_sol_types::private::AssertTypeEq::<
7501                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7502                    >(_) => {},
7503                }
7504            }
7505            #[automatically_derived]
7506            #[doc(hidden)]
7507            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
7508                fn from(value: _hashBlsKeyCall) -> Self {
7509                    (value.blsVK,)
7510                }
7511            }
7512            #[automatically_derived]
7513            #[doc(hidden)]
7514            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
7515                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7516                    Self { blsVK: tuple.0 }
7517                }
7518            }
7519        }
7520        {
7521            #[doc(hidden)]
7522            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7523            #[doc(hidden)]
7524            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7525            #[cfg(test)]
7526            #[allow(dead_code, unreachable_patterns)]
7527            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7528                match _t {
7529                    alloy_sol_types::private::AssertTypeEq::<
7530                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7531                    >(_) => {},
7532                }
7533            }
7534            #[automatically_derived]
7535            #[doc(hidden)]
7536            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
7537                fn from(value: _hashBlsKeyReturn) -> Self {
7538                    (value._0,)
7539                }
7540            }
7541            #[automatically_derived]
7542            #[doc(hidden)]
7543            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
7544                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7545                    Self { _0: tuple.0 }
7546                }
7547            }
7548        }
7549        #[automatically_derived]
7550        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
7551            type Parameters<'a> = (BN254::G2Point,);
7552            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7553            type Return = _hashBlsKeyReturn;
7554            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7555            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7556            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
7557            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
7558            #[inline]
7559            fn new<'a>(
7560                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7561            ) -> Self {
7562                tuple.into()
7563            }
7564            #[inline]
7565            fn tokenize(&self) -> Self::Token<'_> {
7566                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(
7567                    &self.blsVK,
7568                ),)
7569            }
7570            #[inline]
7571            fn abi_decode_returns(
7572                data: &[u8],
7573                validate: bool,
7574            ) -> alloy_sol_types::Result<Self::Return> {
7575                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7576                    data, validate,
7577                )
7578                .map(Into::into)
7579            }
7580        }
7581    };
7582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7583    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
7584    ```solidity
7585    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
7586    ```*/
7587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7588    #[derive(Clone)]
7589    pub struct blsKeysCall {
7590        #[allow(missing_docs)]
7591        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
7592    }
7593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7594    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
7595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7596    #[derive(Clone)]
7597    pub struct blsKeysReturn {
7598        #[allow(missing_docs)]
7599        pub used: bool,
7600    }
7601    #[allow(
7602        non_camel_case_types,
7603        non_snake_case,
7604        clippy::pub_underscore_fields,
7605        clippy::style
7606    )]
7607    const _: () = {
7608        use alloy::sol_types as alloy_sol_types;
7609        {
7610            #[doc(hidden)]
7611            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7612            #[doc(hidden)]
7613            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7614            #[cfg(test)]
7615            #[allow(dead_code, unreachable_patterns)]
7616            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7617                match _t {
7618                    alloy_sol_types::private::AssertTypeEq::<
7619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7620                    >(_) => {},
7621                }
7622            }
7623            #[automatically_derived]
7624            #[doc(hidden)]
7625            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
7626                fn from(value: blsKeysCall) -> Self {
7627                    (value.blsKeyHash,)
7628                }
7629            }
7630            #[automatically_derived]
7631            #[doc(hidden)]
7632            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
7633                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7634                    Self {
7635                        blsKeyHash: tuple.0,
7636                    }
7637                }
7638            }
7639        }
7640        {
7641            #[doc(hidden)]
7642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7643            #[doc(hidden)]
7644            type UnderlyingRustTuple<'a> = (bool,);
7645            #[cfg(test)]
7646            #[allow(dead_code, unreachable_patterns)]
7647            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7648                match _t {
7649                    alloy_sol_types::private::AssertTypeEq::<
7650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7651                    >(_) => {},
7652                }
7653            }
7654            #[automatically_derived]
7655            #[doc(hidden)]
7656            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
7657                fn from(value: blsKeysReturn) -> Self {
7658                    (value.used,)
7659                }
7660            }
7661            #[automatically_derived]
7662            #[doc(hidden)]
7663            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
7664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7665                    Self { used: tuple.0 }
7666                }
7667            }
7668        }
7669        #[automatically_derived]
7670        impl alloy_sol_types::SolCall for blsKeysCall {
7671            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7672            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7673            type Return = blsKeysReturn;
7674            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7675            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7676            const SIGNATURE: &'static str = "blsKeys(bytes32)";
7677            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
7678            #[inline]
7679            fn new<'a>(
7680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7681            ) -> Self {
7682                tuple.into()
7683            }
7684            #[inline]
7685            fn tokenize(&self) -> Self::Token<'_> {
7686                (
7687                    <alloy::sol_types::sol_data::FixedBytes<
7688                        32,
7689                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
7690                )
7691            }
7692            #[inline]
7693            fn abi_decode_returns(
7694                data: &[u8],
7695                validate: bool,
7696            ) -> alloy_sol_types::Result<Self::Return> {
7697                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7698                    data, validate,
7699                )
7700                .map(Into::into)
7701            }
7702        }
7703    };
7704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7705    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
7706    ```solidity
7707    function claimValidatorExit(address validator) external;
7708    ```*/
7709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7710    #[derive(Clone)]
7711    pub struct claimValidatorExitCall {
7712        #[allow(missing_docs)]
7713        pub validator: alloy::sol_types::private::Address,
7714    }
7715    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
7716    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7717    #[derive(Clone)]
7718    pub struct claimValidatorExitReturn {}
7719    #[allow(
7720        non_camel_case_types,
7721        non_snake_case,
7722        clippy::pub_underscore_fields,
7723        clippy::style
7724    )]
7725    const _: () = {
7726        use alloy::sol_types as alloy_sol_types;
7727        {
7728            #[doc(hidden)]
7729            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7730            #[doc(hidden)]
7731            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7732            #[cfg(test)]
7733            #[allow(dead_code, unreachable_patterns)]
7734            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7735                match _t {
7736                    alloy_sol_types::private::AssertTypeEq::<
7737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7738                    >(_) => {},
7739                }
7740            }
7741            #[automatically_derived]
7742            #[doc(hidden)]
7743            impl ::core::convert::From<claimValidatorExitCall> for UnderlyingRustTuple<'_> {
7744                fn from(value: claimValidatorExitCall) -> Self {
7745                    (value.validator,)
7746                }
7747            }
7748            #[automatically_derived]
7749            #[doc(hidden)]
7750            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimValidatorExitCall {
7751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7752                    Self { validator: tuple.0 }
7753                }
7754            }
7755        }
7756        {
7757            #[doc(hidden)]
7758            type UnderlyingSolTuple<'a> = ();
7759            #[doc(hidden)]
7760            type UnderlyingRustTuple<'a> = ();
7761            #[cfg(test)]
7762            #[allow(dead_code, unreachable_patterns)]
7763            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7764                match _t {
7765                    alloy_sol_types::private::AssertTypeEq::<
7766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7767                    >(_) => {},
7768                }
7769            }
7770            #[automatically_derived]
7771            #[doc(hidden)]
7772            impl ::core::convert::From<claimValidatorExitReturn> for UnderlyingRustTuple<'_> {
7773                fn from(value: claimValidatorExitReturn) -> Self {
7774                    ()
7775                }
7776            }
7777            #[automatically_derived]
7778            #[doc(hidden)]
7779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimValidatorExitReturn {
7780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7781                    Self {}
7782                }
7783            }
7784        }
7785        #[automatically_derived]
7786        impl alloy_sol_types::SolCall for claimValidatorExitCall {
7787            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7788            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7789            type Return = claimValidatorExitReturn;
7790            type ReturnTuple<'a> = ();
7791            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7792            const SIGNATURE: &'static str = "claimValidatorExit(address)";
7793            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
7794            #[inline]
7795            fn new<'a>(
7796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7797            ) -> Self {
7798                tuple.into()
7799            }
7800            #[inline]
7801            fn tokenize(&self) -> Self::Token<'_> {
7802                (
7803                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7804                        &self.validator,
7805                    ),
7806                )
7807            }
7808            #[inline]
7809            fn abi_decode_returns(
7810                data: &[u8],
7811                validate: bool,
7812            ) -> alloy_sol_types::Result<Self::Return> {
7813                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7814                    data, validate,
7815                )
7816                .map(Into::into)
7817            }
7818        }
7819    };
7820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7821    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
7822    ```solidity
7823    function claimWithdrawal(address validator) external;
7824    ```*/
7825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7826    #[derive(Clone)]
7827    pub struct claimWithdrawalCall {
7828        #[allow(missing_docs)]
7829        pub validator: alloy::sol_types::private::Address,
7830    }
7831    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
7832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7833    #[derive(Clone)]
7834    pub struct claimWithdrawalReturn {}
7835    #[allow(
7836        non_camel_case_types,
7837        non_snake_case,
7838        clippy::pub_underscore_fields,
7839        clippy::style
7840    )]
7841    const _: () = {
7842        use alloy::sol_types as alloy_sol_types;
7843        {
7844            #[doc(hidden)]
7845            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7846            #[doc(hidden)]
7847            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7848            #[cfg(test)]
7849            #[allow(dead_code, unreachable_patterns)]
7850            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7851                match _t {
7852                    alloy_sol_types::private::AssertTypeEq::<
7853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7854                    >(_) => {},
7855                }
7856            }
7857            #[automatically_derived]
7858            #[doc(hidden)]
7859            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
7860                fn from(value: claimWithdrawalCall) -> Self {
7861                    (value.validator,)
7862                }
7863            }
7864            #[automatically_derived]
7865            #[doc(hidden)]
7866            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
7867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7868                    Self { validator: tuple.0 }
7869                }
7870            }
7871        }
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(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7880                match _t {
7881                    alloy_sol_types::private::AssertTypeEq::<
7882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7883                    >(_) => {},
7884                }
7885            }
7886            #[automatically_derived]
7887            #[doc(hidden)]
7888            impl ::core::convert::From<claimWithdrawalReturn> for UnderlyingRustTuple<'_> {
7889                fn from(value: claimWithdrawalReturn) -> Self {
7890                    ()
7891                }
7892            }
7893            #[automatically_derived]
7894            #[doc(hidden)]
7895            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalReturn {
7896                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7897                    Self {}
7898                }
7899            }
7900        }
7901        #[automatically_derived]
7902        impl alloy_sol_types::SolCall for claimWithdrawalCall {
7903            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7904            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7905            type Return = claimWithdrawalReturn;
7906            type ReturnTuple<'a> = ();
7907            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7908            const SIGNATURE: &'static str = "claimWithdrawal(address)";
7909            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
7910            #[inline]
7911            fn new<'a>(
7912                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7913            ) -> Self {
7914                tuple.into()
7915            }
7916            #[inline]
7917            fn tokenize(&self) -> Self::Token<'_> {
7918                (
7919                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7920                        &self.validator,
7921                    ),
7922                )
7923            }
7924            #[inline]
7925            fn abi_decode_returns(
7926                data: &[u8],
7927                validate: bool,
7928            ) -> alloy_sol_types::Result<Self::Return> {
7929                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7930                    data, validate,
7931                )
7932                .map(Into::into)
7933            }
7934        }
7935    };
7936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7937    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
7938    ```solidity
7939    function delegate(address validator, uint256 amount) external;
7940    ```*/
7941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7942    #[derive(Clone)]
7943    pub struct delegateCall {
7944        #[allow(missing_docs)]
7945        pub validator: alloy::sol_types::private::Address,
7946        #[allow(missing_docs)]
7947        pub amount: alloy::sol_types::private::primitives::aliases::U256,
7948    }
7949    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
7950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7951    #[derive(Clone)]
7952    pub struct delegateReturn {}
7953    #[allow(
7954        non_camel_case_types,
7955        non_snake_case,
7956        clippy::pub_underscore_fields,
7957        clippy::style
7958    )]
7959    const _: () = {
7960        use alloy::sol_types as alloy_sol_types;
7961        {
7962            #[doc(hidden)]
7963            type UnderlyingSolTuple<'a> = (
7964                alloy::sol_types::sol_data::Address,
7965                alloy::sol_types::sol_data::Uint<256>,
7966            );
7967            #[doc(hidden)]
7968            type UnderlyingRustTuple<'a> = (
7969                alloy::sol_types::private::Address,
7970                alloy::sol_types::private::primitives::aliases::U256,
7971            );
7972            #[cfg(test)]
7973            #[allow(dead_code, unreachable_patterns)]
7974            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7975                match _t {
7976                    alloy_sol_types::private::AssertTypeEq::<
7977                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7978                    >(_) => {},
7979                }
7980            }
7981            #[automatically_derived]
7982            #[doc(hidden)]
7983            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
7984                fn from(value: delegateCall) -> Self {
7985                    (value.validator, value.amount)
7986                }
7987            }
7988            #[automatically_derived]
7989            #[doc(hidden)]
7990            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
7991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7992                    Self {
7993                        validator: tuple.0,
7994                        amount: tuple.1,
7995                    }
7996                }
7997            }
7998        }
7999        {
8000            #[doc(hidden)]
8001            type UnderlyingSolTuple<'a> = ();
8002            #[doc(hidden)]
8003            type UnderlyingRustTuple<'a> = ();
8004            #[cfg(test)]
8005            #[allow(dead_code, unreachable_patterns)]
8006            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8007                match _t {
8008                    alloy_sol_types::private::AssertTypeEq::<
8009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8010                    >(_) => {},
8011                }
8012            }
8013            #[automatically_derived]
8014            #[doc(hidden)]
8015            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
8016                fn from(value: delegateReturn) -> Self {
8017                    ()
8018                }
8019            }
8020            #[automatically_derived]
8021            #[doc(hidden)]
8022            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
8023                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8024                    Self {}
8025                }
8026            }
8027        }
8028        #[automatically_derived]
8029        impl alloy_sol_types::SolCall for delegateCall {
8030            type Parameters<'a> = (
8031                alloy::sol_types::sol_data::Address,
8032                alloy::sol_types::sol_data::Uint<256>,
8033            );
8034            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8035            type Return = delegateReturn;
8036            type ReturnTuple<'a> = ();
8037            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8038            const SIGNATURE: &'static str = "delegate(address,uint256)";
8039            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
8040            #[inline]
8041            fn new<'a>(
8042                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8043            ) -> Self {
8044                tuple.into()
8045            }
8046            #[inline]
8047            fn tokenize(&self) -> Self::Token<'_> {
8048                (
8049                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8050                        &self.validator,
8051                    ),
8052                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8053                        &self.amount,
8054                    ),
8055                )
8056            }
8057            #[inline]
8058            fn abi_decode_returns(
8059                data: &[u8],
8060                validate: bool,
8061            ) -> alloy_sol_types::Result<Self::Return> {
8062                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8063                    data, validate,
8064                )
8065                .map(Into::into)
8066            }
8067        }
8068    };
8069    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8070    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
8071    ```solidity
8072    function delegations(address validator, address delegator) external view returns (uint256 amount);
8073    ```*/
8074    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8075    #[derive(Clone)]
8076    pub struct delegationsCall {
8077        #[allow(missing_docs)]
8078        pub validator: alloy::sol_types::private::Address,
8079        #[allow(missing_docs)]
8080        pub delegator: alloy::sol_types::private::Address,
8081    }
8082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8083    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
8084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8085    #[derive(Clone)]
8086    pub struct delegationsReturn {
8087        #[allow(missing_docs)]
8088        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8089    }
8090    #[allow(
8091        non_camel_case_types,
8092        non_snake_case,
8093        clippy::pub_underscore_fields,
8094        clippy::style
8095    )]
8096    const _: () = {
8097        use alloy::sol_types as alloy_sol_types;
8098        {
8099            #[doc(hidden)]
8100            type UnderlyingSolTuple<'a> = (
8101                alloy::sol_types::sol_data::Address,
8102                alloy::sol_types::sol_data::Address,
8103            );
8104            #[doc(hidden)]
8105            type UnderlyingRustTuple<'a> = (
8106                alloy::sol_types::private::Address,
8107                alloy::sol_types::private::Address,
8108            );
8109            #[cfg(test)]
8110            #[allow(dead_code, unreachable_patterns)]
8111            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8112                match _t {
8113                    alloy_sol_types::private::AssertTypeEq::<
8114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8115                    >(_) => {},
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
8121                fn from(value: delegationsCall) -> Self {
8122                    (value.validator, value.delegator)
8123                }
8124            }
8125            #[automatically_derived]
8126            #[doc(hidden)]
8127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
8128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8129                    Self {
8130                        validator: tuple.0,
8131                        delegator: tuple.1,
8132                    }
8133                }
8134            }
8135        }
8136        {
8137            #[doc(hidden)]
8138            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8139            #[doc(hidden)]
8140            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8141            #[cfg(test)]
8142            #[allow(dead_code, unreachable_patterns)]
8143            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8144                match _t {
8145                    alloy_sol_types::private::AssertTypeEq::<
8146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8147                    >(_) => {},
8148                }
8149            }
8150            #[automatically_derived]
8151            #[doc(hidden)]
8152            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
8153                fn from(value: delegationsReturn) -> Self {
8154                    (value.amount,)
8155                }
8156            }
8157            #[automatically_derived]
8158            #[doc(hidden)]
8159            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
8160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8161                    Self { amount: tuple.0 }
8162                }
8163            }
8164        }
8165        #[automatically_derived]
8166        impl alloy_sol_types::SolCall for delegationsCall {
8167            type Parameters<'a> = (
8168                alloy::sol_types::sol_data::Address,
8169                alloy::sol_types::sol_data::Address,
8170            );
8171            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8172            type Return = delegationsReturn;
8173            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8174            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8175            const SIGNATURE: &'static str = "delegations(address,address)";
8176            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
8177            #[inline]
8178            fn new<'a>(
8179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8180            ) -> Self {
8181                tuple.into()
8182            }
8183            #[inline]
8184            fn tokenize(&self) -> Self::Token<'_> {
8185                (
8186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8187                        &self.validator,
8188                    ),
8189                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8190                        &self.delegator,
8191                    ),
8192                )
8193            }
8194            #[inline]
8195            fn abi_decode_returns(
8196                data: &[u8],
8197                validate: bool,
8198            ) -> alloy_sol_types::Result<Self::Return> {
8199                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8200                    data, validate,
8201                )
8202                .map(Into::into)
8203            }
8204        }
8205    };
8206    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8207    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
8208    ```solidity
8209    function deregisterValidator() external;
8210    ```*/
8211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8212    #[derive(Clone)]
8213    pub struct deregisterValidatorCall {}
8214    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
8215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8216    #[derive(Clone)]
8217    pub struct deregisterValidatorReturn {}
8218    #[allow(
8219        non_camel_case_types,
8220        non_snake_case,
8221        clippy::pub_underscore_fields,
8222        clippy::style
8223    )]
8224    const _: () = {
8225        use alloy::sol_types as alloy_sol_types;
8226        {
8227            #[doc(hidden)]
8228            type UnderlyingSolTuple<'a> = ();
8229            #[doc(hidden)]
8230            type UnderlyingRustTuple<'a> = ();
8231            #[cfg(test)]
8232            #[allow(dead_code, unreachable_patterns)]
8233            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8234                match _t {
8235                    alloy_sol_types::private::AssertTypeEq::<
8236                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8237                    >(_) => {},
8238                }
8239            }
8240            #[automatically_derived]
8241            #[doc(hidden)]
8242            impl ::core::convert::From<deregisterValidatorCall> for UnderlyingRustTuple<'_> {
8243                fn from(value: deregisterValidatorCall) -> Self {
8244                    ()
8245                }
8246            }
8247            #[automatically_derived]
8248            #[doc(hidden)]
8249            impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterValidatorCall {
8250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8251                    Self {}
8252                }
8253            }
8254        }
8255        {
8256            #[doc(hidden)]
8257            type UnderlyingSolTuple<'a> = ();
8258            #[doc(hidden)]
8259            type UnderlyingRustTuple<'a> = ();
8260            #[cfg(test)]
8261            #[allow(dead_code, unreachable_patterns)]
8262            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8263                match _t {
8264                    alloy_sol_types::private::AssertTypeEq::<
8265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8266                    >(_) => {},
8267                }
8268            }
8269            #[automatically_derived]
8270            #[doc(hidden)]
8271            impl ::core::convert::From<deregisterValidatorReturn> for UnderlyingRustTuple<'_> {
8272                fn from(value: deregisterValidatorReturn) -> Self {
8273                    ()
8274                }
8275            }
8276            #[automatically_derived]
8277            #[doc(hidden)]
8278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterValidatorReturn {
8279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8280                    Self {}
8281                }
8282            }
8283        }
8284        #[automatically_derived]
8285        impl alloy_sol_types::SolCall for deregisterValidatorCall {
8286            type Parameters<'a> = ();
8287            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8288            type Return = deregisterValidatorReturn;
8289            type ReturnTuple<'a> = ();
8290            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8291            const SIGNATURE: &'static str = "deregisterValidator()";
8292            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
8293            #[inline]
8294            fn new<'a>(
8295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8296            ) -> Self {
8297                tuple.into()
8298            }
8299            #[inline]
8300            fn tokenize(&self) -> Self::Token<'_> {
8301                ()
8302            }
8303            #[inline]
8304            fn abi_decode_returns(
8305                data: &[u8],
8306                validate: bool,
8307            ) -> alloy_sol_types::Result<Self::Return> {
8308                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8309                    data, validate,
8310                )
8311                .map(Into::into)
8312            }
8313        }
8314    };
8315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8316    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
8317    ```solidity
8318    function exitEscrowPeriod() external view returns (uint256);
8319    ```*/
8320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8321    #[derive(Clone)]
8322    pub struct exitEscrowPeriodCall {}
8323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8324    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
8325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8326    #[derive(Clone)]
8327    pub struct exitEscrowPeriodReturn {
8328        #[allow(missing_docs)]
8329        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8330    }
8331    #[allow(
8332        non_camel_case_types,
8333        non_snake_case,
8334        clippy::pub_underscore_fields,
8335        clippy::style
8336    )]
8337    const _: () = {
8338        use alloy::sol_types as alloy_sol_types;
8339        {
8340            #[doc(hidden)]
8341            type UnderlyingSolTuple<'a> = ();
8342            #[doc(hidden)]
8343            type UnderlyingRustTuple<'a> = ();
8344            #[cfg(test)]
8345            #[allow(dead_code, unreachable_patterns)]
8346            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8347                match _t {
8348                    alloy_sol_types::private::AssertTypeEq::<
8349                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8350                    >(_) => {},
8351                }
8352            }
8353            #[automatically_derived]
8354            #[doc(hidden)]
8355            impl ::core::convert::From<exitEscrowPeriodCall> for UnderlyingRustTuple<'_> {
8356                fn from(value: exitEscrowPeriodCall) -> Self {
8357                    ()
8358                }
8359            }
8360            #[automatically_derived]
8361            #[doc(hidden)]
8362            impl ::core::convert::From<UnderlyingRustTuple<'_>> for exitEscrowPeriodCall {
8363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8364                    Self {}
8365                }
8366            }
8367        }
8368        {
8369            #[doc(hidden)]
8370            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8371            #[doc(hidden)]
8372            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8373            #[cfg(test)]
8374            #[allow(dead_code, unreachable_patterns)]
8375            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8376                match _t {
8377                    alloy_sol_types::private::AssertTypeEq::<
8378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8379                    >(_) => {},
8380                }
8381            }
8382            #[automatically_derived]
8383            #[doc(hidden)]
8384            impl ::core::convert::From<exitEscrowPeriodReturn> for UnderlyingRustTuple<'_> {
8385                fn from(value: exitEscrowPeriodReturn) -> Self {
8386                    (value._0,)
8387                }
8388            }
8389            #[automatically_derived]
8390            #[doc(hidden)]
8391            impl ::core::convert::From<UnderlyingRustTuple<'_>> for exitEscrowPeriodReturn {
8392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8393                    Self { _0: tuple.0 }
8394                }
8395            }
8396        }
8397        #[automatically_derived]
8398        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
8399            type Parameters<'a> = ();
8400            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8401            type Return = exitEscrowPeriodReturn;
8402            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8403            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8404            const SIGNATURE: &'static str = "exitEscrowPeriod()";
8405            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
8406            #[inline]
8407            fn new<'a>(
8408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8409            ) -> Self {
8410                tuple.into()
8411            }
8412            #[inline]
8413            fn tokenize(&self) -> Self::Token<'_> {
8414                ()
8415            }
8416            #[inline]
8417            fn abi_decode_returns(
8418                data: &[u8],
8419                validate: bool,
8420            ) -> alloy_sol_types::Result<Self::Return> {
8421                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8422                    data, validate,
8423                )
8424                .map(Into::into)
8425            }
8426        }
8427    };
8428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8429    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
8430    ```solidity
8431    function getRoleAdmin(bytes32 role) external view returns (bytes32);
8432    ```*/
8433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8434    #[derive(Clone)]
8435    pub struct getRoleAdminCall {
8436        #[allow(missing_docs)]
8437        pub role: alloy::sol_types::private::FixedBytes<32>,
8438    }
8439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8440    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
8441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8442    #[derive(Clone)]
8443    pub struct getRoleAdminReturn {
8444        #[allow(missing_docs)]
8445        pub _0: alloy::sol_types::private::FixedBytes<32>,
8446    }
8447    #[allow(
8448        non_camel_case_types,
8449        non_snake_case,
8450        clippy::pub_underscore_fields,
8451        clippy::style
8452    )]
8453    const _: () = {
8454        use alloy::sol_types as alloy_sol_types;
8455        {
8456            #[doc(hidden)]
8457            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8458            #[doc(hidden)]
8459            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8460            #[cfg(test)]
8461            #[allow(dead_code, unreachable_patterns)]
8462            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8463                match _t {
8464                    alloy_sol_types::private::AssertTypeEq::<
8465                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8466                    >(_) => {},
8467                }
8468            }
8469            #[automatically_derived]
8470            #[doc(hidden)]
8471            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
8472                fn from(value: getRoleAdminCall) -> Self {
8473                    (value.role,)
8474                }
8475            }
8476            #[automatically_derived]
8477            #[doc(hidden)]
8478            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
8479                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8480                    Self { role: tuple.0 }
8481                }
8482            }
8483        }
8484        {
8485            #[doc(hidden)]
8486            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8487            #[doc(hidden)]
8488            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8489            #[cfg(test)]
8490            #[allow(dead_code, unreachable_patterns)]
8491            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8492                match _t {
8493                    alloy_sol_types::private::AssertTypeEq::<
8494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8495                    >(_) => {},
8496                }
8497            }
8498            #[automatically_derived]
8499            #[doc(hidden)]
8500            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
8501                fn from(value: getRoleAdminReturn) -> Self {
8502                    (value._0,)
8503                }
8504            }
8505            #[automatically_derived]
8506            #[doc(hidden)]
8507            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
8508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8509                    Self { _0: tuple.0 }
8510                }
8511            }
8512        }
8513        #[automatically_derived]
8514        impl alloy_sol_types::SolCall for getRoleAdminCall {
8515            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8516            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8517            type Return = getRoleAdminReturn;
8518            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8519            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8520            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
8521            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
8522            #[inline]
8523            fn new<'a>(
8524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8525            ) -> Self {
8526                tuple.into()
8527            }
8528            #[inline]
8529            fn tokenize(&self) -> Self::Token<'_> {
8530                (
8531                    <alloy::sol_types::sol_data::FixedBytes<
8532                        32,
8533                    > as alloy_sol_types::SolType>::tokenize(&self.role),
8534                )
8535            }
8536            #[inline]
8537            fn abi_decode_returns(
8538                data: &[u8],
8539                validate: bool,
8540            ) -> alloy_sol_types::Result<Self::Return> {
8541                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8542                    data, validate,
8543                )
8544                .map(Into::into)
8545            }
8546        }
8547    };
8548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8549    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8550    ```solidity
8551    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8552    ```*/
8553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8554    #[derive(Clone)]
8555    pub struct getVersionCall {}
8556    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8557    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8559    #[derive(Clone)]
8560    pub struct getVersionReturn {
8561        #[allow(missing_docs)]
8562        pub majorVersion: u8,
8563        #[allow(missing_docs)]
8564        pub minorVersion: u8,
8565        #[allow(missing_docs)]
8566        pub patchVersion: u8,
8567    }
8568    #[allow(
8569        non_camel_case_types,
8570        non_snake_case,
8571        clippy::pub_underscore_fields,
8572        clippy::style
8573    )]
8574    const _: () = {
8575        use alloy::sol_types as alloy_sol_types;
8576        {
8577            #[doc(hidden)]
8578            type UnderlyingSolTuple<'a> = ();
8579            #[doc(hidden)]
8580            type UnderlyingRustTuple<'a> = ();
8581            #[cfg(test)]
8582            #[allow(dead_code, unreachable_patterns)]
8583            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8584                match _t {
8585                    alloy_sol_types::private::AssertTypeEq::<
8586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8587                    >(_) => {},
8588                }
8589            }
8590            #[automatically_derived]
8591            #[doc(hidden)]
8592            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8593                fn from(value: getVersionCall) -> Self {
8594                    ()
8595                }
8596            }
8597            #[automatically_derived]
8598            #[doc(hidden)]
8599            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8601                    Self {}
8602                }
8603            }
8604        }
8605        {
8606            #[doc(hidden)]
8607            type UnderlyingSolTuple<'a> = (
8608                alloy::sol_types::sol_data::Uint<8>,
8609                alloy::sol_types::sol_data::Uint<8>,
8610                alloy::sol_types::sol_data::Uint<8>,
8611            );
8612            #[doc(hidden)]
8613            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8614            #[cfg(test)]
8615            #[allow(dead_code, unreachable_patterns)]
8616            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8617                match _t {
8618                    alloy_sol_types::private::AssertTypeEq::<
8619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8620                    >(_) => {},
8621                }
8622            }
8623            #[automatically_derived]
8624            #[doc(hidden)]
8625            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8626                fn from(value: getVersionReturn) -> Self {
8627                    (value.majorVersion, value.minorVersion, value.patchVersion)
8628                }
8629            }
8630            #[automatically_derived]
8631            #[doc(hidden)]
8632            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8633                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8634                    Self {
8635                        majorVersion: tuple.0,
8636                        minorVersion: tuple.1,
8637                        patchVersion: tuple.2,
8638                    }
8639                }
8640            }
8641        }
8642        #[automatically_derived]
8643        impl alloy_sol_types::SolCall for getVersionCall {
8644            type Parameters<'a> = ();
8645            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8646            type Return = getVersionReturn;
8647            type ReturnTuple<'a> = (
8648                alloy::sol_types::sol_data::Uint<8>,
8649                alloy::sol_types::sol_data::Uint<8>,
8650                alloy::sol_types::sol_data::Uint<8>,
8651            );
8652            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8653            const SIGNATURE: &'static str = "getVersion()";
8654            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8655            #[inline]
8656            fn new<'a>(
8657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8658            ) -> Self {
8659                tuple.into()
8660            }
8661            #[inline]
8662            fn tokenize(&self) -> Self::Token<'_> {
8663                ()
8664            }
8665            #[inline]
8666            fn abi_decode_returns(
8667                data: &[u8],
8668                validate: bool,
8669            ) -> alloy_sol_types::Result<Self::Return> {
8670                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8671                    data, validate,
8672                )
8673                .map(Into::into)
8674            }
8675        }
8676    };
8677    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8678    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
8679    ```solidity
8680    function grantRole(bytes32 role, address account) external;
8681    ```*/
8682    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8683    #[derive(Clone)]
8684    pub struct grantRoleCall {
8685        #[allow(missing_docs)]
8686        pub role: alloy::sol_types::private::FixedBytes<32>,
8687        #[allow(missing_docs)]
8688        pub account: alloy::sol_types::private::Address,
8689    }
8690    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
8691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8692    #[derive(Clone)]
8693    pub struct grantRoleReturn {}
8694    #[allow(
8695        non_camel_case_types,
8696        non_snake_case,
8697        clippy::pub_underscore_fields,
8698        clippy::style
8699    )]
8700    const _: () = {
8701        use alloy::sol_types as alloy_sol_types;
8702        {
8703            #[doc(hidden)]
8704            type UnderlyingSolTuple<'a> = (
8705                alloy::sol_types::sol_data::FixedBytes<32>,
8706                alloy::sol_types::sol_data::Address,
8707            );
8708            #[doc(hidden)]
8709            type UnderlyingRustTuple<'a> = (
8710                alloy::sol_types::private::FixedBytes<32>,
8711                alloy::sol_types::private::Address,
8712            );
8713            #[cfg(test)]
8714            #[allow(dead_code, unreachable_patterns)]
8715            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8716                match _t {
8717                    alloy_sol_types::private::AssertTypeEq::<
8718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8719                    >(_) => {},
8720                }
8721            }
8722            #[automatically_derived]
8723            #[doc(hidden)]
8724            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
8725                fn from(value: grantRoleCall) -> Self {
8726                    (value.role, value.account)
8727                }
8728            }
8729            #[automatically_derived]
8730            #[doc(hidden)]
8731            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
8732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8733                    Self {
8734                        role: tuple.0,
8735                        account: tuple.1,
8736                    }
8737                }
8738            }
8739        }
8740        {
8741            #[doc(hidden)]
8742            type UnderlyingSolTuple<'a> = ();
8743            #[doc(hidden)]
8744            type UnderlyingRustTuple<'a> = ();
8745            #[cfg(test)]
8746            #[allow(dead_code, unreachable_patterns)]
8747            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8748                match _t {
8749                    alloy_sol_types::private::AssertTypeEq::<
8750                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8751                    >(_) => {},
8752                }
8753            }
8754            #[automatically_derived]
8755            #[doc(hidden)]
8756            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
8757                fn from(value: grantRoleReturn) -> Self {
8758                    ()
8759                }
8760            }
8761            #[automatically_derived]
8762            #[doc(hidden)]
8763            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
8764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8765                    Self {}
8766                }
8767            }
8768        }
8769        #[automatically_derived]
8770        impl alloy_sol_types::SolCall for grantRoleCall {
8771            type Parameters<'a> = (
8772                alloy::sol_types::sol_data::FixedBytes<32>,
8773                alloy::sol_types::sol_data::Address,
8774            );
8775            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8776            type Return = grantRoleReturn;
8777            type ReturnTuple<'a> = ();
8778            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8779            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
8780            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
8781            #[inline]
8782            fn new<'a>(
8783                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8784            ) -> Self {
8785                tuple.into()
8786            }
8787            #[inline]
8788            fn tokenize(&self) -> Self::Token<'_> {
8789                (
8790                    <alloy::sol_types::sol_data::FixedBytes<
8791                        32,
8792                    > as alloy_sol_types::SolType>::tokenize(&self.role),
8793                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8794                        &self.account,
8795                    ),
8796                )
8797            }
8798            #[inline]
8799            fn abi_decode_returns(
8800                data: &[u8],
8801                validate: bool,
8802            ) -> alloy_sol_types::Result<Self::Return> {
8803                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8804                    data, validate,
8805                )
8806                .map(Into::into)
8807            }
8808        }
8809    };
8810    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8811    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
8812    ```solidity
8813    function hasRole(bytes32 role, address account) external view returns (bool);
8814    ```*/
8815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8816    #[derive(Clone)]
8817    pub struct hasRoleCall {
8818        #[allow(missing_docs)]
8819        pub role: alloy::sol_types::private::FixedBytes<32>,
8820        #[allow(missing_docs)]
8821        pub account: alloy::sol_types::private::Address,
8822    }
8823    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8824    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
8825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8826    #[derive(Clone)]
8827    pub struct hasRoleReturn {
8828        #[allow(missing_docs)]
8829        pub _0: bool,
8830    }
8831    #[allow(
8832        non_camel_case_types,
8833        non_snake_case,
8834        clippy::pub_underscore_fields,
8835        clippy::style
8836    )]
8837    const _: () = {
8838        use alloy::sol_types as alloy_sol_types;
8839        {
8840            #[doc(hidden)]
8841            type UnderlyingSolTuple<'a> = (
8842                alloy::sol_types::sol_data::FixedBytes<32>,
8843                alloy::sol_types::sol_data::Address,
8844            );
8845            #[doc(hidden)]
8846            type UnderlyingRustTuple<'a> = (
8847                alloy::sol_types::private::FixedBytes<32>,
8848                alloy::sol_types::private::Address,
8849            );
8850            #[cfg(test)]
8851            #[allow(dead_code, unreachable_patterns)]
8852            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8853                match _t {
8854                    alloy_sol_types::private::AssertTypeEq::<
8855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8856                    >(_) => {},
8857                }
8858            }
8859            #[automatically_derived]
8860            #[doc(hidden)]
8861            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
8862                fn from(value: hasRoleCall) -> Self {
8863                    (value.role, value.account)
8864                }
8865            }
8866            #[automatically_derived]
8867            #[doc(hidden)]
8868            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
8869                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8870                    Self {
8871                        role: tuple.0,
8872                        account: tuple.1,
8873                    }
8874                }
8875            }
8876        }
8877        {
8878            #[doc(hidden)]
8879            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8880            #[doc(hidden)]
8881            type UnderlyingRustTuple<'a> = (bool,);
8882            #[cfg(test)]
8883            #[allow(dead_code, unreachable_patterns)]
8884            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8885                match _t {
8886                    alloy_sol_types::private::AssertTypeEq::<
8887                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8888                    >(_) => {},
8889                }
8890            }
8891            #[automatically_derived]
8892            #[doc(hidden)]
8893            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
8894                fn from(value: hasRoleReturn) -> Self {
8895                    (value._0,)
8896                }
8897            }
8898            #[automatically_derived]
8899            #[doc(hidden)]
8900            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
8901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8902                    Self { _0: tuple.0 }
8903                }
8904            }
8905        }
8906        #[automatically_derived]
8907        impl alloy_sol_types::SolCall for hasRoleCall {
8908            type Parameters<'a> = (
8909                alloy::sol_types::sol_data::FixedBytes<32>,
8910                alloy::sol_types::sol_data::Address,
8911            );
8912            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8913            type Return = hasRoleReturn;
8914            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8915            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8916            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
8917            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
8918            #[inline]
8919            fn new<'a>(
8920                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8921            ) -> Self {
8922                tuple.into()
8923            }
8924            #[inline]
8925            fn tokenize(&self) -> Self::Token<'_> {
8926                (
8927                    <alloy::sol_types::sol_data::FixedBytes<
8928                        32,
8929                    > as alloy_sol_types::SolType>::tokenize(&self.role),
8930                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8931                        &self.account,
8932                    ),
8933                )
8934            }
8935            #[inline]
8936            fn abi_decode_returns(
8937                data: &[u8],
8938                validate: bool,
8939            ) -> alloy_sol_types::Result<Self::Return> {
8940                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8941                    data, validate,
8942                )
8943                .map(Into::into)
8944            }
8945        }
8946    };
8947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8948    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
8949    ```solidity
8950    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
8951    ```*/
8952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8953    #[derive(Clone)]
8954    pub struct initializeCall {
8955        #[allow(missing_docs)]
8956        pub _tokenAddress: alloy::sol_types::private::Address,
8957        #[allow(missing_docs)]
8958        pub _lightClientAddress: alloy::sol_types::private::Address,
8959        #[allow(missing_docs)]
8960        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
8961        #[allow(missing_docs)]
8962        pub _timelock: alloy::sol_types::private::Address,
8963    }
8964    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
8965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8966    #[derive(Clone)]
8967    pub struct initializeReturn {}
8968    #[allow(
8969        non_camel_case_types,
8970        non_snake_case,
8971        clippy::pub_underscore_fields,
8972        clippy::style
8973    )]
8974    const _: () = {
8975        use alloy::sol_types as alloy_sol_types;
8976        {
8977            #[doc(hidden)]
8978            type UnderlyingSolTuple<'a> = (
8979                alloy::sol_types::sol_data::Address,
8980                alloy::sol_types::sol_data::Address,
8981                alloy::sol_types::sol_data::Uint<256>,
8982                alloy::sol_types::sol_data::Address,
8983            );
8984            #[doc(hidden)]
8985            type UnderlyingRustTuple<'a> = (
8986                alloy::sol_types::private::Address,
8987                alloy::sol_types::private::Address,
8988                alloy::sol_types::private::primitives::aliases::U256,
8989                alloy::sol_types::private::Address,
8990            );
8991            #[cfg(test)]
8992            #[allow(dead_code, unreachable_patterns)]
8993            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8994                match _t {
8995                    alloy_sol_types::private::AssertTypeEq::<
8996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8997                    >(_) => {},
8998                }
8999            }
9000            #[automatically_derived]
9001            #[doc(hidden)]
9002            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9003                fn from(value: initializeCall) -> Self {
9004                    (
9005                        value._tokenAddress,
9006                        value._lightClientAddress,
9007                        value._exitEscrowPeriod,
9008                        value._timelock,
9009                    )
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9015                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9016                    Self {
9017                        _tokenAddress: tuple.0,
9018                        _lightClientAddress: tuple.1,
9019                        _exitEscrowPeriod: tuple.2,
9020                        _timelock: tuple.3,
9021                    }
9022                }
9023            }
9024        }
9025        {
9026            #[doc(hidden)]
9027            type UnderlyingSolTuple<'a> = ();
9028            #[doc(hidden)]
9029            type UnderlyingRustTuple<'a> = ();
9030            #[cfg(test)]
9031            #[allow(dead_code, unreachable_patterns)]
9032            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9033                match _t {
9034                    alloy_sol_types::private::AssertTypeEq::<
9035                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9036                    >(_) => {},
9037                }
9038            }
9039            #[automatically_derived]
9040            #[doc(hidden)]
9041            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9042                fn from(value: initializeReturn) -> Self {
9043                    ()
9044                }
9045            }
9046            #[automatically_derived]
9047            #[doc(hidden)]
9048            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9049                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9050                    Self {}
9051                }
9052            }
9053        }
9054        #[automatically_derived]
9055        impl alloy_sol_types::SolCall for initializeCall {
9056            type Parameters<'a> = (
9057                alloy::sol_types::sol_data::Address,
9058                alloy::sol_types::sol_data::Address,
9059                alloy::sol_types::sol_data::Uint<256>,
9060                alloy::sol_types::sol_data::Address,
9061            );
9062            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9063            type Return = initializeReturn;
9064            type ReturnTuple<'a> = ();
9065            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9066            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
9067            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
9068            #[inline]
9069            fn new<'a>(
9070                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9071            ) -> Self {
9072                tuple.into()
9073            }
9074            #[inline]
9075            fn tokenize(&self) -> Self::Token<'_> {
9076                (
9077                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9078                        &self._tokenAddress,
9079                    ),
9080                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9081                        &self._lightClientAddress,
9082                    ),
9083                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9084                        &self._exitEscrowPeriod,
9085                    ),
9086                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9087                        &self._timelock,
9088                    ),
9089                )
9090            }
9091            #[inline]
9092            fn abi_decode_returns(
9093                data: &[u8],
9094                validate: bool,
9095            ) -> alloy_sol_types::Result<Self::Return> {
9096                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9097                    data, validate,
9098                )
9099                .map(Into::into)
9100            }
9101        }
9102    };
9103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9104    /**Function with signature `initializeV2(address,address)` and selector `0x0840ba72`.
9105    ```solidity
9106    function initializeV2(address pauser, address admin) external;
9107    ```*/
9108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9109    #[derive(Clone)]
9110    pub struct initializeV2Call {
9111        #[allow(missing_docs)]
9112        pub pauser: alloy::sol_types::private::Address,
9113        #[allow(missing_docs)]
9114        pub admin: alloy::sol_types::private::Address,
9115    }
9116    ///Container type for the return parameters of the [`initializeV2(address,address)`](initializeV2Call) function.
9117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9118    #[derive(Clone)]
9119    pub struct initializeV2Return {}
9120    #[allow(
9121        non_camel_case_types,
9122        non_snake_case,
9123        clippy::pub_underscore_fields,
9124        clippy::style
9125    )]
9126    const _: () = {
9127        use alloy::sol_types as alloy_sol_types;
9128        {
9129            #[doc(hidden)]
9130            type UnderlyingSolTuple<'a> = (
9131                alloy::sol_types::sol_data::Address,
9132                alloy::sol_types::sol_data::Address,
9133            );
9134            #[doc(hidden)]
9135            type UnderlyingRustTuple<'a> = (
9136                alloy::sol_types::private::Address,
9137                alloy::sol_types::private::Address,
9138            );
9139            #[cfg(test)]
9140            #[allow(dead_code, unreachable_patterns)]
9141            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9142                match _t {
9143                    alloy_sol_types::private::AssertTypeEq::<
9144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9145                    >(_) => {},
9146                }
9147            }
9148            #[automatically_derived]
9149            #[doc(hidden)]
9150            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9151                fn from(value: initializeV2Call) -> Self {
9152                    (value.pauser, value.admin)
9153                }
9154            }
9155            #[automatically_derived]
9156            #[doc(hidden)]
9157            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9158                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9159                    Self {
9160                        pauser: tuple.0,
9161                        admin: tuple.1,
9162                    }
9163                }
9164            }
9165        }
9166        {
9167            #[doc(hidden)]
9168            type UnderlyingSolTuple<'a> = ();
9169            #[doc(hidden)]
9170            type UnderlyingRustTuple<'a> = ();
9171            #[cfg(test)]
9172            #[allow(dead_code, unreachable_patterns)]
9173            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9174                match _t {
9175                    alloy_sol_types::private::AssertTypeEq::<
9176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9177                    >(_) => {},
9178                }
9179            }
9180            #[automatically_derived]
9181            #[doc(hidden)]
9182            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9183                fn from(value: initializeV2Return) -> Self {
9184                    ()
9185                }
9186            }
9187            #[automatically_derived]
9188            #[doc(hidden)]
9189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9191                    Self {}
9192                }
9193            }
9194        }
9195        #[automatically_derived]
9196        impl alloy_sol_types::SolCall for initializeV2Call {
9197            type Parameters<'a> = (
9198                alloy::sol_types::sol_data::Address,
9199                alloy::sol_types::sol_data::Address,
9200            );
9201            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9202            type Return = initializeV2Return;
9203            type ReturnTuple<'a> = ();
9204            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9205            const SIGNATURE: &'static str = "initializeV2(address,address)";
9206            const SELECTOR: [u8; 4] = [8u8, 64u8, 186u8, 114u8];
9207            #[inline]
9208            fn new<'a>(
9209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9210            ) -> Self {
9211                tuple.into()
9212            }
9213            #[inline]
9214            fn tokenize(&self) -> Self::Token<'_> {
9215                (
9216                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9217                        &self.pauser,
9218                    ),
9219                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9220                        &self.admin,
9221                    ),
9222                )
9223            }
9224            #[inline]
9225            fn abi_decode_returns(
9226                data: &[u8],
9227                validate: bool,
9228            ) -> alloy_sol_types::Result<Self::Return> {
9229                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9230                    data, validate,
9231                )
9232                .map(Into::into)
9233            }
9234        }
9235    };
9236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9237    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
9238    ```solidity
9239    function initializedAtBlock() external view returns (uint256);
9240    ```*/
9241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9242    #[derive(Clone)]
9243    pub struct initializedAtBlockCall {}
9244    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9245    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
9246    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9247    #[derive(Clone)]
9248    pub struct initializedAtBlockReturn {
9249        #[allow(missing_docs)]
9250        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9251    }
9252    #[allow(
9253        non_camel_case_types,
9254        non_snake_case,
9255        clippy::pub_underscore_fields,
9256        clippy::style
9257    )]
9258    const _: () = {
9259        use alloy::sol_types as alloy_sol_types;
9260        {
9261            #[doc(hidden)]
9262            type UnderlyingSolTuple<'a> = ();
9263            #[doc(hidden)]
9264            type UnderlyingRustTuple<'a> = ();
9265            #[cfg(test)]
9266            #[allow(dead_code, unreachable_patterns)]
9267            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9268                match _t {
9269                    alloy_sol_types::private::AssertTypeEq::<
9270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9271                    >(_) => {},
9272                }
9273            }
9274            #[automatically_derived]
9275            #[doc(hidden)]
9276            impl ::core::convert::From<initializedAtBlockCall> for UnderlyingRustTuple<'_> {
9277                fn from(value: initializedAtBlockCall) -> Self {
9278                    ()
9279                }
9280            }
9281            #[automatically_derived]
9282            #[doc(hidden)]
9283            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializedAtBlockCall {
9284                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9285                    Self {}
9286                }
9287            }
9288        }
9289        {
9290            #[doc(hidden)]
9291            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9292            #[doc(hidden)]
9293            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9294            #[cfg(test)]
9295            #[allow(dead_code, unreachable_patterns)]
9296            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9297                match _t {
9298                    alloy_sol_types::private::AssertTypeEq::<
9299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9300                    >(_) => {},
9301                }
9302            }
9303            #[automatically_derived]
9304            #[doc(hidden)]
9305            impl ::core::convert::From<initializedAtBlockReturn> for UnderlyingRustTuple<'_> {
9306                fn from(value: initializedAtBlockReturn) -> Self {
9307                    (value._0,)
9308                }
9309            }
9310            #[automatically_derived]
9311            #[doc(hidden)]
9312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializedAtBlockReturn {
9313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9314                    Self { _0: tuple.0 }
9315                }
9316            }
9317        }
9318        #[automatically_derived]
9319        impl alloy_sol_types::SolCall for initializedAtBlockCall {
9320            type Parameters<'a> = ();
9321            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9322            type Return = initializedAtBlockReturn;
9323            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9324            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9325            const SIGNATURE: &'static str = "initializedAtBlock()";
9326            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
9327            #[inline]
9328            fn new<'a>(
9329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9330            ) -> Self {
9331                tuple.into()
9332            }
9333            #[inline]
9334            fn tokenize(&self) -> Self::Token<'_> {
9335                ()
9336            }
9337            #[inline]
9338            fn abi_decode_returns(
9339                data: &[u8],
9340                validate: bool,
9341            ) -> alloy_sol_types::Result<Self::Return> {
9342                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9343                    data, validate,
9344                )
9345                .map(Into::into)
9346            }
9347        }
9348    };
9349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9350    /**Function with signature `lightClient()` and selector `0xb5700e68`.
9351    ```solidity
9352    function lightClient() external view returns (address);
9353    ```*/
9354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9355    #[derive(Clone)]
9356    pub struct lightClientCall {}
9357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9358    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
9359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9360    #[derive(Clone)]
9361    pub struct lightClientReturn {
9362        #[allow(missing_docs)]
9363        pub _0: alloy::sol_types::private::Address,
9364    }
9365    #[allow(
9366        non_camel_case_types,
9367        non_snake_case,
9368        clippy::pub_underscore_fields,
9369        clippy::style
9370    )]
9371    const _: () = {
9372        use alloy::sol_types as alloy_sol_types;
9373        {
9374            #[doc(hidden)]
9375            type UnderlyingSolTuple<'a> = ();
9376            #[doc(hidden)]
9377            type UnderlyingRustTuple<'a> = ();
9378            #[cfg(test)]
9379            #[allow(dead_code, unreachable_patterns)]
9380            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9381                match _t {
9382                    alloy_sol_types::private::AssertTypeEq::<
9383                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9384                    >(_) => {},
9385                }
9386            }
9387            #[automatically_derived]
9388            #[doc(hidden)]
9389            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
9390                fn from(value: lightClientCall) -> Self {
9391                    ()
9392                }
9393            }
9394            #[automatically_derived]
9395            #[doc(hidden)]
9396            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
9397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9398                    Self {}
9399                }
9400            }
9401        }
9402        {
9403            #[doc(hidden)]
9404            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9405            #[doc(hidden)]
9406            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9407            #[cfg(test)]
9408            #[allow(dead_code, unreachable_patterns)]
9409            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9410                match _t {
9411                    alloy_sol_types::private::AssertTypeEq::<
9412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9413                    >(_) => {},
9414                }
9415            }
9416            #[automatically_derived]
9417            #[doc(hidden)]
9418            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
9419                fn from(value: lightClientReturn) -> Self {
9420                    (value._0,)
9421                }
9422            }
9423            #[automatically_derived]
9424            #[doc(hidden)]
9425            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
9426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9427                    Self { _0: tuple.0 }
9428                }
9429            }
9430        }
9431        #[automatically_derived]
9432        impl alloy_sol_types::SolCall for lightClientCall {
9433            type Parameters<'a> = ();
9434            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9435            type Return = lightClientReturn;
9436            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9437            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9438            const SIGNATURE: &'static str = "lightClient()";
9439            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
9440            #[inline]
9441            fn new<'a>(
9442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9443            ) -> Self {
9444                tuple.into()
9445            }
9446            #[inline]
9447            fn tokenize(&self) -> Self::Token<'_> {
9448                ()
9449            }
9450            #[inline]
9451            fn abi_decode_returns(
9452                data: &[u8],
9453                validate: bool,
9454            ) -> alloy_sol_types::Result<Self::Return> {
9455                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9456                    data, validate,
9457                )
9458                .map(Into::into)
9459            }
9460        }
9461    };
9462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9463    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9464    ```solidity
9465    function owner() external view returns (address);
9466    ```*/
9467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9468    #[derive(Clone)]
9469    pub struct ownerCall {}
9470    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9471    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9473    #[derive(Clone)]
9474    pub struct ownerReturn {
9475        #[allow(missing_docs)]
9476        pub _0: alloy::sol_types::private::Address,
9477    }
9478    #[allow(
9479        non_camel_case_types,
9480        non_snake_case,
9481        clippy::pub_underscore_fields,
9482        clippy::style
9483    )]
9484    const _: () = {
9485        use alloy::sol_types as alloy_sol_types;
9486        {
9487            #[doc(hidden)]
9488            type UnderlyingSolTuple<'a> = ();
9489            #[doc(hidden)]
9490            type UnderlyingRustTuple<'a> = ();
9491            #[cfg(test)]
9492            #[allow(dead_code, unreachable_patterns)]
9493            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9494                match _t {
9495                    alloy_sol_types::private::AssertTypeEq::<
9496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9497                    >(_) => {},
9498                }
9499            }
9500            #[automatically_derived]
9501            #[doc(hidden)]
9502            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9503                fn from(value: ownerCall) -> Self {
9504                    ()
9505                }
9506            }
9507            #[automatically_derived]
9508            #[doc(hidden)]
9509            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9511                    Self {}
9512                }
9513            }
9514        }
9515        {
9516            #[doc(hidden)]
9517            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9518            #[doc(hidden)]
9519            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9520            #[cfg(test)]
9521            #[allow(dead_code, unreachable_patterns)]
9522            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9523                match _t {
9524                    alloy_sol_types::private::AssertTypeEq::<
9525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9526                    >(_) => {},
9527                }
9528            }
9529            #[automatically_derived]
9530            #[doc(hidden)]
9531            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9532                fn from(value: ownerReturn) -> Self {
9533                    (value._0,)
9534                }
9535            }
9536            #[automatically_derived]
9537            #[doc(hidden)]
9538            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9540                    Self { _0: tuple.0 }
9541                }
9542            }
9543        }
9544        #[automatically_derived]
9545        impl alloy_sol_types::SolCall for ownerCall {
9546            type Parameters<'a> = ();
9547            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9548            type Return = ownerReturn;
9549            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9550            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9551            const SIGNATURE: &'static str = "owner()";
9552            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9553            #[inline]
9554            fn new<'a>(
9555                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9556            ) -> Self {
9557                tuple.into()
9558            }
9559            #[inline]
9560            fn tokenize(&self) -> Self::Token<'_> {
9561                ()
9562            }
9563            #[inline]
9564            fn abi_decode_returns(
9565                data: &[u8],
9566                validate: bool,
9567            ) -> alloy_sol_types::Result<Self::Return> {
9568                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9569                    data, validate,
9570                )
9571                .map(Into::into)
9572            }
9573        }
9574    };
9575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9576    /**Function with signature `pause()` and selector `0x8456cb59`.
9577    ```solidity
9578    function pause() external;
9579    ```*/
9580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9581    #[derive(Clone)]
9582    pub struct pauseCall {}
9583    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
9584    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9585    #[derive(Clone)]
9586    pub struct pauseReturn {}
9587    #[allow(
9588        non_camel_case_types,
9589        non_snake_case,
9590        clippy::pub_underscore_fields,
9591        clippy::style
9592    )]
9593    const _: () = {
9594        use alloy::sol_types as alloy_sol_types;
9595        {
9596            #[doc(hidden)]
9597            type UnderlyingSolTuple<'a> = ();
9598            #[doc(hidden)]
9599            type UnderlyingRustTuple<'a> = ();
9600            #[cfg(test)]
9601            #[allow(dead_code, unreachable_patterns)]
9602            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9603                match _t {
9604                    alloy_sol_types::private::AssertTypeEq::<
9605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9606                    >(_) => {},
9607                }
9608            }
9609            #[automatically_derived]
9610            #[doc(hidden)]
9611            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
9612                fn from(value: pauseCall) -> Self {
9613                    ()
9614                }
9615            }
9616            #[automatically_derived]
9617            #[doc(hidden)]
9618            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
9619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9620                    Self {}
9621                }
9622            }
9623        }
9624        {
9625            #[doc(hidden)]
9626            type UnderlyingSolTuple<'a> = ();
9627            #[doc(hidden)]
9628            type UnderlyingRustTuple<'a> = ();
9629            #[cfg(test)]
9630            #[allow(dead_code, unreachable_patterns)]
9631            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9632                match _t {
9633                    alloy_sol_types::private::AssertTypeEq::<
9634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9635                    >(_) => {},
9636                }
9637            }
9638            #[automatically_derived]
9639            #[doc(hidden)]
9640            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
9641                fn from(value: pauseReturn) -> Self {
9642                    ()
9643                }
9644            }
9645            #[automatically_derived]
9646            #[doc(hidden)]
9647            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
9648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9649                    Self {}
9650                }
9651            }
9652        }
9653        #[automatically_derived]
9654        impl alloy_sol_types::SolCall for pauseCall {
9655            type Parameters<'a> = ();
9656            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9657            type Return = pauseReturn;
9658            type ReturnTuple<'a> = ();
9659            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9660            const SIGNATURE: &'static str = "pause()";
9661            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
9662            #[inline]
9663            fn new<'a>(
9664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9665            ) -> Self {
9666                tuple.into()
9667            }
9668            #[inline]
9669            fn tokenize(&self) -> Self::Token<'_> {
9670                ()
9671            }
9672            #[inline]
9673            fn abi_decode_returns(
9674                data: &[u8],
9675                validate: bool,
9676            ) -> alloy_sol_types::Result<Self::Return> {
9677                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9678                    data, validate,
9679                )
9680                .map(Into::into)
9681            }
9682        }
9683    };
9684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9685    /**Function with signature `paused()` and selector `0x5c975abb`.
9686    ```solidity
9687    function paused() external view returns (bool);
9688    ```*/
9689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9690    #[derive(Clone)]
9691    pub struct pausedCall {}
9692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9693    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
9694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9695    #[derive(Clone)]
9696    pub struct pausedReturn {
9697        #[allow(missing_docs)]
9698        pub _0: bool,
9699    }
9700    #[allow(
9701        non_camel_case_types,
9702        non_snake_case,
9703        clippy::pub_underscore_fields,
9704        clippy::style
9705    )]
9706    const _: () = {
9707        use alloy::sol_types as alloy_sol_types;
9708        {
9709            #[doc(hidden)]
9710            type UnderlyingSolTuple<'a> = ();
9711            #[doc(hidden)]
9712            type UnderlyingRustTuple<'a> = ();
9713            #[cfg(test)]
9714            #[allow(dead_code, unreachable_patterns)]
9715            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9716                match _t {
9717                    alloy_sol_types::private::AssertTypeEq::<
9718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9719                    >(_) => {},
9720                }
9721            }
9722            #[automatically_derived]
9723            #[doc(hidden)]
9724            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
9725                fn from(value: pausedCall) -> Self {
9726                    ()
9727                }
9728            }
9729            #[automatically_derived]
9730            #[doc(hidden)]
9731            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
9732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9733                    Self {}
9734                }
9735            }
9736        }
9737        {
9738            #[doc(hidden)]
9739            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9740            #[doc(hidden)]
9741            type UnderlyingRustTuple<'a> = (bool,);
9742            #[cfg(test)]
9743            #[allow(dead_code, unreachable_patterns)]
9744            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9745                match _t {
9746                    alloy_sol_types::private::AssertTypeEq::<
9747                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9748                    >(_) => {},
9749                }
9750            }
9751            #[automatically_derived]
9752            #[doc(hidden)]
9753            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
9754                fn from(value: pausedReturn) -> Self {
9755                    (value._0,)
9756                }
9757            }
9758            #[automatically_derived]
9759            #[doc(hidden)]
9760            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
9761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9762                    Self { _0: tuple.0 }
9763                }
9764            }
9765        }
9766        #[automatically_derived]
9767        impl alloy_sol_types::SolCall for pausedCall {
9768            type Parameters<'a> = ();
9769            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9770            type Return = pausedReturn;
9771            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9772            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9773            const SIGNATURE: &'static str = "paused()";
9774            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
9775            #[inline]
9776            fn new<'a>(
9777                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9778            ) -> Self {
9779                tuple.into()
9780            }
9781            #[inline]
9782            fn tokenize(&self) -> Self::Token<'_> {
9783                ()
9784            }
9785            #[inline]
9786            fn abi_decode_returns(
9787                data: &[u8],
9788                validate: bool,
9789            ) -> alloy_sol_types::Result<Self::Return> {
9790                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9791                    data, validate,
9792                )
9793                .map(Into::into)
9794            }
9795        }
9796    };
9797    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9798    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9799    ```solidity
9800    function proxiableUUID() external view returns (bytes32);
9801    ```*/
9802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9803    #[derive(Clone)]
9804    pub struct proxiableUUIDCall {}
9805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9806    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9807    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9808    #[derive(Clone)]
9809    pub struct proxiableUUIDReturn {
9810        #[allow(missing_docs)]
9811        pub _0: alloy::sol_types::private::FixedBytes<32>,
9812    }
9813    #[allow(
9814        non_camel_case_types,
9815        non_snake_case,
9816        clippy::pub_underscore_fields,
9817        clippy::style
9818    )]
9819    const _: () = {
9820        use alloy::sol_types as alloy_sol_types;
9821        {
9822            #[doc(hidden)]
9823            type UnderlyingSolTuple<'a> = ();
9824            #[doc(hidden)]
9825            type UnderlyingRustTuple<'a> = ();
9826            #[cfg(test)]
9827            #[allow(dead_code, unreachable_patterns)]
9828            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9829                match _t {
9830                    alloy_sol_types::private::AssertTypeEq::<
9831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9832                    >(_) => {},
9833                }
9834            }
9835            #[automatically_derived]
9836            #[doc(hidden)]
9837            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9838                fn from(value: proxiableUUIDCall) -> Self {
9839                    ()
9840                }
9841            }
9842            #[automatically_derived]
9843            #[doc(hidden)]
9844            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9846                    Self {}
9847                }
9848            }
9849        }
9850        {
9851            #[doc(hidden)]
9852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9853            #[doc(hidden)]
9854            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9855            #[cfg(test)]
9856            #[allow(dead_code, unreachable_patterns)]
9857            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9858                match _t {
9859                    alloy_sol_types::private::AssertTypeEq::<
9860                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9861                    >(_) => {},
9862                }
9863            }
9864            #[automatically_derived]
9865            #[doc(hidden)]
9866            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9867                fn from(value: proxiableUUIDReturn) -> Self {
9868                    (value._0,)
9869                }
9870            }
9871            #[automatically_derived]
9872            #[doc(hidden)]
9873            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9875                    Self { _0: tuple.0 }
9876                }
9877            }
9878        }
9879        #[automatically_derived]
9880        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9881            type Parameters<'a> = ();
9882            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9883            type Return = proxiableUUIDReturn;
9884            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9885            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9886            const SIGNATURE: &'static str = "proxiableUUID()";
9887            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9888            #[inline]
9889            fn new<'a>(
9890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9891            ) -> Self {
9892                tuple.into()
9893            }
9894            #[inline]
9895            fn tokenize(&self) -> Self::Token<'_> {
9896                ()
9897            }
9898            #[inline]
9899            fn abi_decode_returns(
9900                data: &[u8],
9901                validate: bool,
9902            ) -> alloy_sol_types::Result<Self::Return> {
9903                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9904                    data, validate,
9905                )
9906                .map(Into::into)
9907            }
9908        }
9909    };
9910    #[derive()]
9911    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
9912    ```solidity
9913    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
9914    ```*/
9915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9916    #[derive(Clone)]
9917    pub struct registerValidatorCall {
9918        #[allow(missing_docs)]
9919        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9920        #[allow(missing_docs)]
9921        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9922        #[allow(missing_docs)]
9923        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9924        #[allow(missing_docs)]
9925        pub _3: u16,
9926    }
9927    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
9928    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9929    #[derive(Clone)]
9930    pub struct registerValidatorReturn {}
9931    #[allow(
9932        non_camel_case_types,
9933        non_snake_case,
9934        clippy::pub_underscore_fields,
9935        clippy::style
9936    )]
9937    const _: () = {
9938        use alloy::sol_types as alloy_sol_types;
9939        {
9940            #[doc(hidden)]
9941            type UnderlyingSolTuple<'a> = (
9942                BN254::G2Point,
9943                EdOnBN254::EdOnBN254Point,
9944                BN254::G1Point,
9945                alloy::sol_types::sol_data::Uint<16>,
9946            );
9947            #[doc(hidden)]
9948            type UnderlyingRustTuple<'a> = (
9949                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9950                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9951                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9952                u16,
9953            );
9954            #[cfg(test)]
9955            #[allow(dead_code, unreachable_patterns)]
9956            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9957                match _t {
9958                    alloy_sol_types::private::AssertTypeEq::<
9959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9960                    >(_) => {},
9961                }
9962            }
9963            #[automatically_derived]
9964            #[doc(hidden)]
9965            impl ::core::convert::From<registerValidatorCall> for UnderlyingRustTuple<'_> {
9966                fn from(value: registerValidatorCall) -> Self {
9967                    (value._0, value._1, value._2, value._3)
9968                }
9969            }
9970            #[automatically_derived]
9971            #[doc(hidden)]
9972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerValidatorCall {
9973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9974                    Self {
9975                        _0: tuple.0,
9976                        _1: tuple.1,
9977                        _2: tuple.2,
9978                        _3: tuple.3,
9979                    }
9980                }
9981            }
9982        }
9983        {
9984            #[doc(hidden)]
9985            type UnderlyingSolTuple<'a> = ();
9986            #[doc(hidden)]
9987            type UnderlyingRustTuple<'a> = ();
9988            #[cfg(test)]
9989            #[allow(dead_code, unreachable_patterns)]
9990            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9991                match _t {
9992                    alloy_sol_types::private::AssertTypeEq::<
9993                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9994                    >(_) => {},
9995                }
9996            }
9997            #[automatically_derived]
9998            #[doc(hidden)]
9999            impl ::core::convert::From<registerValidatorReturn> for UnderlyingRustTuple<'_> {
10000                fn from(value: registerValidatorReturn) -> Self {
10001                    ()
10002                }
10003            }
10004            #[automatically_derived]
10005            #[doc(hidden)]
10006            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerValidatorReturn {
10007                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10008                    Self {}
10009                }
10010            }
10011        }
10012        #[automatically_derived]
10013        impl alloy_sol_types::SolCall for registerValidatorCall {
10014            type Parameters<'a> = (
10015                BN254::G2Point,
10016                EdOnBN254::EdOnBN254Point,
10017                BN254::G1Point,
10018                alloy::sol_types::sol_data::Uint<16>,
10019            );
10020            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10021            type Return = registerValidatorReturn;
10022            type ReturnTuple<'a> = ();
10023            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10024            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
10025            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
10026            #[inline]
10027            fn new<'a>(
10028                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10029            ) -> Self {
10030                tuple.into()
10031            }
10032            #[inline]
10033            fn tokenize(&self) -> Self::Token<'_> {
10034                (
10035                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
10036                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(&self._1),
10037                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
10038                    <alloy::sol_types::sol_data::Uint<16> as alloy_sol_types::SolType>::tokenize(
10039                        &self._3,
10040                    ),
10041                )
10042            }
10043            #[inline]
10044            fn abi_decode_returns(
10045                data: &[u8],
10046                validate: bool,
10047            ) -> alloy_sol_types::Result<Self::Return> {
10048                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10049                    data, validate,
10050                )
10051                .map(Into::into)
10052            }
10053        }
10054    };
10055    #[derive()]
10056    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)` and selector `0x304240bf`.
10057    ```solidity
10058    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
10059    ```*/
10060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10061    #[derive(Clone)]
10062    pub struct registerValidatorV2Call {
10063        #[allow(missing_docs)]
10064        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10065        #[allow(missing_docs)]
10066        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10067        #[allow(missing_docs)]
10068        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10069        #[allow(missing_docs)]
10070        pub schnorrSig: alloy::sol_types::private::Bytes,
10071        #[allow(missing_docs)]
10072        pub commission: u16,
10073    }
10074    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)`](registerValidatorV2Call) function.
10075    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10076    #[derive(Clone)]
10077    pub struct registerValidatorV2Return {}
10078    #[allow(
10079        non_camel_case_types,
10080        non_snake_case,
10081        clippy::pub_underscore_fields,
10082        clippy::style
10083    )]
10084    const _: () = {
10085        use alloy::sol_types as alloy_sol_types;
10086        {
10087            #[doc(hidden)]
10088            type UnderlyingSolTuple<'a> = (
10089                BN254::G2Point,
10090                EdOnBN254::EdOnBN254Point,
10091                BN254::G1Point,
10092                alloy::sol_types::sol_data::Bytes,
10093                alloy::sol_types::sol_data::Uint<16>,
10094            );
10095            #[doc(hidden)]
10096            type UnderlyingRustTuple<'a> = (
10097                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10098                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10099                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10100                alloy::sol_types::private::Bytes,
10101                u16,
10102            );
10103            #[cfg(test)]
10104            #[allow(dead_code, unreachable_patterns)]
10105            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10106                match _t {
10107                    alloy_sol_types::private::AssertTypeEq::<
10108                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10109                    >(_) => {},
10110                }
10111            }
10112            #[automatically_derived]
10113            #[doc(hidden)]
10114            impl ::core::convert::From<registerValidatorV2Call> for UnderlyingRustTuple<'_> {
10115                fn from(value: registerValidatorV2Call) -> Self {
10116                    (
10117                        value.blsVK,
10118                        value.schnorrVK,
10119                        value.blsSig,
10120                        value.schnorrSig,
10121                        value.commission,
10122                    )
10123                }
10124            }
10125            #[automatically_derived]
10126            #[doc(hidden)]
10127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerValidatorV2Call {
10128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10129                    Self {
10130                        blsVK: tuple.0,
10131                        schnorrVK: tuple.1,
10132                        blsSig: tuple.2,
10133                        schnorrSig: tuple.3,
10134                        commission: tuple.4,
10135                    }
10136                }
10137            }
10138        }
10139        {
10140            #[doc(hidden)]
10141            type UnderlyingSolTuple<'a> = ();
10142            #[doc(hidden)]
10143            type UnderlyingRustTuple<'a> = ();
10144            #[cfg(test)]
10145            #[allow(dead_code, unreachable_patterns)]
10146            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10147                match _t {
10148                    alloy_sol_types::private::AssertTypeEq::<
10149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10150                    >(_) => {},
10151                }
10152            }
10153            #[automatically_derived]
10154            #[doc(hidden)]
10155            impl ::core::convert::From<registerValidatorV2Return> for UnderlyingRustTuple<'_> {
10156                fn from(value: registerValidatorV2Return) -> Self {
10157                    ()
10158                }
10159            }
10160            #[automatically_derived]
10161            #[doc(hidden)]
10162            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerValidatorV2Return {
10163                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10164                    Self {}
10165                }
10166            }
10167        }
10168        #[automatically_derived]
10169        impl alloy_sol_types::SolCall for registerValidatorV2Call {
10170            type Parameters<'a> = (
10171                BN254::G2Point,
10172                EdOnBN254::EdOnBN254Point,
10173                BN254::G1Point,
10174                alloy::sol_types::sol_data::Bytes,
10175                alloy::sol_types::sol_data::Uint<16>,
10176            );
10177            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10178            type Return = registerValidatorV2Return;
10179            type ReturnTuple<'a> = ();
10180            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10181            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)";
10182            const SELECTOR: [u8; 4] = [48u8, 66u8, 64u8, 191u8];
10183            #[inline]
10184            fn new<'a>(
10185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10186            ) -> Self {
10187                tuple.into()
10188            }
10189            #[inline]
10190            fn tokenize(&self) -> Self::Token<'_> {
10191                (
10192                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10193                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10194                        &self.schnorrVK,
10195                    ),
10196                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10197                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10198                        &self.schnorrSig,
10199                    ),
10200                    <alloy::sol_types::sol_data::Uint<16> as alloy_sol_types::SolType>::tokenize(
10201                        &self.commission,
10202                    ),
10203                )
10204            }
10205            #[inline]
10206            fn abi_decode_returns(
10207                data: &[u8],
10208                validate: bool,
10209            ) -> alloy_sol_types::Result<Self::Return> {
10210                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10211                    data, validate,
10212                )
10213                .map(Into::into)
10214            }
10215        }
10216    };
10217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10218    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10219    ```solidity
10220    function renounceOwnership() external;
10221    ```*/
10222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10223    #[derive(Clone)]
10224    pub struct renounceOwnershipCall {}
10225    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10227    #[derive(Clone)]
10228    pub struct renounceOwnershipReturn {}
10229    #[allow(
10230        non_camel_case_types,
10231        non_snake_case,
10232        clippy::pub_underscore_fields,
10233        clippy::style
10234    )]
10235    const _: () = {
10236        use alloy::sol_types as alloy_sol_types;
10237        {
10238            #[doc(hidden)]
10239            type UnderlyingSolTuple<'a> = ();
10240            #[doc(hidden)]
10241            type UnderlyingRustTuple<'a> = ();
10242            #[cfg(test)]
10243            #[allow(dead_code, unreachable_patterns)]
10244            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10245                match _t {
10246                    alloy_sol_types::private::AssertTypeEq::<
10247                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10248                    >(_) => {},
10249                }
10250            }
10251            #[automatically_derived]
10252            #[doc(hidden)]
10253            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
10254                fn from(value: renounceOwnershipCall) -> Self {
10255                    ()
10256                }
10257            }
10258            #[automatically_derived]
10259            #[doc(hidden)]
10260            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
10261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10262                    Self {}
10263                }
10264            }
10265        }
10266        {
10267            #[doc(hidden)]
10268            type UnderlyingSolTuple<'a> = ();
10269            #[doc(hidden)]
10270            type UnderlyingRustTuple<'a> = ();
10271            #[cfg(test)]
10272            #[allow(dead_code, unreachable_patterns)]
10273            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10274                match _t {
10275                    alloy_sol_types::private::AssertTypeEq::<
10276                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10277                    >(_) => {},
10278                }
10279            }
10280            #[automatically_derived]
10281            #[doc(hidden)]
10282            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
10283                fn from(value: renounceOwnershipReturn) -> Self {
10284                    ()
10285                }
10286            }
10287            #[automatically_derived]
10288            #[doc(hidden)]
10289            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
10290                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10291                    Self {}
10292                }
10293            }
10294        }
10295        #[automatically_derived]
10296        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10297            type Parameters<'a> = ();
10298            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10299            type Return = renounceOwnershipReturn;
10300            type ReturnTuple<'a> = ();
10301            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10302            const SIGNATURE: &'static str = "renounceOwnership()";
10303            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10304            #[inline]
10305            fn new<'a>(
10306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10307            ) -> Self {
10308                tuple.into()
10309            }
10310            #[inline]
10311            fn tokenize(&self) -> Self::Token<'_> {
10312                ()
10313            }
10314            #[inline]
10315            fn abi_decode_returns(
10316                data: &[u8],
10317                validate: bool,
10318            ) -> alloy_sol_types::Result<Self::Return> {
10319                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10320                    data, validate,
10321                )
10322                .map(Into::into)
10323            }
10324        }
10325    };
10326    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10327    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
10328    ```solidity
10329    function renounceRole(bytes32 role, address callerConfirmation) external;
10330    ```*/
10331    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10332    #[derive(Clone)]
10333    pub struct renounceRoleCall {
10334        #[allow(missing_docs)]
10335        pub role: alloy::sol_types::private::FixedBytes<32>,
10336        #[allow(missing_docs)]
10337        pub callerConfirmation: alloy::sol_types::private::Address,
10338    }
10339    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
10340    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10341    #[derive(Clone)]
10342    pub struct renounceRoleReturn {}
10343    #[allow(
10344        non_camel_case_types,
10345        non_snake_case,
10346        clippy::pub_underscore_fields,
10347        clippy::style
10348    )]
10349    const _: () = {
10350        use alloy::sol_types as alloy_sol_types;
10351        {
10352            #[doc(hidden)]
10353            type UnderlyingSolTuple<'a> = (
10354                alloy::sol_types::sol_data::FixedBytes<32>,
10355                alloy::sol_types::sol_data::Address,
10356            );
10357            #[doc(hidden)]
10358            type UnderlyingRustTuple<'a> = (
10359                alloy::sol_types::private::FixedBytes<32>,
10360                alloy::sol_types::private::Address,
10361            );
10362            #[cfg(test)]
10363            #[allow(dead_code, unreachable_patterns)]
10364            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10365                match _t {
10366                    alloy_sol_types::private::AssertTypeEq::<
10367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10368                    >(_) => {},
10369                }
10370            }
10371            #[automatically_derived]
10372            #[doc(hidden)]
10373            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
10374                fn from(value: renounceRoleCall) -> Self {
10375                    (value.role, value.callerConfirmation)
10376                }
10377            }
10378            #[automatically_derived]
10379            #[doc(hidden)]
10380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
10381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10382                    Self {
10383                        role: tuple.0,
10384                        callerConfirmation: tuple.1,
10385                    }
10386                }
10387            }
10388        }
10389        {
10390            #[doc(hidden)]
10391            type UnderlyingSolTuple<'a> = ();
10392            #[doc(hidden)]
10393            type UnderlyingRustTuple<'a> = ();
10394            #[cfg(test)]
10395            #[allow(dead_code, unreachable_patterns)]
10396            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10397                match _t {
10398                    alloy_sol_types::private::AssertTypeEq::<
10399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10400                    >(_) => {},
10401                }
10402            }
10403            #[automatically_derived]
10404            #[doc(hidden)]
10405            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
10406                fn from(value: renounceRoleReturn) -> Self {
10407                    ()
10408                }
10409            }
10410            #[automatically_derived]
10411            #[doc(hidden)]
10412            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
10413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10414                    Self {}
10415                }
10416            }
10417        }
10418        #[automatically_derived]
10419        impl alloy_sol_types::SolCall for renounceRoleCall {
10420            type Parameters<'a> = (
10421                alloy::sol_types::sol_data::FixedBytes<32>,
10422                alloy::sol_types::sol_data::Address,
10423            );
10424            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10425            type Return = renounceRoleReturn;
10426            type ReturnTuple<'a> = ();
10427            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10428            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
10429            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
10430            #[inline]
10431            fn new<'a>(
10432                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10433            ) -> Self {
10434                tuple.into()
10435            }
10436            #[inline]
10437            fn tokenize(&self) -> Self::Token<'_> {
10438                (
10439                    <alloy::sol_types::sol_data::FixedBytes<
10440                        32,
10441                    > as alloy_sol_types::SolType>::tokenize(&self.role),
10442                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10443                        &self.callerConfirmation,
10444                    ),
10445                )
10446            }
10447            #[inline]
10448            fn abi_decode_returns(
10449                data: &[u8],
10450                validate: bool,
10451            ) -> alloy_sol_types::Result<Self::Return> {
10452                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10453                    data, validate,
10454                )
10455                .map(Into::into)
10456            }
10457        }
10458    };
10459    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10460    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
10461    ```solidity
10462    function revokeRole(bytes32 role, address account) external;
10463    ```*/
10464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10465    #[derive(Clone)]
10466    pub struct revokeRoleCall {
10467        #[allow(missing_docs)]
10468        pub role: alloy::sol_types::private::FixedBytes<32>,
10469        #[allow(missing_docs)]
10470        pub account: alloy::sol_types::private::Address,
10471    }
10472    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
10473    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10474    #[derive(Clone)]
10475    pub struct revokeRoleReturn {}
10476    #[allow(
10477        non_camel_case_types,
10478        non_snake_case,
10479        clippy::pub_underscore_fields,
10480        clippy::style
10481    )]
10482    const _: () = {
10483        use alloy::sol_types as alloy_sol_types;
10484        {
10485            #[doc(hidden)]
10486            type UnderlyingSolTuple<'a> = (
10487                alloy::sol_types::sol_data::FixedBytes<32>,
10488                alloy::sol_types::sol_data::Address,
10489            );
10490            #[doc(hidden)]
10491            type UnderlyingRustTuple<'a> = (
10492                alloy::sol_types::private::FixedBytes<32>,
10493                alloy::sol_types::private::Address,
10494            );
10495            #[cfg(test)]
10496            #[allow(dead_code, unreachable_patterns)]
10497            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10498                match _t {
10499                    alloy_sol_types::private::AssertTypeEq::<
10500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10501                    >(_) => {},
10502                }
10503            }
10504            #[automatically_derived]
10505            #[doc(hidden)]
10506            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
10507                fn from(value: revokeRoleCall) -> Self {
10508                    (value.role, value.account)
10509                }
10510            }
10511            #[automatically_derived]
10512            #[doc(hidden)]
10513            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
10514                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10515                    Self {
10516                        role: tuple.0,
10517                        account: tuple.1,
10518                    }
10519                }
10520            }
10521        }
10522        {
10523            #[doc(hidden)]
10524            type UnderlyingSolTuple<'a> = ();
10525            #[doc(hidden)]
10526            type UnderlyingRustTuple<'a> = ();
10527            #[cfg(test)]
10528            #[allow(dead_code, unreachable_patterns)]
10529            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10530                match _t {
10531                    alloy_sol_types::private::AssertTypeEq::<
10532                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10533                    >(_) => {},
10534                }
10535            }
10536            #[automatically_derived]
10537            #[doc(hidden)]
10538            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
10539                fn from(value: revokeRoleReturn) -> Self {
10540                    ()
10541                }
10542            }
10543            #[automatically_derived]
10544            #[doc(hidden)]
10545            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
10546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10547                    Self {}
10548                }
10549            }
10550        }
10551        #[automatically_derived]
10552        impl alloy_sol_types::SolCall for revokeRoleCall {
10553            type Parameters<'a> = (
10554                alloy::sol_types::sol_data::FixedBytes<32>,
10555                alloy::sol_types::sol_data::Address,
10556            );
10557            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10558            type Return = revokeRoleReturn;
10559            type ReturnTuple<'a> = ();
10560            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10561            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
10562            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
10563            #[inline]
10564            fn new<'a>(
10565                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10566            ) -> Self {
10567                tuple.into()
10568            }
10569            #[inline]
10570            fn tokenize(&self) -> Self::Token<'_> {
10571                (
10572                    <alloy::sol_types::sol_data::FixedBytes<
10573                        32,
10574                    > as alloy_sol_types::SolType>::tokenize(&self.role),
10575                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10576                        &self.account,
10577                    ),
10578                )
10579            }
10580            #[inline]
10581            fn abi_decode_returns(
10582                data: &[u8],
10583                validate: bool,
10584            ) -> alloy_sol_types::Result<Self::Return> {
10585                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10586                    data, validate,
10587                )
10588                .map(Into::into)
10589            }
10590        }
10591    };
10592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10593    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
10594    ```solidity
10595    function supportsInterface(bytes4 interfaceId) external view returns (bool);
10596    ```*/
10597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10598    #[derive(Clone)]
10599    pub struct supportsInterfaceCall {
10600        #[allow(missing_docs)]
10601        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
10602    }
10603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10604    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
10605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10606    #[derive(Clone)]
10607    pub struct supportsInterfaceReturn {
10608        #[allow(missing_docs)]
10609        pub _0: bool,
10610    }
10611    #[allow(
10612        non_camel_case_types,
10613        non_snake_case,
10614        clippy::pub_underscore_fields,
10615        clippy::style
10616    )]
10617    const _: () = {
10618        use alloy::sol_types as alloy_sol_types;
10619        {
10620            #[doc(hidden)]
10621            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
10622            #[doc(hidden)]
10623            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
10624            #[cfg(test)]
10625            #[allow(dead_code, unreachable_patterns)]
10626            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10627                match _t {
10628                    alloy_sol_types::private::AssertTypeEq::<
10629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10630                    >(_) => {},
10631                }
10632            }
10633            #[automatically_derived]
10634            #[doc(hidden)]
10635            impl ::core::convert::From<supportsInterfaceCall> for UnderlyingRustTuple<'_> {
10636                fn from(value: supportsInterfaceCall) -> Self {
10637                    (value.interfaceId,)
10638                }
10639            }
10640            #[automatically_derived]
10641            #[doc(hidden)]
10642            impl ::core::convert::From<UnderlyingRustTuple<'_>> for supportsInterfaceCall {
10643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10644                    Self {
10645                        interfaceId: tuple.0,
10646                    }
10647                }
10648            }
10649        }
10650        {
10651            #[doc(hidden)]
10652            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10653            #[doc(hidden)]
10654            type UnderlyingRustTuple<'a> = (bool,);
10655            #[cfg(test)]
10656            #[allow(dead_code, unreachable_patterns)]
10657            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10658                match _t {
10659                    alloy_sol_types::private::AssertTypeEq::<
10660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10661                    >(_) => {},
10662                }
10663            }
10664            #[automatically_derived]
10665            #[doc(hidden)]
10666            impl ::core::convert::From<supportsInterfaceReturn> for UnderlyingRustTuple<'_> {
10667                fn from(value: supportsInterfaceReturn) -> Self {
10668                    (value._0,)
10669                }
10670            }
10671            #[automatically_derived]
10672            #[doc(hidden)]
10673            impl ::core::convert::From<UnderlyingRustTuple<'_>> for supportsInterfaceReturn {
10674                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10675                    Self { _0: tuple.0 }
10676                }
10677            }
10678        }
10679        #[automatically_derived]
10680        impl alloy_sol_types::SolCall for supportsInterfaceCall {
10681            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
10682            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10683            type Return = supportsInterfaceReturn;
10684            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10685            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10686            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
10687            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
10688            #[inline]
10689            fn new<'a>(
10690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10691            ) -> Self {
10692                tuple.into()
10693            }
10694            #[inline]
10695            fn tokenize(&self) -> Self::Token<'_> {
10696                (
10697                    <alloy::sol_types::sol_data::FixedBytes<
10698                        4,
10699                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
10700                )
10701            }
10702            #[inline]
10703            fn abi_decode_returns(
10704                data: &[u8],
10705                validate: bool,
10706            ) -> alloy_sol_types::Result<Self::Return> {
10707                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10708                    data, validate,
10709                )
10710                .map(Into::into)
10711            }
10712        }
10713    };
10714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10715    /**Function with signature `token()` and selector `0xfc0c546a`.
10716    ```solidity
10717    function token() external view returns (address);
10718    ```*/
10719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10720    #[derive(Clone)]
10721    pub struct tokenCall {}
10722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10723    ///Container type for the return parameters of the [`token()`](tokenCall) function.
10724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10725    #[derive(Clone)]
10726    pub struct tokenReturn {
10727        #[allow(missing_docs)]
10728        pub _0: alloy::sol_types::private::Address,
10729    }
10730    #[allow(
10731        non_camel_case_types,
10732        non_snake_case,
10733        clippy::pub_underscore_fields,
10734        clippy::style
10735    )]
10736    const _: () = {
10737        use alloy::sol_types as alloy_sol_types;
10738        {
10739            #[doc(hidden)]
10740            type UnderlyingSolTuple<'a> = ();
10741            #[doc(hidden)]
10742            type UnderlyingRustTuple<'a> = ();
10743            #[cfg(test)]
10744            #[allow(dead_code, unreachable_patterns)]
10745            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10746                match _t {
10747                    alloy_sol_types::private::AssertTypeEq::<
10748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10749                    >(_) => {},
10750                }
10751            }
10752            #[automatically_derived]
10753            #[doc(hidden)]
10754            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
10755                fn from(value: tokenCall) -> Self {
10756                    ()
10757                }
10758            }
10759            #[automatically_derived]
10760            #[doc(hidden)]
10761            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
10762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10763                    Self {}
10764                }
10765            }
10766        }
10767        {
10768            #[doc(hidden)]
10769            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10770            #[doc(hidden)]
10771            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10772            #[cfg(test)]
10773            #[allow(dead_code, unreachable_patterns)]
10774            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10775                match _t {
10776                    alloy_sol_types::private::AssertTypeEq::<
10777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10778                    >(_) => {},
10779                }
10780            }
10781            #[automatically_derived]
10782            #[doc(hidden)]
10783            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
10784                fn from(value: tokenReturn) -> Self {
10785                    (value._0,)
10786                }
10787            }
10788            #[automatically_derived]
10789            #[doc(hidden)]
10790            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
10791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10792                    Self { _0: tuple.0 }
10793                }
10794            }
10795        }
10796        #[automatically_derived]
10797        impl alloy_sol_types::SolCall for tokenCall {
10798            type Parameters<'a> = ();
10799            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10800            type Return = tokenReturn;
10801            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10802            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10803            const SIGNATURE: &'static str = "token()";
10804            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
10805            #[inline]
10806            fn new<'a>(
10807                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10808            ) -> Self {
10809                tuple.into()
10810            }
10811            #[inline]
10812            fn tokenize(&self) -> Self::Token<'_> {
10813                ()
10814            }
10815            #[inline]
10816            fn abi_decode_returns(
10817                data: &[u8],
10818                validate: bool,
10819            ) -> alloy_sol_types::Result<Self::Return> {
10820                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10821                    data, validate,
10822                )
10823                .map(Into::into)
10824            }
10825        }
10826    };
10827    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10828    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10829    ```solidity
10830    function transferOwnership(address newOwner) external;
10831    ```*/
10832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10833    #[derive(Clone)]
10834    pub struct transferOwnershipCall {
10835        #[allow(missing_docs)]
10836        pub newOwner: alloy::sol_types::private::Address,
10837    }
10838    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10840    #[derive(Clone)]
10841    pub struct transferOwnershipReturn {}
10842    #[allow(
10843        non_camel_case_types,
10844        non_snake_case,
10845        clippy::pub_underscore_fields,
10846        clippy::style
10847    )]
10848    const _: () = {
10849        use alloy::sol_types as alloy_sol_types;
10850        {
10851            #[doc(hidden)]
10852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10853            #[doc(hidden)]
10854            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10855            #[cfg(test)]
10856            #[allow(dead_code, unreachable_patterns)]
10857            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10858                match _t {
10859                    alloy_sol_types::private::AssertTypeEq::<
10860                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10861                    >(_) => {},
10862                }
10863            }
10864            #[automatically_derived]
10865            #[doc(hidden)]
10866            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
10867                fn from(value: transferOwnershipCall) -> Self {
10868                    (value.newOwner,)
10869                }
10870            }
10871            #[automatically_derived]
10872            #[doc(hidden)]
10873            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
10874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10875                    Self { newOwner: tuple.0 }
10876                }
10877            }
10878        }
10879        {
10880            #[doc(hidden)]
10881            type UnderlyingSolTuple<'a> = ();
10882            #[doc(hidden)]
10883            type UnderlyingRustTuple<'a> = ();
10884            #[cfg(test)]
10885            #[allow(dead_code, unreachable_patterns)]
10886            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10887                match _t {
10888                    alloy_sol_types::private::AssertTypeEq::<
10889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10890                    >(_) => {},
10891                }
10892            }
10893            #[automatically_derived]
10894            #[doc(hidden)]
10895            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
10896                fn from(value: transferOwnershipReturn) -> Self {
10897                    ()
10898                }
10899            }
10900            #[automatically_derived]
10901            #[doc(hidden)]
10902            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
10903                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10904                    Self {}
10905                }
10906            }
10907        }
10908        #[automatically_derived]
10909        impl alloy_sol_types::SolCall for transferOwnershipCall {
10910            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10911            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10912            type Return = transferOwnershipReturn;
10913            type ReturnTuple<'a> = ();
10914            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10915            const SIGNATURE: &'static str = "transferOwnership(address)";
10916            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10917            #[inline]
10918            fn new<'a>(
10919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10920            ) -> Self {
10921                tuple.into()
10922            }
10923            #[inline]
10924            fn tokenize(&self) -> Self::Token<'_> {
10925                (
10926                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10927                        &self.newOwner,
10928                    ),
10929                )
10930            }
10931            #[inline]
10932            fn abi_decode_returns(
10933                data: &[u8],
10934                validate: bool,
10935            ) -> alloy_sol_types::Result<Self::Return> {
10936                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10937                    data, validate,
10938                )
10939                .map(Into::into)
10940            }
10941        }
10942    };
10943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10944    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
10945    ```solidity
10946    function undelegate(address validator, uint256 amount) external;
10947    ```*/
10948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10949    #[derive(Clone)]
10950    pub struct undelegateCall {
10951        #[allow(missing_docs)]
10952        pub validator: alloy::sol_types::private::Address,
10953        #[allow(missing_docs)]
10954        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10955    }
10956    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
10957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10958    #[derive(Clone)]
10959    pub struct undelegateReturn {}
10960    #[allow(
10961        non_camel_case_types,
10962        non_snake_case,
10963        clippy::pub_underscore_fields,
10964        clippy::style
10965    )]
10966    const _: () = {
10967        use alloy::sol_types as alloy_sol_types;
10968        {
10969            #[doc(hidden)]
10970            type UnderlyingSolTuple<'a> = (
10971                alloy::sol_types::sol_data::Address,
10972                alloy::sol_types::sol_data::Uint<256>,
10973            );
10974            #[doc(hidden)]
10975            type UnderlyingRustTuple<'a> = (
10976                alloy::sol_types::private::Address,
10977                alloy::sol_types::private::primitives::aliases::U256,
10978            );
10979            #[cfg(test)]
10980            #[allow(dead_code, unreachable_patterns)]
10981            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10982                match _t {
10983                    alloy_sol_types::private::AssertTypeEq::<
10984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10985                    >(_) => {},
10986                }
10987            }
10988            #[automatically_derived]
10989            #[doc(hidden)]
10990            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
10991                fn from(value: undelegateCall) -> Self {
10992                    (value.validator, value.amount)
10993                }
10994            }
10995            #[automatically_derived]
10996            #[doc(hidden)]
10997            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
10998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10999                    Self {
11000                        validator: tuple.0,
11001                        amount: tuple.1,
11002                    }
11003                }
11004            }
11005        }
11006        {
11007            #[doc(hidden)]
11008            type UnderlyingSolTuple<'a> = ();
11009            #[doc(hidden)]
11010            type UnderlyingRustTuple<'a> = ();
11011            #[cfg(test)]
11012            #[allow(dead_code, unreachable_patterns)]
11013            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11014                match _t {
11015                    alloy_sol_types::private::AssertTypeEq::<
11016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11017                    >(_) => {},
11018                }
11019            }
11020            #[automatically_derived]
11021            #[doc(hidden)]
11022            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
11023                fn from(value: undelegateReturn) -> Self {
11024                    ()
11025                }
11026            }
11027            #[automatically_derived]
11028            #[doc(hidden)]
11029            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
11030                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11031                    Self {}
11032                }
11033            }
11034        }
11035        #[automatically_derived]
11036        impl alloy_sol_types::SolCall for undelegateCall {
11037            type Parameters<'a> = (
11038                alloy::sol_types::sol_data::Address,
11039                alloy::sol_types::sol_data::Uint<256>,
11040            );
11041            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11042            type Return = undelegateReturn;
11043            type ReturnTuple<'a> = ();
11044            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11045            const SIGNATURE: &'static str = "undelegate(address,uint256)";
11046            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
11047            #[inline]
11048            fn new<'a>(
11049                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11050            ) -> Self {
11051                tuple.into()
11052            }
11053            #[inline]
11054            fn tokenize(&self) -> Self::Token<'_> {
11055                (
11056                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11057                        &self.validator,
11058                    ),
11059                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
11060                        &self.amount,
11061                    ),
11062                )
11063            }
11064            #[inline]
11065            fn abi_decode_returns(
11066                data: &[u8],
11067                validate: bool,
11068            ) -> alloy_sol_types::Result<Self::Return> {
11069                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11070                    data, validate,
11071                )
11072                .map(Into::into)
11073            }
11074        }
11075    };
11076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11077    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
11078    ```solidity
11079    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
11080    ```*/
11081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11082    #[derive(Clone)]
11083    pub struct undelegationsCall {
11084        #[allow(missing_docs)]
11085        pub validator: alloy::sol_types::private::Address,
11086        #[allow(missing_docs)]
11087        pub delegator: alloy::sol_types::private::Address,
11088    }
11089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11090    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
11091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11092    #[derive(Clone)]
11093    pub struct undelegationsReturn {
11094        #[allow(missing_docs)]
11095        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11096        #[allow(missing_docs)]
11097        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11098    }
11099    #[allow(
11100        non_camel_case_types,
11101        non_snake_case,
11102        clippy::pub_underscore_fields,
11103        clippy::style
11104    )]
11105    const _: () = {
11106        use alloy::sol_types as alloy_sol_types;
11107        {
11108            #[doc(hidden)]
11109            type UnderlyingSolTuple<'a> = (
11110                alloy::sol_types::sol_data::Address,
11111                alloy::sol_types::sol_data::Address,
11112            );
11113            #[doc(hidden)]
11114            type UnderlyingRustTuple<'a> = (
11115                alloy::sol_types::private::Address,
11116                alloy::sol_types::private::Address,
11117            );
11118            #[cfg(test)]
11119            #[allow(dead_code, unreachable_patterns)]
11120            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11121                match _t {
11122                    alloy_sol_types::private::AssertTypeEq::<
11123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11124                    >(_) => {},
11125                }
11126            }
11127            #[automatically_derived]
11128            #[doc(hidden)]
11129            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
11130                fn from(value: undelegationsCall) -> Self {
11131                    (value.validator, value.delegator)
11132                }
11133            }
11134            #[automatically_derived]
11135            #[doc(hidden)]
11136            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
11137                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11138                    Self {
11139                        validator: tuple.0,
11140                        delegator: tuple.1,
11141                    }
11142                }
11143            }
11144        }
11145        {
11146            #[doc(hidden)]
11147            type UnderlyingSolTuple<'a> = (
11148                alloy::sol_types::sol_data::Uint<256>,
11149                alloy::sol_types::sol_data::Uint<256>,
11150            );
11151            #[doc(hidden)]
11152            type UnderlyingRustTuple<'a> = (
11153                alloy::sol_types::private::primitives::aliases::U256,
11154                alloy::sol_types::private::primitives::aliases::U256,
11155            );
11156            #[cfg(test)]
11157            #[allow(dead_code, unreachable_patterns)]
11158            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11159                match _t {
11160                    alloy_sol_types::private::AssertTypeEq::<
11161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11162                    >(_) => {},
11163                }
11164            }
11165            #[automatically_derived]
11166            #[doc(hidden)]
11167            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
11168                fn from(value: undelegationsReturn) -> Self {
11169                    (value.amount, value.unlocksAt)
11170                }
11171            }
11172            #[automatically_derived]
11173            #[doc(hidden)]
11174            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
11175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11176                    Self {
11177                        amount: tuple.0,
11178                        unlocksAt: tuple.1,
11179                    }
11180                }
11181            }
11182        }
11183        #[automatically_derived]
11184        impl alloy_sol_types::SolCall for undelegationsCall {
11185            type Parameters<'a> = (
11186                alloy::sol_types::sol_data::Address,
11187                alloy::sol_types::sol_data::Address,
11188            );
11189            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11190            type Return = undelegationsReturn;
11191            type ReturnTuple<'a> = (
11192                alloy::sol_types::sol_data::Uint<256>,
11193                alloy::sol_types::sol_data::Uint<256>,
11194            );
11195            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11196            const SIGNATURE: &'static str = "undelegations(address,address)";
11197            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
11198            #[inline]
11199            fn new<'a>(
11200                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11201            ) -> Self {
11202                tuple.into()
11203            }
11204            #[inline]
11205            fn tokenize(&self) -> Self::Token<'_> {
11206                (
11207                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11208                        &self.validator,
11209                    ),
11210                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11211                        &self.delegator,
11212                    ),
11213                )
11214            }
11215            #[inline]
11216            fn abi_decode_returns(
11217                data: &[u8],
11218                validate: bool,
11219            ) -> alloy_sol_types::Result<Self::Return> {
11220                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11221                    data, validate,
11222                )
11223                .map(Into::into)
11224            }
11225        }
11226    };
11227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11228    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
11229    ```solidity
11230    function unpause() external;
11231    ```*/
11232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11233    #[derive(Clone)]
11234    pub struct unpauseCall {}
11235    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
11236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11237    #[derive(Clone)]
11238    pub struct unpauseReturn {}
11239    #[allow(
11240        non_camel_case_types,
11241        non_snake_case,
11242        clippy::pub_underscore_fields,
11243        clippy::style
11244    )]
11245    const _: () = {
11246        use alloy::sol_types as alloy_sol_types;
11247        {
11248            #[doc(hidden)]
11249            type UnderlyingSolTuple<'a> = ();
11250            #[doc(hidden)]
11251            type UnderlyingRustTuple<'a> = ();
11252            #[cfg(test)]
11253            #[allow(dead_code, unreachable_patterns)]
11254            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11255                match _t {
11256                    alloy_sol_types::private::AssertTypeEq::<
11257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11258                    >(_) => {},
11259                }
11260            }
11261            #[automatically_derived]
11262            #[doc(hidden)]
11263            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
11264                fn from(value: unpauseCall) -> Self {
11265                    ()
11266                }
11267            }
11268            #[automatically_derived]
11269            #[doc(hidden)]
11270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
11271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11272                    Self {}
11273                }
11274            }
11275        }
11276        {
11277            #[doc(hidden)]
11278            type UnderlyingSolTuple<'a> = ();
11279            #[doc(hidden)]
11280            type UnderlyingRustTuple<'a> = ();
11281            #[cfg(test)]
11282            #[allow(dead_code, unreachable_patterns)]
11283            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11284                match _t {
11285                    alloy_sol_types::private::AssertTypeEq::<
11286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11287                    >(_) => {},
11288                }
11289            }
11290            #[automatically_derived]
11291            #[doc(hidden)]
11292            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
11293                fn from(value: unpauseReturn) -> Self {
11294                    ()
11295                }
11296            }
11297            #[automatically_derived]
11298            #[doc(hidden)]
11299            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
11300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11301                    Self {}
11302                }
11303            }
11304        }
11305        #[automatically_derived]
11306        impl alloy_sol_types::SolCall for unpauseCall {
11307            type Parameters<'a> = ();
11308            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11309            type Return = unpauseReturn;
11310            type ReturnTuple<'a> = ();
11311            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11312            const SIGNATURE: &'static str = "unpause()";
11313            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
11314            #[inline]
11315            fn new<'a>(
11316                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11317            ) -> Self {
11318                tuple.into()
11319            }
11320            #[inline]
11321            fn tokenize(&self) -> Self::Token<'_> {
11322                ()
11323            }
11324            #[inline]
11325            fn abi_decode_returns(
11326                data: &[u8],
11327                validate: bool,
11328            ) -> alloy_sol_types::Result<Self::Return> {
11329                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11330                    data, validate,
11331                )
11332                .map(Into::into)
11333            }
11334        }
11335    };
11336    #[derive()]
11337    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
11338    ```solidity
11339    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
11340    ```*/
11341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11342    #[derive(Clone)]
11343    pub struct updateConsensusKeysCall {
11344        #[allow(missing_docs)]
11345        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11346        #[allow(missing_docs)]
11347        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11348        #[allow(missing_docs)]
11349        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11350    }
11351    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
11352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11353    #[derive(Clone)]
11354    pub struct updateConsensusKeysReturn {}
11355    #[allow(
11356        non_camel_case_types,
11357        non_snake_case,
11358        clippy::pub_underscore_fields,
11359        clippy::style
11360    )]
11361    const _: () = {
11362        use alloy::sol_types as alloy_sol_types;
11363        {
11364            #[doc(hidden)]
11365            type UnderlyingSolTuple<'a> =
11366                (BN254::G2Point, EdOnBN254::EdOnBN254Point, BN254::G1Point);
11367            #[doc(hidden)]
11368            type UnderlyingRustTuple<'a> = (
11369                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11370                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11371                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11372            );
11373            #[cfg(test)]
11374            #[allow(dead_code, unreachable_patterns)]
11375            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11376                match _t {
11377                    alloy_sol_types::private::AssertTypeEq::<
11378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11379                    >(_) => {},
11380                }
11381            }
11382            #[automatically_derived]
11383            #[doc(hidden)]
11384            impl ::core::convert::From<updateConsensusKeysCall> for UnderlyingRustTuple<'_> {
11385                fn from(value: updateConsensusKeysCall) -> Self {
11386                    (value._0, value._1, value._2)
11387                }
11388            }
11389            #[automatically_derived]
11390            #[doc(hidden)]
11391            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateConsensusKeysCall {
11392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11393                    Self {
11394                        _0: tuple.0,
11395                        _1: tuple.1,
11396                        _2: tuple.2,
11397                    }
11398                }
11399            }
11400        }
11401        {
11402            #[doc(hidden)]
11403            type UnderlyingSolTuple<'a> = ();
11404            #[doc(hidden)]
11405            type UnderlyingRustTuple<'a> = ();
11406            #[cfg(test)]
11407            #[allow(dead_code, unreachable_patterns)]
11408            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11409                match _t {
11410                    alloy_sol_types::private::AssertTypeEq::<
11411                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11412                    >(_) => {},
11413                }
11414            }
11415            #[automatically_derived]
11416            #[doc(hidden)]
11417            impl ::core::convert::From<updateConsensusKeysReturn> for UnderlyingRustTuple<'_> {
11418                fn from(value: updateConsensusKeysReturn) -> Self {
11419                    ()
11420                }
11421            }
11422            #[automatically_derived]
11423            #[doc(hidden)]
11424            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateConsensusKeysReturn {
11425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11426                    Self {}
11427                }
11428            }
11429        }
11430        #[automatically_derived]
11431        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
11432            type Parameters<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point, BN254::G1Point);
11433            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11434            type Return = updateConsensusKeysReturn;
11435            type ReturnTuple<'a> = ();
11436            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11437            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
11438            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
11439            #[inline]
11440            fn new<'a>(
11441                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11442            ) -> Self {
11443                tuple.into()
11444            }
11445            #[inline]
11446            fn tokenize(&self) -> Self::Token<'_> {
11447                (
11448                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
11449                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(&self._1),
11450                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
11451                )
11452            }
11453            #[inline]
11454            fn abi_decode_returns(
11455                data: &[u8],
11456                validate: bool,
11457            ) -> alloy_sol_types::Result<Self::Return> {
11458                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11459                    data, validate,
11460                )
11461                .map(Into::into)
11462            }
11463        }
11464    };
11465    #[derive()]
11466    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
11467    ```solidity
11468    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
11469    ```*/
11470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11471    #[derive(Clone)]
11472    pub struct updateConsensusKeysV2Call {
11473        #[allow(missing_docs)]
11474        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11475        #[allow(missing_docs)]
11476        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11477        #[allow(missing_docs)]
11478        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11479        #[allow(missing_docs)]
11480        pub schnorrSig: alloy::sol_types::private::Bytes,
11481    }
11482    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
11483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11484    #[derive(Clone)]
11485    pub struct updateConsensusKeysV2Return {}
11486    #[allow(
11487        non_camel_case_types,
11488        non_snake_case,
11489        clippy::pub_underscore_fields,
11490        clippy::style
11491    )]
11492    const _: () = {
11493        use alloy::sol_types as alloy_sol_types;
11494        {
11495            #[doc(hidden)]
11496            type UnderlyingSolTuple<'a> = (
11497                BN254::G2Point,
11498                EdOnBN254::EdOnBN254Point,
11499                BN254::G1Point,
11500                alloy::sol_types::sol_data::Bytes,
11501            );
11502            #[doc(hidden)]
11503            type UnderlyingRustTuple<'a> = (
11504                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11505                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11506                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11507                alloy::sol_types::private::Bytes,
11508            );
11509            #[cfg(test)]
11510            #[allow(dead_code, unreachable_patterns)]
11511            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11512                match _t {
11513                    alloy_sol_types::private::AssertTypeEq::<
11514                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11515                    >(_) => {},
11516                }
11517            }
11518            #[automatically_derived]
11519            #[doc(hidden)]
11520            impl ::core::convert::From<updateConsensusKeysV2Call> for UnderlyingRustTuple<'_> {
11521                fn from(value: updateConsensusKeysV2Call) -> Self {
11522                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
11523                }
11524            }
11525            #[automatically_derived]
11526            #[doc(hidden)]
11527            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateConsensusKeysV2Call {
11528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11529                    Self {
11530                        blsVK: tuple.0,
11531                        schnorrVK: tuple.1,
11532                        blsSig: tuple.2,
11533                        schnorrSig: tuple.3,
11534                    }
11535                }
11536            }
11537        }
11538        {
11539            #[doc(hidden)]
11540            type UnderlyingSolTuple<'a> = ();
11541            #[doc(hidden)]
11542            type UnderlyingRustTuple<'a> = ();
11543            #[cfg(test)]
11544            #[allow(dead_code, unreachable_patterns)]
11545            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11546                match _t {
11547                    alloy_sol_types::private::AssertTypeEq::<
11548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11549                    >(_) => {},
11550                }
11551            }
11552            #[automatically_derived]
11553            #[doc(hidden)]
11554            impl ::core::convert::From<updateConsensusKeysV2Return> for UnderlyingRustTuple<'_> {
11555                fn from(value: updateConsensusKeysV2Return) -> Self {
11556                    ()
11557                }
11558            }
11559            #[automatically_derived]
11560            #[doc(hidden)]
11561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateConsensusKeysV2Return {
11562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11563                    Self {}
11564                }
11565            }
11566        }
11567        #[automatically_derived]
11568        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
11569            type Parameters<'a> = (
11570                BN254::G2Point,
11571                EdOnBN254::EdOnBN254Point,
11572                BN254::G1Point,
11573                alloy::sol_types::sol_data::Bytes,
11574            );
11575            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11576            type Return = updateConsensusKeysV2Return;
11577            type ReturnTuple<'a> = ();
11578            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11579            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
11580            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
11581            #[inline]
11582            fn new<'a>(
11583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11584            ) -> Self {
11585                tuple.into()
11586            }
11587            #[inline]
11588            fn tokenize(&self) -> Self::Token<'_> {
11589                (
11590                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11591                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11592                        &self.schnorrVK,
11593                    ),
11594                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11595                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11596                        &self.schnorrSig,
11597                    ),
11598                )
11599            }
11600            #[inline]
11601            fn abi_decode_returns(
11602                data: &[u8],
11603                validate: bool,
11604            ) -> alloy_sol_types::Result<Self::Return> {
11605                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11606                    data, validate,
11607                )
11608                .map(Into::into)
11609            }
11610        }
11611    };
11612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11613    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
11614    ```solidity
11615    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
11616    ```*/
11617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11618    #[derive(Clone)]
11619    pub struct updateExitEscrowPeriodCall {
11620        #[allow(missing_docs)]
11621        pub newExitEscrowPeriod: u64,
11622    }
11623    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
11624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11625    #[derive(Clone)]
11626    pub struct updateExitEscrowPeriodReturn {}
11627    #[allow(
11628        non_camel_case_types,
11629        non_snake_case,
11630        clippy::pub_underscore_fields,
11631        clippy::style
11632    )]
11633    const _: () = {
11634        use alloy::sol_types as alloy_sol_types;
11635        {
11636            #[doc(hidden)]
11637            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11638            #[doc(hidden)]
11639            type UnderlyingRustTuple<'a> = (u64,);
11640            #[cfg(test)]
11641            #[allow(dead_code, unreachable_patterns)]
11642            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11643                match _t {
11644                    alloy_sol_types::private::AssertTypeEq::<
11645                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11646                    >(_) => {},
11647                }
11648            }
11649            #[automatically_derived]
11650            #[doc(hidden)]
11651            impl ::core::convert::From<updateExitEscrowPeriodCall> for UnderlyingRustTuple<'_> {
11652                fn from(value: updateExitEscrowPeriodCall) -> Self {
11653                    (value.newExitEscrowPeriod,)
11654                }
11655            }
11656            #[automatically_derived]
11657            #[doc(hidden)]
11658            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateExitEscrowPeriodCall {
11659                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11660                    Self {
11661                        newExitEscrowPeriod: tuple.0,
11662                    }
11663                }
11664            }
11665        }
11666        {
11667            #[doc(hidden)]
11668            type UnderlyingSolTuple<'a> = ();
11669            #[doc(hidden)]
11670            type UnderlyingRustTuple<'a> = ();
11671            #[cfg(test)]
11672            #[allow(dead_code, unreachable_patterns)]
11673            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11674                match _t {
11675                    alloy_sol_types::private::AssertTypeEq::<
11676                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11677                    >(_) => {},
11678                }
11679            }
11680            #[automatically_derived]
11681            #[doc(hidden)]
11682            impl ::core::convert::From<updateExitEscrowPeriodReturn> for UnderlyingRustTuple<'_> {
11683                fn from(value: updateExitEscrowPeriodReturn) -> Self {
11684                    ()
11685                }
11686            }
11687            #[automatically_derived]
11688            #[doc(hidden)]
11689            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateExitEscrowPeriodReturn {
11690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11691                    Self {}
11692                }
11693            }
11694        }
11695        #[automatically_derived]
11696        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
11697            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11698            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11699            type Return = updateExitEscrowPeriodReturn;
11700            type ReturnTuple<'a> = ();
11701            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11702            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
11703            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
11704            #[inline]
11705            fn new<'a>(
11706                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11707            ) -> Self {
11708                tuple.into()
11709            }
11710            #[inline]
11711            fn tokenize(&self) -> Self::Token<'_> {
11712                (
11713                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
11714                        &self.newExitEscrowPeriod,
11715                    ),
11716                )
11717            }
11718            #[inline]
11719            fn abi_decode_returns(
11720                data: &[u8],
11721                validate: bool,
11722            ) -> alloy_sol_types::Result<Self::Return> {
11723                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11724                    data, validate,
11725                )
11726                .map(Into::into)
11727            }
11728        }
11729    };
11730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11731    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11732    ```solidity
11733    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11734    ```*/
11735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11736    #[derive(Clone)]
11737    pub struct upgradeToAndCallCall {
11738        #[allow(missing_docs)]
11739        pub newImplementation: alloy::sol_types::private::Address,
11740        #[allow(missing_docs)]
11741        pub data: alloy::sol_types::private::Bytes,
11742    }
11743    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11745    #[derive(Clone)]
11746    pub struct upgradeToAndCallReturn {}
11747    #[allow(
11748        non_camel_case_types,
11749        non_snake_case,
11750        clippy::pub_underscore_fields,
11751        clippy::style
11752    )]
11753    const _: () = {
11754        use alloy::sol_types as alloy_sol_types;
11755        {
11756            #[doc(hidden)]
11757            type UnderlyingSolTuple<'a> = (
11758                alloy::sol_types::sol_data::Address,
11759                alloy::sol_types::sol_data::Bytes,
11760            );
11761            #[doc(hidden)]
11762            type UnderlyingRustTuple<'a> = (
11763                alloy::sol_types::private::Address,
11764                alloy::sol_types::private::Bytes,
11765            );
11766            #[cfg(test)]
11767            #[allow(dead_code, unreachable_patterns)]
11768            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11769                match _t {
11770                    alloy_sol_types::private::AssertTypeEq::<
11771                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11772                    >(_) => {},
11773                }
11774            }
11775            #[automatically_derived]
11776            #[doc(hidden)]
11777            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
11778                fn from(value: upgradeToAndCallCall) -> Self {
11779                    (value.newImplementation, value.data)
11780                }
11781            }
11782            #[automatically_derived]
11783            #[doc(hidden)]
11784            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
11785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11786                    Self {
11787                        newImplementation: tuple.0,
11788                        data: tuple.1,
11789                    }
11790                }
11791            }
11792        }
11793        {
11794            #[doc(hidden)]
11795            type UnderlyingSolTuple<'a> = ();
11796            #[doc(hidden)]
11797            type UnderlyingRustTuple<'a> = ();
11798            #[cfg(test)]
11799            #[allow(dead_code, unreachable_patterns)]
11800            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11801                match _t {
11802                    alloy_sol_types::private::AssertTypeEq::<
11803                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11804                    >(_) => {},
11805                }
11806            }
11807            #[automatically_derived]
11808            #[doc(hidden)]
11809            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
11810                fn from(value: upgradeToAndCallReturn) -> Self {
11811                    ()
11812                }
11813            }
11814            #[automatically_derived]
11815            #[doc(hidden)]
11816            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
11817                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11818                    Self {}
11819                }
11820            }
11821        }
11822        #[automatically_derived]
11823        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11824            type Parameters<'a> = (
11825                alloy::sol_types::sol_data::Address,
11826                alloy::sol_types::sol_data::Bytes,
11827            );
11828            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11829            type Return = upgradeToAndCallReturn;
11830            type ReturnTuple<'a> = ();
11831            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11832            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11833            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11834            #[inline]
11835            fn new<'a>(
11836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11837            ) -> Self {
11838                tuple.into()
11839            }
11840            #[inline]
11841            fn tokenize(&self) -> Self::Token<'_> {
11842                (
11843                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11844                        &self.newImplementation,
11845                    ),
11846                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11847                        &self.data,
11848                    ),
11849                )
11850            }
11851            #[inline]
11852            fn abi_decode_returns(
11853                data: &[u8],
11854                validate: bool,
11855            ) -> alloy_sol_types::Result<Self::Return> {
11856                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11857                    data, validate,
11858                )
11859                .map(Into::into)
11860            }
11861        }
11862    };
11863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11864    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
11865    ```solidity
11866    function validatorExits(address validator) external view returns (uint256 unlocksAt);
11867    ```*/
11868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11869    #[derive(Clone)]
11870    pub struct validatorExitsCall {
11871        #[allow(missing_docs)]
11872        pub validator: alloy::sol_types::private::Address,
11873    }
11874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11875    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
11876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11877    #[derive(Clone)]
11878    pub struct validatorExitsReturn {
11879        #[allow(missing_docs)]
11880        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11881    }
11882    #[allow(
11883        non_camel_case_types,
11884        non_snake_case,
11885        clippy::pub_underscore_fields,
11886        clippy::style
11887    )]
11888    const _: () = {
11889        use alloy::sol_types as alloy_sol_types;
11890        {
11891            #[doc(hidden)]
11892            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11893            #[doc(hidden)]
11894            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11895            #[cfg(test)]
11896            #[allow(dead_code, unreachable_patterns)]
11897            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11898                match _t {
11899                    alloy_sol_types::private::AssertTypeEq::<
11900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11901                    >(_) => {},
11902                }
11903            }
11904            #[automatically_derived]
11905            #[doc(hidden)]
11906            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
11907                fn from(value: validatorExitsCall) -> Self {
11908                    (value.validator,)
11909                }
11910            }
11911            #[automatically_derived]
11912            #[doc(hidden)]
11913            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
11914                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11915                    Self { validator: tuple.0 }
11916                }
11917            }
11918        }
11919        {
11920            #[doc(hidden)]
11921            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11922            #[doc(hidden)]
11923            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
11924            #[cfg(test)]
11925            #[allow(dead_code, unreachable_patterns)]
11926            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11927                match _t {
11928                    alloy_sol_types::private::AssertTypeEq::<
11929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11930                    >(_) => {},
11931                }
11932            }
11933            #[automatically_derived]
11934            #[doc(hidden)]
11935            impl ::core::convert::From<validatorExitsReturn> for UnderlyingRustTuple<'_> {
11936                fn from(value: validatorExitsReturn) -> Self {
11937                    (value.unlocksAt,)
11938                }
11939            }
11940            #[automatically_derived]
11941            #[doc(hidden)]
11942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsReturn {
11943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11944                    Self { unlocksAt: tuple.0 }
11945                }
11946            }
11947        }
11948        #[automatically_derived]
11949        impl alloy_sol_types::SolCall for validatorExitsCall {
11950            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11951            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11952            type Return = validatorExitsReturn;
11953            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11954            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11955            const SIGNATURE: &'static str = "validatorExits(address)";
11956            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
11957            #[inline]
11958            fn new<'a>(
11959                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11960            ) -> Self {
11961                tuple.into()
11962            }
11963            #[inline]
11964            fn tokenize(&self) -> Self::Token<'_> {
11965                (
11966                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11967                        &self.validator,
11968                    ),
11969                )
11970            }
11971            #[inline]
11972            fn abi_decode_returns(
11973                data: &[u8],
11974                validate: bool,
11975            ) -> alloy_sol_types::Result<Self::Return> {
11976                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11977                    data, validate,
11978                )
11979                .map(Into::into)
11980            }
11981        }
11982    };
11983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11984    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
11985    ```solidity
11986    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
11987    ```*/
11988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11989    #[derive(Clone)]
11990    pub struct validatorsCall {
11991        #[allow(missing_docs)]
11992        pub account: alloy::sol_types::private::Address,
11993    }
11994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11995    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
11996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11997    #[derive(Clone)]
11998    pub struct validatorsReturn {
11999        #[allow(missing_docs)]
12000        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
12001        #[allow(missing_docs)]
12002        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
12003    }
12004    #[allow(
12005        non_camel_case_types,
12006        non_snake_case,
12007        clippy::pub_underscore_fields,
12008        clippy::style
12009    )]
12010    const _: () = {
12011        use alloy::sol_types as alloy_sol_types;
12012        {
12013            #[doc(hidden)]
12014            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12015            #[doc(hidden)]
12016            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12017            #[cfg(test)]
12018            #[allow(dead_code, unreachable_patterns)]
12019            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12020                match _t {
12021                    alloy_sol_types::private::AssertTypeEq::<
12022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12023                    >(_) => {},
12024                }
12025            }
12026            #[automatically_derived]
12027            #[doc(hidden)]
12028            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
12029                fn from(value: validatorsCall) -> Self {
12030                    (value.account,)
12031                }
12032            }
12033            #[automatically_derived]
12034            #[doc(hidden)]
12035            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
12036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12037                    Self { account: tuple.0 }
12038                }
12039            }
12040        }
12041        {
12042            #[doc(hidden)]
12043            type UnderlyingSolTuple<'a> = (
12044                alloy::sol_types::sol_data::Uint<256>,
12045                StakeTable::ValidatorStatus,
12046            );
12047            #[doc(hidden)]
12048            type UnderlyingRustTuple<'a> = (
12049                alloy::sol_types::private::primitives::aliases::U256,
12050                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
12051            );
12052            #[cfg(test)]
12053            #[allow(dead_code, unreachable_patterns)]
12054            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12055                match _t {
12056                    alloy_sol_types::private::AssertTypeEq::<
12057                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12058                    >(_) => {},
12059                }
12060            }
12061            #[automatically_derived]
12062            #[doc(hidden)]
12063            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
12064                fn from(value: validatorsReturn) -> Self {
12065                    (value.delegatedAmount, value.status)
12066                }
12067            }
12068            #[automatically_derived]
12069            #[doc(hidden)]
12070            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
12071                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12072                    Self {
12073                        delegatedAmount: tuple.0,
12074                        status: tuple.1,
12075                    }
12076                }
12077            }
12078        }
12079        #[automatically_derived]
12080        impl alloy_sol_types::SolCall for validatorsCall {
12081            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12082            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12083            type Return = validatorsReturn;
12084            type ReturnTuple<'a> = (
12085                alloy::sol_types::sol_data::Uint<256>,
12086                StakeTable::ValidatorStatus,
12087            );
12088            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12089            const SIGNATURE: &'static str = "validators(address)";
12090            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
12091            #[inline]
12092            fn new<'a>(
12093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12094            ) -> Self {
12095                tuple.into()
12096            }
12097            #[inline]
12098            fn tokenize(&self) -> Self::Token<'_> {
12099                (
12100                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12101                        &self.account,
12102                    ),
12103                )
12104            }
12105            #[inline]
12106            fn abi_decode_returns(
12107                data: &[u8],
12108                validate: bool,
12109            ) -> alloy_sol_types::Result<Self::Return> {
12110                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
12111                    data, validate,
12112                )
12113                .map(Into::into)
12114            }
12115        }
12116    };
12117    ///Container for all the [`StakeTableV2`](self) function calls.
12118    #[derive()]
12119    pub enum StakeTableV2Calls {
12120        #[allow(missing_docs)]
12121        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
12122        #[allow(missing_docs)]
12123        PAUSER_ROLE(PAUSER_ROLECall),
12124        #[allow(missing_docs)]
12125        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12126        #[allow(missing_docs)]
12127        _hashBlsKey(_hashBlsKeyCall),
12128        #[allow(missing_docs)]
12129        blsKeys(blsKeysCall),
12130        #[allow(missing_docs)]
12131        claimValidatorExit(claimValidatorExitCall),
12132        #[allow(missing_docs)]
12133        claimWithdrawal(claimWithdrawalCall),
12134        #[allow(missing_docs)]
12135        delegate(delegateCall),
12136        #[allow(missing_docs)]
12137        delegations(delegationsCall),
12138        #[allow(missing_docs)]
12139        deregisterValidator(deregisterValidatorCall),
12140        #[allow(missing_docs)]
12141        exitEscrowPeriod(exitEscrowPeriodCall),
12142        #[allow(missing_docs)]
12143        getRoleAdmin(getRoleAdminCall),
12144        #[allow(missing_docs)]
12145        getVersion(getVersionCall),
12146        #[allow(missing_docs)]
12147        grantRole(grantRoleCall),
12148        #[allow(missing_docs)]
12149        hasRole(hasRoleCall),
12150        #[allow(missing_docs)]
12151        initialize(initializeCall),
12152        #[allow(missing_docs)]
12153        initializeV2(initializeV2Call),
12154        #[allow(missing_docs)]
12155        initializedAtBlock(initializedAtBlockCall),
12156        #[allow(missing_docs)]
12157        lightClient(lightClientCall),
12158        #[allow(missing_docs)]
12159        owner(ownerCall),
12160        #[allow(missing_docs)]
12161        pause(pauseCall),
12162        #[allow(missing_docs)]
12163        paused(pausedCall),
12164        #[allow(missing_docs)]
12165        proxiableUUID(proxiableUUIDCall),
12166        #[allow(missing_docs)]
12167        registerValidator(registerValidatorCall),
12168        #[allow(missing_docs)]
12169        registerValidatorV2(registerValidatorV2Call),
12170        #[allow(missing_docs)]
12171        renounceOwnership(renounceOwnershipCall),
12172        #[allow(missing_docs)]
12173        renounceRole(renounceRoleCall),
12174        #[allow(missing_docs)]
12175        revokeRole(revokeRoleCall),
12176        #[allow(missing_docs)]
12177        supportsInterface(supportsInterfaceCall),
12178        #[allow(missing_docs)]
12179        token(tokenCall),
12180        #[allow(missing_docs)]
12181        transferOwnership(transferOwnershipCall),
12182        #[allow(missing_docs)]
12183        undelegate(undelegateCall),
12184        #[allow(missing_docs)]
12185        undelegations(undelegationsCall),
12186        #[allow(missing_docs)]
12187        unpause(unpauseCall),
12188        #[allow(missing_docs)]
12189        updateConsensusKeys(updateConsensusKeysCall),
12190        #[allow(missing_docs)]
12191        updateConsensusKeysV2(updateConsensusKeysV2Call),
12192        #[allow(missing_docs)]
12193        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
12194        #[allow(missing_docs)]
12195        upgradeToAndCall(upgradeToAndCallCall),
12196        #[allow(missing_docs)]
12197        validatorExits(validatorExitsCall),
12198        #[allow(missing_docs)]
12199        validators(validatorsCall),
12200    }
12201    #[automatically_derived]
12202    impl StakeTableV2Calls {
12203        /// All the selectors of this enum.
12204        ///
12205        /// Note that the selectors might not be in the same order as the variants.
12206        /// No guarantees are made about the order of the selectors.
12207        ///
12208        /// Prefer using `SolInterface` methods instead.
12209        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12210            [1u8, 255u8, 201u8, 167u8],
12211            [2u8, 110u8, 64u8, 43u8],
12212            [8u8, 64u8, 186u8, 114u8],
12213            [13u8, 142u8, 110u8, 44u8],
12214            [19u8, 185u8, 5u8, 122u8],
12215            [26u8, 32u8, 205u8, 99u8],
12216            [33u8, 64u8, 254u8, 205u8],
12217            [36u8, 138u8, 156u8, 163u8],
12218            [47u8, 47u8, 241u8, 93u8],
12219            [48u8, 66u8, 64u8, 191u8],
12220            [54u8, 86u8, 138u8, 190u8],
12221            [62u8, 157u8, 249u8, 181u8],
12222            [63u8, 75u8, 168u8, 58u8],
12223            [77u8, 153u8, 221u8, 22u8],
12224            [79u8, 30u8, 242u8, 134u8],
12225            [82u8, 209u8, 144u8, 45u8],
12226            [85u8, 68u8, 194u8, 241u8],
12227            [92u8, 151u8, 90u8, 187u8],
12228            [106u8, 145u8, 28u8, 207u8],
12229            [113u8, 80u8, 24u8, 166u8],
12230            [132u8, 86u8, 203u8, 89u8],
12231            [141u8, 165u8, 203u8, 91u8],
12232            [145u8, 209u8, 72u8, 84u8],
12233            [155u8, 48u8, 165u8, 230u8],
12234            [158u8, 154u8, 143u8, 49u8],
12235            [162u8, 23u8, 253u8, 223u8],
12236            [162u8, 215u8, 141u8, 213u8],
12237            [163u8, 6u8, 106u8, 171u8],
12238            [172u8, 92u8, 42u8, 208u8],
12239            [173u8, 60u8, 177u8, 204u8],
12240            [179u8, 230u8, 235u8, 213u8],
12241            [181u8, 112u8, 14u8, 104u8],
12242            [181u8, 236u8, 179u8, 68u8],
12243            [190u8, 32u8, 48u8, 148u8],
12244            [198u8, 72u8, 20u8, 221u8],
12245            [213u8, 71u8, 116u8, 31u8],
12246            [230u8, 58u8, 177u8, 233u8],
12247            [242u8, 253u8, 227u8, 139u8],
12248            [250u8, 82u8, 199u8, 216u8],
12249            [252u8, 12u8, 84u8, 106u8],
12250        ];
12251    }
12252    #[automatically_derived]
12253    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
12254        const NAME: &'static str = "StakeTableV2Calls";
12255        const MIN_DATA_LENGTH: usize = 0usize;
12256        const COUNT: usize = 40usize;
12257        #[inline]
12258        fn selector(&self) -> [u8; 4] {
12259            match self {
12260                Self::DEFAULT_ADMIN_ROLE(_) => {
12261                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
12262                },
12263                Self::PAUSER_ROLE(_) => <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR,
12264                Self::UPGRADE_INTERFACE_VERSION(_) => {
12265                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
12266                },
12267                Self::_hashBlsKey(_) => <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR,
12268                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
12269                Self::claimValidatorExit(_) => {
12270                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
12271                },
12272                Self::claimWithdrawal(_) => {
12273                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
12274                },
12275                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
12276                Self::delegations(_) => <delegationsCall as alloy_sol_types::SolCall>::SELECTOR,
12277                Self::deregisterValidator(_) => {
12278                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
12279                },
12280                Self::exitEscrowPeriod(_) => {
12281                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12282                },
12283                Self::getRoleAdmin(_) => <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR,
12284                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
12285                Self::grantRole(_) => <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR,
12286                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
12287                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
12288                Self::initializeV2(_) => <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR,
12289                Self::initializedAtBlock(_) => {
12290                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
12291                },
12292                Self::lightClient(_) => <lightClientCall as alloy_sol_types::SolCall>::SELECTOR,
12293                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12294                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
12295                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
12296                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
12297                Self::registerValidator(_) => {
12298                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
12299                },
12300                Self::registerValidatorV2(_) => {
12301                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
12302                },
12303                Self::renounceOwnership(_) => {
12304                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12305                },
12306                Self::renounceRole(_) => <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR,
12307                Self::revokeRole(_) => <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR,
12308                Self::supportsInterface(_) => {
12309                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
12310                },
12311                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
12312                Self::transferOwnership(_) => {
12313                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12314                },
12315                Self::undelegate(_) => <undelegateCall as alloy_sol_types::SolCall>::SELECTOR,
12316                Self::undelegations(_) => <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR,
12317                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
12318                Self::updateConsensusKeys(_) => {
12319                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
12320                },
12321                Self::updateConsensusKeysV2(_) => {
12322                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
12323                },
12324                Self::updateExitEscrowPeriod(_) => {
12325                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12326                },
12327                Self::upgradeToAndCall(_) => {
12328                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12329                },
12330                Self::validatorExits(_) => {
12331                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
12332                },
12333                Self::validators(_) => <validatorsCall as alloy_sol_types::SolCall>::SELECTOR,
12334            }
12335        }
12336        #[inline]
12337        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12338            Self::SELECTORS.get(i).copied()
12339        }
12340        #[inline]
12341        fn valid_selector(selector: [u8; 4]) -> bool {
12342            Self::SELECTORS.binary_search(&selector).is_ok()
12343        }
12344        #[inline]
12345        #[allow(non_snake_case)]
12346        fn abi_decode_raw(
12347            selector: [u8; 4],
12348            data: &[u8],
12349            validate: bool,
12350        ) -> alloy_sol_types::Result<Self> {
12351            static DECODE_SHIMS: &[fn(
12352                &[u8],
12353                bool,
12354            )
12355                -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
12356                {
12357                    fn supportsInterface(
12358                        data: &[u8],
12359                        validate: bool,
12360                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12361                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
12362                            data, validate,
12363                        )
12364                        .map(StakeTableV2Calls::supportsInterface)
12365                    }
12366                    supportsInterface
12367                },
12368                {
12369                    fn delegate(
12370                        data: &[u8],
12371                        validate: bool,
12372                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12373                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12374                            .map(StakeTableV2Calls::delegate)
12375                    }
12376                    delegate
12377                },
12378                {
12379                    fn initializeV2(
12380                        data: &[u8],
12381                        validate: bool,
12382                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12383                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
12384                            data, validate,
12385                        )
12386                        .map(StakeTableV2Calls::initializeV2)
12387                    }
12388                    initializeV2
12389                },
12390                {
12391                    fn getVersion(
12392                        data: &[u8],
12393                        validate: bool,
12394                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12395                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12396                            .map(StakeTableV2Calls::getVersion)
12397                    }
12398                    getVersion
12399                },
12400                {
12401                    fn registerValidator(
12402                        data: &[u8],
12403                        validate: bool,
12404                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12405                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
12406                            data, validate,
12407                        )
12408                        .map(StakeTableV2Calls::registerValidator)
12409                    }
12410                    registerValidator
12411                },
12412                {
12413                    fn updateExitEscrowPeriod(
12414                        data: &[u8],
12415                        validate: bool,
12416                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12417                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12418                            data, validate,
12419                        )
12420                        .map(StakeTableV2Calls::updateExitEscrowPeriod)
12421                    }
12422                    updateExitEscrowPeriod
12423                },
12424                {
12425                    fn claimValidatorExit(
12426                        data: &[u8],
12427                        validate: bool,
12428                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12429                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
12430                            data, validate,
12431                        )
12432                        .map(StakeTableV2Calls::claimValidatorExit)
12433                    }
12434                    claimValidatorExit
12435                },
12436                {
12437                    fn getRoleAdmin(
12438                        data: &[u8],
12439                        validate: bool,
12440                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12441                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
12442                            data, validate,
12443                        )
12444                        .map(StakeTableV2Calls::getRoleAdmin)
12445                    }
12446                    getRoleAdmin
12447                },
12448                {
12449                    fn grantRole(
12450                        data: &[u8],
12451                        validate: bool,
12452                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12453                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12454                            .map(StakeTableV2Calls::grantRole)
12455                    }
12456                    grantRole
12457                },
12458                {
12459                    fn registerValidatorV2(
12460                        data: &[u8],
12461                        validate: bool,
12462                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12463                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
12464                            data, validate,
12465                        )
12466                        .map(StakeTableV2Calls::registerValidatorV2)
12467                    }
12468                    registerValidatorV2
12469                },
12470                {
12471                    fn renounceRole(
12472                        data: &[u8],
12473                        validate: bool,
12474                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12475                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
12476                            data, validate,
12477                        )
12478                        .map(StakeTableV2Calls::renounceRole)
12479                    }
12480                    renounceRole
12481                },
12482                {
12483                    fn initializedAtBlock(
12484                        data: &[u8],
12485                        validate: bool,
12486                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12487                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12488                            data, validate,
12489                        )
12490                        .map(StakeTableV2Calls::initializedAtBlock)
12491                    }
12492                    initializedAtBlock
12493                },
12494                {
12495                    fn unpause(
12496                        data: &[u8],
12497                        validate: bool,
12498                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12499                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12500                            .map(StakeTableV2Calls::unpause)
12501                    }
12502                    unpause
12503                },
12504                {
12505                    fn undelegate(
12506                        data: &[u8],
12507                        validate: bool,
12508                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12509                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12510                            .map(StakeTableV2Calls::undelegate)
12511                    }
12512                    undelegate
12513                },
12514                {
12515                    fn upgradeToAndCall(
12516                        data: &[u8],
12517                        validate: bool,
12518                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12519                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12520                            data, validate,
12521                        )
12522                        .map(StakeTableV2Calls::upgradeToAndCall)
12523                    }
12524                    upgradeToAndCall
12525                },
12526                {
12527                    fn proxiableUUID(
12528                        data: &[u8],
12529                        validate: bool,
12530                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12531                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12532                            data, validate,
12533                        )
12534                        .map(StakeTableV2Calls::proxiableUUID)
12535                    }
12536                    proxiableUUID
12537                },
12538                {
12539                    fn updateConsensusKeys(
12540                        data: &[u8],
12541                        validate: bool,
12542                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12543                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
12544                            data, validate,
12545                        )
12546                        .map(StakeTableV2Calls::updateConsensusKeys)
12547                    }
12548                    updateConsensusKeys
12549                },
12550                {
12551                    fn paused(
12552                        data: &[u8],
12553                        validate: bool,
12554                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12555                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12556                            .map(StakeTableV2Calls::paused)
12557                    }
12558                    paused
12559                },
12560                {
12561                    fn deregisterValidator(
12562                        data: &[u8],
12563                        validate: bool,
12564                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12565                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
12566                            data, validate,
12567                        )
12568                        .map(StakeTableV2Calls::deregisterValidator)
12569                    }
12570                    deregisterValidator
12571                },
12572                {
12573                    fn renounceOwnership(
12574                        data: &[u8],
12575                        validate: bool,
12576                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12577                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12578                            data, validate,
12579                        )
12580                        .map(StakeTableV2Calls::renounceOwnership)
12581                    }
12582                    renounceOwnership
12583                },
12584                {
12585                    fn pause(
12586                        data: &[u8],
12587                        validate: bool,
12588                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12589                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12590                            .map(StakeTableV2Calls::pause)
12591                    }
12592                    pause
12593                },
12594                {
12595                    fn owner(
12596                        data: &[u8],
12597                        validate: bool,
12598                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12599                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12600                            .map(StakeTableV2Calls::owner)
12601                    }
12602                    owner
12603                },
12604                {
12605                    fn hasRole(
12606                        data: &[u8],
12607                        validate: bool,
12608                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12609                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12610                            .map(StakeTableV2Calls::hasRole)
12611                    }
12612                    hasRole
12613                },
12614                {
12615                    fn _hashBlsKey(
12616                        data: &[u8],
12617                        validate: bool,
12618                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12619                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
12620                            data, validate,
12621                        )
12622                        .map(StakeTableV2Calls::_hashBlsKey)
12623                    }
12624                    _hashBlsKey
12625                },
12626                {
12627                    fn exitEscrowPeriod(
12628                        data: &[u8],
12629                        validate: bool,
12630                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12631                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12632                            data, validate,
12633                        )
12634                        .map(StakeTableV2Calls::exitEscrowPeriod)
12635                    }
12636                    exitEscrowPeriod
12637                },
12638                {
12639                    fn DEFAULT_ADMIN_ROLE(
12640                        data: &[u8],
12641                        validate: bool,
12642                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12643                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
12644                            data, validate,
12645                        )
12646                        .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
12647                    }
12648                    DEFAULT_ADMIN_ROLE
12649                },
12650                {
12651                    fn undelegations(
12652                        data: &[u8],
12653                        validate: bool,
12654                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12655                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12656                            data, validate,
12657                        )
12658                        .map(StakeTableV2Calls::undelegations)
12659                    }
12660                    undelegations
12661                },
12662                {
12663                    fn claimWithdrawal(
12664                        data: &[u8],
12665                        validate: bool,
12666                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12667                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
12668                            data, validate,
12669                        )
12670                        .map(StakeTableV2Calls::claimWithdrawal)
12671                    }
12672                    claimWithdrawal
12673                },
12674                {
12675                    fn updateConsensusKeysV2(
12676                        data: &[u8],
12677                        validate: bool,
12678                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12679                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
12680                            data, validate,
12681                        )
12682                        .map(StakeTableV2Calls::updateConsensusKeysV2)
12683                    }
12684                    updateConsensusKeysV2
12685                },
12686                {
12687                    fn UPGRADE_INTERFACE_VERSION(
12688                        data: &[u8],
12689                        validate: bool,
12690                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12691                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12692                            data, validate,
12693                        )
12694                        .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
12695                    }
12696                    UPGRADE_INTERFACE_VERSION
12697                },
12698                {
12699                    fn blsKeys(
12700                        data: &[u8],
12701                        validate: bool,
12702                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12703                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12704                            .map(StakeTableV2Calls::blsKeys)
12705                    }
12706                    blsKeys
12707                },
12708                {
12709                    fn lightClient(
12710                        data: &[u8],
12711                        validate: bool,
12712                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12713                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
12714                            data, validate,
12715                        )
12716                        .map(StakeTableV2Calls::lightClient)
12717                    }
12718                    lightClient
12719                },
12720                {
12721                    fn validatorExits(
12722                        data: &[u8],
12723                        validate: bool,
12724                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12725                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12726                            data, validate,
12727                        )
12728                        .map(StakeTableV2Calls::validatorExits)
12729                    }
12730                    validatorExits
12731                },
12732                {
12733                    fn initialize(
12734                        data: &[u8],
12735                        validate: bool,
12736                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12737                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12738                            .map(StakeTableV2Calls::initialize)
12739                    }
12740                    initialize
12741                },
12742                {
12743                    fn delegations(
12744                        data: &[u8],
12745                        validate: bool,
12746                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12747                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12748                            data, validate,
12749                        )
12750                        .map(StakeTableV2Calls::delegations)
12751                    }
12752                    delegations
12753                },
12754                {
12755                    fn revokeRole(
12756                        data: &[u8],
12757                        validate: bool,
12758                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12759                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12760                            .map(StakeTableV2Calls::revokeRole)
12761                    }
12762                    revokeRole
12763                },
12764                {
12765                    fn PAUSER_ROLE(
12766                        data: &[u8],
12767                        validate: bool,
12768                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12769                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
12770                            data, validate,
12771                        )
12772                        .map(StakeTableV2Calls::PAUSER_ROLE)
12773                    }
12774                    PAUSER_ROLE
12775                },
12776                {
12777                    fn transferOwnership(
12778                        data: &[u8],
12779                        validate: bool,
12780                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12781                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12782                            data, validate,
12783                        )
12784                        .map(StakeTableV2Calls::transferOwnership)
12785                    }
12786                    transferOwnership
12787                },
12788                {
12789                    fn validators(
12790                        data: &[u8],
12791                        validate: bool,
12792                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12793                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12794                            .map(StakeTableV2Calls::validators)
12795                    }
12796                    validators
12797                },
12798                {
12799                    fn token(
12800                        data: &[u8],
12801                        validate: bool,
12802                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
12803                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12804                            .map(StakeTableV2Calls::token)
12805                    }
12806                    token
12807                },
12808            ];
12809            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12810                return Err(alloy_sol_types::Error::unknown_selector(
12811                    <Self as alloy_sol_types::SolInterface>::NAME,
12812                    selector,
12813                ));
12814            };
12815            DECODE_SHIMS[idx](data, validate)
12816        }
12817        #[inline]
12818        fn abi_encoded_size(&self) -> usize {
12819            match self {
12820                Self::DEFAULT_ADMIN_ROLE(inner) => {
12821                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12822                },
12823                Self::PAUSER_ROLE(inner) => {
12824                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12825                },
12826                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12827                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12828                        inner,
12829                    )
12830                },
12831                Self::_hashBlsKey(inner) => {
12832                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12833                },
12834                Self::blsKeys(inner) => {
12835                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12836                },
12837                Self::claimValidatorExit(inner) => {
12838                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12839                },
12840                Self::claimWithdrawal(inner) => {
12841                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12842                },
12843                Self::delegate(inner) => {
12844                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12845                },
12846                Self::delegations(inner) => {
12847                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12848                },
12849                Self::deregisterValidator(inner) => {
12850                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12851                },
12852                Self::exitEscrowPeriod(inner) => {
12853                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12854                },
12855                Self::getRoleAdmin(inner) => {
12856                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12857                },
12858                Self::getVersion(inner) => {
12859                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12860                },
12861                Self::grantRole(inner) => {
12862                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12863                },
12864                Self::hasRole(inner) => {
12865                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12866                },
12867                Self::initialize(inner) => {
12868                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12869                },
12870                Self::initializeV2(inner) => {
12871                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12872                },
12873                Self::initializedAtBlock(inner) => {
12874                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12875                },
12876                Self::lightClient(inner) => {
12877                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12878                },
12879                Self::owner(inner) => {
12880                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12881                },
12882                Self::pause(inner) => {
12883                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12884                },
12885                Self::paused(inner) => {
12886                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12887                },
12888                Self::proxiableUUID(inner) => {
12889                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12890                },
12891                Self::registerValidator(inner) => {
12892                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12893                },
12894                Self::registerValidatorV2(inner) => {
12895                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12896                },
12897                Self::renounceOwnership(inner) => {
12898                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12899                },
12900                Self::renounceRole(inner) => {
12901                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12902                },
12903                Self::revokeRole(inner) => {
12904                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12905                },
12906                Self::supportsInterface(inner) => {
12907                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12908                },
12909                Self::token(inner) => {
12910                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12911                },
12912                Self::transferOwnership(inner) => {
12913                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12914                },
12915                Self::undelegate(inner) => {
12916                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12917                },
12918                Self::undelegations(inner) => {
12919                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12920                },
12921                Self::unpause(inner) => {
12922                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12923                },
12924                Self::updateConsensusKeys(inner) => {
12925                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12926                },
12927                Self::updateConsensusKeysV2(inner) => {
12928                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12929                },
12930                Self::updateExitEscrowPeriod(inner) => {
12931                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12932                        inner,
12933                    )
12934                },
12935                Self::upgradeToAndCall(inner) => {
12936                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12937                },
12938                Self::validatorExits(inner) => {
12939                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12940                },
12941                Self::validators(inner) => {
12942                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12943                },
12944            }
12945        }
12946        #[inline]
12947        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12948            match self {
12949                Self::DEFAULT_ADMIN_ROLE(inner) => {
12950                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12951                },
12952                Self::PAUSER_ROLE(inner) => {
12953                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12954                },
12955                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12956                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
12957                        inner, out,
12958                    )
12959                },
12960                Self::_hashBlsKey(inner) => {
12961                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12962                },
12963                Self::blsKeys(inner) => {
12964                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12965                },
12966                Self::claimValidatorExit(inner) => {
12967                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12968                },
12969                Self::claimWithdrawal(inner) => {
12970                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12971                },
12972                Self::delegate(inner) => {
12973                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12974                },
12975                Self::delegations(inner) => {
12976                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12977                },
12978                Self::deregisterValidator(inner) => {
12979                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
12980                        inner, out,
12981                    )
12982                },
12983                Self::exitEscrowPeriod(inner) => {
12984                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12985                },
12986                Self::getRoleAdmin(inner) => {
12987                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12988                },
12989                Self::getVersion(inner) => {
12990                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12991                },
12992                Self::grantRole(inner) => {
12993                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12994                },
12995                Self::hasRole(inner) => {
12996                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12997                },
12998                Self::initialize(inner) => {
12999                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13000                },
13001                Self::initializeV2(inner) => {
13002                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13003                },
13004                Self::initializedAtBlock(inner) => {
13005                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13006                },
13007                Self::lightClient(inner) => {
13008                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13009                },
13010                Self::owner(inner) => {
13011                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13012                },
13013                Self::pause(inner) => {
13014                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13015                },
13016                Self::paused(inner) => {
13017                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13018                },
13019                Self::proxiableUUID(inner) => {
13020                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13021                },
13022                Self::registerValidator(inner) => {
13023                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13024                },
13025                Self::registerValidatorV2(inner) => {
13026                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13027                        inner, out,
13028                    )
13029                },
13030                Self::renounceOwnership(inner) => {
13031                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13032                },
13033                Self::renounceRole(inner) => {
13034                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13035                },
13036                Self::revokeRole(inner) => {
13037                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13038                },
13039                Self::supportsInterface(inner) => {
13040                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13041                },
13042                Self::token(inner) => {
13043                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13044                },
13045                Self::transferOwnership(inner) => {
13046                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13047                },
13048                Self::undelegate(inner) => {
13049                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13050                },
13051                Self::undelegations(inner) => {
13052                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13053                },
13054                Self::unpause(inner) => {
13055                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13056                },
13057                Self::updateConsensusKeys(inner) => {
13058                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
13059                        inner, out,
13060                    )
13061                },
13062                Self::updateConsensusKeysV2(inner) => {
13063                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13064                        inner, out,
13065                    )
13066                },
13067                Self::updateExitEscrowPeriod(inner) => {
13068                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13069                        inner, out,
13070                    )
13071                },
13072                Self::upgradeToAndCall(inner) => {
13073                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13074                },
13075                Self::validatorExits(inner) => {
13076                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13077                },
13078                Self::validators(inner) => {
13079                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13080                },
13081            }
13082        }
13083    }
13084    ///Container for all the [`StakeTableV2`](self) custom errors.
13085    #[derive(Debug, PartialEq, Eq, Hash)]
13086    pub enum StakeTableV2Errors {
13087        #[allow(missing_docs)]
13088        AccessControlBadConfirmation(AccessControlBadConfirmation),
13089        #[allow(missing_docs)]
13090        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
13091        #[allow(missing_docs)]
13092        AddressEmptyCode(AddressEmptyCode),
13093        #[allow(missing_docs)]
13094        BLSSigVerificationFailed(BLSSigVerificationFailed),
13095        #[allow(missing_docs)]
13096        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
13097        #[allow(missing_docs)]
13098        DeprecatedFunction(DeprecatedFunction),
13099        #[allow(missing_docs)]
13100        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13101        #[allow(missing_docs)]
13102        ERC1967NonPayable(ERC1967NonPayable),
13103        #[allow(missing_docs)]
13104        EnforcedPause(EnforcedPause),
13105        #[allow(missing_docs)]
13106        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
13107        #[allow(missing_docs)]
13108        ExpectedPause(ExpectedPause),
13109        #[allow(missing_docs)]
13110        FailedInnerCall(FailedInnerCall),
13111        #[allow(missing_docs)]
13112        InsufficientAllowance(InsufficientAllowance),
13113        #[allow(missing_docs)]
13114        InsufficientBalance(InsufficientBalance),
13115        #[allow(missing_docs)]
13116        InvalidCommission(InvalidCommission),
13117        #[allow(missing_docs)]
13118        InvalidInitialization(InvalidInitialization),
13119        #[allow(missing_docs)]
13120        InvalidSchnorrVK(InvalidSchnorrVK),
13121        #[allow(missing_docs)]
13122        NotInitializing(NotInitializing),
13123        #[allow(missing_docs)]
13124        NothingToWithdraw(NothingToWithdraw),
13125        #[allow(missing_docs)]
13126        OwnableInvalidOwner(OwnableInvalidOwner),
13127        #[allow(missing_docs)]
13128        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13129        #[allow(missing_docs)]
13130        PrematureWithdrawal(PrematureWithdrawal),
13131        #[allow(missing_docs)]
13132        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13133        #[allow(missing_docs)]
13134        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13135        #[allow(missing_docs)]
13136        UndelegationAlreadyExists(UndelegationAlreadyExists),
13137        #[allow(missing_docs)]
13138        ValidatorAlreadyExited(ValidatorAlreadyExited),
13139        #[allow(missing_docs)]
13140        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
13141        #[allow(missing_docs)]
13142        ValidatorInactive(ValidatorInactive),
13143        #[allow(missing_docs)]
13144        ValidatorNotExited(ValidatorNotExited),
13145        #[allow(missing_docs)]
13146        ZeroAddress(ZeroAddress),
13147        #[allow(missing_docs)]
13148        ZeroAmount(ZeroAmount),
13149    }
13150    #[automatically_derived]
13151    impl StakeTableV2Errors {
13152        /// All the selectors of this enum.
13153        ///
13154        /// Note that the selectors might not be in the same order as the variants.
13155        /// No guarantees are made about the order of the selectors.
13156        ///
13157        /// Prefer using `SolInterface` methods instead.
13158        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13159            [1u8, 181u8, 20u8, 174u8],
13160            [6u8, 207u8, 67u8, 143u8],
13161            [12u8, 237u8, 62u8, 80u8],
13162            [17u8, 140u8, 218u8, 167u8],
13163            [20u8, 37u8, 234u8, 66u8],
13164            [30u8, 79u8, 189u8, 247u8],
13165            [31u8, 42u8, 32u8, 5u8],
13166            [42u8, 27u8, 45u8, 216u8],
13167            [76u8, 156u8, 140u8, 227u8],
13168            [80u8, 138u8, 121u8, 63u8],
13169            [90u8, 119u8, 67u8, 87u8],
13170            [102u8, 151u8, 178u8, 50u8],
13171            [141u8, 252u8, 32u8, 43u8],
13172            [146u8, 102u8, 83u8, 81u8],
13173            [153u8, 115u8, 247u8, 216u8],
13174            [153u8, 150u8, 179u8, 21u8],
13175            [170u8, 29u8, 73u8, 164u8],
13176            [179u8, 152u8, 151u8, 159u8],
13177            [181u8, 126u8, 33u8, 223u8],
13178            [194u8, 215u8, 248u8, 19u8],
13179            [208u8, 208u8, 79u8, 96u8],
13180            [212u8, 35u8, 164u8, 241u8],
13181            [215u8, 230u8, 188u8, 248u8],
13182            [217u8, 46u8, 35u8, 61u8],
13183            [217u8, 60u8, 6u8, 101u8],
13184            [220u8, 129u8, 219u8, 133u8],
13185            [224u8, 124u8, 141u8, 186u8],
13186            [226u8, 81u8, 125u8, 63u8],
13187            [234u8, 180u8, 169u8, 99u8],
13188            [242u8, 83u8, 20u8, 166u8],
13189            [249u8, 46u8, 232u8, 169u8],
13190        ];
13191    }
13192    #[automatically_derived]
13193    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
13194        const NAME: &'static str = "StakeTableV2Errors";
13195        const MIN_DATA_LENGTH: usize = 0usize;
13196        const COUNT: usize = 31usize;
13197        #[inline]
13198        fn selector(&self) -> [u8; 4] {
13199            match self {
13200                Self::AccessControlBadConfirmation(_) => {
13201                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
13202                },
13203                Self::AccessControlUnauthorizedAccount(_) => {
13204                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13205                },
13206                Self::AddressEmptyCode(_) => {
13207                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13208                },
13209                Self::BLSSigVerificationFailed(_) => {
13210                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
13211                },
13212                Self::BlsKeyAlreadyUsed(_) => {
13213                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
13214                },
13215                Self::DeprecatedFunction(_) => {
13216                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
13217                },
13218                Self::ERC1967InvalidImplementation(_) => {
13219                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13220                },
13221                Self::ERC1967NonPayable(_) => {
13222                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13223                },
13224                Self::EnforcedPause(_) => <EnforcedPause as alloy_sol_types::SolError>::SELECTOR,
13225                Self::ExitEscrowPeriodInvalid(_) => {
13226                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
13227                },
13228                Self::ExpectedPause(_) => <ExpectedPause as alloy_sol_types::SolError>::SELECTOR,
13229                Self::FailedInnerCall(_) => {
13230                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13231                },
13232                Self::InsufficientAllowance(_) => {
13233                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
13234                },
13235                Self::InsufficientBalance(_) => {
13236                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
13237                },
13238                Self::InvalidCommission(_) => {
13239                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
13240                },
13241                Self::InvalidInitialization(_) => {
13242                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13243                },
13244                Self::InvalidSchnorrVK(_) => {
13245                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
13246                },
13247                Self::NotInitializing(_) => {
13248                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13249                },
13250                Self::NothingToWithdraw(_) => {
13251                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
13252                },
13253                Self::OwnableInvalidOwner(_) => {
13254                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13255                },
13256                Self::OwnableUnauthorizedAccount(_) => {
13257                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13258                },
13259                Self::PrematureWithdrawal(_) => {
13260                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
13261                },
13262                Self::UUPSUnauthorizedCallContext(_) => {
13263                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13264                },
13265                Self::UUPSUnsupportedProxiableUUID(_) => {
13266                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13267                },
13268                Self::UndelegationAlreadyExists(_) => {
13269                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
13270                },
13271                Self::ValidatorAlreadyExited(_) => {
13272                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
13273                },
13274                Self::ValidatorAlreadyRegistered(_) => {
13275                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
13276                },
13277                Self::ValidatorInactive(_) => {
13278                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
13279                },
13280                Self::ValidatorNotExited(_) => {
13281                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
13282                },
13283                Self::ZeroAddress(_) => <ZeroAddress as alloy_sol_types::SolError>::SELECTOR,
13284                Self::ZeroAmount(_) => <ZeroAmount as alloy_sol_types::SolError>::SELECTOR,
13285            }
13286        }
13287        #[inline]
13288        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13289            Self::SELECTORS.get(i).copied()
13290        }
13291        #[inline]
13292        fn valid_selector(selector: [u8; 4]) -> bool {
13293            Self::SELECTORS.binary_search(&selector).is_ok()
13294        }
13295        #[inline]
13296        #[allow(non_snake_case)]
13297        fn abi_decode_raw(
13298            selector: [u8; 4],
13299            data: &[u8],
13300            validate: bool,
13301        ) -> alloy_sol_types::Result<Self> {
13302            static DECODE_SHIMS: &[fn(
13303                &[u8],
13304                bool,
13305            )
13306                -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
13307                {
13308                    fn BlsKeyAlreadyUsed(
13309                        data: &[u8],
13310                        validate: bool,
13311                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13312                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
13313                            data, validate,
13314                        )
13315                        .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
13316                    }
13317                    BlsKeyAlreadyUsed
13318                },
13319                {
13320                    fn InvalidSchnorrVK(
13321                        data: &[u8],
13322                        validate: bool,
13323                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13324                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
13325                            data, validate,
13326                        )
13327                        .map(StakeTableV2Errors::InvalidSchnorrVK)
13328                    }
13329                    InvalidSchnorrVK
13330                },
13331                {
13332                    fn BLSSigVerificationFailed(
13333                        data: &[u8],
13334                        validate: bool,
13335                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13336                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
13337                            data, validate,
13338                        )
13339                        .map(StakeTableV2Errors::BLSSigVerificationFailed)
13340                    }
13341                    BLSSigVerificationFailed
13342                },
13343                {
13344                    fn OwnableUnauthorizedAccount(
13345                        data: &[u8],
13346                        validate: bool,
13347                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13348                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13349                            data, validate,
13350                        )
13351                        .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
13352                    }
13353                    OwnableUnauthorizedAccount
13354                },
13355                {
13356                    fn FailedInnerCall(
13357                        data: &[u8],
13358                        validate: bool,
13359                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13360                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13361                            data, validate,
13362                        )
13363                        .map(StakeTableV2Errors::FailedInnerCall)
13364                    }
13365                    FailedInnerCall
13366                },
13367                {
13368                    fn OwnableInvalidOwner(
13369                        data: &[u8],
13370                        validate: bool,
13371                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13372                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13373                            data, validate,
13374                        )
13375                        .map(StakeTableV2Errors::OwnableInvalidOwner)
13376                    }
13377                    OwnableInvalidOwner
13378                },
13379                {
13380                    fn ZeroAmount(
13381                        data: &[u8],
13382                        validate: bool,
13383                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13384                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13385                            .map(StakeTableV2Errors::ZeroAmount)
13386                    }
13387                    ZeroAmount
13388                },
13389                {
13390                    fn InsufficientAllowance(
13391                        data: &[u8],
13392                        validate: bool,
13393                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13394                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
13395                            data, validate,
13396                        )
13397                        .map(StakeTableV2Errors::InsufficientAllowance)
13398                    }
13399                    InsufficientAllowance
13400                },
13401                {
13402                    fn ERC1967InvalidImplementation(
13403                        data: &[u8],
13404                        validate: bool,
13405                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13406                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13407                            data, validate,
13408                        )
13409                        .map(StakeTableV2Errors::ERC1967InvalidImplementation)
13410                    }
13411                    ERC1967InvalidImplementation
13412                },
13413                {
13414                    fn ValidatorInactive(
13415                        data: &[u8],
13416                        validate: bool,
13417                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13418                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
13419                            data, validate,
13420                        )
13421                        .map(StakeTableV2Errors::ValidatorInactive)
13422                    }
13423                    ValidatorInactive
13424                },
13425                {
13426                    fn PrematureWithdrawal(
13427                        data: &[u8],
13428                        validate: bool,
13429                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13430                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
13431                            data, validate,
13432                        )
13433                        .map(StakeTableV2Errors::PrematureWithdrawal)
13434                    }
13435                    PrematureWithdrawal
13436                },
13437                {
13438                    fn AccessControlBadConfirmation(
13439                        data: &[u8],
13440                        validate: bool,
13441                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13442                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
13443                            data, validate,
13444                        )
13445                        .map(StakeTableV2Errors::AccessControlBadConfirmation)
13446                    }
13447                    AccessControlBadConfirmation
13448                },
13449                {
13450                    fn ExpectedPause(
13451                        data: &[u8],
13452                        validate: bool,
13453                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13454                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13455                            .map(StakeTableV2Errors::ExpectedPause)
13456                    }
13457                    ExpectedPause
13458                },
13459                {
13460                    fn InsufficientBalance(
13461                        data: &[u8],
13462                        validate: bool,
13463                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13464                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
13465                            data, validate,
13466                        )
13467                        .map(StakeTableV2Errors::InsufficientBalance)
13468                    }
13469                    InsufficientBalance
13470                },
13471                {
13472                    fn ValidatorAlreadyRegistered(
13473                        data: &[u8],
13474                        validate: bool,
13475                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13476                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
13477                            data, validate,
13478                        )
13479                        .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
13480                    }
13481                    ValidatorAlreadyRegistered
13482                },
13483                {
13484                    fn AddressEmptyCode(
13485                        data: &[u8],
13486                        validate: bool,
13487                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13488                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13489                            data, validate,
13490                        )
13491                        .map(StakeTableV2Errors::AddressEmptyCode)
13492                    }
13493                    AddressEmptyCode
13494                },
13495                {
13496                    fn UUPSUnsupportedProxiableUUID(
13497                        data: &[u8],
13498                        validate: bool,
13499                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13500                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13501                            data, validate,
13502                        )
13503                        .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
13504                    }
13505                    UUPSUnsupportedProxiableUUID
13506                },
13507                {
13508                    fn ERC1967NonPayable(
13509                        data: &[u8],
13510                        validate: bool,
13511                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13512                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13513                            data, validate,
13514                        )
13515                        .map(StakeTableV2Errors::ERC1967NonPayable)
13516                    }
13517                    ERC1967NonPayable
13518                },
13519                {
13520                    fn ExitEscrowPeriodInvalid(
13521                        data: &[u8],
13522                        validate: bool,
13523                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13524                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
13525                            data, validate,
13526                        )
13527                        .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
13528                    }
13529                    ExitEscrowPeriodInvalid
13530                },
13531                {
13532                    fn DeprecatedFunction(
13533                        data: &[u8],
13534                        validate: bool,
13535                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13536                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
13537                            data, validate,
13538                        )
13539                        .map(StakeTableV2Errors::DeprecatedFunction)
13540                    }
13541                    DeprecatedFunction
13542                },
13543                {
13544                    fn NothingToWithdraw(
13545                        data: &[u8],
13546                        validate: bool,
13547                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13548                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
13549                            data, validate,
13550                        )
13551                        .map(StakeTableV2Errors::NothingToWithdraw)
13552                    }
13553                    NothingToWithdraw
13554                },
13555                {
13556                    fn UndelegationAlreadyExists(
13557                        data: &[u8],
13558                        validate: bool,
13559                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13560                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
13561                            data, validate,
13562                        )
13563                        .map(StakeTableV2Errors::UndelegationAlreadyExists)
13564                    }
13565                    UndelegationAlreadyExists
13566                },
13567                {
13568                    fn NotInitializing(
13569                        data: &[u8],
13570                        validate: bool,
13571                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13572                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13573                            data, validate,
13574                        )
13575                        .map(StakeTableV2Errors::NotInitializing)
13576                    }
13577                    NotInitializing
13578                },
13579                {
13580                    fn ZeroAddress(
13581                        data: &[u8],
13582                        validate: bool,
13583                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13584                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13585                            .map(StakeTableV2Errors::ZeroAddress)
13586                    }
13587                    ZeroAddress
13588                },
13589                {
13590                    fn EnforcedPause(
13591                        data: &[u8],
13592                        validate: bool,
13593                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13594                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13595                            .map(StakeTableV2Errors::EnforcedPause)
13596                    }
13597                    EnforcedPause
13598                },
13599                {
13600                    fn InvalidCommission(
13601                        data: &[u8],
13602                        validate: bool,
13603                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13604                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
13605                            data, validate,
13606                        )
13607                        .map(StakeTableV2Errors::InvalidCommission)
13608                    }
13609                    InvalidCommission
13610                },
13611                {
13612                    fn UUPSUnauthorizedCallContext(
13613                        data: &[u8],
13614                        validate: bool,
13615                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13616                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13617                            data, validate,
13618                        )
13619                        .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
13620                    }
13621                    UUPSUnauthorizedCallContext
13622                },
13623                {
13624                    fn AccessControlUnauthorizedAccount(
13625                        data: &[u8],
13626                        validate: bool,
13627                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13628                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13629                                data,
13630                                validate,
13631                            )
13632                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
13633                    }
13634                    AccessControlUnauthorizedAccount
13635                },
13636                {
13637                    fn ValidatorAlreadyExited(
13638                        data: &[u8],
13639                        validate: bool,
13640                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13641                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
13642                            data, validate,
13643                        )
13644                        .map(StakeTableV2Errors::ValidatorAlreadyExited)
13645                    }
13646                    ValidatorAlreadyExited
13647                },
13648                {
13649                    fn ValidatorNotExited(
13650                        data: &[u8],
13651                        validate: bool,
13652                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13653                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
13654                            data, validate,
13655                        )
13656                        .map(StakeTableV2Errors::ValidatorNotExited)
13657                    }
13658                    ValidatorNotExited
13659                },
13660                {
13661                    fn InvalidInitialization(
13662                        data: &[u8],
13663                        validate: bool,
13664                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
13665                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13666                            data, validate,
13667                        )
13668                        .map(StakeTableV2Errors::InvalidInitialization)
13669                    }
13670                    InvalidInitialization
13671                },
13672            ];
13673            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13674                return Err(alloy_sol_types::Error::unknown_selector(
13675                    <Self as alloy_sol_types::SolInterface>::NAME,
13676                    selector,
13677                ));
13678            };
13679            DECODE_SHIMS[idx](data, validate)
13680        }
13681        #[inline]
13682        fn abi_encoded_size(&self) -> usize {
13683            match self {
13684                Self::AccessControlBadConfirmation(inner) => {
13685                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
13686                        inner,
13687                    )
13688                }
13689                Self::AccessControlUnauthorizedAccount(inner) => {
13690                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13691                        inner,
13692                    )
13693                }
13694                Self::AddressEmptyCode(inner) => {
13695                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13696                        inner,
13697                    )
13698                }
13699                Self::BLSSigVerificationFailed(inner) => {
13700                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
13701                        inner,
13702                    )
13703                }
13704                Self::BlsKeyAlreadyUsed(inner) => {
13705                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
13706                        inner,
13707                    )
13708                }
13709                Self::DeprecatedFunction(inner) => {
13710                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
13711                        inner,
13712                    )
13713                }
13714                Self::ERC1967InvalidImplementation(inner) => {
13715                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13716                        inner,
13717                    )
13718                }
13719                Self::ERC1967NonPayable(inner) => {
13720                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13721                        inner,
13722                    )
13723                }
13724                Self::EnforcedPause(inner) => {
13725                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
13726                }
13727                Self::ExitEscrowPeriodInvalid(inner) => {
13728                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
13729                        inner,
13730                    )
13731                }
13732                Self::ExpectedPause(inner) => {
13733                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
13734                }
13735                Self::FailedInnerCall(inner) => {
13736                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13737                        inner,
13738                    )
13739                }
13740                Self::InsufficientAllowance(inner) => {
13741                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
13742                        inner,
13743                    )
13744                }
13745                Self::InsufficientBalance(inner) => {
13746                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
13747                        inner,
13748                    )
13749                }
13750                Self::InvalidCommission(inner) => {
13751                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
13752                        inner,
13753                    )
13754                }
13755                Self::InvalidInitialization(inner) => {
13756                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13757                        inner,
13758                    )
13759                }
13760                Self::InvalidSchnorrVK(inner) => {
13761                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
13762                        inner,
13763                    )
13764                }
13765                Self::NotInitializing(inner) => {
13766                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13767                        inner,
13768                    )
13769                }
13770                Self::NothingToWithdraw(inner) => {
13771                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
13772                        inner,
13773                    )
13774                }
13775                Self::OwnableInvalidOwner(inner) => {
13776                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13777                        inner,
13778                    )
13779                }
13780                Self::OwnableUnauthorizedAccount(inner) => {
13781                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13782                        inner,
13783                    )
13784                }
13785                Self::PrematureWithdrawal(inner) => {
13786                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
13787                        inner,
13788                    )
13789                }
13790                Self::UUPSUnauthorizedCallContext(inner) => {
13791                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13792                        inner,
13793                    )
13794                }
13795                Self::UUPSUnsupportedProxiableUUID(inner) => {
13796                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13797                        inner,
13798                    )
13799                }
13800                Self::UndelegationAlreadyExists(inner) => {
13801                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
13802                        inner,
13803                    )
13804                }
13805                Self::ValidatorAlreadyExited(inner) => {
13806                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
13807                        inner,
13808                    )
13809                }
13810                Self::ValidatorAlreadyRegistered(inner) => {
13811                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
13812                        inner,
13813                    )
13814                }
13815                Self::ValidatorInactive(inner) => {
13816                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
13817                        inner,
13818                    )
13819                }
13820                Self::ValidatorNotExited(inner) => {
13821                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
13822                        inner,
13823                    )
13824                }
13825                Self::ZeroAddress(inner) => {
13826                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
13827                }
13828                Self::ZeroAmount(inner) => {
13829                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
13830                }
13831            }
13832        }
13833        #[inline]
13834        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13835            match self {
13836                Self::AccessControlBadConfirmation(inner) => {
13837                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
13838                        inner, out,
13839                    )
13840                },
13841                Self::AccessControlUnauthorizedAccount(inner) => {
13842                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13843                        inner, out,
13844                    )
13845                },
13846                Self::AddressEmptyCode(inner) => {
13847                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13848                },
13849                Self::BLSSigVerificationFailed(inner) => {
13850                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
13851                        inner, out,
13852                    )
13853                },
13854                Self::BlsKeyAlreadyUsed(inner) => {
13855                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13856                },
13857                Self::DeprecatedFunction(inner) => {
13858                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13859                },
13860                Self::ERC1967InvalidImplementation(inner) => {
13861                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13862                        inner, out,
13863                    )
13864                },
13865                Self::ERC1967NonPayable(inner) => {
13866                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13867                },
13868                Self::EnforcedPause(inner) => {
13869                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13870                },
13871                Self::ExitEscrowPeriodInvalid(inner) => {
13872                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
13873                        inner, out,
13874                    )
13875                },
13876                Self::ExpectedPause(inner) => {
13877                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13878                },
13879                Self::FailedInnerCall(inner) => {
13880                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13881                },
13882                Self::InsufficientAllowance(inner) => {
13883                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13884                },
13885                Self::InsufficientBalance(inner) => {
13886                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13887                },
13888                Self::InvalidCommission(inner) => {
13889                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13890                },
13891                Self::InvalidInitialization(inner) => {
13892                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13893                },
13894                Self::InvalidSchnorrVK(inner) => {
13895                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13896                },
13897                Self::NotInitializing(inner) => {
13898                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13899                },
13900                Self::NothingToWithdraw(inner) => {
13901                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13902                },
13903                Self::OwnableInvalidOwner(inner) => {
13904                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13905                },
13906                Self::OwnableUnauthorizedAccount(inner) => {
13907                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13908                        inner, out,
13909                    )
13910                },
13911                Self::PrematureWithdrawal(inner) => {
13912                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13913                },
13914                Self::UUPSUnauthorizedCallContext(inner) => {
13915                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
13916                        inner, out,
13917                    )
13918                },
13919                Self::UUPSUnsupportedProxiableUUID(inner) => {
13920                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
13921                        inner, out,
13922                    )
13923                },
13924                Self::UndelegationAlreadyExists(inner) => {
13925                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
13926                        inner, out,
13927                    )
13928                },
13929                Self::ValidatorAlreadyExited(inner) => {
13930                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
13931                        inner, out,
13932                    )
13933                },
13934                Self::ValidatorAlreadyRegistered(inner) => {
13935                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
13936                        inner, out,
13937                    )
13938                },
13939                Self::ValidatorInactive(inner) => {
13940                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13941                },
13942                Self::ValidatorNotExited(inner) => {
13943                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13944                },
13945                Self::ZeroAddress(inner) => {
13946                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13947                },
13948                Self::ZeroAmount(inner) => {
13949                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
13950                },
13951            }
13952        }
13953    }
13954    ///Container for all the [`StakeTableV2`](self) events.
13955    #[derive()]
13956    pub enum StakeTableV2Events {
13957        #[allow(missing_docs)]
13958        ConsensusKeysUpdated(ConsensusKeysUpdated),
13959        #[allow(missing_docs)]
13960        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
13961        #[allow(missing_docs)]
13962        Delegated(Delegated),
13963        #[allow(missing_docs)]
13964        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
13965        #[allow(missing_docs)]
13966        Initialized(Initialized),
13967        #[allow(missing_docs)]
13968        OwnershipTransferred(OwnershipTransferred),
13969        #[allow(missing_docs)]
13970        Paused(Paused),
13971        #[allow(missing_docs)]
13972        RoleAdminChanged(RoleAdminChanged),
13973        #[allow(missing_docs)]
13974        RoleGranted(RoleGranted),
13975        #[allow(missing_docs)]
13976        RoleRevoked(RoleRevoked),
13977        #[allow(missing_docs)]
13978        Undelegated(Undelegated),
13979        #[allow(missing_docs)]
13980        Unpaused(Unpaused),
13981        #[allow(missing_docs)]
13982        Upgrade(Upgrade),
13983        #[allow(missing_docs)]
13984        Upgraded(Upgraded),
13985        #[allow(missing_docs)]
13986        ValidatorExit(ValidatorExit),
13987        #[allow(missing_docs)]
13988        ValidatorRegistered(ValidatorRegistered),
13989        #[allow(missing_docs)]
13990        ValidatorRegisteredV2(ValidatorRegisteredV2),
13991        #[allow(missing_docs)]
13992        Withdrawal(Withdrawal),
13993    }
13994    #[automatically_derived]
13995    impl StakeTableV2Events {
13996        /// All the selectors of this enum.
13997        ///
13998        /// Note that the selectors might not be in the same order as the variants.
13999        /// No guarantees are made about the order of the selectors.
14000        ///
14001        /// Prefer using `SolInterface` methods instead.
14002        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14003            [
14004                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8, 236u8,
14005                121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8, 64u8, 48u8,
14006                69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
14007            ],
14008            [
14009                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8, 25u8, 90u8,
14010                251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8, 119u8, 211u8, 147u8,
14011                204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
14012            ],
14013            [
14014                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8, 167u8,
14015                131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8, 78u8, 83u8,
14016                123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
14017            ],
14018            [
14019                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8, 2u8, 112u8,
14020                181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8, 71u8, 84u8, 235u8,
14021                219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
14022            ],
14023            [
14024                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8, 200u8, 49u8,
14025                36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8, 151u8, 138u8, 12u8,
14026                162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
14027            ],
14028            [
14029                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8, 224u8,
14030                56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8, 179u8, 191u8,
14031                114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
14032            ],
14033            [
14034                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8, 91u8,
14035                162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8, 157u8, 39u8,
14036                249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
14037            ],
14038            [
14039                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
14040                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
14041                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14042            ],
14043            [
14044                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
14045                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
14046                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14047            ],
14048            [
14049                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8, 81u8,
14050                66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8, 71u8, 92u8,
14051                58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
14052            ],
14053            [
14054                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
14055                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
14056                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14057            ],
14058            [
14059                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8, 60u8, 81u8,
14060                54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8, 106u8, 183u8, 88u8,
14061                167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
14062            ],
14063            [
14064                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8, 213u8, 79u8,
14065                173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8, 55u8, 76u8, 246u8,
14066                36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
14067            ],
14068            [
14069                240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8, 144u8,
14070                120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8, 43u8, 66u8, 52u8,
14071                126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
14072            ],
14073            [
14074                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8, 103u8, 11u8,
14075                68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8, 253u8, 100u8, 235u8,
14076                33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
14077            ],
14078            [
14079                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8, 107u8,
14080                252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8, 16u8, 168u8,
14081                39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
14082            ],
14083            [
14084                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
14085                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
14086                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14087            ],
14088            [
14089                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8, 122u8, 228u8,
14090                165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8, 125u8, 216u8, 175u8, 255u8,
14091                142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
14092            ],
14093        ];
14094    }
14095    #[automatically_derived]
14096    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
14097        const NAME: &'static str = "StakeTableV2Events";
14098        const COUNT: usize = 18usize;
14099        fn decode_raw_log(
14100            topics: &[alloy_sol_types::Word],
14101            data: &[u8],
14102            validate: bool,
14103        ) -> alloy_sol_types::Result<Self> {
14104            match topics.first().copied() {
14105                Some(<ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14106                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
14107                        topics, data, validate,
14108                    )
14109                    .map(Self::ConsensusKeysUpdated)
14110                },
14111                Some(<ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14112                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
14113                        topics, data, validate,
14114                    )
14115                    .map(Self::ConsensusKeysUpdatedV2)
14116                },
14117                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14118                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14119                        .map(Self::Delegated)
14120                },
14121                Some(<ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14122                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
14123                        topics, data, validate,
14124                    )
14125                    .map(Self::ExitEscrowPeriodUpdated)
14126                },
14127                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14128                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14129                        topics, data, validate,
14130                    )
14131                    .map(Self::Initialized)
14132                },
14133                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14134                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14135                        topics, data, validate,
14136                    )
14137                    .map(Self::OwnershipTransferred)
14138                },
14139                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14140                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14141                        .map(Self::Paused)
14142                },
14143                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14144                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
14145                        topics, data, validate,
14146                    )
14147                    .map(Self::RoleAdminChanged)
14148                },
14149                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14150                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
14151                        topics, data, validate,
14152                    )
14153                    .map(Self::RoleGranted)
14154                },
14155                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14156                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
14157                        topics, data, validate,
14158                    )
14159                    .map(Self::RoleRevoked)
14160                },
14161                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14162                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
14163                        topics, data, validate,
14164                    )
14165                    .map(Self::Undelegated)
14166                },
14167                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14168                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14169                        .map(Self::Unpaused)
14170                },
14171                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14172                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14173                        .map(Self::Upgrade)
14174                },
14175                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14176                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14177                        .map(Self::Upgraded)
14178                },
14179                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14180                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
14181                        topics, data, validate,
14182                    )
14183                    .map(Self::ValidatorExit)
14184                },
14185                Some(<ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14186                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
14187                        topics, data, validate,
14188                    )
14189                    .map(Self::ValidatorRegistered)
14190                },
14191                Some(<ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14192                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
14193                        topics, data, validate,
14194                    )
14195                    .map(Self::ValidatorRegisteredV2)
14196                },
14197                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14198                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
14199                        topics, data, validate,
14200                    )
14201                    .map(Self::Withdrawal)
14202                },
14203                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14204                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14205                    log: alloy_sol_types::private::Box::new(
14206                        alloy_sol_types::private::LogData::new_unchecked(
14207                            topics.to_vec(),
14208                            data.to_vec().into(),
14209                        ),
14210                    ),
14211                }),
14212            }
14213        }
14214    }
14215    #[automatically_derived]
14216    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
14217        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14218            match self {
14219                Self::ConsensusKeysUpdated(inner) => {
14220                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14221                },
14222                Self::ConsensusKeysUpdatedV2(inner) => {
14223                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14224                },
14225                Self::Delegated(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14226                Self::ExitEscrowPeriodUpdated(inner) => {
14227                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14228                },
14229                Self::Initialized(inner) => {
14230                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14231                },
14232                Self::OwnershipTransferred(inner) => {
14233                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14234                },
14235                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14236                Self::RoleAdminChanged(inner) => {
14237                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14238                },
14239                Self::RoleGranted(inner) => {
14240                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14241                },
14242                Self::RoleRevoked(inner) => {
14243                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14244                },
14245                Self::Undelegated(inner) => {
14246                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14247                },
14248                Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14249                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14250                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14251                Self::ValidatorExit(inner) => {
14252                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14253                },
14254                Self::ValidatorRegistered(inner) => {
14255                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14256                },
14257                Self::ValidatorRegisteredV2(inner) => {
14258                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14259                },
14260                Self::Withdrawal(inner) => {
14261                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14262                },
14263            }
14264        }
14265        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14266            match self {
14267                Self::ConsensusKeysUpdated(inner) => {
14268                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14269                },
14270                Self::ConsensusKeysUpdatedV2(inner) => {
14271                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14272                },
14273                Self::Delegated(inner) => {
14274                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14275                },
14276                Self::ExitEscrowPeriodUpdated(inner) => {
14277                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14278                },
14279                Self::Initialized(inner) => {
14280                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14281                },
14282                Self::OwnershipTransferred(inner) => {
14283                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14284                },
14285                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
14286                Self::RoleAdminChanged(inner) => {
14287                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14288                },
14289                Self::RoleGranted(inner) => {
14290                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14291                },
14292                Self::RoleRevoked(inner) => {
14293                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14294                },
14295                Self::Undelegated(inner) => {
14296                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14297                },
14298                Self::Unpaused(inner) => {
14299                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14300                },
14301                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
14302                Self::Upgraded(inner) => {
14303                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14304                },
14305                Self::ValidatorExit(inner) => {
14306                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14307                },
14308                Self::ValidatorRegistered(inner) => {
14309                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14310                },
14311                Self::ValidatorRegisteredV2(inner) => {
14312                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14313                },
14314                Self::Withdrawal(inner) => {
14315                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14316                },
14317            }
14318        }
14319    }
14320    use alloy::contract as alloy_contract;
14321    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
14322
14323    See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
14324    #[inline]
14325    pub const fn new<
14326        T: alloy_contract::private::Transport + ::core::clone::Clone,
14327        P: alloy_contract::private::Provider<T, N>,
14328        N: alloy_contract::private::Network,
14329    >(
14330        address: alloy_sol_types::private::Address,
14331        provider: P,
14332    ) -> StakeTableV2Instance<T, P, N> {
14333        StakeTableV2Instance::<T, P, N>::new(address, provider)
14334    }
14335    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14336
14337    Returns a new instance of the contract, if the deployment was successful.
14338
14339    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14340    #[inline]
14341    pub fn deploy<
14342        T: alloy_contract::private::Transport + ::core::clone::Clone,
14343        P: alloy_contract::private::Provider<T, N>,
14344        N: alloy_contract::private::Network,
14345    >(
14346        provider: P,
14347    ) -> impl ::core::future::Future<Output = alloy_contract::Result<StakeTableV2Instance<T, P, N>>>
14348    {
14349        StakeTableV2Instance::<T, P, N>::deploy(provider)
14350    }
14351    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14352    and constructor arguments, if any.
14353
14354    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14355    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14356    #[inline]
14357    pub fn deploy_builder<
14358        T: alloy_contract::private::Transport + ::core::clone::Clone,
14359        P: alloy_contract::private::Provider<T, N>,
14360        N: alloy_contract::private::Network,
14361    >(
14362        provider: P,
14363    ) -> alloy_contract::RawCallBuilder<T, P, N> {
14364        StakeTableV2Instance::<T, P, N>::deploy_builder(provider)
14365    }
14366    /**A [`StakeTableV2`](self) instance.
14367
14368    Contains type-safe methods for interacting with an on-chain instance of the
14369    [`StakeTableV2`](self) contract located at a given `address`, using a given
14370    provider `P`.
14371
14372    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14373    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14374    be used to deploy a new instance of the contract.
14375
14376    See the [module-level documentation](self) for all the available methods.*/
14377    #[derive(Clone)]
14378    pub struct StakeTableV2Instance<T, P, N = alloy_contract::private::Ethereum> {
14379        address: alloy_sol_types::private::Address,
14380        provider: P,
14381        _network_transport: ::core::marker::PhantomData<(N, T)>,
14382    }
14383    #[automatically_derived]
14384    impl<T, P, N> ::core::fmt::Debug for StakeTableV2Instance<T, P, N> {
14385        #[inline]
14386        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14387            f.debug_tuple("StakeTableV2Instance")
14388                .field(&self.address)
14389                .finish()
14390        }
14391    }
14392    /// Instantiation and getters/setters.
14393    #[automatically_derived]
14394    impl<
14395            T: alloy_contract::private::Transport + ::core::clone::Clone,
14396            P: alloy_contract::private::Provider<T, N>,
14397            N: alloy_contract::private::Network,
14398        > StakeTableV2Instance<T, P, N>
14399    {
14400        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
14401
14402        See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
14403        #[inline]
14404        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
14405            Self {
14406                address,
14407                provider,
14408                _network_transport: ::core::marker::PhantomData,
14409            }
14410        }
14411        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14412
14413        Returns a new instance of the contract, if the deployment was successful.
14414
14415        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14416        #[inline]
14417        pub async fn deploy(provider: P) -> alloy_contract::Result<StakeTableV2Instance<T, P, N>> {
14418            let call_builder = Self::deploy_builder(provider);
14419            let contract_address = call_builder.deploy().await?;
14420            Ok(Self::new(contract_address, call_builder.provider))
14421        }
14422        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14423        and constructor arguments, if any.
14424
14425        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14426        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14427        #[inline]
14428        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14429            alloy_contract::RawCallBuilder::new_raw_deploy(
14430                provider,
14431                ::core::clone::Clone::clone(&BYTECODE),
14432            )
14433        }
14434        /// Returns a reference to the address.
14435        #[inline]
14436        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14437            &self.address
14438        }
14439        /// Sets the address.
14440        #[inline]
14441        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14442            self.address = address;
14443        }
14444        /// Sets the address and returns `self`.
14445        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14446            self.set_address(address);
14447            self
14448        }
14449        /// Returns a reference to the provider.
14450        #[inline]
14451        pub const fn provider(&self) -> &P {
14452            &self.provider
14453        }
14454    }
14455    impl<T, P: ::core::clone::Clone, N> StakeTableV2Instance<T, &P, N> {
14456        /// Clones the provider and returns a new instance with the cloned provider.
14457        #[inline]
14458        pub fn with_cloned_provider(self) -> StakeTableV2Instance<T, P, N> {
14459            StakeTableV2Instance {
14460                address: self.address,
14461                provider: ::core::clone::Clone::clone(&self.provider),
14462                _network_transport: ::core::marker::PhantomData,
14463            }
14464        }
14465    }
14466    /// Function calls.
14467    #[automatically_derived]
14468    impl<
14469            T: alloy_contract::private::Transport + ::core::clone::Clone,
14470            P: alloy_contract::private::Provider<T, N>,
14471            N: alloy_contract::private::Network,
14472        > StakeTableV2Instance<T, P, N>
14473    {
14474        /// Creates a new call builder using this contract instance's provider and address.
14475        ///
14476        /// Note that the call can be any function call, not just those defined in this
14477        /// contract. Prefer using the other methods for building type-safe contract calls.
14478        pub fn call_builder<C: alloy_sol_types::SolCall>(
14479            &self,
14480            call: &C,
14481        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
14482            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14483        }
14484        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
14485        pub fn DEFAULT_ADMIN_ROLE(
14486            &self,
14487        ) -> alloy_contract::SolCallBuilder<T, &P, DEFAULT_ADMIN_ROLECall, N> {
14488            self.call_builder(&DEFAULT_ADMIN_ROLECall {})
14489        }
14490        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
14491        pub fn PAUSER_ROLE(&self) -> alloy_contract::SolCallBuilder<T, &P, PAUSER_ROLECall, N> {
14492            self.call_builder(&PAUSER_ROLECall {})
14493        }
14494        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14495        pub fn UPGRADE_INTERFACE_VERSION(
14496            &self,
14497        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
14498            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
14499        }
14500        ///Creates a new call builder for the [`_hashBlsKey`] function.
14501        pub fn _hashBlsKey(
14502            &self,
14503            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
14504        ) -> alloy_contract::SolCallBuilder<T, &P, _hashBlsKeyCall, N> {
14505            self.call_builder(&_hashBlsKeyCall { blsVK })
14506        }
14507        ///Creates a new call builder for the [`blsKeys`] function.
14508        pub fn blsKeys(
14509            &self,
14510            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
14511        ) -> alloy_contract::SolCallBuilder<T, &P, blsKeysCall, N> {
14512            self.call_builder(&blsKeysCall { blsKeyHash })
14513        }
14514        ///Creates a new call builder for the [`claimValidatorExit`] function.
14515        pub fn claimValidatorExit(
14516            &self,
14517            validator: alloy::sol_types::private::Address,
14518        ) -> alloy_contract::SolCallBuilder<T, &P, claimValidatorExitCall, N> {
14519            self.call_builder(&claimValidatorExitCall { validator })
14520        }
14521        ///Creates a new call builder for the [`claimWithdrawal`] function.
14522        pub fn claimWithdrawal(
14523            &self,
14524            validator: alloy::sol_types::private::Address,
14525        ) -> alloy_contract::SolCallBuilder<T, &P, claimWithdrawalCall, N> {
14526            self.call_builder(&claimWithdrawalCall { validator })
14527        }
14528        ///Creates a new call builder for the [`delegate`] function.
14529        pub fn delegate(
14530            &self,
14531            validator: alloy::sol_types::private::Address,
14532            amount: alloy::sol_types::private::primitives::aliases::U256,
14533        ) -> alloy_contract::SolCallBuilder<T, &P, delegateCall, N> {
14534            self.call_builder(&delegateCall { validator, amount })
14535        }
14536        ///Creates a new call builder for the [`delegations`] function.
14537        pub fn delegations(
14538            &self,
14539            validator: alloy::sol_types::private::Address,
14540            delegator: alloy::sol_types::private::Address,
14541        ) -> alloy_contract::SolCallBuilder<T, &P, delegationsCall, N> {
14542            self.call_builder(&delegationsCall {
14543                validator,
14544                delegator,
14545            })
14546        }
14547        ///Creates a new call builder for the [`deregisterValidator`] function.
14548        pub fn deregisterValidator(
14549            &self,
14550        ) -> alloy_contract::SolCallBuilder<T, &P, deregisterValidatorCall, N> {
14551            self.call_builder(&deregisterValidatorCall {})
14552        }
14553        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
14554        pub fn exitEscrowPeriod(
14555            &self,
14556        ) -> alloy_contract::SolCallBuilder<T, &P, exitEscrowPeriodCall, N> {
14557            self.call_builder(&exitEscrowPeriodCall {})
14558        }
14559        ///Creates a new call builder for the [`getRoleAdmin`] function.
14560        pub fn getRoleAdmin(
14561            &self,
14562            role: alloy::sol_types::private::FixedBytes<32>,
14563        ) -> alloy_contract::SolCallBuilder<T, &P, getRoleAdminCall, N> {
14564            self.call_builder(&getRoleAdminCall { role })
14565        }
14566        ///Creates a new call builder for the [`getVersion`] function.
14567        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
14568            self.call_builder(&getVersionCall {})
14569        }
14570        ///Creates a new call builder for the [`grantRole`] function.
14571        pub fn grantRole(
14572            &self,
14573            role: alloy::sol_types::private::FixedBytes<32>,
14574            account: alloy::sol_types::private::Address,
14575        ) -> alloy_contract::SolCallBuilder<T, &P, grantRoleCall, N> {
14576            self.call_builder(&grantRoleCall { role, account })
14577        }
14578        ///Creates a new call builder for the [`hasRole`] function.
14579        pub fn hasRole(
14580            &self,
14581            role: alloy::sol_types::private::FixedBytes<32>,
14582            account: alloy::sol_types::private::Address,
14583        ) -> alloy_contract::SolCallBuilder<T, &P, hasRoleCall, N> {
14584            self.call_builder(&hasRoleCall { role, account })
14585        }
14586        ///Creates a new call builder for the [`initialize`] function.
14587        pub fn initialize(
14588            &self,
14589            _tokenAddress: alloy::sol_types::private::Address,
14590            _lightClientAddress: alloy::sol_types::private::Address,
14591            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
14592            _timelock: alloy::sol_types::private::Address,
14593        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
14594            self.call_builder(&initializeCall {
14595                _tokenAddress,
14596                _lightClientAddress,
14597                _exitEscrowPeriod,
14598                _timelock,
14599            })
14600        }
14601        ///Creates a new call builder for the [`initializeV2`] function.
14602        pub fn initializeV2(
14603            &self,
14604            pauser: alloy::sol_types::private::Address,
14605            admin: alloy::sol_types::private::Address,
14606        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
14607            self.call_builder(&initializeV2Call { pauser, admin })
14608        }
14609        ///Creates a new call builder for the [`initializedAtBlock`] function.
14610        pub fn initializedAtBlock(
14611            &self,
14612        ) -> alloy_contract::SolCallBuilder<T, &P, initializedAtBlockCall, N> {
14613            self.call_builder(&initializedAtBlockCall {})
14614        }
14615        ///Creates a new call builder for the [`lightClient`] function.
14616        pub fn lightClient(&self) -> alloy_contract::SolCallBuilder<T, &P, lightClientCall, N> {
14617            self.call_builder(&lightClientCall {})
14618        }
14619        ///Creates a new call builder for the [`owner`] function.
14620        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
14621            self.call_builder(&ownerCall {})
14622        }
14623        ///Creates a new call builder for the [`pause`] function.
14624        pub fn pause(&self) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> {
14625            self.call_builder(&pauseCall {})
14626        }
14627        ///Creates a new call builder for the [`paused`] function.
14628        pub fn paused(&self) -> alloy_contract::SolCallBuilder<T, &P, pausedCall, N> {
14629            self.call_builder(&pausedCall {})
14630        }
14631        ///Creates a new call builder for the [`proxiableUUID`] function.
14632        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
14633            self.call_builder(&proxiableUUIDCall {})
14634        }
14635        ///Creates a new call builder for the [`registerValidator`] function.
14636        pub fn registerValidator(
14637            &self,
14638            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
14639            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
14640            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
14641            _3: u16,
14642        ) -> alloy_contract::SolCallBuilder<T, &P, registerValidatorCall, N> {
14643            self.call_builder(&registerValidatorCall { _0, _1, _2, _3 })
14644        }
14645        ///Creates a new call builder for the [`registerValidatorV2`] function.
14646        pub fn registerValidatorV2(
14647            &self,
14648            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
14649            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
14650            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
14651            schnorrSig: alloy::sol_types::private::Bytes,
14652            commission: u16,
14653        ) -> alloy_contract::SolCallBuilder<T, &P, registerValidatorV2Call, N> {
14654            self.call_builder(&registerValidatorV2Call {
14655                blsVK,
14656                schnorrVK,
14657                blsSig,
14658                schnorrSig,
14659                commission,
14660            })
14661        }
14662        ///Creates a new call builder for the [`renounceOwnership`] function.
14663        pub fn renounceOwnership(
14664            &self,
14665        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
14666            self.call_builder(&renounceOwnershipCall {})
14667        }
14668        ///Creates a new call builder for the [`renounceRole`] function.
14669        pub fn renounceRole(
14670            &self,
14671            role: alloy::sol_types::private::FixedBytes<32>,
14672            callerConfirmation: alloy::sol_types::private::Address,
14673        ) -> alloy_contract::SolCallBuilder<T, &P, renounceRoleCall, N> {
14674            self.call_builder(&renounceRoleCall {
14675                role,
14676                callerConfirmation,
14677            })
14678        }
14679        ///Creates a new call builder for the [`revokeRole`] function.
14680        pub fn revokeRole(
14681            &self,
14682            role: alloy::sol_types::private::FixedBytes<32>,
14683            account: alloy::sol_types::private::Address,
14684        ) -> alloy_contract::SolCallBuilder<T, &P, revokeRoleCall, N> {
14685            self.call_builder(&revokeRoleCall { role, account })
14686        }
14687        ///Creates a new call builder for the [`supportsInterface`] function.
14688        pub fn supportsInterface(
14689            &self,
14690            interfaceId: alloy::sol_types::private::FixedBytes<4>,
14691        ) -> alloy_contract::SolCallBuilder<T, &P, supportsInterfaceCall, N> {
14692            self.call_builder(&supportsInterfaceCall { interfaceId })
14693        }
14694        ///Creates a new call builder for the [`token`] function.
14695        pub fn token(&self) -> alloy_contract::SolCallBuilder<T, &P, tokenCall, N> {
14696            self.call_builder(&tokenCall {})
14697        }
14698        ///Creates a new call builder for the [`transferOwnership`] function.
14699        pub fn transferOwnership(
14700            &self,
14701            newOwner: alloy::sol_types::private::Address,
14702        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
14703            self.call_builder(&transferOwnershipCall { newOwner })
14704        }
14705        ///Creates a new call builder for the [`undelegate`] function.
14706        pub fn undelegate(
14707            &self,
14708            validator: alloy::sol_types::private::Address,
14709            amount: alloy::sol_types::private::primitives::aliases::U256,
14710        ) -> alloy_contract::SolCallBuilder<T, &P, undelegateCall, N> {
14711            self.call_builder(&undelegateCall { validator, amount })
14712        }
14713        ///Creates a new call builder for the [`undelegations`] function.
14714        pub fn undelegations(
14715            &self,
14716            validator: alloy::sol_types::private::Address,
14717            delegator: alloy::sol_types::private::Address,
14718        ) -> alloy_contract::SolCallBuilder<T, &P, undelegationsCall, N> {
14719            self.call_builder(&undelegationsCall {
14720                validator,
14721                delegator,
14722            })
14723        }
14724        ///Creates a new call builder for the [`unpause`] function.
14725        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> {
14726            self.call_builder(&unpauseCall {})
14727        }
14728        ///Creates a new call builder for the [`updateConsensusKeys`] function.
14729        pub fn updateConsensusKeys(
14730            &self,
14731            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
14732            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
14733            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
14734        ) -> alloy_contract::SolCallBuilder<T, &P, updateConsensusKeysCall, N> {
14735            self.call_builder(&updateConsensusKeysCall { _0, _1, _2 })
14736        }
14737        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
14738        pub fn updateConsensusKeysV2(
14739            &self,
14740            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
14741            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
14742            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
14743            schnorrSig: alloy::sol_types::private::Bytes,
14744        ) -> alloy_contract::SolCallBuilder<T, &P, updateConsensusKeysV2Call, N> {
14745            self.call_builder(&updateConsensusKeysV2Call {
14746                blsVK,
14747                schnorrVK,
14748                blsSig,
14749                schnorrSig,
14750            })
14751        }
14752        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
14753        pub fn updateExitEscrowPeriod(
14754            &self,
14755            newExitEscrowPeriod: u64,
14756        ) -> alloy_contract::SolCallBuilder<T, &P, updateExitEscrowPeriodCall, N> {
14757            self.call_builder(&updateExitEscrowPeriodCall {
14758                newExitEscrowPeriod,
14759            })
14760        }
14761        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14762        pub fn upgradeToAndCall(
14763            &self,
14764            newImplementation: alloy::sol_types::private::Address,
14765            data: alloy::sol_types::private::Bytes,
14766        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
14767            self.call_builder(&upgradeToAndCallCall {
14768                newImplementation,
14769                data,
14770            })
14771        }
14772        ///Creates a new call builder for the [`validatorExits`] function.
14773        pub fn validatorExits(
14774            &self,
14775            validator: alloy::sol_types::private::Address,
14776        ) -> alloy_contract::SolCallBuilder<T, &P, validatorExitsCall, N> {
14777            self.call_builder(&validatorExitsCall { validator })
14778        }
14779        ///Creates a new call builder for the [`validators`] function.
14780        pub fn validators(
14781            &self,
14782            account: alloy::sol_types::private::Address,
14783        ) -> alloy_contract::SolCallBuilder<T, &P, validatorsCall, N> {
14784            self.call_builder(&validatorsCall { account })
14785        }
14786    }
14787    /// Event filters.
14788    #[automatically_derived]
14789    impl<
14790            T: alloy_contract::private::Transport + ::core::clone::Clone,
14791            P: alloy_contract::private::Provider<T, N>,
14792            N: alloy_contract::private::Network,
14793        > StakeTableV2Instance<T, P, N>
14794    {
14795        /// Creates a new event filter using this contract instance's provider and address.
14796        ///
14797        /// Note that the type can be any event, not just those defined in this contract.
14798        /// Prefer using the other methods for building type-safe event filters.
14799        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14800            &self,
14801        ) -> alloy_contract::Event<T, &P, E, N> {
14802            alloy_contract::Event::new_sol(&self.provider, &self.address)
14803        }
14804        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
14805        pub fn ConsensusKeysUpdated_filter(
14806            &self,
14807        ) -> alloy_contract::Event<T, &P, ConsensusKeysUpdated, N> {
14808            self.event_filter::<ConsensusKeysUpdated>()
14809        }
14810        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
14811        pub fn ConsensusKeysUpdatedV2_filter(
14812            &self,
14813        ) -> alloy_contract::Event<T, &P, ConsensusKeysUpdatedV2, N> {
14814            self.event_filter::<ConsensusKeysUpdatedV2>()
14815        }
14816        ///Creates a new event filter for the [`Delegated`] event.
14817        pub fn Delegated_filter(&self) -> alloy_contract::Event<T, &P, Delegated, N> {
14818            self.event_filter::<Delegated>()
14819        }
14820        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
14821        pub fn ExitEscrowPeriodUpdated_filter(
14822            &self,
14823        ) -> alloy_contract::Event<T, &P, ExitEscrowPeriodUpdated, N> {
14824            self.event_filter::<ExitEscrowPeriodUpdated>()
14825        }
14826        ///Creates a new event filter for the [`Initialized`] event.
14827        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
14828            self.event_filter::<Initialized>()
14829        }
14830        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14831        pub fn OwnershipTransferred_filter(
14832            &self,
14833        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
14834            self.event_filter::<OwnershipTransferred>()
14835        }
14836        ///Creates a new event filter for the [`Paused`] event.
14837        pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> {
14838            self.event_filter::<Paused>()
14839        }
14840        ///Creates a new event filter for the [`RoleAdminChanged`] event.
14841        pub fn RoleAdminChanged_filter(&self) -> alloy_contract::Event<T, &P, RoleAdminChanged, N> {
14842            self.event_filter::<RoleAdminChanged>()
14843        }
14844        ///Creates a new event filter for the [`RoleGranted`] event.
14845        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<T, &P, RoleGranted, N> {
14846            self.event_filter::<RoleGranted>()
14847        }
14848        ///Creates a new event filter for the [`RoleRevoked`] event.
14849        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<T, &P, RoleRevoked, N> {
14850            self.event_filter::<RoleRevoked>()
14851        }
14852        ///Creates a new event filter for the [`Undelegated`] event.
14853        pub fn Undelegated_filter(&self) -> alloy_contract::Event<T, &P, Undelegated, N> {
14854            self.event_filter::<Undelegated>()
14855        }
14856        ///Creates a new event filter for the [`Unpaused`] event.
14857        pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> {
14858            self.event_filter::<Unpaused>()
14859        }
14860        ///Creates a new event filter for the [`Upgrade`] event.
14861        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
14862            self.event_filter::<Upgrade>()
14863        }
14864        ///Creates a new event filter for the [`Upgraded`] event.
14865        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
14866            self.event_filter::<Upgraded>()
14867        }
14868        ///Creates a new event filter for the [`ValidatorExit`] event.
14869        pub fn ValidatorExit_filter(&self) -> alloy_contract::Event<T, &P, ValidatorExit, N> {
14870            self.event_filter::<ValidatorExit>()
14871        }
14872        ///Creates a new event filter for the [`ValidatorRegistered`] event.
14873        pub fn ValidatorRegistered_filter(
14874            &self,
14875        ) -> alloy_contract::Event<T, &P, ValidatorRegistered, N> {
14876            self.event_filter::<ValidatorRegistered>()
14877        }
14878        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
14879        pub fn ValidatorRegisteredV2_filter(
14880            &self,
14881        ) -> alloy_contract::Event<T, &P, ValidatorRegisteredV2, N> {
14882            self.event_filter::<ValidatorRegisteredV2>()
14883        }
14884        ///Creates a new event filter for the [`Withdrawal`] event.
14885        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<T, &P, Withdrawal, N> {
14886            self.event_filter::<Withdrawal>()
14887        }
14888    }
14889}