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 super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    /**```solidity
153struct G1Point { BaseField x; BaseField y; }
154```*/
155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
156    #[derive(Clone)]
157    pub struct G1Point {
158        #[allow(missing_docs)]
159        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
160        #[allow(missing_docs)]
161        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
162    }
163    #[allow(
164        non_camel_case_types,
165        non_snake_case,
166        clippy::pub_underscore_fields,
167        clippy::style
168    )]
169    const _: () = {
170        use alloy::sol_types as alloy_sol_types;
171        #[doc(hidden)]
172        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
173        #[doc(hidden)]
174        type UnderlyingRustTuple<'a> = (
175            <BaseField as alloy::sol_types::SolType>::RustType,
176            <BaseField as alloy::sol_types::SolType>::RustType,
177        );
178        #[cfg(test)]
179        #[allow(dead_code, unreachable_patterns)]
180        fn _type_assertion(
181            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
182        ) {
183            match _t {
184                alloy_sol_types::private::AssertTypeEq::<
185                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
186                >(_) => {}
187            }
188        }
189        #[automatically_derived]
190        #[doc(hidden)]
191        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
192            fn from(value: G1Point) -> Self {
193                (value.x, value.y)
194            }
195        }
196        #[automatically_derived]
197        #[doc(hidden)]
198        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
199            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
200                Self { x: tuple.0, y: tuple.1 }
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolValue for G1Point {
205            type SolType = Self;
206        }
207        #[automatically_derived]
208        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
209            #[inline]
210            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
211                (
212                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
213                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
214                )
215            }
216            #[inline]
217            fn stv_abi_encoded_size(&self) -> usize {
218                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
219                    return size;
220                }
221                let tuple = <UnderlyingRustTuple<
222                    '_,
223                > as ::core::convert::From<Self>>::from(self.clone());
224                <UnderlyingSolTuple<
225                    '_,
226                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
227            }
228            #[inline]
229            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
230                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
231            }
232            #[inline]
233            fn stv_abi_encode_packed_to(
234                &self,
235                out: &mut alloy_sol_types::private::Vec<u8>,
236            ) {
237                let tuple = <UnderlyingRustTuple<
238                    '_,
239                > as ::core::convert::From<Self>>::from(self.clone());
240                <UnderlyingSolTuple<
241                    '_,
242                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
243            }
244            #[inline]
245            fn stv_abi_packed_encoded_size(&self) -> usize {
246                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
247                    return size;
248                }
249                let tuple = <UnderlyingRustTuple<
250                    '_,
251                > as ::core::convert::From<Self>>::from(self.clone());
252                <UnderlyingSolTuple<
253                    '_,
254                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
255            }
256        }
257        #[automatically_derived]
258        impl alloy_sol_types::SolType for G1Point {
259            type RustType = Self;
260            type Token<'a> = <UnderlyingSolTuple<
261                'a,
262            > as alloy_sol_types::SolType>::Token<'a>;
263            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
264            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
265                '_,
266            > as alloy_sol_types::SolType>::ENCODED_SIZE;
267            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
268                '_,
269            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
270            #[inline]
271            fn valid_token(token: &Self::Token<'_>) -> bool {
272                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
273            }
274            #[inline]
275            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
276                let tuple = <UnderlyingSolTuple<
277                    '_,
278                > as alloy_sol_types::SolType>::detokenize(token);
279                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::SolStruct for G1Point {
284            const NAME: &'static str = "G1Point";
285            #[inline]
286            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
287                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
288            }
289            #[inline]
290            fn eip712_components() -> alloy_sol_types::private::Vec<
291                alloy_sol_types::private::Cow<'static, str>,
292            > {
293                alloy_sol_types::private::Vec::new()
294            }
295            #[inline]
296            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
297                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
298            }
299            #[inline]
300            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
301                [
302                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
303                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
304                ]
305                    .concat()
306            }
307        }
308        #[automatically_derived]
309        impl alloy_sol_types::EventTopic for G1Point {
310            #[inline]
311            fn topic_preimage_length(rust: &Self::RustType) -> usize {
312                0usize
313                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
314                        &rust.x,
315                    )
316                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
317                        &rust.y,
318                    )
319            }
320            #[inline]
321            fn encode_topic_preimage(
322                rust: &Self::RustType,
323                out: &mut alloy_sol_types::private::Vec<u8>,
324            ) {
325                out.reserve(
326                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
327                );
328                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
329                    &rust.x,
330                    out,
331                );
332                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
333                    &rust.y,
334                    out,
335                );
336            }
337            #[inline]
338            fn encode_topic(
339                rust: &Self::RustType,
340            ) -> alloy_sol_types::abi::token::WordToken {
341                let mut out = alloy_sol_types::private::Vec::new();
342                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
343                    rust,
344                    &mut out,
345                );
346                alloy_sol_types::abi::token::WordToken(
347                    alloy_sol_types::private::keccak256(out),
348                )
349            }
350        }
351    };
352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
353    /**```solidity
354struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
355```*/
356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
357    #[derive(Clone)]
358    pub struct G2Point {
359        #[allow(missing_docs)]
360        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
361        #[allow(missing_docs)]
362        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
363        #[allow(missing_docs)]
364        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
365        #[allow(missing_docs)]
366        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
367    }
368    #[allow(
369        non_camel_case_types,
370        non_snake_case,
371        clippy::pub_underscore_fields,
372        clippy::style
373    )]
374    const _: () = {
375        use alloy::sol_types as alloy_sol_types;
376        #[doc(hidden)]
377        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
378        #[doc(hidden)]
379        type UnderlyingRustTuple<'a> = (
380            <BaseField as alloy::sol_types::SolType>::RustType,
381            <BaseField as alloy::sol_types::SolType>::RustType,
382            <BaseField as alloy::sol_types::SolType>::RustType,
383            <BaseField as alloy::sol_types::SolType>::RustType,
384        );
385        #[cfg(test)]
386        #[allow(dead_code, unreachable_patterns)]
387        fn _type_assertion(
388            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
389        ) {
390            match _t {
391                alloy_sol_types::private::AssertTypeEq::<
392                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
393                >(_) => {}
394            }
395        }
396        #[automatically_derived]
397        #[doc(hidden)]
398        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
399            fn from(value: G2Point) -> Self {
400                (value.x0, value.x1, value.y0, value.y1)
401            }
402        }
403        #[automatically_derived]
404        #[doc(hidden)]
405        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
406            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
407                Self {
408                    x0: tuple.0,
409                    x1: tuple.1,
410                    y0: tuple.2,
411                    y1: tuple.3,
412                }
413            }
414        }
415        #[automatically_derived]
416        impl alloy_sol_types::SolValue for G2Point {
417            type SolType = Self;
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
421            #[inline]
422            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
423                (
424                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
425                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
426                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
427                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
428                )
429            }
430            #[inline]
431            fn stv_abi_encoded_size(&self) -> usize {
432                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
433                    return size;
434                }
435                let tuple = <UnderlyingRustTuple<
436                    '_,
437                > as ::core::convert::From<Self>>::from(self.clone());
438                <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
441            }
442            #[inline]
443            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
444                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
445            }
446            #[inline]
447            fn stv_abi_encode_packed_to(
448                &self,
449                out: &mut alloy_sol_types::private::Vec<u8>,
450            ) {
451                let tuple = <UnderlyingRustTuple<
452                    '_,
453                > as ::core::convert::From<Self>>::from(self.clone());
454                <UnderlyingSolTuple<
455                    '_,
456                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
457            }
458            #[inline]
459            fn stv_abi_packed_encoded_size(&self) -> usize {
460                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
461                    return size;
462                }
463                let tuple = <UnderlyingRustTuple<
464                    '_,
465                > as ::core::convert::From<Self>>::from(self.clone());
466                <UnderlyingSolTuple<
467                    '_,
468                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
469            }
470        }
471        #[automatically_derived]
472        impl alloy_sol_types::SolType for G2Point {
473            type RustType = Self;
474            type Token<'a> = <UnderlyingSolTuple<
475                'a,
476            > as alloy_sol_types::SolType>::Token<'a>;
477            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
478            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
479                '_,
480            > as alloy_sol_types::SolType>::ENCODED_SIZE;
481            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
482                '_,
483            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
484            #[inline]
485            fn valid_token(token: &Self::Token<'_>) -> bool {
486                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
487            }
488            #[inline]
489            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
490                let tuple = <UnderlyingSolTuple<
491                    '_,
492                > as alloy_sol_types::SolType>::detokenize(token);
493                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
494            }
495        }
496        #[automatically_derived]
497        impl alloy_sol_types::SolStruct for G2Point {
498            const NAME: &'static str = "G2Point";
499            #[inline]
500            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
501                alloy_sol_types::private::Cow::Borrowed(
502                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
503                )
504            }
505            #[inline]
506            fn eip712_components() -> alloy_sol_types::private::Vec<
507                alloy_sol_types::private::Cow<'static, str>,
508            > {
509                alloy_sol_types::private::Vec::new()
510            }
511            #[inline]
512            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
513                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
514            }
515            #[inline]
516            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
517                [
518                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
519                        .0,
520                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
521                        .0,
522                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
523                        .0,
524                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
525                ]
526                    .concat()
527            }
528        }
529        #[automatically_derived]
530        impl alloy_sol_types::EventTopic for G2Point {
531            #[inline]
532            fn topic_preimage_length(rust: &Self::RustType) -> usize {
533                0usize
534                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
535                        &rust.x0,
536                    )
537                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
538                        &rust.x1,
539                    )
540                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
541                        &rust.y0,
542                    )
543                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
544                        &rust.y1,
545                    )
546            }
547            #[inline]
548            fn encode_topic_preimage(
549                rust: &Self::RustType,
550                out: &mut alloy_sol_types::private::Vec<u8>,
551            ) {
552                out.reserve(
553                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
554                );
555                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
556                    &rust.x0,
557                    out,
558                );
559                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
560                    &rust.x1,
561                    out,
562                );
563                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
564                    &rust.y0,
565                    out,
566                );
567                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
568                    &rust.y1,
569                    out,
570                );
571            }
572            #[inline]
573            fn encode_topic(
574                rust: &Self::RustType,
575            ) -> alloy_sol_types::abi::token::WordToken {
576                let mut out = alloy_sol_types::private::Vec::new();
577                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    rust,
579                    &mut out,
580                );
581                alloy_sol_types::abi::token::WordToken(
582                    alloy_sol_types::private::keccak256(out),
583                )
584            }
585        }
586    };
587    use alloy::contract as alloy_contract;
588    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
589
590See the [wrapper's documentation](`BN254Instance`) for more details.*/
591    #[inline]
592    pub const fn new<
593        T: alloy_contract::private::Transport + ::core::clone::Clone,
594        P: alloy_contract::private::Provider<T, N>,
595        N: alloy_contract::private::Network,
596    >(
597        address: alloy_sol_types::private::Address,
598        provider: P,
599    ) -> BN254Instance<T, P, N> {
600        BN254Instance::<T, P, N>::new(address, provider)
601    }
602    /**A [`BN254`](self) instance.
603
604Contains type-safe methods for interacting with an on-chain instance of the
605[`BN254`](self) contract located at a given `address`, using a given
606provider `P`.
607
608If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
609documentation on how to provide it), the `deploy` and `deploy_builder` methods can
610be used to deploy a new instance of the contract.
611
612See the [module-level documentation](self) for all the available methods.*/
613    #[derive(Clone)]
614    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
615        address: alloy_sol_types::private::Address,
616        provider: P,
617        _network_transport: ::core::marker::PhantomData<(N, T)>,
618    }
619    #[automatically_derived]
620    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
621        #[inline]
622        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
623            f.debug_tuple("BN254Instance").field(&self.address).finish()
624        }
625    }
626    /// Instantiation and getters/setters.
627    #[automatically_derived]
628    impl<
629        T: alloy_contract::private::Transport + ::core::clone::Clone,
630        P: alloy_contract::private::Provider<T, N>,
631        N: alloy_contract::private::Network,
632    > BN254Instance<T, P, N> {
633        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
634
635See the [wrapper's documentation](`BN254Instance`) for more details.*/
636        #[inline]
637        pub const fn new(
638            address: alloy_sol_types::private::Address,
639            provider: P,
640        ) -> Self {
641            Self {
642                address,
643                provider,
644                _network_transport: ::core::marker::PhantomData,
645            }
646        }
647        /// Returns a reference to the address.
648        #[inline]
649        pub const fn address(&self) -> &alloy_sol_types::private::Address {
650            &self.address
651        }
652        /// Sets the address.
653        #[inline]
654        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
655            self.address = address;
656        }
657        /// Sets the address and returns `self`.
658        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
659            self.set_address(address);
660            self
661        }
662        /// Returns a reference to the provider.
663        #[inline]
664        pub const fn provider(&self) -> &P {
665            &self.provider
666        }
667    }
668    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
669        /// Clones the provider and returns a new instance with the cloned provider.
670        #[inline]
671        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
672            BN254Instance {
673                address: self.address,
674                provider: ::core::clone::Clone::clone(&self.provider),
675                _network_transport: ::core::marker::PhantomData,
676            }
677        }
678    }
679    /// Function calls.
680    #[automatically_derived]
681    impl<
682        T: alloy_contract::private::Transport + ::core::clone::Clone,
683        P: alloy_contract::private::Provider<T, N>,
684        N: alloy_contract::private::Network,
685    > BN254Instance<T, P, N> {
686        /// Creates a new call builder using this contract instance's provider and address.
687        ///
688        /// Note that the call can be any function call, not just those defined in this
689        /// contract. Prefer using the other methods for building type-safe contract calls.
690        pub fn call_builder<C: alloy_sol_types::SolCall>(
691            &self,
692            call: &C,
693        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
694            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
695        }
696    }
697    /// Event filters.
698    #[automatically_derived]
699    impl<
700        T: alloy_contract::private::Transport + ::core::clone::Clone,
701        P: alloy_contract::private::Provider<T, N>,
702        N: alloy_contract::private::Network,
703    > BN254Instance<T, P, N> {
704        /// Creates a new event filter using this contract instance's provider and address.
705        ///
706        /// Note that the type can be any event, not just those defined in this contract.
707        /// Prefer using the other methods for building type-safe event filters.
708        pub fn event_filter<E: alloy_sol_types::SolEvent>(
709            &self,
710        ) -> alloy_contract::Event<T, &P, E, N> {
711            alloy_contract::Event::new_sol(&self.provider, &self.address)
712        }
713    }
714}
715///Module containing a contract's types and functions.
716/**
717
718```solidity
719library EdOnBN254 {
720    struct EdOnBN254Point { uint256 x; uint256 y; }
721}
722```*/
723#[allow(
724    non_camel_case_types,
725    non_snake_case,
726    clippy::pub_underscore_fields,
727    clippy::style,
728    clippy::empty_structs_with_brackets
729)]
730pub mod EdOnBN254 {
731    use super::*;
732    use alloy::sol_types as alloy_sol_types;
733    #[derive(Default, Debug, PartialEq, Eq, Hash)]
734    /**```solidity
735struct EdOnBN254Point { uint256 x; uint256 y; }
736```*/
737    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
738    #[derive(Clone)]
739    pub struct EdOnBN254Point {
740        #[allow(missing_docs)]
741        pub x: alloy::sol_types::private::primitives::aliases::U256,
742        #[allow(missing_docs)]
743        pub y: alloy::sol_types::private::primitives::aliases::U256,
744    }
745    #[allow(
746        non_camel_case_types,
747        non_snake_case,
748        clippy::pub_underscore_fields,
749        clippy::style
750    )]
751    const _: () = {
752        use alloy::sol_types as alloy_sol_types;
753        #[doc(hidden)]
754        type UnderlyingSolTuple<'a> = (
755            alloy::sol_types::sol_data::Uint<256>,
756            alloy::sol_types::sol_data::Uint<256>,
757        );
758        #[doc(hidden)]
759        type UnderlyingRustTuple<'a> = (
760            alloy::sol_types::private::primitives::aliases::U256,
761            alloy::sol_types::private::primitives::aliases::U256,
762        );
763        #[cfg(test)]
764        #[allow(dead_code, unreachable_patterns)]
765        fn _type_assertion(
766            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
767        ) {
768            match _t {
769                alloy_sol_types::private::AssertTypeEq::<
770                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
771                >(_) => {}
772            }
773        }
774        #[automatically_derived]
775        #[doc(hidden)]
776        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
777            fn from(value: EdOnBN254Point) -> Self {
778                (value.x, value.y)
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
785                Self { x: tuple.0, y: tuple.1 }
786            }
787        }
788        #[automatically_derived]
789        impl alloy_sol_types::SolValue for EdOnBN254Point {
790            type SolType = Self;
791        }
792        #[automatically_derived]
793        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
794            #[inline]
795            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
796                (
797                    <alloy::sol_types::sol_data::Uint<
798                        256,
799                    > as alloy_sol_types::SolType>::tokenize(&self.x),
800                    <alloy::sol_types::sol_data::Uint<
801                        256,
802                    > as alloy_sol_types::SolType>::tokenize(&self.y),
803                )
804            }
805            #[inline]
806            fn stv_abi_encoded_size(&self) -> usize {
807                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
808                    return size;
809                }
810                let tuple = <UnderlyingRustTuple<
811                    '_,
812                > as ::core::convert::From<Self>>::from(self.clone());
813                <UnderlyingSolTuple<
814                    '_,
815                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
816            }
817            #[inline]
818            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
819                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
820            }
821            #[inline]
822            fn stv_abi_encode_packed_to(
823                &self,
824                out: &mut alloy_sol_types::private::Vec<u8>,
825            ) {
826                let tuple = <UnderlyingRustTuple<
827                    '_,
828                > as ::core::convert::From<Self>>::from(self.clone());
829                <UnderlyingSolTuple<
830                    '_,
831                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
832            }
833            #[inline]
834            fn stv_abi_packed_encoded_size(&self) -> usize {
835                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
836                    return size;
837                }
838                let tuple = <UnderlyingRustTuple<
839                    '_,
840                > as ::core::convert::From<Self>>::from(self.clone());
841                <UnderlyingSolTuple<
842                    '_,
843                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolType for EdOnBN254Point {
848            type RustType = Self;
849            type Token<'a> = <UnderlyingSolTuple<
850                'a,
851            > as alloy_sol_types::SolType>::Token<'a>;
852            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
853            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
854                '_,
855            > as alloy_sol_types::SolType>::ENCODED_SIZE;
856            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
857                '_,
858            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
859            #[inline]
860            fn valid_token(token: &Self::Token<'_>) -> bool {
861                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
862            }
863            #[inline]
864            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
865                let tuple = <UnderlyingSolTuple<
866                    '_,
867                > as alloy_sol_types::SolType>::detokenize(token);
868                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
869            }
870        }
871        #[automatically_derived]
872        impl alloy_sol_types::SolStruct for EdOnBN254Point {
873            const NAME: &'static str = "EdOnBN254Point";
874            #[inline]
875            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
876                alloy_sol_types::private::Cow::Borrowed(
877                    "EdOnBN254Point(uint256 x,uint256 y)",
878                )
879            }
880            #[inline]
881            fn eip712_components() -> alloy_sol_types::private::Vec<
882                alloy_sol_types::private::Cow<'static, str>,
883            > {
884                alloy_sol_types::private::Vec::new()
885            }
886            #[inline]
887            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
888                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
889            }
890            #[inline]
891            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
892                [
893                    <alloy::sol_types::sol_data::Uint<
894                        256,
895                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
896                        .0,
897                    <alloy::sol_types::sol_data::Uint<
898                        256,
899                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
900                        .0,
901                ]
902                    .concat()
903            }
904        }
905        #[automatically_derived]
906        impl alloy_sol_types::EventTopic for EdOnBN254Point {
907            #[inline]
908            fn topic_preimage_length(rust: &Self::RustType) -> usize {
909                0usize
910                    + <alloy::sol_types::sol_data::Uint<
911                        256,
912                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
913                    + <alloy::sol_types::sol_data::Uint<
914                        256,
915                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
916            }
917            #[inline]
918            fn encode_topic_preimage(
919                rust: &Self::RustType,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                out.reserve(
923                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
924                );
925                <alloy::sol_types::sol_data::Uint<
926                    256,
927                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
928                <alloy::sol_types::sol_data::Uint<
929                    256,
930                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
931            }
932            #[inline]
933            fn encode_topic(
934                rust: &Self::RustType,
935            ) -> alloy_sol_types::abi::token::WordToken {
936                let mut out = alloy_sol_types::private::Vec::new();
937                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
938                    rust,
939                    &mut out,
940                );
941                alloy_sol_types::abi::token::WordToken(
942                    alloy_sol_types::private::keccak256(out),
943                )
944            }
945        }
946    };
947    use alloy::contract as alloy_contract;
948    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
949
950See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
951    #[inline]
952    pub const fn new<
953        T: alloy_contract::private::Transport + ::core::clone::Clone,
954        P: alloy_contract::private::Provider<T, N>,
955        N: alloy_contract::private::Network,
956    >(
957        address: alloy_sol_types::private::Address,
958        provider: P,
959    ) -> EdOnBN254Instance<T, P, N> {
960        EdOnBN254Instance::<T, P, N>::new(address, provider)
961    }
962    /**A [`EdOnBN254`](self) instance.
963
964Contains type-safe methods for interacting with an on-chain instance of the
965[`EdOnBN254`](self) contract located at a given `address`, using a given
966provider `P`.
967
968If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
969documentation on how to provide it), the `deploy` and `deploy_builder` methods can
970be used to deploy a new instance of the contract.
971
972See the [module-level documentation](self) for all the available methods.*/
973    #[derive(Clone)]
974    pub struct EdOnBN254Instance<T, P, N = alloy_contract::private::Ethereum> {
975        address: alloy_sol_types::private::Address,
976        provider: P,
977        _network_transport: ::core::marker::PhantomData<(N, T)>,
978    }
979    #[automatically_derived]
980    impl<T, P, N> ::core::fmt::Debug for EdOnBN254Instance<T, P, N> {
981        #[inline]
982        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
983            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
984        }
985    }
986    /// Instantiation and getters/setters.
987    #[automatically_derived]
988    impl<
989        T: alloy_contract::private::Transport + ::core::clone::Clone,
990        P: alloy_contract::private::Provider<T, N>,
991        N: alloy_contract::private::Network,
992    > EdOnBN254Instance<T, P, N> {
993        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
994
995See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
996        #[inline]
997        pub const fn new(
998            address: alloy_sol_types::private::Address,
999            provider: P,
1000        ) -> Self {
1001            Self {
1002                address,
1003                provider,
1004                _network_transport: ::core::marker::PhantomData,
1005            }
1006        }
1007        /// Returns a reference to the address.
1008        #[inline]
1009        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1010            &self.address
1011        }
1012        /// Sets the address.
1013        #[inline]
1014        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1015            self.address = address;
1016        }
1017        /// Sets the address and returns `self`.
1018        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1019            self.set_address(address);
1020            self
1021        }
1022        /// Returns a reference to the provider.
1023        #[inline]
1024        pub const fn provider(&self) -> &P {
1025            &self.provider
1026        }
1027    }
1028    impl<T, P: ::core::clone::Clone, N> EdOnBN254Instance<T, &P, N> {
1029        /// Clones the provider and returns a new instance with the cloned provider.
1030        #[inline]
1031        pub fn with_cloned_provider(self) -> EdOnBN254Instance<T, P, N> {
1032            EdOnBN254Instance {
1033                address: self.address,
1034                provider: ::core::clone::Clone::clone(&self.provider),
1035                _network_transport: ::core::marker::PhantomData,
1036            }
1037        }
1038    }
1039    /// Function calls.
1040    #[automatically_derived]
1041    impl<
1042        T: alloy_contract::private::Transport + ::core::clone::Clone,
1043        P: alloy_contract::private::Provider<T, N>,
1044        N: alloy_contract::private::Network,
1045    > EdOnBN254Instance<T, P, N> {
1046        /// Creates a new call builder using this contract instance's provider and address.
1047        ///
1048        /// Note that the call can be any function call, not just those defined in this
1049        /// contract. Prefer using the other methods for building type-safe contract calls.
1050        pub fn call_builder<C: alloy_sol_types::SolCall>(
1051            &self,
1052            call: &C,
1053        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1054            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1055        }
1056    }
1057    /// Event filters.
1058    #[automatically_derived]
1059    impl<
1060        T: alloy_contract::private::Transport + ::core::clone::Clone,
1061        P: alloy_contract::private::Provider<T, N>,
1062        N: alloy_contract::private::Network,
1063    > EdOnBN254Instance<T, P, N> {
1064        /// Creates a new event filter using this contract instance's provider and address.
1065        ///
1066        /// Note that the type can be any event, not just those defined in this contract.
1067        /// Prefer using the other methods for building type-safe event filters.
1068        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1069            &self,
1070        ) -> alloy_contract::Event<T, &P, E, N> {
1071            alloy_contract::Event::new_sol(&self.provider, &self.address)
1072        }
1073    }
1074}
1075///Module containing a contract's types and functions.
1076/**
1077
1078```solidity
1079library StakeTable {
1080    type ValidatorStatus is uint8;
1081}
1082```*/
1083#[allow(
1084    non_camel_case_types,
1085    non_snake_case,
1086    clippy::pub_underscore_fields,
1087    clippy::style,
1088    clippy::empty_structs_with_brackets
1089)]
1090pub mod StakeTable {
1091    use super::*;
1092    use alloy::sol_types as alloy_sol_types;
1093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1095    #[derive(Clone)]
1096    pub struct ValidatorStatus(u8);
1097    const _: () = {
1098        use alloy::sol_types as alloy_sol_types;
1099        #[automatically_derived]
1100        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1101            #[inline]
1102            fn stv_to_tokens(
1103                &self,
1104            ) -> <alloy::sol_types::sol_data::Uint<
1105                8,
1106            > as alloy_sol_types::SolType>::Token<'_> {
1107                alloy_sol_types::private::SolTypeValue::<
1108                    alloy::sol_types::sol_data::Uint<8>,
1109                >::stv_to_tokens(self)
1110            }
1111            #[inline]
1112            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1113                <alloy::sol_types::sol_data::Uint<
1114                    8,
1115                > as alloy_sol_types::SolType>::tokenize(self)
1116                    .0
1117            }
1118            #[inline]
1119            fn stv_abi_encode_packed_to(
1120                &self,
1121                out: &mut alloy_sol_types::private::Vec<u8>,
1122            ) {
1123                <alloy::sol_types::sol_data::Uint<
1124                    8,
1125                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1126            }
1127            #[inline]
1128            fn stv_abi_packed_encoded_size(&self) -> usize {
1129                <alloy::sol_types::sol_data::Uint<
1130                    8,
1131                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1132            }
1133        }
1134        #[automatically_derived]
1135        impl ValidatorStatus {
1136            /// The Solidity type name.
1137            pub const NAME: &'static str = stringify!(@ name);
1138            /// Convert from the underlying value type.
1139            #[inline]
1140            pub const fn from(value: u8) -> Self {
1141                Self(value)
1142            }
1143            /// Return the underlying value.
1144            #[inline]
1145            pub const fn into(self) -> u8 {
1146                self.0
1147            }
1148            /// Return the single encoding of this value, delegating to the
1149            /// underlying type.
1150            #[inline]
1151            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1152                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1153            }
1154            /// Return the packed encoding of this value, delegating to the
1155            /// underlying type.
1156            #[inline]
1157            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1158                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1159            }
1160        }
1161        #[automatically_derived]
1162        impl alloy_sol_types::SolType for ValidatorStatus {
1163            type RustType = u8;
1164            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1165                8,
1166            > as alloy_sol_types::SolType>::Token<'a>;
1167            const SOL_NAME: &'static str = Self::NAME;
1168            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1169                8,
1170            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1171            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1172                8,
1173            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1174            #[inline]
1175            fn valid_token(token: &Self::Token<'_>) -> bool {
1176                Self::type_check(token).is_ok()
1177            }
1178            #[inline]
1179            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1180                <alloy::sol_types::sol_data::Uint<
1181                    8,
1182                > as alloy_sol_types::SolType>::type_check(token)
1183            }
1184            #[inline]
1185            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1186                <alloy::sol_types::sol_data::Uint<
1187                    8,
1188                > as alloy_sol_types::SolType>::detokenize(token)
1189            }
1190        }
1191        #[automatically_derived]
1192        impl alloy_sol_types::EventTopic for ValidatorStatus {
1193            #[inline]
1194            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1198            }
1199            #[inline]
1200            fn encode_topic_preimage(
1201                rust: &Self::RustType,
1202                out: &mut alloy_sol_types::private::Vec<u8>,
1203            ) {
1204                <alloy::sol_types::sol_data::Uint<
1205                    8,
1206                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1207            }
1208            #[inline]
1209            fn encode_topic(
1210                rust: &Self::RustType,
1211            ) -> alloy_sol_types::abi::token::WordToken {
1212                <alloy::sol_types::sol_data::Uint<
1213                    8,
1214                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1215            }
1216        }
1217    };
1218    use alloy::contract as alloy_contract;
1219    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1220
1221See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1222    #[inline]
1223    pub const fn new<
1224        T: alloy_contract::private::Transport + ::core::clone::Clone,
1225        P: alloy_contract::private::Provider<T, N>,
1226        N: alloy_contract::private::Network,
1227    >(
1228        address: alloy_sol_types::private::Address,
1229        provider: P,
1230    ) -> StakeTableInstance<T, P, N> {
1231        StakeTableInstance::<T, P, N>::new(address, provider)
1232    }
1233    /**A [`StakeTable`](self) instance.
1234
1235Contains type-safe methods for interacting with an on-chain instance of the
1236[`StakeTable`](self) contract located at a given `address`, using a given
1237provider `P`.
1238
1239If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1240documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1241be used to deploy a new instance of the contract.
1242
1243See the [module-level documentation](self) for all the available methods.*/
1244    #[derive(Clone)]
1245    pub struct StakeTableInstance<T, P, N = alloy_contract::private::Ethereum> {
1246        address: alloy_sol_types::private::Address,
1247        provider: P,
1248        _network_transport: ::core::marker::PhantomData<(N, T)>,
1249    }
1250    #[automatically_derived]
1251    impl<T, P, N> ::core::fmt::Debug for StakeTableInstance<T, P, N> {
1252        #[inline]
1253        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1254            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1255        }
1256    }
1257    /// Instantiation and getters/setters.
1258    #[automatically_derived]
1259    impl<
1260        T: alloy_contract::private::Transport + ::core::clone::Clone,
1261        P: alloy_contract::private::Provider<T, N>,
1262        N: alloy_contract::private::Network,
1263    > StakeTableInstance<T, P, N> {
1264        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1265
1266See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1267        #[inline]
1268        pub const fn new(
1269            address: alloy_sol_types::private::Address,
1270            provider: P,
1271        ) -> Self {
1272            Self {
1273                address,
1274                provider,
1275                _network_transport: ::core::marker::PhantomData,
1276            }
1277        }
1278        /// Returns a reference to the address.
1279        #[inline]
1280        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1281            &self.address
1282        }
1283        /// Sets the address.
1284        #[inline]
1285        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1286            self.address = address;
1287        }
1288        /// Sets the address and returns `self`.
1289        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1290            self.set_address(address);
1291            self
1292        }
1293        /// Returns a reference to the provider.
1294        #[inline]
1295        pub const fn provider(&self) -> &P {
1296            &self.provider
1297        }
1298    }
1299    impl<T, P: ::core::clone::Clone, N> StakeTableInstance<T, &P, N> {
1300        /// Clones the provider and returns a new instance with the cloned provider.
1301        #[inline]
1302        pub fn with_cloned_provider(self) -> StakeTableInstance<T, P, N> {
1303            StakeTableInstance {
1304                address: self.address,
1305                provider: ::core::clone::Clone::clone(&self.provider),
1306                _network_transport: ::core::marker::PhantomData,
1307            }
1308        }
1309    }
1310    /// Function calls.
1311    #[automatically_derived]
1312    impl<
1313        T: alloy_contract::private::Transport + ::core::clone::Clone,
1314        P: alloy_contract::private::Provider<T, N>,
1315        N: alloy_contract::private::Network,
1316    > StakeTableInstance<T, P, N> {
1317        /// Creates a new call builder using this contract instance's provider and address.
1318        ///
1319        /// Note that the call can be any function call, not just those defined in this
1320        /// contract. Prefer using the other methods for building type-safe contract calls.
1321        pub fn call_builder<C: alloy_sol_types::SolCall>(
1322            &self,
1323            call: &C,
1324        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1325            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1326        }
1327    }
1328    /// Event filters.
1329    #[automatically_derived]
1330    impl<
1331        T: alloy_contract::private::Transport + ::core::clone::Clone,
1332        P: alloy_contract::private::Provider<T, N>,
1333        N: alloy_contract::private::Network,
1334    > StakeTableInstance<T, P, N> {
1335        /// Creates a new event filter using this contract instance's provider and address.
1336        ///
1337        /// Note that the type can be any event, not just those defined in this contract.
1338        /// Prefer using the other methods for building type-safe event filters.
1339        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1340            &self,
1341        ) -> alloy_contract::Event<T, &P, E, N> {
1342            alloy_contract::Event::new_sol(&self.provider, &self.address)
1343        }
1344    }
1345}
1346/**
1347
1348Generated by the following Solidity interface...
1349```solidity
1350library BN254 {
1351    type BaseField is uint256;
1352    struct G1Point {
1353        BaseField x;
1354        BaseField y;
1355    }
1356    struct G2Point {
1357        BaseField x0;
1358        BaseField x1;
1359        BaseField y0;
1360        BaseField y1;
1361    }
1362}
1363
1364library EdOnBN254 {
1365    struct EdOnBN254Point {
1366        uint256 x;
1367        uint256 y;
1368    }
1369}
1370
1371library StakeTable {
1372    type ValidatorStatus is uint8;
1373}
1374
1375interface StakeTableV2 {
1376    error AccessControlBadConfirmation();
1377    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1378    error AddressEmptyCode(address target);
1379    error BLSSigVerificationFailed();
1380    error BlsKeyAlreadyUsed();
1381    error DeprecatedFunction();
1382    error ERC1967InvalidImplementation(address implementation);
1383    error ERC1967NonPayable();
1384    error EnforcedPause();
1385    error ExitEscrowPeriodInvalid();
1386    error ExpectedPause();
1387    error FailedInnerCall();
1388    error InsufficientAllowance(uint256, uint256);
1389    error InsufficientBalance(uint256);
1390    error InvalidCommission();
1391    error InvalidInitialization();
1392    error InvalidSchnorrSig();
1393    error InvalidSchnorrVK();
1394    error NotInitializing();
1395    error NothingToWithdraw();
1396    error OwnableInvalidOwner(address owner);
1397    error OwnableUnauthorizedAccount(address account);
1398    error PrematureWithdrawal();
1399    error UUPSUnauthorizedCallContext();
1400    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1401    error UndelegationAlreadyExists();
1402    error ValidatorAlreadyExited();
1403    error ValidatorAlreadyRegistered();
1404    error ValidatorInactive();
1405    error ValidatorNotExited();
1406    error ZeroAddress();
1407    error ZeroAmount();
1408
1409    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1410    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1411    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1412    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1413    event Initialized(uint64 version);
1414    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1415    event Paused(address account);
1416    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1417    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1418    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1419    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1420    event Unpaused(address account);
1421    event Upgrade(address implementation);
1422    event Upgraded(address indexed implementation);
1423    event ValidatorExit(address indexed validator);
1424    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1425    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
1426    event Withdrawal(address indexed account, uint256 amount);
1427
1428    constructor();
1429
1430    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1431    function PAUSER_ROLE() external view returns (bytes32);
1432    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1433    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1434    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1435    function claimValidatorExit(address validator) external;
1436    function claimWithdrawal(address validator) external;
1437    function delegate(address validator, uint256 amount) external;
1438    function delegations(address validator, address delegator) external view returns (uint256 amount);
1439    function deregisterValidator() external;
1440    function exitEscrowPeriod() external view returns (uint256);
1441    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1442    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1443    function grantRole(bytes32 role, address account) external;
1444    function hasRole(bytes32 role, address account) external view returns (bool);
1445    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1446    function initializeV2(address pauser, address admin) external;
1447    function initializedAtBlock() external view returns (uint256);
1448    function lightClient() external view returns (address);
1449    function owner() external view returns (address);
1450    function pause() external;
1451    function paused() external view returns (bool);
1452    function proxiableUUID() external view returns (bytes32);
1453    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1454    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
1455    function renounceOwnership() external;
1456    function renounceRole(bytes32 role, address callerConfirmation) external;
1457    function revokeRole(bytes32 role, address account) external;
1458    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1459    function token() external view returns (address);
1460    function transferOwnership(address newOwner) external;
1461    function undelegate(address validator, uint256 amount) external;
1462    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1463    function unpause() external;
1464    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1465    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1466    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1467    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1468    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1469    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1470}
1471```
1472
1473...which was generated by the following JSON ABI:
1474```json
1475[
1476  {
1477    "type": "constructor",
1478    "inputs": [],
1479    "stateMutability": "nonpayable"
1480  },
1481  {
1482    "type": "function",
1483    "name": "DEFAULT_ADMIN_ROLE",
1484    "inputs": [],
1485    "outputs": [
1486      {
1487        "name": "",
1488        "type": "bytes32",
1489        "internalType": "bytes32"
1490      }
1491    ],
1492    "stateMutability": "view"
1493  },
1494  {
1495    "type": "function",
1496    "name": "PAUSER_ROLE",
1497    "inputs": [],
1498    "outputs": [
1499      {
1500        "name": "",
1501        "type": "bytes32",
1502        "internalType": "bytes32"
1503      }
1504    ],
1505    "stateMutability": "view"
1506  },
1507  {
1508    "type": "function",
1509    "name": "UPGRADE_INTERFACE_VERSION",
1510    "inputs": [],
1511    "outputs": [
1512      {
1513        "name": "",
1514        "type": "string",
1515        "internalType": "string"
1516      }
1517    ],
1518    "stateMutability": "view"
1519  },
1520  {
1521    "type": "function",
1522    "name": "_hashBlsKey",
1523    "inputs": [
1524      {
1525        "name": "blsVK",
1526        "type": "tuple",
1527        "internalType": "struct BN254.G2Point",
1528        "components": [
1529          {
1530            "name": "x0",
1531            "type": "uint256",
1532            "internalType": "BN254.BaseField"
1533          },
1534          {
1535            "name": "x1",
1536            "type": "uint256",
1537            "internalType": "BN254.BaseField"
1538          },
1539          {
1540            "name": "y0",
1541            "type": "uint256",
1542            "internalType": "BN254.BaseField"
1543          },
1544          {
1545            "name": "y1",
1546            "type": "uint256",
1547            "internalType": "BN254.BaseField"
1548          }
1549        ]
1550      }
1551    ],
1552    "outputs": [
1553      {
1554        "name": "",
1555        "type": "bytes32",
1556        "internalType": "bytes32"
1557      }
1558    ],
1559    "stateMutability": "pure"
1560  },
1561  {
1562    "type": "function",
1563    "name": "blsKeys",
1564    "inputs": [
1565      {
1566        "name": "blsKeyHash",
1567        "type": "bytes32",
1568        "internalType": "bytes32"
1569      }
1570    ],
1571    "outputs": [
1572      {
1573        "name": "used",
1574        "type": "bool",
1575        "internalType": "bool"
1576      }
1577    ],
1578    "stateMutability": "view"
1579  },
1580  {
1581    "type": "function",
1582    "name": "claimValidatorExit",
1583    "inputs": [
1584      {
1585        "name": "validator",
1586        "type": "address",
1587        "internalType": "address"
1588      }
1589    ],
1590    "outputs": [],
1591    "stateMutability": "nonpayable"
1592  },
1593  {
1594    "type": "function",
1595    "name": "claimWithdrawal",
1596    "inputs": [
1597      {
1598        "name": "validator",
1599        "type": "address",
1600        "internalType": "address"
1601      }
1602    ],
1603    "outputs": [],
1604    "stateMutability": "nonpayable"
1605  },
1606  {
1607    "type": "function",
1608    "name": "delegate",
1609    "inputs": [
1610      {
1611        "name": "validator",
1612        "type": "address",
1613        "internalType": "address"
1614      },
1615      {
1616        "name": "amount",
1617        "type": "uint256",
1618        "internalType": "uint256"
1619      }
1620    ],
1621    "outputs": [],
1622    "stateMutability": "nonpayable"
1623  },
1624  {
1625    "type": "function",
1626    "name": "delegations",
1627    "inputs": [
1628      {
1629        "name": "validator",
1630        "type": "address",
1631        "internalType": "address"
1632      },
1633      {
1634        "name": "delegator",
1635        "type": "address",
1636        "internalType": "address"
1637      }
1638    ],
1639    "outputs": [
1640      {
1641        "name": "amount",
1642        "type": "uint256",
1643        "internalType": "uint256"
1644      }
1645    ],
1646    "stateMutability": "view"
1647  },
1648  {
1649    "type": "function",
1650    "name": "deregisterValidator",
1651    "inputs": [],
1652    "outputs": [],
1653    "stateMutability": "nonpayable"
1654  },
1655  {
1656    "type": "function",
1657    "name": "exitEscrowPeriod",
1658    "inputs": [],
1659    "outputs": [
1660      {
1661        "name": "",
1662        "type": "uint256",
1663        "internalType": "uint256"
1664      }
1665    ],
1666    "stateMutability": "view"
1667  },
1668  {
1669    "type": "function",
1670    "name": "getRoleAdmin",
1671    "inputs": [
1672      {
1673        "name": "role",
1674        "type": "bytes32",
1675        "internalType": "bytes32"
1676      }
1677    ],
1678    "outputs": [
1679      {
1680        "name": "",
1681        "type": "bytes32",
1682        "internalType": "bytes32"
1683      }
1684    ],
1685    "stateMutability": "view"
1686  },
1687  {
1688    "type": "function",
1689    "name": "getVersion",
1690    "inputs": [],
1691    "outputs": [
1692      {
1693        "name": "majorVersion",
1694        "type": "uint8",
1695        "internalType": "uint8"
1696      },
1697      {
1698        "name": "minorVersion",
1699        "type": "uint8",
1700        "internalType": "uint8"
1701      },
1702      {
1703        "name": "patchVersion",
1704        "type": "uint8",
1705        "internalType": "uint8"
1706      }
1707    ],
1708    "stateMutability": "pure"
1709  },
1710  {
1711    "type": "function",
1712    "name": "grantRole",
1713    "inputs": [
1714      {
1715        "name": "role",
1716        "type": "bytes32",
1717        "internalType": "bytes32"
1718      },
1719      {
1720        "name": "account",
1721        "type": "address",
1722        "internalType": "address"
1723      }
1724    ],
1725    "outputs": [],
1726    "stateMutability": "nonpayable"
1727  },
1728  {
1729    "type": "function",
1730    "name": "hasRole",
1731    "inputs": [
1732      {
1733        "name": "role",
1734        "type": "bytes32",
1735        "internalType": "bytes32"
1736      },
1737      {
1738        "name": "account",
1739        "type": "address",
1740        "internalType": "address"
1741      }
1742    ],
1743    "outputs": [
1744      {
1745        "name": "",
1746        "type": "bool",
1747        "internalType": "bool"
1748      }
1749    ],
1750    "stateMutability": "view"
1751  },
1752  {
1753    "type": "function",
1754    "name": "initialize",
1755    "inputs": [
1756      {
1757        "name": "_tokenAddress",
1758        "type": "address",
1759        "internalType": "address"
1760      },
1761      {
1762        "name": "_lightClientAddress",
1763        "type": "address",
1764        "internalType": "address"
1765      },
1766      {
1767        "name": "_exitEscrowPeriod",
1768        "type": "uint256",
1769        "internalType": "uint256"
1770      },
1771      {
1772        "name": "_timelock",
1773        "type": "address",
1774        "internalType": "address"
1775      }
1776    ],
1777    "outputs": [],
1778    "stateMutability": "nonpayable"
1779  },
1780  {
1781    "type": "function",
1782    "name": "initializeV2",
1783    "inputs": [
1784      {
1785        "name": "pauser",
1786        "type": "address",
1787        "internalType": "address"
1788      },
1789      {
1790        "name": "admin",
1791        "type": "address",
1792        "internalType": "address"
1793      }
1794    ],
1795    "outputs": [],
1796    "stateMutability": "nonpayable"
1797  },
1798  {
1799    "type": "function",
1800    "name": "initializedAtBlock",
1801    "inputs": [],
1802    "outputs": [
1803      {
1804        "name": "",
1805        "type": "uint256",
1806        "internalType": "uint256"
1807      }
1808    ],
1809    "stateMutability": "view"
1810  },
1811  {
1812    "type": "function",
1813    "name": "lightClient",
1814    "inputs": [],
1815    "outputs": [
1816      {
1817        "name": "",
1818        "type": "address",
1819        "internalType": "contract ILightClient"
1820      }
1821    ],
1822    "stateMutability": "view"
1823  },
1824  {
1825    "type": "function",
1826    "name": "owner",
1827    "inputs": [],
1828    "outputs": [
1829      {
1830        "name": "",
1831        "type": "address",
1832        "internalType": "address"
1833      }
1834    ],
1835    "stateMutability": "view"
1836  },
1837  {
1838    "type": "function",
1839    "name": "pause",
1840    "inputs": [],
1841    "outputs": [],
1842    "stateMutability": "nonpayable"
1843  },
1844  {
1845    "type": "function",
1846    "name": "paused",
1847    "inputs": [],
1848    "outputs": [
1849      {
1850        "name": "",
1851        "type": "bool",
1852        "internalType": "bool"
1853      }
1854    ],
1855    "stateMutability": "view"
1856  },
1857  {
1858    "type": "function",
1859    "name": "proxiableUUID",
1860    "inputs": [],
1861    "outputs": [
1862      {
1863        "name": "",
1864        "type": "bytes32",
1865        "internalType": "bytes32"
1866      }
1867    ],
1868    "stateMutability": "view"
1869  },
1870  {
1871    "type": "function",
1872    "name": "registerValidator",
1873    "inputs": [
1874      {
1875        "name": "",
1876        "type": "tuple",
1877        "internalType": "struct BN254.G2Point",
1878        "components": [
1879          {
1880            "name": "x0",
1881            "type": "uint256",
1882            "internalType": "BN254.BaseField"
1883          },
1884          {
1885            "name": "x1",
1886            "type": "uint256",
1887            "internalType": "BN254.BaseField"
1888          },
1889          {
1890            "name": "y0",
1891            "type": "uint256",
1892            "internalType": "BN254.BaseField"
1893          },
1894          {
1895            "name": "y1",
1896            "type": "uint256",
1897            "internalType": "BN254.BaseField"
1898          }
1899        ]
1900      },
1901      {
1902        "name": "",
1903        "type": "tuple",
1904        "internalType": "struct EdOnBN254.EdOnBN254Point",
1905        "components": [
1906          {
1907            "name": "x",
1908            "type": "uint256",
1909            "internalType": "uint256"
1910          },
1911          {
1912            "name": "y",
1913            "type": "uint256",
1914            "internalType": "uint256"
1915          }
1916        ]
1917      },
1918      {
1919        "name": "",
1920        "type": "tuple",
1921        "internalType": "struct BN254.G1Point",
1922        "components": [
1923          {
1924            "name": "x",
1925            "type": "uint256",
1926            "internalType": "BN254.BaseField"
1927          },
1928          {
1929            "name": "y",
1930            "type": "uint256",
1931            "internalType": "BN254.BaseField"
1932          }
1933        ]
1934      },
1935      {
1936        "name": "",
1937        "type": "uint16",
1938        "internalType": "uint16"
1939      }
1940    ],
1941    "outputs": [],
1942    "stateMutability": "pure"
1943  },
1944  {
1945    "type": "function",
1946    "name": "registerValidatorV2",
1947    "inputs": [
1948      {
1949        "name": "blsVK",
1950        "type": "tuple",
1951        "internalType": "struct BN254.G2Point",
1952        "components": [
1953          {
1954            "name": "x0",
1955            "type": "uint256",
1956            "internalType": "BN254.BaseField"
1957          },
1958          {
1959            "name": "x1",
1960            "type": "uint256",
1961            "internalType": "BN254.BaseField"
1962          },
1963          {
1964            "name": "y0",
1965            "type": "uint256",
1966            "internalType": "BN254.BaseField"
1967          },
1968          {
1969            "name": "y1",
1970            "type": "uint256",
1971            "internalType": "BN254.BaseField"
1972          }
1973        ]
1974      },
1975      {
1976        "name": "schnorrVK",
1977        "type": "tuple",
1978        "internalType": "struct EdOnBN254.EdOnBN254Point",
1979        "components": [
1980          {
1981            "name": "x",
1982            "type": "uint256",
1983            "internalType": "uint256"
1984          },
1985          {
1986            "name": "y",
1987            "type": "uint256",
1988            "internalType": "uint256"
1989          }
1990        ]
1991      },
1992      {
1993        "name": "blsSig",
1994        "type": "tuple",
1995        "internalType": "struct BN254.G1Point",
1996        "components": [
1997          {
1998            "name": "x",
1999            "type": "uint256",
2000            "internalType": "BN254.BaseField"
2001          },
2002          {
2003            "name": "y",
2004            "type": "uint256",
2005            "internalType": "BN254.BaseField"
2006          }
2007        ]
2008      },
2009      {
2010        "name": "schnorrSig",
2011        "type": "bytes",
2012        "internalType": "bytes"
2013      },
2014      {
2015        "name": "commission",
2016        "type": "uint16",
2017        "internalType": "uint16"
2018      }
2019    ],
2020    "outputs": [],
2021    "stateMutability": "nonpayable"
2022  },
2023  {
2024    "type": "function",
2025    "name": "renounceOwnership",
2026    "inputs": [],
2027    "outputs": [],
2028    "stateMutability": "nonpayable"
2029  },
2030  {
2031    "type": "function",
2032    "name": "renounceRole",
2033    "inputs": [
2034      {
2035        "name": "role",
2036        "type": "bytes32",
2037        "internalType": "bytes32"
2038      },
2039      {
2040        "name": "callerConfirmation",
2041        "type": "address",
2042        "internalType": "address"
2043      }
2044    ],
2045    "outputs": [],
2046    "stateMutability": "nonpayable"
2047  },
2048  {
2049    "type": "function",
2050    "name": "revokeRole",
2051    "inputs": [
2052      {
2053        "name": "role",
2054        "type": "bytes32",
2055        "internalType": "bytes32"
2056      },
2057      {
2058        "name": "account",
2059        "type": "address",
2060        "internalType": "address"
2061      }
2062    ],
2063    "outputs": [],
2064    "stateMutability": "nonpayable"
2065  },
2066  {
2067    "type": "function",
2068    "name": "supportsInterface",
2069    "inputs": [
2070      {
2071        "name": "interfaceId",
2072        "type": "bytes4",
2073        "internalType": "bytes4"
2074      }
2075    ],
2076    "outputs": [
2077      {
2078        "name": "",
2079        "type": "bool",
2080        "internalType": "bool"
2081      }
2082    ],
2083    "stateMutability": "view"
2084  },
2085  {
2086    "type": "function",
2087    "name": "token",
2088    "inputs": [],
2089    "outputs": [
2090      {
2091        "name": "",
2092        "type": "address",
2093        "internalType": "contract ERC20"
2094      }
2095    ],
2096    "stateMutability": "view"
2097  },
2098  {
2099    "type": "function",
2100    "name": "transferOwnership",
2101    "inputs": [
2102      {
2103        "name": "newOwner",
2104        "type": "address",
2105        "internalType": "address"
2106      }
2107    ],
2108    "outputs": [],
2109    "stateMutability": "nonpayable"
2110  },
2111  {
2112    "type": "function",
2113    "name": "undelegate",
2114    "inputs": [
2115      {
2116        "name": "validator",
2117        "type": "address",
2118        "internalType": "address"
2119      },
2120      {
2121        "name": "amount",
2122        "type": "uint256",
2123        "internalType": "uint256"
2124      }
2125    ],
2126    "outputs": [],
2127    "stateMutability": "nonpayable"
2128  },
2129  {
2130    "type": "function",
2131    "name": "undelegations",
2132    "inputs": [
2133      {
2134        "name": "validator",
2135        "type": "address",
2136        "internalType": "address"
2137      },
2138      {
2139        "name": "delegator",
2140        "type": "address",
2141        "internalType": "address"
2142      }
2143    ],
2144    "outputs": [
2145      {
2146        "name": "amount",
2147        "type": "uint256",
2148        "internalType": "uint256"
2149      },
2150      {
2151        "name": "unlocksAt",
2152        "type": "uint256",
2153        "internalType": "uint256"
2154      }
2155    ],
2156    "stateMutability": "view"
2157  },
2158  {
2159    "type": "function",
2160    "name": "unpause",
2161    "inputs": [],
2162    "outputs": [],
2163    "stateMutability": "nonpayable"
2164  },
2165  {
2166    "type": "function",
2167    "name": "updateConsensusKeys",
2168    "inputs": [
2169      {
2170        "name": "",
2171        "type": "tuple",
2172        "internalType": "struct BN254.G2Point",
2173        "components": [
2174          {
2175            "name": "x0",
2176            "type": "uint256",
2177            "internalType": "BN254.BaseField"
2178          },
2179          {
2180            "name": "x1",
2181            "type": "uint256",
2182            "internalType": "BN254.BaseField"
2183          },
2184          {
2185            "name": "y0",
2186            "type": "uint256",
2187            "internalType": "BN254.BaseField"
2188          },
2189          {
2190            "name": "y1",
2191            "type": "uint256",
2192            "internalType": "BN254.BaseField"
2193          }
2194        ]
2195      },
2196      {
2197        "name": "",
2198        "type": "tuple",
2199        "internalType": "struct EdOnBN254.EdOnBN254Point",
2200        "components": [
2201          {
2202            "name": "x",
2203            "type": "uint256",
2204            "internalType": "uint256"
2205          },
2206          {
2207            "name": "y",
2208            "type": "uint256",
2209            "internalType": "uint256"
2210          }
2211        ]
2212      },
2213      {
2214        "name": "",
2215        "type": "tuple",
2216        "internalType": "struct BN254.G1Point",
2217        "components": [
2218          {
2219            "name": "x",
2220            "type": "uint256",
2221            "internalType": "BN254.BaseField"
2222          },
2223          {
2224            "name": "y",
2225            "type": "uint256",
2226            "internalType": "BN254.BaseField"
2227          }
2228        ]
2229      }
2230    ],
2231    "outputs": [],
2232    "stateMutability": "pure"
2233  },
2234  {
2235    "type": "function",
2236    "name": "updateConsensusKeysV2",
2237    "inputs": [
2238      {
2239        "name": "blsVK",
2240        "type": "tuple",
2241        "internalType": "struct BN254.G2Point",
2242        "components": [
2243          {
2244            "name": "x0",
2245            "type": "uint256",
2246            "internalType": "BN254.BaseField"
2247          },
2248          {
2249            "name": "x1",
2250            "type": "uint256",
2251            "internalType": "BN254.BaseField"
2252          },
2253          {
2254            "name": "y0",
2255            "type": "uint256",
2256            "internalType": "BN254.BaseField"
2257          },
2258          {
2259            "name": "y1",
2260            "type": "uint256",
2261            "internalType": "BN254.BaseField"
2262          }
2263        ]
2264      },
2265      {
2266        "name": "schnorrVK",
2267        "type": "tuple",
2268        "internalType": "struct EdOnBN254.EdOnBN254Point",
2269        "components": [
2270          {
2271            "name": "x",
2272            "type": "uint256",
2273            "internalType": "uint256"
2274          },
2275          {
2276            "name": "y",
2277            "type": "uint256",
2278            "internalType": "uint256"
2279          }
2280        ]
2281      },
2282      {
2283        "name": "blsSig",
2284        "type": "tuple",
2285        "internalType": "struct BN254.G1Point",
2286        "components": [
2287          {
2288            "name": "x",
2289            "type": "uint256",
2290            "internalType": "BN254.BaseField"
2291          },
2292          {
2293            "name": "y",
2294            "type": "uint256",
2295            "internalType": "BN254.BaseField"
2296          }
2297        ]
2298      },
2299      {
2300        "name": "schnorrSig",
2301        "type": "bytes",
2302        "internalType": "bytes"
2303      }
2304    ],
2305    "outputs": [],
2306    "stateMutability": "nonpayable"
2307  },
2308  {
2309    "type": "function",
2310    "name": "updateExitEscrowPeriod",
2311    "inputs": [
2312      {
2313        "name": "newExitEscrowPeriod",
2314        "type": "uint64",
2315        "internalType": "uint64"
2316      }
2317    ],
2318    "outputs": [],
2319    "stateMutability": "nonpayable"
2320  },
2321  {
2322    "type": "function",
2323    "name": "upgradeToAndCall",
2324    "inputs": [
2325      {
2326        "name": "newImplementation",
2327        "type": "address",
2328        "internalType": "address"
2329      },
2330      {
2331        "name": "data",
2332        "type": "bytes",
2333        "internalType": "bytes"
2334      }
2335    ],
2336    "outputs": [],
2337    "stateMutability": "payable"
2338  },
2339  {
2340    "type": "function",
2341    "name": "validatorExits",
2342    "inputs": [
2343      {
2344        "name": "validator",
2345        "type": "address",
2346        "internalType": "address"
2347      }
2348    ],
2349    "outputs": [
2350      {
2351        "name": "unlocksAt",
2352        "type": "uint256",
2353        "internalType": "uint256"
2354      }
2355    ],
2356    "stateMutability": "view"
2357  },
2358  {
2359    "type": "function",
2360    "name": "validators",
2361    "inputs": [
2362      {
2363        "name": "account",
2364        "type": "address",
2365        "internalType": "address"
2366      }
2367    ],
2368    "outputs": [
2369      {
2370        "name": "delegatedAmount",
2371        "type": "uint256",
2372        "internalType": "uint256"
2373      },
2374      {
2375        "name": "status",
2376        "type": "uint8",
2377        "internalType": "enum StakeTable.ValidatorStatus"
2378      }
2379    ],
2380    "stateMutability": "view"
2381  },
2382  {
2383    "type": "event",
2384    "name": "ConsensusKeysUpdated",
2385    "inputs": [
2386      {
2387        "name": "account",
2388        "type": "address",
2389        "indexed": true,
2390        "internalType": "address"
2391      },
2392      {
2393        "name": "blsVK",
2394        "type": "tuple",
2395        "indexed": false,
2396        "internalType": "struct BN254.G2Point",
2397        "components": [
2398          {
2399            "name": "x0",
2400            "type": "uint256",
2401            "internalType": "BN254.BaseField"
2402          },
2403          {
2404            "name": "x1",
2405            "type": "uint256",
2406            "internalType": "BN254.BaseField"
2407          },
2408          {
2409            "name": "y0",
2410            "type": "uint256",
2411            "internalType": "BN254.BaseField"
2412          },
2413          {
2414            "name": "y1",
2415            "type": "uint256",
2416            "internalType": "BN254.BaseField"
2417          }
2418        ]
2419      },
2420      {
2421        "name": "schnorrVK",
2422        "type": "tuple",
2423        "indexed": false,
2424        "internalType": "struct EdOnBN254.EdOnBN254Point",
2425        "components": [
2426          {
2427            "name": "x",
2428            "type": "uint256",
2429            "internalType": "uint256"
2430          },
2431          {
2432            "name": "y",
2433            "type": "uint256",
2434            "internalType": "uint256"
2435          }
2436        ]
2437      }
2438    ],
2439    "anonymous": false
2440  },
2441  {
2442    "type": "event",
2443    "name": "ConsensusKeysUpdatedV2",
2444    "inputs": [
2445      {
2446        "name": "account",
2447        "type": "address",
2448        "indexed": true,
2449        "internalType": "address"
2450      },
2451      {
2452        "name": "blsVK",
2453        "type": "tuple",
2454        "indexed": false,
2455        "internalType": "struct BN254.G2Point",
2456        "components": [
2457          {
2458            "name": "x0",
2459            "type": "uint256",
2460            "internalType": "BN254.BaseField"
2461          },
2462          {
2463            "name": "x1",
2464            "type": "uint256",
2465            "internalType": "BN254.BaseField"
2466          },
2467          {
2468            "name": "y0",
2469            "type": "uint256",
2470            "internalType": "BN254.BaseField"
2471          },
2472          {
2473            "name": "y1",
2474            "type": "uint256",
2475            "internalType": "BN254.BaseField"
2476          }
2477        ]
2478      },
2479      {
2480        "name": "schnorrVK",
2481        "type": "tuple",
2482        "indexed": false,
2483        "internalType": "struct EdOnBN254.EdOnBN254Point",
2484        "components": [
2485          {
2486            "name": "x",
2487            "type": "uint256",
2488            "internalType": "uint256"
2489          },
2490          {
2491            "name": "y",
2492            "type": "uint256",
2493            "internalType": "uint256"
2494          }
2495        ]
2496      },
2497      {
2498        "name": "blsSig",
2499        "type": "tuple",
2500        "indexed": false,
2501        "internalType": "struct BN254.G1Point",
2502        "components": [
2503          {
2504            "name": "x",
2505            "type": "uint256",
2506            "internalType": "BN254.BaseField"
2507          },
2508          {
2509            "name": "y",
2510            "type": "uint256",
2511            "internalType": "BN254.BaseField"
2512          }
2513        ]
2514      },
2515      {
2516        "name": "schnorrSig",
2517        "type": "bytes",
2518        "indexed": false,
2519        "internalType": "bytes"
2520      }
2521    ],
2522    "anonymous": false
2523  },
2524  {
2525    "type": "event",
2526    "name": "Delegated",
2527    "inputs": [
2528      {
2529        "name": "delegator",
2530        "type": "address",
2531        "indexed": true,
2532        "internalType": "address"
2533      },
2534      {
2535        "name": "validator",
2536        "type": "address",
2537        "indexed": true,
2538        "internalType": "address"
2539      },
2540      {
2541        "name": "amount",
2542        "type": "uint256",
2543        "indexed": false,
2544        "internalType": "uint256"
2545      }
2546    ],
2547    "anonymous": false
2548  },
2549  {
2550    "type": "event",
2551    "name": "ExitEscrowPeriodUpdated",
2552    "inputs": [
2553      {
2554        "name": "newExitEscrowPeriod",
2555        "type": "uint64",
2556        "indexed": false,
2557        "internalType": "uint64"
2558      }
2559    ],
2560    "anonymous": false
2561  },
2562  {
2563    "type": "event",
2564    "name": "Initialized",
2565    "inputs": [
2566      {
2567        "name": "version",
2568        "type": "uint64",
2569        "indexed": false,
2570        "internalType": "uint64"
2571      }
2572    ],
2573    "anonymous": false
2574  },
2575  {
2576    "type": "event",
2577    "name": "OwnershipTransferred",
2578    "inputs": [
2579      {
2580        "name": "previousOwner",
2581        "type": "address",
2582        "indexed": true,
2583        "internalType": "address"
2584      },
2585      {
2586        "name": "newOwner",
2587        "type": "address",
2588        "indexed": true,
2589        "internalType": "address"
2590      }
2591    ],
2592    "anonymous": false
2593  },
2594  {
2595    "type": "event",
2596    "name": "Paused",
2597    "inputs": [
2598      {
2599        "name": "account",
2600        "type": "address",
2601        "indexed": false,
2602        "internalType": "address"
2603      }
2604    ],
2605    "anonymous": false
2606  },
2607  {
2608    "type": "event",
2609    "name": "RoleAdminChanged",
2610    "inputs": [
2611      {
2612        "name": "role",
2613        "type": "bytes32",
2614        "indexed": true,
2615        "internalType": "bytes32"
2616      },
2617      {
2618        "name": "previousAdminRole",
2619        "type": "bytes32",
2620        "indexed": true,
2621        "internalType": "bytes32"
2622      },
2623      {
2624        "name": "newAdminRole",
2625        "type": "bytes32",
2626        "indexed": true,
2627        "internalType": "bytes32"
2628      }
2629    ],
2630    "anonymous": false
2631  },
2632  {
2633    "type": "event",
2634    "name": "RoleGranted",
2635    "inputs": [
2636      {
2637        "name": "role",
2638        "type": "bytes32",
2639        "indexed": true,
2640        "internalType": "bytes32"
2641      },
2642      {
2643        "name": "account",
2644        "type": "address",
2645        "indexed": true,
2646        "internalType": "address"
2647      },
2648      {
2649        "name": "sender",
2650        "type": "address",
2651        "indexed": true,
2652        "internalType": "address"
2653      }
2654    ],
2655    "anonymous": false
2656  },
2657  {
2658    "type": "event",
2659    "name": "RoleRevoked",
2660    "inputs": [
2661      {
2662        "name": "role",
2663        "type": "bytes32",
2664        "indexed": true,
2665        "internalType": "bytes32"
2666      },
2667      {
2668        "name": "account",
2669        "type": "address",
2670        "indexed": true,
2671        "internalType": "address"
2672      },
2673      {
2674        "name": "sender",
2675        "type": "address",
2676        "indexed": true,
2677        "internalType": "address"
2678      }
2679    ],
2680    "anonymous": false
2681  },
2682  {
2683    "type": "event",
2684    "name": "Undelegated",
2685    "inputs": [
2686      {
2687        "name": "delegator",
2688        "type": "address",
2689        "indexed": true,
2690        "internalType": "address"
2691      },
2692      {
2693        "name": "validator",
2694        "type": "address",
2695        "indexed": true,
2696        "internalType": "address"
2697      },
2698      {
2699        "name": "amount",
2700        "type": "uint256",
2701        "indexed": false,
2702        "internalType": "uint256"
2703      }
2704    ],
2705    "anonymous": false
2706  },
2707  {
2708    "type": "event",
2709    "name": "Unpaused",
2710    "inputs": [
2711      {
2712        "name": "account",
2713        "type": "address",
2714        "indexed": false,
2715        "internalType": "address"
2716      }
2717    ],
2718    "anonymous": false
2719  },
2720  {
2721    "type": "event",
2722    "name": "Upgrade",
2723    "inputs": [
2724      {
2725        "name": "implementation",
2726        "type": "address",
2727        "indexed": false,
2728        "internalType": "address"
2729      }
2730    ],
2731    "anonymous": false
2732  },
2733  {
2734    "type": "event",
2735    "name": "Upgraded",
2736    "inputs": [
2737      {
2738        "name": "implementation",
2739        "type": "address",
2740        "indexed": true,
2741        "internalType": "address"
2742      }
2743    ],
2744    "anonymous": false
2745  },
2746  {
2747    "type": "event",
2748    "name": "ValidatorExit",
2749    "inputs": [
2750      {
2751        "name": "validator",
2752        "type": "address",
2753        "indexed": true,
2754        "internalType": "address"
2755      }
2756    ],
2757    "anonymous": false
2758  },
2759  {
2760    "type": "event",
2761    "name": "ValidatorRegistered",
2762    "inputs": [
2763      {
2764        "name": "account",
2765        "type": "address",
2766        "indexed": true,
2767        "internalType": "address"
2768      },
2769      {
2770        "name": "blsVk",
2771        "type": "tuple",
2772        "indexed": false,
2773        "internalType": "struct BN254.G2Point",
2774        "components": [
2775          {
2776            "name": "x0",
2777            "type": "uint256",
2778            "internalType": "BN254.BaseField"
2779          },
2780          {
2781            "name": "x1",
2782            "type": "uint256",
2783            "internalType": "BN254.BaseField"
2784          },
2785          {
2786            "name": "y0",
2787            "type": "uint256",
2788            "internalType": "BN254.BaseField"
2789          },
2790          {
2791            "name": "y1",
2792            "type": "uint256",
2793            "internalType": "BN254.BaseField"
2794          }
2795        ]
2796      },
2797      {
2798        "name": "schnorrVk",
2799        "type": "tuple",
2800        "indexed": false,
2801        "internalType": "struct EdOnBN254.EdOnBN254Point",
2802        "components": [
2803          {
2804            "name": "x",
2805            "type": "uint256",
2806            "internalType": "uint256"
2807          },
2808          {
2809            "name": "y",
2810            "type": "uint256",
2811            "internalType": "uint256"
2812          }
2813        ]
2814      },
2815      {
2816        "name": "commission",
2817        "type": "uint16",
2818        "indexed": false,
2819        "internalType": "uint16"
2820      }
2821    ],
2822    "anonymous": false
2823  },
2824  {
2825    "type": "event",
2826    "name": "ValidatorRegisteredV2",
2827    "inputs": [
2828      {
2829        "name": "account",
2830        "type": "address",
2831        "indexed": true,
2832        "internalType": "address"
2833      },
2834      {
2835        "name": "blsVK",
2836        "type": "tuple",
2837        "indexed": false,
2838        "internalType": "struct BN254.G2Point",
2839        "components": [
2840          {
2841            "name": "x0",
2842            "type": "uint256",
2843            "internalType": "BN254.BaseField"
2844          },
2845          {
2846            "name": "x1",
2847            "type": "uint256",
2848            "internalType": "BN254.BaseField"
2849          },
2850          {
2851            "name": "y0",
2852            "type": "uint256",
2853            "internalType": "BN254.BaseField"
2854          },
2855          {
2856            "name": "y1",
2857            "type": "uint256",
2858            "internalType": "BN254.BaseField"
2859          }
2860        ]
2861      },
2862      {
2863        "name": "schnorrVK",
2864        "type": "tuple",
2865        "indexed": false,
2866        "internalType": "struct EdOnBN254.EdOnBN254Point",
2867        "components": [
2868          {
2869            "name": "x",
2870            "type": "uint256",
2871            "internalType": "uint256"
2872          },
2873          {
2874            "name": "y",
2875            "type": "uint256",
2876            "internalType": "uint256"
2877          }
2878        ]
2879      },
2880      {
2881        "name": "commission",
2882        "type": "uint16",
2883        "indexed": false,
2884        "internalType": "uint16"
2885      },
2886      {
2887        "name": "blsSig",
2888        "type": "tuple",
2889        "indexed": false,
2890        "internalType": "struct BN254.G1Point",
2891        "components": [
2892          {
2893            "name": "x",
2894            "type": "uint256",
2895            "internalType": "BN254.BaseField"
2896          },
2897          {
2898            "name": "y",
2899            "type": "uint256",
2900            "internalType": "BN254.BaseField"
2901          }
2902        ]
2903      },
2904      {
2905        "name": "schnorrSig",
2906        "type": "bytes",
2907        "indexed": false,
2908        "internalType": "bytes"
2909      }
2910    ],
2911    "anonymous": false
2912  },
2913  {
2914    "type": "event",
2915    "name": "Withdrawal",
2916    "inputs": [
2917      {
2918        "name": "account",
2919        "type": "address",
2920        "indexed": true,
2921        "internalType": "address"
2922      },
2923      {
2924        "name": "amount",
2925        "type": "uint256",
2926        "indexed": false,
2927        "internalType": "uint256"
2928      }
2929    ],
2930    "anonymous": false
2931  },
2932  {
2933    "type": "error",
2934    "name": "AccessControlBadConfirmation",
2935    "inputs": []
2936  },
2937  {
2938    "type": "error",
2939    "name": "AccessControlUnauthorizedAccount",
2940    "inputs": [
2941      {
2942        "name": "account",
2943        "type": "address",
2944        "internalType": "address"
2945      },
2946      {
2947        "name": "neededRole",
2948        "type": "bytes32",
2949        "internalType": "bytes32"
2950      }
2951    ]
2952  },
2953  {
2954    "type": "error",
2955    "name": "AddressEmptyCode",
2956    "inputs": [
2957      {
2958        "name": "target",
2959        "type": "address",
2960        "internalType": "address"
2961      }
2962    ]
2963  },
2964  {
2965    "type": "error",
2966    "name": "BLSSigVerificationFailed",
2967    "inputs": []
2968  },
2969  {
2970    "type": "error",
2971    "name": "BlsKeyAlreadyUsed",
2972    "inputs": []
2973  },
2974  {
2975    "type": "error",
2976    "name": "DeprecatedFunction",
2977    "inputs": []
2978  },
2979  {
2980    "type": "error",
2981    "name": "ERC1967InvalidImplementation",
2982    "inputs": [
2983      {
2984        "name": "implementation",
2985        "type": "address",
2986        "internalType": "address"
2987      }
2988    ]
2989  },
2990  {
2991    "type": "error",
2992    "name": "ERC1967NonPayable",
2993    "inputs": []
2994  },
2995  {
2996    "type": "error",
2997    "name": "EnforcedPause",
2998    "inputs": []
2999  },
3000  {
3001    "type": "error",
3002    "name": "ExitEscrowPeriodInvalid",
3003    "inputs": []
3004  },
3005  {
3006    "type": "error",
3007    "name": "ExpectedPause",
3008    "inputs": []
3009  },
3010  {
3011    "type": "error",
3012    "name": "FailedInnerCall",
3013    "inputs": []
3014  },
3015  {
3016    "type": "error",
3017    "name": "InsufficientAllowance",
3018    "inputs": [
3019      {
3020        "name": "",
3021        "type": "uint256",
3022        "internalType": "uint256"
3023      },
3024      {
3025        "name": "",
3026        "type": "uint256",
3027        "internalType": "uint256"
3028      }
3029    ]
3030  },
3031  {
3032    "type": "error",
3033    "name": "InsufficientBalance",
3034    "inputs": [
3035      {
3036        "name": "",
3037        "type": "uint256",
3038        "internalType": "uint256"
3039      }
3040    ]
3041  },
3042  {
3043    "type": "error",
3044    "name": "InvalidCommission",
3045    "inputs": []
3046  },
3047  {
3048    "type": "error",
3049    "name": "InvalidInitialization",
3050    "inputs": []
3051  },
3052  {
3053    "type": "error",
3054    "name": "InvalidSchnorrSig",
3055    "inputs": []
3056  },
3057  {
3058    "type": "error",
3059    "name": "InvalidSchnorrVK",
3060    "inputs": []
3061  },
3062  {
3063    "type": "error",
3064    "name": "NotInitializing",
3065    "inputs": []
3066  },
3067  {
3068    "type": "error",
3069    "name": "NothingToWithdraw",
3070    "inputs": []
3071  },
3072  {
3073    "type": "error",
3074    "name": "OwnableInvalidOwner",
3075    "inputs": [
3076      {
3077        "name": "owner",
3078        "type": "address",
3079        "internalType": "address"
3080      }
3081    ]
3082  },
3083  {
3084    "type": "error",
3085    "name": "OwnableUnauthorizedAccount",
3086    "inputs": [
3087      {
3088        "name": "account",
3089        "type": "address",
3090        "internalType": "address"
3091      }
3092    ]
3093  },
3094  {
3095    "type": "error",
3096    "name": "PrematureWithdrawal",
3097    "inputs": []
3098  },
3099  {
3100    "type": "error",
3101    "name": "UUPSUnauthorizedCallContext",
3102    "inputs": []
3103  },
3104  {
3105    "type": "error",
3106    "name": "UUPSUnsupportedProxiableUUID",
3107    "inputs": [
3108      {
3109        "name": "slot",
3110        "type": "bytes32",
3111        "internalType": "bytes32"
3112      }
3113    ]
3114  },
3115  {
3116    "type": "error",
3117    "name": "UndelegationAlreadyExists",
3118    "inputs": []
3119  },
3120  {
3121    "type": "error",
3122    "name": "ValidatorAlreadyExited",
3123    "inputs": []
3124  },
3125  {
3126    "type": "error",
3127    "name": "ValidatorAlreadyRegistered",
3128    "inputs": []
3129  },
3130  {
3131    "type": "error",
3132    "name": "ValidatorInactive",
3133    "inputs": []
3134  },
3135  {
3136    "type": "error",
3137    "name": "ValidatorNotExited",
3138    "inputs": []
3139  },
3140  {
3141    "type": "error",
3142    "name": "ZeroAddress",
3143    "inputs": []
3144  },
3145  {
3146    "type": "error",
3147    "name": "ZeroAmount",
3148    "inputs": []
3149  }
3150]
3151```*/
3152#[allow(
3153    non_camel_case_types,
3154    non_snake_case,
3155    clippy::pub_underscore_fields,
3156    clippy::style,
3157    clippy::empty_structs_with_brackets
3158)]
3159pub mod StakeTableV2 {
3160    use super::*;
3161    use alloy::sol_types as alloy_sol_types;
3162    /// The creation / init bytecode of the contract.
3163    ///
3164    /// ```text
3165    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136086101095f395f81816117c1015281816117ea015261196201526136085ff3fe608060405260043610610233575f3560e01c80638456cb5911610129578063b3e6ebd5116100a8578063d547741f1161006d578063d547741f146106f4578063e63ab1e914610713578063f2fde38b14610733578063fa52c7d814610752578063fc0c546a14610795575f5ffd5b8063b3e6ebd514610627578063b5700e6814610655578063b5ecb34414610674578063be2030941461069f578063c64814dd146106be575f5ffd5b8063a217fddf116100ee578063a217fddf14610547578063a2d78dd51461055a578063a3066aab146105ac578063ac5c2ad0146105cb578063ad3cb1cc146105ea575f5ffd5b80638456cb59146104905780638da5cb5b146104a457806391d14854146104f45780639b30a5e6146105135780639e9a8f3114610532575f5ffd5b806336568abe116101b557806352d1902d1161017a57806352d1902d146104175780635544c2f11461042b5780635c975abb146104455780636a911ccf14610468578063715018a61461047c575f5ffd5b806336568abe1461039e5780633e9df9b5146103bd5780633f4ba83a146103d15780634d99dd16146103e55780634f1ef28614610404575f5ffd5b80631a20cd63116101fb5780631a20cd63146102f55780632140fecd14610314578063248a9ca3146103335780632f2ff15d14610360578063304240bf1461037f575f5ffd5b806301ffc9a714610237578063026e402b1461026b5780630840ba721461028c5780630d8e6e2c146102ab57806313b9057a146102d6575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612c26565b6107b4565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061028a610285366004612c68565b6107ea565b005b348015610297575f5ffd5b5061028a6102a6366004612c90565b610800565b3480156102b6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610262565b3480156102e1575f5ffd5b5061028a6102f0366004612d9d565b6108ed565b348015610300575f5ffd5b5061028a61030f366004612e07565b610906565b34801561031f575f5ffd5b5061028a61032e366004612e22565b610a1a565b34801561033e575f5ffd5b5061035261034d366004612e3b565b610a2e565b604051908152602001610262565b34801561036b575f5ffd5b5061028a61037a366004612e52565b610a4e565b34801561038a575f5ffd5b5061028a610399366004612efc565b610a70565b3480156103a9575f5ffd5b5061028a6103b8366004612e52565b610c04565b3480156103c8575f5ffd5b506103525f5481565b3480156103dc575f5ffd5b5061028a610c3c565b3480156103f0575f5ffd5b5061028a6103ff366004612c68565b610c5b565b61028a610412366004612f7c565b610c6d565b348015610422575f5ffd5b50610352610c88565b348015610436575f5ffd5b5061028a6102f0366004612fc6565b348015610450575f5ffd5b505f5160206135bc5f395f51905f525460ff16610256565b348015610473575f5ffd5b5061028a610ca3565b348015610487575f5ffd5b5061028a610cb5565b34801561049b575f5ffd5b5061028a610cc6565b3480156104af575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610262565b3480156104ff575f5ffd5b5061025661050e366004612e52565b610ce5565b34801561051e575f5ffd5b5061035261052d36600461300a565b610d1b565b34801561053d575f5ffd5b5061035260085481565b348015610552575f5ffd5b506103525f81565b348015610565575f5ffd5b50610597610574366004612c90565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610262565b3480156105b7575f5ffd5b5061028a6105c6366004612e22565b610d75565b3480156105d6575f5ffd5b5061028a6105e5366004613024565b610d86565b3480156105f5575f5ffd5b5061061a604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161026291906130c1565b348015610632575f5ffd5b50610256610641366004612e3b565b60046020525f908152604090205460ff1681565b348015610660575f5ffd5b506001546104dc906001600160a01b031681565b34801561067f575f5ffd5b5061035261068e366004612e22565b60056020525f908152604090205481565b3480156106aa575f5ffd5b5061028a6106b93660046130d3565b610e5c565b3480156106c9575f5ffd5b506103526106d8366004612c90565b600660209081525f928352604080842090915290825290205481565b3480156106ff575f5ffd5b5061028a61070e366004612e52565b610f73565b34801561071e575f5ffd5b506103525f51602061357c5f395f51905f5281565b34801561073e575f5ffd5b5061028a61074d366004612e22565b610f8f565b34801561075d575f5ffd5b5061078761076c366004612e22565b60036020525f90815260409020805460019091015460ff1682565b604051610262929190613126565b3480156107a0575f5ffd5b506002546104dc906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b14806107e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6107f2610fce565b6107fc8282610ffe565b5050565b5f5160206135dc5f395f51905f52805460029190600160401b900460ff1680610836575080546001600160401b03808416911610155b156108545760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561087d61119c565b6108875f846111a4565b5061089f5f51602061357c5f395f51905f52856111a4565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b60405163c2d7f81360e01b815260040160405180910390fd5b61090e61124c565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa158015610955573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109799190613156565b61098490600f613185565b9050621275006001600160401b0380831690841610806109b55750806001600160401b0316836001600160401b0316115b156109d35760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610a22610fce565b610a2b816112a7565b50565b5f9081525f51602061359c5f395f51905f52602052604090206001015490565b610a5782610a2e565b610a60816113c8565b610a6a83836111a4565b50505050565b610a78610fce565b33610a82816113d2565b610a8b8561141f565b610a948661145a565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610ac6818689611496565b8351604014610ae857604051634247068760e01b815260040160405180910390fd5b6127108361ffff161115610b0f5760405163dc81db8560e01b815260040160405180910390fd5b600160045f610b1d8a610d1b565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610b6457610b64613112565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610baa57610baa613112565b0217905550905050816001600160a01b03167ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a8888868989604051610bf39594939291906131a7565b60405180910390a250505050505050565b6001600160a01b0381163314610c2d5760405163334bd91960e11b815260040160405180910390fd5b610c37828261152b565b505050565b5f51602061357c5f395f51905f52610c53816113c8565b610a2b6115a4565b610c63610fce565b6107fc8282611604565b610c756117b6565b610c7e8261185a565b6107fc828261189b565b5f610c91611957565b505f51602061355c5f395f51905f5290565b610cab610fce565b610cb36119a0565b565b610cbd61124c565b610cb35f611a2e565b5f51602061357c5f395f51905f52610cdd816113c8565b610a2b611a9e565b5f9182525f51602061359c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001610d58949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b610d7d610fce565b610a2b81611ae6565b610d8e610fce565b33610d9881611bf6565b610da18461141f565b610daa8561145a565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610ddc818588611496565b600160045f610dea89610d1b565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051610e4c9493929190613219565b60405180910390a2505050505050565b5f5160206135dc5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610e8d5750825b90505f826001600160401b03166001148015610ea85750303b155b905081158015610eb6575080155b15610ed45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610efe57845460ff60401b1916600160401b1785555b610f0786611c77565b610f0f61119c565b610f17611c88565b610f22898989611d7a565b8315610f6857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7c82610a2e565b610f85816113c8565b610a6a838361152b565b610f9761124c565b6001600160a01b038116610fc557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a2b81611a2e565b5f5160206135bc5f395f51905f525460ff1615610cb35760405163d93c066560e01b815260040160405180910390fd5b61100782611bf6565b335f82900361102957604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015611077573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b919061327f565b9050828110156110c85760405163054365bb60e31b81526004810182905260248101849052604401610fbc565b6002546110e0906001600160a01b0316833086611e23565b6001600160a01b0384165f9081526003602052604081208054859290611107908490613296565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611142908490613296565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8560405161118e91815260200190565b60405180910390a350505050565b610cb3611ec0565b5f5f51602061359c5f395f51905f526111bd8484610ce5565b61123c575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556111f23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e4565b5f9150506107e4565b5092915050565b3361127e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cb35760405163118cdaa760e01b8152336004820152602401610fbc565b6001600160a01b0381165f9081526005602052604081205433918190036112e1576040516379298a5360e11b815260040160405180910390fd5b8042101561130257604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361134a57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461137f91168483611ef6565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516113ba91815260200190565b60405180910390a250505050565b610a2b8133611f7f565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561140157611401613112565b14610a2b5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f808252602082015261143c8282611fb8565b156107fc576040516306cf438f60e01b815260040160405180910390fd5b60045f61146683610d1b565b815260208101919091526040015f205460ff1615610a2b5760405162da8a5760e11b815260040160405180910390fd5b61149f82611fd9565b5f6040518060600160405280602481526020016135186024913990505f84826040516020016114cf9291906132c0565b60405160208183030381529060405290505f6114ea8261206f565b905061150781856114fa8861215c565b6115026121d3565b6122a0565b6115235760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f5f51602061359c5f395f51905f526115448484610ce5565b1561123c575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e4565b6115ac61237e565b5f5160206135bc5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b61160d82611bf6565b335f82900361162f57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156116725760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093851683529290522054828110156116bb57604051639266535160e01b815260048101829052602401610fbc565b6001600160a01b038085165f908152600660209081526040808320938616835292905290812080548592906116f19084906132dc565b925050819055506040518060400160405280848152602001600854426117179190613296565b90526001600160a01b038086165f8181526007602090815260408083209488168352938152838220855181559481015160019095019490945590815260039092528120805485929061176a9084906132dc565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c8560405161118e91815260200190565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061183c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118305f51602061355c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cb35760405163703e46dd60e11b815260040160405180910390fd5b61186261124c565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016115f9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118f5575060408051601f3d908101601f191682019092526118f29181019061327f565b60015b61191d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610fbc565b5f51602061355c5f395f51905f52811461194d57604051632a87526960e21b815260048101829052602401610fbc565b610c3783836123ad565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb35760405163703e46dd60e11b815260040160405180910390fd5b336119aa81611bf6565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546119dc9042613296565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611aa6610fce565b5f5160206135bc5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336115e5565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b2b57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611b7357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254611bae91168383611ef6565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051611be991815260200190565b60405180910390a2505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611c2757611c27613112565b03611c455760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611c5957611c59613112565b036107fc5760405163eab4a96360e01b815260040160405180910390fd5b611c7f611ec0565b610a2b81612402565b5f5160206135dc5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611cb95750825b90505f826001600160401b03166001148015611cd45750303b155b905081158015611ce2575080155b15611d005760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d2a57845460ff60401b1916600160401b1785555b435f558315611d7357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b038316611da15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611dc85760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a80821015611e1b5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f511416151615611e7c5750833b153d17155b80611d735760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610fbc565b5f5160206135dc5f395f51905f5254600160401b900460ff16610cb357604051631afcd79f60e31b815260040160405180910390fd5b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615611f405750823b153d17155b80610a6a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610fbc565b611f898282610ce5565b6107fc5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610fbc565b805182515f91148015611fd2575081602001518360200151145b9392505050565b805160208201515f915f51602061353c5f395f51905f52911590151615611fff57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610c375760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e740000000000000000006044820152606401610fbc565b604080518082019091525f80825260208201525f61208c8361240a565b90505f51602061353c5f395f51905f5260035f82848509905082806120b3576120b36132ef565b848209905082806120c6576120c66132ef565b82820890505f5f6120d683612612565b925090505b8061213f5784806120ee576120ee6132ef565b6001870895508480612102576121026132ef565b86870992508480612115576121156132ef565b86840992508480612128576121286132ef565b848408925061213683612612565b925090506120db565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612183575090565b6040518060400160405280835f015181526020015f51602061353c5f395f51905f5284602001516121b49190613303565b6121cb905f51602061353c5f395f51905f526132dc565b905292915050565b6121fa60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806123725760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c656421000000006044820152606401610fbc565b50151595945050505050565b5f5160206135bc5f395f51905f525460ff16610cb357604051638dfc202b60e01b815260040160405180910390fd5b6123b682612709565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156123fa57610c37828261276c565b6107fc6127de565b610f97611ec0565b5f5f612415836127fd565b80519091506030811461242a5761242a613322565b5f816001600160401b0381111561244357612443612cc1565b6040519080825280601f01601f19166020018201604052801561246d576020820181803683370190505b5090505f5b828110156124dc5783600161248783866132dc565b61249191906132dc565b815181106124a1576124a1613336565b602001015160f81c60f81b8282815181106124be576124be613336565b60200101906001600160f81b03191690815f1a905350600101612472565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561256c57838161251885886132dc565b6125229190613296565b8151811061253257612532613336565b602001015160f81c60f81b60f81c82828151811061255257612552613336565b60ff90921660209283029190910190910152600101612504565b505f61257782612b48565b90506101005f51602061353c5f395f51905f525f61259586896132dc565b90505f5b81811015612602575f8860016125af84866132dc565b6125b991906132dc565b815181106125c9576125c9613336565b016020015160f81c905083806125e1576125e16132ef565b858709955083806125f4576125f46132ef565b818708955050600101612599565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f51602061353c5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f519250836126cf5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c65642100000000006044820152606401610fbc565b80600184901b11156126e8576126e583826132dc565b92505b80806126f6576126f66132ef565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361273e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610fbc565b5f51602061355c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612788919061334a565b5f60405180830381855af49150503d805f81146127c0576040519150601f19603f3d011682016040523d82523d5f602084013e6127c5565b606091505b50915091506127d5858383612ba8565b95945050505050565b3415610cb35760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161283d9291906132c0565b6040516020818303038152906040529050808460f81b604051602001612864929190613355565b604051602081830303815290604052905080604051602001612886919061337f565b60408051601f1981840301815290829052915061010160f01b906128b09083908390602001613397565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561291f5761291f612cc1565b6040519080825280601f01601f191660200182016040528015612949576020820181803683370190505b5090505f8260405160200161296091815260200190565b60408051601f1981840301815291905290505f5b81518110156129ca5781818151811061298f5761298f613336565b602001015160f81c60f81b8382815181106129ac576129ac613336565b60200101906001600160f81b03191690815f1a905350600101612974565b505f846040516020016129df91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612a71575f838281518110612a1857612a18613336565b602001015160f81c60f81b838381518110612a3557612a35613336565b602001015160f81c60f81b1890508881604051602001612a569291906133bb565b60408051601f198184030181529190529850506001016129fd565b50868887604051602001612a87939291906133df565b60405160208183030381529060405296508680519060200120935083604051602001612ab591815260200190565b60408051601f1981840301815291905291505f5b612ad68a60ff8d166132dc565b811015612b3757828181518110612aef57612aef613336565b01602001516001600160f81b03191684612b09838d613296565b81518110612b1957612b19613336565b60200101906001600160f81b03191690815f1a905350600101612ac9565b50919b9a5050505050505050505050565b5f80805b835181101561124557838181518110612b6757612b67613336565b602002602001015160ff16816008612b7f9190613412565b612b8a90600261350c565b612b949190613412565b612b9e9083613296565b9150600101612b4c565b606082612bbd57612bb882612bfd565b611fd2565b8151158015612bd457506001600160a01b0384163b155b1561124557604051639996b31560e01b81526001600160a01b0385166004820152602401610fbc565b805115612c0d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215612c36575f5ffd5b81356001600160e01b031981168114611fd2575f5ffd5b80356001600160a01b0381168114612c63575f5ffd5b919050565b5f5f60408385031215612c79575f5ffd5b612c8283612c4d565b946020939093013593505050565b5f5f60408385031215612ca1575f5ffd5b612caa83612c4d565b9150612cb860208401612c4d565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cf757612cf7612cc1565b60405290565b5f60808284031215612d0d575f5ffd5b604051608081016001600160401b0381118282101715612d2f57612d2f612cc1565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215612d6d575f5ffd5b612d75612cd5565b823581526020928301359281019290925250919050565b803561ffff81168114612c63575f5ffd5b5f5f5f5f6101208587031215612db1575f5ffd5b612dbb8686612cfd565b9350612dca8660808701612d5d565b9250612dd98660c08701612d5d565b9150612de86101008601612d8c565b905092959194509250565b6001600160401b0381168114610a2b575f5ffd5b5f60208284031215612e17575f5ffd5b8135611fd281612df3565b5f60208284031215612e32575f5ffd5b611fd282612c4d565b5f60208284031215612e4b575f5ffd5b5035919050565b5f5f60408385031215612e63575f5ffd5b82359150612cb860208401612c4d565b5f82601f830112612e82575f5ffd5b81356001600160401b03811115612e9b57612e9b612cc1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612ec957612ec9612cc1565b604052818152838201602001851015612ee0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215612f11575f5ffd5b612f1b8787612cfd565b9450612f2a8760808801612d5d565b9350612f398760c08801612d5d565b92506101008601356001600160401b03811115612f54575f5ffd5b612f6088828901612e73565b925050612f706101208701612d8c565b90509295509295909350565b5f5f60408385031215612f8d575f5ffd5b612f9683612c4d565b915060208301356001600160401b03811115612fb0575f5ffd5b612fbc85828601612e73565b9150509250929050565b5f5f5f6101008486031215612fd9575f5ffd5b612fe38585612cfd565b9250612ff28560808601612d5d565b91506130018560c08601612d5d565b90509250925092565b5f6080828403121561301a575f5ffd5b611fd28383612cfd565b5f5f5f5f6101208587031215613038575f5ffd5b6130428686612cfd565b93506130518660808701612d5d565b92506130608660c08701612d5d565b91506101008501356001600160401b0381111561307b575f5ffd5b61308787828801612e73565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611fd26020830184613093565b5f5f5f5f608085870312156130e6575f5ffd5b6130ef85612c4d565b93506130fd60208601612c4d565b925060408501359150612de860608601612c4d565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061314957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613166575f5ffd5b8151611fd281612df3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216029081169081811461124557611245613171565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f61320e610140830184613093565b979650505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f613275610120830184613093565b9695505050505050565b5f6020828403121561328f575f5ffd5b5051919050565b808201808211156107e4576107e4613171565b5f81518060208401855e5f93019283525090919050565b5f6132d46132ce83866132a9565b846132a9565b949350505050565b818103818111156107e4576107e4613171565b634e487b7160e01b5f52601260045260245ffd5b5f8261331d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611fd282846132a9565b5f61336082856132a9565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61338a82846132a9565b5f81526001019392505050565b5f6133a282856132a9565b6001600160f01b03199390931683525050600201919050565b5f6133c682856132a9565b6001600160f81b03199390931683525050600101919050565b5f6133ea82866132a9565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b80820281158282048414176107e4576107e4613171565b6001815b60018411156134645780850481111561344857613448613171565b600184161561345657908102905b60019390931c92800261342d565b935093915050565b5f8261347a575060016107e4565b8161348657505f6107e4565b816001811461349c57600281146134a6576134c2565b60019150506107e4565b60ff8411156134b7576134b7613171565b50506001821b6107e4565b5060208310610133831016604e8410600b84101617156134e5575081810a6107e4565b6134f15f198484613429565b805f190482111561350457613504613171565b029392505050565b5f611fd2838361346c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3166    /// ```
3167    #[rustfmt::skip]
3168    #[allow(clippy::all)]
3169    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3170        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[`\x80Qa6\x08a\x01\t_9_\x81\x81a\x17\xC1\x01R\x81\x81a\x17\xEA\x01Ra\x19b\x01Ra6\x08_\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,&V[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,hV[a\x07\xEAV[\0[4\x80\x15a\x02\x97W__\xFD[Pa\x02\x8Aa\x02\xA66`\x04a,\x90V[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-\x9DV[a\x08\xEDV[4\x80\x15a\x03\0W__\xFD[Pa\x02\x8Aa\x03\x0F6`\x04a.\x07V[a\t\x06V[4\x80\x15a\x03\x1FW__\xFD[Pa\x02\x8Aa\x03.6`\x04a.\"V[a\n\x1AV[4\x80\x15a\x03>W__\xFD[Pa\x03Ra\x03M6`\x04a.;V[a\n.V[`@Q\x90\x81R` \x01a\x02bV[4\x80\x15a\x03kW__\xFD[Pa\x02\x8Aa\x03z6`\x04a.RV[a\nNV[4\x80\x15a\x03\x8AW__\xFD[Pa\x02\x8Aa\x03\x996`\x04a.\xFCV[a\npV[4\x80\x15a\x03\xA9W__\xFD[Pa\x02\x8Aa\x03\xB86`\x04a.RV[a\x0C\x04V[4\x80\x15a\x03\xC8W__\xFD[Pa\x03R_T\x81V[4\x80\x15a\x03\xDCW__\xFD[Pa\x02\x8Aa\x0C<V[4\x80\x15a\x03\xF0W__\xFD[Pa\x02\x8Aa\x03\xFF6`\x04a,hV[a\x0C[V[a\x02\x8Aa\x04\x126`\x04a/|V[a\x0CmV[4\x80\x15a\x04\"W__\xFD[Pa\x03Ra\x0C\x88V[4\x80\x15a\x046W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a/\xC6V[4\x80\x15a\x04PW__\xFD[P_Q` a5\xBC_9_Q\x90_RT`\xFF\x16a\x02VV[4\x80\x15a\x04sW__\xFD[Pa\x02\x8Aa\x0C\xA3V[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x8Aa\x0C\xB5V[4\x80\x15a\x04\x9BW__\xFD[Pa\x02\x8Aa\x0C\xC6V[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.RV[a\x0C\xE5V[4\x80\x15a\x05\x1EW__\xFD[Pa\x03Ra\x05-6`\x04a0\nV[a\r\x1BV[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,\x90V[`\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.\"V[a\ruV[4\x80\x15a\x05\xD6W__\xFD[Pa\x02\x8Aa\x05\xE56`\x04a0$V[a\r\x86V[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\x90a0\xC1V[4\x80\x15a\x062W__\xFD[Pa\x02Va\x06A6`\x04a.;V[`\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.\"V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06\xAAW__\xFD[Pa\x02\x8Aa\x06\xB96`\x04a0\xD3V[a\x0E\\V[4\x80\x15a\x06\xC9W__\xFD[Pa\x03Ra\x06\xD86`\x04a,\x90V[`\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.RV[a\x0FsV[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.\"V[a\x0F\x8FV[4\x80\x15a\x07]W__\xFD[Pa\x07\x87a\x07l6`\x04a.\"V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02b\x92\x91\x90a1&V[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\xCEV[a\x07\xFC\x82\x82a\x0F\xFEV[PPV[_Q` a5\xDC_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\x11\x9CV[a\x08\x87_\x84a\x11\xA4V[Pa\x08\x9F_Q` a5|_9_Q\x90_R\x85a\x11\xA4V[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\x12LV[`\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\x90a1VV[a\t\x84\x90`\x0Fa1\x85V[\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\xCEV[a\n+\x81a\x12\xA7V[PV[_\x90\x81R_Q` a5\x9C_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\nW\x82a\n.V[a\n`\x81a\x13\xC8V[a\nj\x83\x83a\x11\xA4V[PPPPV[a\nxa\x0F\xCEV[3a\n\x82\x81a\x13\xD2V[a\n\x8B\x85a\x14\x1FV[a\n\x94\x86a\x14ZV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\n\xC6\x81\x86\x89a\x14\x96V[\x83Q`@\x14a\n\xE8W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x0B\x0FW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x0B\x1D\x8Aa\r\x1BV[\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\x0BdWa\x0Bda1\x12V[\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\xAAWa\x0B\xAAa1\x12V[\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\xF3\x95\x94\x93\x92\x91\x90a1\xA7V[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0C-W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C7\x82\x82a\x15+V[PPPV[_Q` a5|_9_Q\x90_Ra\x0CS\x81a\x13\xC8V[a\n+a\x15\xA4V[a\x0Cca\x0F\xCEV[a\x07\xFC\x82\x82a\x16\x04V[a\x0Cua\x17\xB6V[a\x0C~\x82a\x18ZV[a\x07\xFC\x82\x82a\x18\x9BV[_a\x0C\x91a\x19WV[P_Q` a5\\_9_Q\x90_R\x90V[a\x0C\xABa\x0F\xCEV[a\x0C\xB3a\x19\xA0V[V[a\x0C\xBDa\x12LV[a\x0C\xB3_a\x1A.V[_Q` a5|_9_Q\x90_Ra\x0C\xDD\x81a\x13\xC8V[a\n+a\x1A\x9EV[_\x91\x82R_Q` a5\x9C_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\rX\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\r}a\x0F\xCEV[a\n+\x81a\x1A\xE6V[a\r\x8Ea\x0F\xCEV[3a\r\x98\x81a\x1B\xF6V[a\r\xA1\x84a\x14\x1FV[a\r\xAA\x85a\x14ZV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\xDC\x81\x85\x88a\x14\x96V[`\x01`\x04_a\r\xEA\x89a\r\x1BV[\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\x0EL\x94\x93\x92\x91\x90a2\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a5\xDC_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\x8DWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xA8WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB6WP\x80\x15[\x15a\x0E\xD4W`@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\xFEW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x07\x86a\x1CwV[a\x0F\x0Fa\x11\x9CV[a\x0F\x17a\x1C\x88V[a\x0F\"\x89\x89\x89a\x1DzV[\x83\x15a\x0FhW\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\x0F|\x82a\n.V[a\x0F\x85\x81a\x13\xC8V[a\nj\x83\x83a\x15+V[a\x0F\x97a\x12LV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xC5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n+\x81a\x1A.V[_Q` a5\xBC_9_Q\x90_RT`\xFF\x16\x15a\x0C\xB3W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\x07\x82a\x1B\xF6V[3_\x82\x90\x03a\x10)W`@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\x10wW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x9B\x91\x90a2\x7FV[\x90P\x82\x81\x10\x15a\x10\xC8W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x0F\xBCV[`\x02Ta\x10\xE0\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x1E#V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x11\x07\x90\x84\x90a2\x96V[\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\x11B\x90\x84\x90a2\x96V[\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\x11\x8E\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0C\xB3a\x1E\xC0V[__Q` a5\x9C_9_Q\x90_Ra\x11\xBD\x84\x84a\x0C\xE5V[a\x12<W_\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\xF23\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\x12~\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\xB3W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0F\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x12\xE1W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13\x02W`@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\x13JW`@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\x13\x7F\x91\x16\x84\x83a\x1E\xF6V[\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\xBA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\n+\x813a\x1F\x7FV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x14\x01Wa\x14\x01a1\x12V[\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<\x82\x82a\x1F\xB8V[\x15a\x07\xFCW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x14f\x83a\r\x1BV[\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\x14\x9F\x82a\x1F\xD9V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a5\x18`$\x919\x90P_\x84\x82`@Q` \x01a\x14\xCF\x92\x91\x90a2\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x14\xEA\x82a oV[\x90Pa\x15\x07\x81\x85a\x14\xFA\x88a!\\V[a\x15\x02a!\xD3V[a\"\xA0V[a\x15#W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[__Q` a5\x9C_9_Q\x90_Ra\x15D\x84\x84a\x0C\xE5V[\x15a\x12<W_\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\xACa#~V[_Q` a5\xBC_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\x16\r\x82a\x1B\xF6V[3_\x82\x90\x03a\x16/W`@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\x16rW`@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\xBBW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\xBCV[`\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\xF1\x90\x84\x90a2\xDCV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x17\x17\x91\x90a2\x96V[\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\x17j\x90\x84\x90a2\xDCV[\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\x11\x8E\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<WP\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\x180_Q` a5\\_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xB3W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18ba\x12LV[`@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\xF9V[\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\xF5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xF2\x91\x81\x01\x90a2\x7FV[`\x01[a\x19\x1DW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[_Q` a5\\_9_Q\x90_R\x81\x14a\x19MW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\xBCV[a\x0C7\x83\x83a#\xADV[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\xB3W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x19\xAA\x81a\x1B\xF6V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19\xDC\x90Ba2\x96V[`\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\xA6a\x0F\xCEV[_Q` a5\xBC_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\xE5V[`\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+W`@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\x1BsW`@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\xAE\x91\x16\x83\x83a\x1E\xF6V[\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\xE9\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\x1C'Wa\x1C'a1\x12V[\x03a\x1CEW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1CYWa\x1CYa1\x12V[\x03a\x07\xFCW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x7Fa\x1E\xC0V[a\n+\x81a$\x02V[_Q` a5\xDC_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1C\xB9WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1C\xD4WP0;\x15[\x90P\x81\x15\x80\x15a\x1C\xE2WP\x80\x15[\x15a\x1D\0W`@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*W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x1DsW\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\x1D\xA1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1D\xC8W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`Z\x80\x82\x10\x15a\x1E\x1BW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[_`@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\x1DsW`@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\xBCV[_Q` a5\xDC_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xB3W`@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\x1F@WP\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\xBCV[a\x1F\x89\x82\x82a\x0C\xE5V[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\xBCV[\x80Q\x82Q_\x91\x14\x80\x15a\x1F\xD2WP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a5<_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x1F\xFFWPPPV[\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\x0C7W`@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\xBCV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a \x8C\x83a$\nV[\x90P_Q` a5<_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a \xB3Wa \xB3a2\xEFV[\x84\x82\t\x90P\x82\x80a \xC6Wa \xC6a2\xEFV[\x82\x82\x08\x90P__a \xD6\x83a&\x12V[\x92P\x90P[\x80a!?W\x84\x80a \xEEWa \xEEa2\xEFV[`\x01\x87\x08\x95P\x84\x80a!\x02Wa!\x02a2\xEFV[\x86\x87\t\x92P\x84\x80a!\x15Wa!\x15a2\xEFV[\x86\x84\t\x92P\x84\x80a!(Wa!(a2\xEFV[\x84\x84\x08\x92Pa!6\x83a&\x12V[\x92P\x90Pa \xDBV[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!\x83WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a5<_9_Q\x90_R\x84` \x01Qa!\xB4\x91\x90a3\x03V[a!\xCB\x90_Q` a5<_9_Q\x90_Ra2\xDCV[\x90R\x92\x91PPV[a!\xFA`@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#rW`@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\xBCV[P\x15\x15\x95\x94PPPPPV[_Q` a5\xBC_9_Q\x90_RT`\xFF\x16a\x0C\xB3W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xB6\x82a'\tV[`@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#\xFAWa\x0C7\x82\x82a'lV[a\x07\xFCa'\xDEV[a\x0F\x97a\x1E\xC0V[__a$\x15\x83a'\xFDV[\x80Q\x90\x91P`0\x81\x14a$*Wa$*a3\"V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a$CWa$Ca,\xC1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$mW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a$\xDCW\x83`\x01a$\x87\x83\x86a2\xDCV[a$\x91\x91\x90a2\xDCV[\x81Q\x81\x10a$\xA1Wa$\xA1a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a$\xBEWa$\xBEa36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a$rV[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%lW\x83\x81a%\x18\x85\x88a2\xDCV[a%\"\x91\x90a2\x96V[\x81Q\x81\x10a%2Wa%2a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a%RWa%Ra36V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a%\x04V[P_a%w\x82a+HV[\x90Pa\x01\0_Q` a5<_9_Q\x90_R_a%\x95\x86\x89a2\xDCV[\x90P_[\x81\x81\x10\x15a&\x02W_\x88`\x01a%\xAF\x84\x86a2\xDCV[a%\xB9\x91\x90a2\xDCV[\x81Q\x81\x10a%\xC9Wa%\xC9a36V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a%\xE1Wa%\xE1a2\xEFV[\x85\x87\t\x95P\x83\x80a%\xF4Wa%\xF4a2\xEFV[\x81\x87\x08\x95PP`\x01\x01a%\x99V[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` a5<_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&\xCFW`@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\xBCV[\x80`\x01\x84\x90\x1B\x11\x15a&\xE8Wa&\xE5\x83\x82a2\xDCV[\x92P[\x80\x80a&\xF6Wa&\xF6a2\xEFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'>W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[_Q` a5\\_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'\x88\x91\x90a3JV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a'\xC0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a'\xC5V[``\x91P[P\x91P\x91Pa'\xD5\x85\x83\x83a+\xA8V[\x95\x94PPPPPV[4\x15a\x0C\xB3W`@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(=\x92\x91\x90a2\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a(d\x92\x91\x90a3UV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a(\x86\x91\x90a3\x7FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a(\xB0\x90\x83\x90\x83\x90` \x01a3\x97V[`@\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)\x1FWa)\x1Fa,\xC1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)IW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a)`\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a)\xCAW\x81\x81\x81Q\x81\x10a)\x8FWa)\x8Fa36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a)\xACWa)\xACa36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a)tV[P_\x84`@Q` \x01a)\xDF\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*qW_\x83\x82\x81Q\x81\x10a*\x18Wa*\x18a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a*5Wa*5a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a*V\x92\x91\x90a3\xBBV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a)\xFDV[P\x86\x88\x87`@Q` \x01a*\x87\x93\x92\x91\x90a3\xDFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a*\xB5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a*\xD6\x8A`\xFF\x8D\x16a2\xDCV[\x81\x10\x15a+7W\x82\x81\x81Q\x81\x10a*\xEFWa*\xEFa36V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a+\t\x83\x8Da2\x96V[\x81Q\x81\x10a+\x19Wa+\x19a36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*\xC9V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x12EW\x83\x81\x81Q\x81\x10a+gWa+ga36V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a+\x7F\x91\x90a4\x12V[a+\x8A\x90`\x02a5\x0CV[a+\x94\x91\x90a4\x12V[a+\x9E\x90\x83a2\x96V[\x91P`\x01\x01a+LV[``\x82a+\xBDWa+\xB8\x82a+\xFDV[a\x1F\xD2V[\x81Q\x15\x80\x15a+\xD4WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x12EW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[\x80Q\x15a,\rW\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,6W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1F\xD2W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a,cW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a,yW__\xFD[a,\x82\x83a,MV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a,\xA1W__\xFD[a,\xAA\x83a,MV[\x91Pa,\xB8` \x84\x01a,MV[\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,\xF7Wa,\xF7a,\xC1V[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a-\rW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-/Wa-/a,\xC1V[`@\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-mW__\xFD[a-ua,\xD5V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a,cW__\xFD[____a\x01 \x85\x87\x03\x12\x15a-\xB1W__\xFD[a-\xBB\x86\x86a,\xFDV[\x93Pa-\xCA\x86`\x80\x87\x01a-]V[\x92Pa-\xD9\x86`\xC0\x87\x01a-]V[\x91Pa-\xE8a\x01\0\x86\x01a-\x8CV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\n+W__\xFD[_` \x82\x84\x03\x12\x15a.\x17W__\xFD[\x815a\x1F\xD2\x81a-\xF3V[_` \x82\x84\x03\x12\x15a.2W__\xFD[a\x1F\xD2\x82a,MV[_` \x82\x84\x03\x12\x15a.KW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a.cW__\xFD[\x825\x91Pa,\xB8` \x84\x01a,MV[_\x82`\x1F\x83\x01\x12a.\x82W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9BWa.\x9Ba,\xC1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xC9Wa.\xC9a,\xC1V[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a.\xE0W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a/\x11W__\xFD[a/\x1B\x87\x87a,\xFDV[\x94Pa/*\x87`\x80\x88\x01a-]V[\x93Pa/9\x87`\xC0\x88\x01a-]V[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/TW__\xFD[a/`\x88\x82\x89\x01a.sV[\x92PPa/pa\x01 \x87\x01a-\x8CV[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a/\x8DW__\xFD[a/\x96\x83a,MV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xB0W__\xFD[a/\xBC\x85\x82\x86\x01a.sV[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a/\xD9W__\xFD[a/\xE3\x85\x85a,\xFDV[\x92Pa/\xF2\x85`\x80\x86\x01a-]V[\x91Pa0\x01\x85`\xC0\x86\x01a-]V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a0\x1AW__\xFD[a\x1F\xD2\x83\x83a,\xFDV[____a\x01 \x85\x87\x03\x12\x15a08W__\xFD[a0B\x86\x86a,\xFDV[\x93Pa0Q\x86`\x80\x87\x01a-]V[\x92Pa0`\x86`\xC0\x87\x01a-]V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0{W__\xFD[a0\x87\x87\x82\x88\x01a.sV[\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\xD2` \x83\x01\x84a0\x93V[____`\x80\x85\x87\x03\x12\x15a0\xE6W__\xFD[a0\xEF\x85a,MV[\x93Pa0\xFD` \x86\x01a,MV[\x92P`@\x85\x015\x91Pa-\xE8``\x86\x01a,MV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a1IWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a1fW__\xFD[\x81Qa\x1F\xD2\x81a-\xF3V[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\x12EWa\x12Ea1qV[\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_a2\x0Ea\x01@\x83\x01\x84a0\x93V[\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_a2ua\x01 \x83\x01\x84a0\x93V[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a2\x8FW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x07\xE4Wa\x07\xE4a1qV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\xD4a2\xCE\x83\x86a2\xA9V[\x84a2\xA9V[\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x07\xE4Wa\x07\xE4a1qV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a3\x1DWcNH{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\xD2\x82\x84a2\xA9V[_a3`\x82\x85a2\xA9V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a3\x8A\x82\x84a2\xA9V[_\x81R`\x01\x01\x93\x92PPPV[_a3\xA2\x82\x85a2\xA9V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a3\xC6\x82\x85a2\xA9V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a3\xEA\x82\x86a2\xA9V[`\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\xE4a1qV[`\x01\x81[`\x01\x84\x11\x15a4dW\x80\x85\x04\x81\x11\x15a4HWa4Ha1qV[`\x01\x84\x16\x15a4VW\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a4-V[\x93P\x93\x91PPV[_\x82a4zWP`\x01a\x07\xE4V[\x81a4\x86WP_a\x07\xE4V[\x81`\x01\x81\x14a4\x9CW`\x02\x81\x14a4\xA6Wa4\xC2V[`\x01\x91PPa\x07\xE4V[`\xFF\x84\x11\x15a4\xB7Wa4\xB7a1qV[PP`\x01\x82\x1Ba\x07\xE4V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a4\xE5WP\x81\x81\na\x07\xE4V[a4\xF1_\x19\x84\x84a4)V[\x80_\x19\x04\x82\x11\x15a5\x04Wa5\x04a1qV[\x02\x93\x92PPPV[_a\x1F\xD2\x83\x83a4lV\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",
3171    );
3172    /// The runtime bytecode of the contract, as deployed on the network.
3173    ///
3174    /// ```text
3175    ///0x608060405260043610610233575f3560e01c80638456cb5911610129578063b3e6ebd5116100a8578063d547741f1161006d578063d547741f146106f4578063e63ab1e914610713578063f2fde38b14610733578063fa52c7d814610752578063fc0c546a14610795575f5ffd5b8063b3e6ebd514610627578063b5700e6814610655578063b5ecb34414610674578063be2030941461069f578063c64814dd146106be575f5ffd5b8063a217fddf116100ee578063a217fddf14610547578063a2d78dd51461055a578063a3066aab146105ac578063ac5c2ad0146105cb578063ad3cb1cc146105ea575f5ffd5b80638456cb59146104905780638da5cb5b146104a457806391d14854146104f45780639b30a5e6146105135780639e9a8f3114610532575f5ffd5b806336568abe116101b557806352d1902d1161017a57806352d1902d146104175780635544c2f11461042b5780635c975abb146104455780636a911ccf14610468578063715018a61461047c575f5ffd5b806336568abe1461039e5780633e9df9b5146103bd5780633f4ba83a146103d15780634d99dd16146103e55780634f1ef28614610404575f5ffd5b80631a20cd63116101fb5780631a20cd63146102f55780632140fecd14610314578063248a9ca3146103335780632f2ff15d14610360578063304240bf1461037f575f5ffd5b806301ffc9a714610237578063026e402b1461026b5780630840ba721461028c5780630d8e6e2c146102ab57806313b9057a146102d6575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612c26565b6107b4565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061028a610285366004612c68565b6107ea565b005b348015610297575f5ffd5b5061028a6102a6366004612c90565b610800565b3480156102b6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610262565b3480156102e1575f5ffd5b5061028a6102f0366004612d9d565b6108ed565b348015610300575f5ffd5b5061028a61030f366004612e07565b610906565b34801561031f575f5ffd5b5061028a61032e366004612e22565b610a1a565b34801561033e575f5ffd5b5061035261034d366004612e3b565b610a2e565b604051908152602001610262565b34801561036b575f5ffd5b5061028a61037a366004612e52565b610a4e565b34801561038a575f5ffd5b5061028a610399366004612efc565b610a70565b3480156103a9575f5ffd5b5061028a6103b8366004612e52565b610c04565b3480156103c8575f5ffd5b506103525f5481565b3480156103dc575f5ffd5b5061028a610c3c565b3480156103f0575f5ffd5b5061028a6103ff366004612c68565b610c5b565b61028a610412366004612f7c565b610c6d565b348015610422575f5ffd5b50610352610c88565b348015610436575f5ffd5b5061028a6102f0366004612fc6565b348015610450575f5ffd5b505f5160206135bc5f395f51905f525460ff16610256565b348015610473575f5ffd5b5061028a610ca3565b348015610487575f5ffd5b5061028a610cb5565b34801561049b575f5ffd5b5061028a610cc6565b3480156104af575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610262565b3480156104ff575f5ffd5b5061025661050e366004612e52565b610ce5565b34801561051e575f5ffd5b5061035261052d36600461300a565b610d1b565b34801561053d575f5ffd5b5061035260085481565b348015610552575f5ffd5b506103525f81565b348015610565575f5ffd5b50610597610574366004612c90565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610262565b3480156105b7575f5ffd5b5061028a6105c6366004612e22565b610d75565b3480156105d6575f5ffd5b5061028a6105e5366004613024565b610d86565b3480156105f5575f5ffd5b5061061a604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161026291906130c1565b348015610632575f5ffd5b50610256610641366004612e3b565b60046020525f908152604090205460ff1681565b348015610660575f5ffd5b506001546104dc906001600160a01b031681565b34801561067f575f5ffd5b5061035261068e366004612e22565b60056020525f908152604090205481565b3480156106aa575f5ffd5b5061028a6106b93660046130d3565b610e5c565b3480156106c9575f5ffd5b506103526106d8366004612c90565b600660209081525f928352604080842090915290825290205481565b3480156106ff575f5ffd5b5061028a61070e366004612e52565b610f73565b34801561071e575f5ffd5b506103525f51602061357c5f395f51905f5281565b34801561073e575f5ffd5b5061028a61074d366004612e22565b610f8f565b34801561075d575f5ffd5b5061078761076c366004612e22565b60036020525f90815260409020805460019091015460ff1682565b604051610262929190613126565b3480156107a0575f5ffd5b506002546104dc906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b14806107e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6107f2610fce565b6107fc8282610ffe565b5050565b5f5160206135dc5f395f51905f52805460029190600160401b900460ff1680610836575080546001600160401b03808416911610155b156108545760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561087d61119c565b6108875f846111a4565b5061089f5f51602061357c5f395f51905f52856111a4565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b60405163c2d7f81360e01b815260040160405180910390fd5b61090e61124c565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa158015610955573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109799190613156565b61098490600f613185565b9050621275006001600160401b0380831690841610806109b55750806001600160401b0316836001600160401b0316115b156109d35760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610a22610fce565b610a2b816112a7565b50565b5f9081525f51602061359c5f395f51905f52602052604090206001015490565b610a5782610a2e565b610a60816113c8565b610a6a83836111a4565b50505050565b610a78610fce565b33610a82816113d2565b610a8b8561141f565b610a948661145a565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610ac6818689611496565b8351604014610ae857604051634247068760e01b815260040160405180910390fd5b6127108361ffff161115610b0f5760405163dc81db8560e01b815260040160405180910390fd5b600160045f610b1d8a610d1b565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610b6457610b64613112565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610baa57610baa613112565b0217905550905050816001600160a01b03167ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a8888868989604051610bf39594939291906131a7565b60405180910390a250505050505050565b6001600160a01b0381163314610c2d5760405163334bd91960e11b815260040160405180910390fd5b610c37828261152b565b505050565b5f51602061357c5f395f51905f52610c53816113c8565b610a2b6115a4565b610c63610fce565b6107fc8282611604565b610c756117b6565b610c7e8261185a565b6107fc828261189b565b5f610c91611957565b505f51602061355c5f395f51905f5290565b610cab610fce565b610cb36119a0565b565b610cbd61124c565b610cb35f611a2e565b5f51602061357c5f395f51905f52610cdd816113c8565b610a2b611a9e565b5f9182525f51602061359c5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001610d58949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b610d7d610fce565b610a2b81611ae6565b610d8e610fce565b33610d9881611bf6565b610da18461141f565b610daa8561145a565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610ddc818588611496565b600160045f610dea89610d1b565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051610e4c9493929190613219565b60405180910390a2505050505050565b5f5160206135dc5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610e8d5750825b90505f826001600160401b03166001148015610ea85750303b155b905081158015610eb6575080155b15610ed45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610efe57845460ff60401b1916600160401b1785555b610f0786611c77565b610f0f61119c565b610f17611c88565b610f22898989611d7a565b8315610f6857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7c82610a2e565b610f85816113c8565b610a6a838361152b565b610f9761124c565b6001600160a01b038116610fc557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a2b81611a2e565b5f5160206135bc5f395f51905f525460ff1615610cb35760405163d93c066560e01b815260040160405180910390fd5b61100782611bf6565b335f82900361102957604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015611077573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b919061327f565b9050828110156110c85760405163054365bb60e31b81526004810182905260248101849052604401610fbc565b6002546110e0906001600160a01b0316833086611e23565b6001600160a01b0384165f9081526003602052604081208054859290611107908490613296565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611142908490613296565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8560405161118e91815260200190565b60405180910390a350505050565b610cb3611ec0565b5f5f51602061359c5f395f51905f526111bd8484610ce5565b61123c575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556111f23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e4565b5f9150506107e4565b5092915050565b3361127e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cb35760405163118cdaa760e01b8152336004820152602401610fbc565b6001600160a01b0381165f9081526005602052604081205433918190036112e1576040516379298a5360e11b815260040160405180910390fd5b8042101561130257604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361134a57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461137f91168483611ef6565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516113ba91815260200190565b60405180910390a250505050565b610a2b8133611f7f565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561140157611401613112565b14610a2b5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f808252602082015261143c8282611fb8565b156107fc576040516306cf438f60e01b815260040160405180910390fd5b60045f61146683610d1b565b815260208101919091526040015f205460ff1615610a2b5760405162da8a5760e11b815260040160405180910390fd5b61149f82611fd9565b5f6040518060600160405280602481526020016135186024913990505f84826040516020016114cf9291906132c0565b60405160208183030381529060405290505f6114ea8261206f565b905061150781856114fa8861215c565b6115026121d3565b6122a0565b6115235760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f5f51602061359c5f395f51905f526115448484610ce5565b1561123c575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e4565b6115ac61237e565b5f5160206135bc5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b61160d82611bf6565b335f82900361162f57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156116725760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093851683529290522054828110156116bb57604051639266535160e01b815260048101829052602401610fbc565b6001600160a01b038085165f908152600660209081526040808320938616835292905290812080548592906116f19084906132dc565b925050819055506040518060400160405280848152602001600854426117179190613296565b90526001600160a01b038086165f8181526007602090815260408083209488168352938152838220855181559481015160019095019490945590815260039092528120805485929061176a9084906132dc565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c8560405161118e91815260200190565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061183c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118305f51602061355c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cb35760405163703e46dd60e11b815260040160405180910390fd5b61186261124c565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016115f9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118f5575060408051601f3d908101601f191682019092526118f29181019061327f565b60015b61191d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610fbc565b5f51602061355c5f395f51905f52811461194d57604051632a87526960e21b815260048101829052602401610fbc565b610c3783836123ad565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb35760405163703e46dd60e11b815260040160405180910390fd5b336119aa81611bf6565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546119dc9042613296565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611aa6610fce565b5f5160206135bc5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336115e5565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b2b57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611b7357604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254611bae91168383611ef6565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051611be991815260200190565b60405180910390a2505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611c2757611c27613112565b03611c455760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611c5957611c59613112565b036107fc5760405163eab4a96360e01b815260040160405180910390fd5b611c7f611ec0565b610a2b81612402565b5f5160206135dc5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611cb95750825b90505f826001600160401b03166001148015611cd45750303b155b905081158015611ce2575080155b15611d005760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d2a57845460ff60401b1916600160401b1785555b435f558315611d7357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b038316611da15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216611dc85760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a80821015611e1b5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f511416151615611e7c5750833b153d17155b80611d735760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610fbc565b5f5160206135dc5f395f51905f5254600160401b900460ff16610cb357604051631afcd79f60e31b815260040160405180910390fd5b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615611f405750823b153d17155b80610a6a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610fbc565b611f898282610ce5565b6107fc5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610fbc565b805182515f91148015611fd2575081602001518360200151145b9392505050565b805160208201515f915f51602061353c5f395f51905f52911590151615611fff57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610c375760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e740000000000000000006044820152606401610fbc565b604080518082019091525f80825260208201525f61208c8361240a565b90505f51602061353c5f395f51905f5260035f82848509905082806120b3576120b36132ef565b848209905082806120c6576120c66132ef565b82820890505f5f6120d683612612565b925090505b8061213f5784806120ee576120ee6132ef565b6001870895508480612102576121026132ef565b86870992508480612115576121156132ef565b86840992508480612128576121286132ef565b848408925061213683612612565b925090506120db565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612183575090565b6040518060400160405280835f015181526020015f51602061353c5f395f51905f5284602001516121b49190613303565b6121cb905f51602061353c5f395f51905f526132dc565b905292915050565b6121fa60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806123725760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c656421000000006044820152606401610fbc565b50151595945050505050565b5f5160206135bc5f395f51905f525460ff16610cb357604051638dfc202b60e01b815260040160405180910390fd5b6123b682612709565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156123fa57610c37828261276c565b6107fc6127de565b610f97611ec0565b5f5f612415836127fd565b80519091506030811461242a5761242a613322565b5f816001600160401b0381111561244357612443612cc1565b6040519080825280601f01601f19166020018201604052801561246d576020820181803683370190505b5090505f5b828110156124dc5783600161248783866132dc565b61249191906132dc565b815181106124a1576124a1613336565b602001015160f81c60f81b8282815181106124be576124be613336565b60200101906001600160f81b03191690815f1a905350600101612472565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561256c57838161251885886132dc565b6125229190613296565b8151811061253257612532613336565b602001015160f81c60f81b60f81c82828151811061255257612552613336565b60ff90921660209283029190910190910152600101612504565b505f61257782612b48565b90506101005f51602061353c5f395f51905f525f61259586896132dc565b90505f5b81811015612602575f8860016125af84866132dc565b6125b991906132dc565b815181106125c9576125c9613336565b016020015160f81c905083806125e1576125e16132ef565b858709955083806125f4576125f46132ef565b818708955050600101612599565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f51602061353c5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f519250836126cf5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c65642100000000006044820152606401610fbc565b80600184901b11156126e8576126e583826132dc565b92505b80806126f6576126f66132ef565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361273e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610fbc565b5f51602061355c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612788919061334a565b5f60405180830381855af49150503d805f81146127c0576040519150601f19603f3d011682016040523d82523d5f602084013e6127c5565b606091505b50915091506127d5858383612ba8565b95945050505050565b3415610cb35760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161283d9291906132c0565b6040516020818303038152906040529050808460f81b604051602001612864929190613355565b604051602081830303815290604052905080604051602001612886919061337f565b60408051601f1981840301815290829052915061010160f01b906128b09083908390602001613397565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561291f5761291f612cc1565b6040519080825280601f01601f191660200182016040528015612949576020820181803683370190505b5090505f8260405160200161296091815260200190565b60408051601f1981840301815291905290505f5b81518110156129ca5781818151811061298f5761298f613336565b602001015160f81c60f81b8382815181106129ac576129ac613336565b60200101906001600160f81b03191690815f1a905350600101612974565b505f846040516020016129df91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612a71575f838281518110612a1857612a18613336565b602001015160f81c60f81b838381518110612a3557612a35613336565b602001015160f81c60f81b1890508881604051602001612a569291906133bb565b60408051601f198184030181529190529850506001016129fd565b50868887604051602001612a87939291906133df565b60405160208183030381529060405296508680519060200120935083604051602001612ab591815260200190565b60408051601f1981840301815291905291505f5b612ad68a60ff8d166132dc565b811015612b3757828181518110612aef57612aef613336565b01602001516001600160f81b03191684612b09838d613296565b81518110612b1957612b19613336565b60200101906001600160f81b03191690815f1a905350600101612ac9565b50919b9a5050505050505050505050565b5f80805b835181101561124557838181518110612b6757612b67613336565b602002602001015160ff16816008612b7f9190613412565b612b8a90600261350c565b612b949190613412565b612b9e9083613296565b9150600101612b4c565b606082612bbd57612bb882612bfd565b611fd2565b8151158015612bd457506001600160a01b0384163b155b1561124557604051639996b31560e01b81526001600160a01b0385166004820152602401610fbc565b805115612c0d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215612c36575f5ffd5b81356001600160e01b031981168114611fd2575f5ffd5b80356001600160a01b0381168114612c63575f5ffd5b919050565b5f5f60408385031215612c79575f5ffd5b612c8283612c4d565b946020939093013593505050565b5f5f60408385031215612ca1575f5ffd5b612caa83612c4d565b9150612cb860208401612c4d565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612cf757612cf7612cc1565b60405290565b5f60808284031215612d0d575f5ffd5b604051608081016001600160401b0381118282101715612d2f57612d2f612cc1565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215612d6d575f5ffd5b612d75612cd5565b823581526020928301359281019290925250919050565b803561ffff81168114612c63575f5ffd5b5f5f5f5f6101208587031215612db1575f5ffd5b612dbb8686612cfd565b9350612dca8660808701612d5d565b9250612dd98660c08701612d5d565b9150612de86101008601612d8c565b905092959194509250565b6001600160401b0381168114610a2b575f5ffd5b5f60208284031215612e17575f5ffd5b8135611fd281612df3565b5f60208284031215612e32575f5ffd5b611fd282612c4d565b5f60208284031215612e4b575f5ffd5b5035919050565b5f5f60408385031215612e63575f5ffd5b82359150612cb860208401612c4d565b5f82601f830112612e82575f5ffd5b81356001600160401b03811115612e9b57612e9b612cc1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612ec957612ec9612cc1565b604052818152838201602001851015612ee0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215612f11575f5ffd5b612f1b8787612cfd565b9450612f2a8760808801612d5d565b9350612f398760c08801612d5d565b92506101008601356001600160401b03811115612f54575f5ffd5b612f6088828901612e73565b925050612f706101208701612d8c565b90509295509295909350565b5f5f60408385031215612f8d575f5ffd5b612f9683612c4d565b915060208301356001600160401b03811115612fb0575f5ffd5b612fbc85828601612e73565b9150509250929050565b5f5f5f6101008486031215612fd9575f5ffd5b612fe38585612cfd565b9250612ff28560808601612d5d565b91506130018560c08601612d5d565b90509250925092565b5f6080828403121561301a575f5ffd5b611fd28383612cfd565b5f5f5f5f6101208587031215613038575f5ffd5b6130428686612cfd565b93506130518660808701612d5d565b92506130608660c08701612d5d565b91506101008501356001600160401b0381111561307b575f5ffd5b61308787828801612e73565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611fd26020830184613093565b5f5f5f5f608085870312156130e6575f5ffd5b6130ef85612c4d565b93506130fd60208601612c4d565b925060408501359150612de860608601612c4d565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061314957634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613166575f5ffd5b8151611fd281612df3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216029081169081811461124557611245613171565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f61320e610140830184613093565b979650505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f613275610120830184613093565b9695505050505050565b5f6020828403121561328f575f5ffd5b5051919050565b808201808211156107e4576107e4613171565b5f81518060208401855e5f93019283525090919050565b5f6132d46132ce83866132a9565b846132a9565b949350505050565b818103818111156107e4576107e4613171565b634e487b7160e01b5f52601260045260245ffd5b5f8261331d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611fd282846132a9565b5f61336082856132a9565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61338a82846132a9565b5f81526001019392505050565b5f6133a282856132a9565b6001600160f01b03199390931683525050600201919050565b5f6133c682856132a9565b6001600160f81b03199390931683525050600101919050565b5f6133ea82866132a9565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b80820281158282048414176107e4576107e4613171565b6001815b60018411156134645780850481111561344857613448613171565b600184161561345657908102905b60019390931c92800261342d565b935093915050565b5f8261347a575060016107e4565b8161348657505f6107e4565b816001811461349c57600281146134a6576134c2565b60019150506107e4565b60ff8411156134b7576134b7613171565b50506001821b6107e4565b5060208310610133831016604e8410600b84101617156134e5575081810a6107e4565b6134f15f198484613429565b805f190482111561350457613504613171565b029392505050565b5f611fd2838361346c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3176    /// ```
3177    #[rustfmt::skip]
3178    #[allow(clippy::all)]
3179    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3180        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,&V[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,hV[a\x07\xEAV[\0[4\x80\x15a\x02\x97W__\xFD[Pa\x02\x8Aa\x02\xA66`\x04a,\x90V[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-\x9DV[a\x08\xEDV[4\x80\x15a\x03\0W__\xFD[Pa\x02\x8Aa\x03\x0F6`\x04a.\x07V[a\t\x06V[4\x80\x15a\x03\x1FW__\xFD[Pa\x02\x8Aa\x03.6`\x04a.\"V[a\n\x1AV[4\x80\x15a\x03>W__\xFD[Pa\x03Ra\x03M6`\x04a.;V[a\n.V[`@Q\x90\x81R` \x01a\x02bV[4\x80\x15a\x03kW__\xFD[Pa\x02\x8Aa\x03z6`\x04a.RV[a\nNV[4\x80\x15a\x03\x8AW__\xFD[Pa\x02\x8Aa\x03\x996`\x04a.\xFCV[a\npV[4\x80\x15a\x03\xA9W__\xFD[Pa\x02\x8Aa\x03\xB86`\x04a.RV[a\x0C\x04V[4\x80\x15a\x03\xC8W__\xFD[Pa\x03R_T\x81V[4\x80\x15a\x03\xDCW__\xFD[Pa\x02\x8Aa\x0C<V[4\x80\x15a\x03\xF0W__\xFD[Pa\x02\x8Aa\x03\xFF6`\x04a,hV[a\x0C[V[a\x02\x8Aa\x04\x126`\x04a/|V[a\x0CmV[4\x80\x15a\x04\"W__\xFD[Pa\x03Ra\x0C\x88V[4\x80\x15a\x046W__\xFD[Pa\x02\x8Aa\x02\xF06`\x04a/\xC6V[4\x80\x15a\x04PW__\xFD[P_Q` a5\xBC_9_Q\x90_RT`\xFF\x16a\x02VV[4\x80\x15a\x04sW__\xFD[Pa\x02\x8Aa\x0C\xA3V[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x8Aa\x0C\xB5V[4\x80\x15a\x04\x9BW__\xFD[Pa\x02\x8Aa\x0C\xC6V[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.RV[a\x0C\xE5V[4\x80\x15a\x05\x1EW__\xFD[Pa\x03Ra\x05-6`\x04a0\nV[a\r\x1BV[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,\x90V[`\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.\"V[a\ruV[4\x80\x15a\x05\xD6W__\xFD[Pa\x02\x8Aa\x05\xE56`\x04a0$V[a\r\x86V[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\x90a0\xC1V[4\x80\x15a\x062W__\xFD[Pa\x02Va\x06A6`\x04a.;V[`\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.\"V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x06\xAAW__\xFD[Pa\x02\x8Aa\x06\xB96`\x04a0\xD3V[a\x0E\\V[4\x80\x15a\x06\xC9W__\xFD[Pa\x03Ra\x06\xD86`\x04a,\x90V[`\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.RV[a\x0FsV[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.\"V[a\x0F\x8FV[4\x80\x15a\x07]W__\xFD[Pa\x07\x87a\x07l6`\x04a.\"V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02b\x92\x91\x90a1&V[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\xCEV[a\x07\xFC\x82\x82a\x0F\xFEV[PPV[_Q` a5\xDC_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\x11\x9CV[a\x08\x87_\x84a\x11\xA4V[Pa\x08\x9F_Q` a5|_9_Q\x90_R\x85a\x11\xA4V[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\x12LV[`\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\x90a1VV[a\t\x84\x90`\x0Fa1\x85V[\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\xCEV[a\n+\x81a\x12\xA7V[PV[_\x90\x81R_Q` a5\x9C_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\nW\x82a\n.V[a\n`\x81a\x13\xC8V[a\nj\x83\x83a\x11\xA4V[PPPPV[a\nxa\x0F\xCEV[3a\n\x82\x81a\x13\xD2V[a\n\x8B\x85a\x14\x1FV[a\n\x94\x86a\x14ZV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\n\xC6\x81\x86\x89a\x14\x96V[\x83Q`@\x14a\n\xE8W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x0B\x0FW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x0B\x1D\x8Aa\r\x1BV[\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\x0BdWa\x0Bda1\x12V[\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\xAAWa\x0B\xAAa1\x12V[\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\xF3\x95\x94\x93\x92\x91\x90a1\xA7V[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0C-W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C7\x82\x82a\x15+V[PPPV[_Q` a5|_9_Q\x90_Ra\x0CS\x81a\x13\xC8V[a\n+a\x15\xA4V[a\x0Cca\x0F\xCEV[a\x07\xFC\x82\x82a\x16\x04V[a\x0Cua\x17\xB6V[a\x0C~\x82a\x18ZV[a\x07\xFC\x82\x82a\x18\x9BV[_a\x0C\x91a\x19WV[P_Q` a5\\_9_Q\x90_R\x90V[a\x0C\xABa\x0F\xCEV[a\x0C\xB3a\x19\xA0V[V[a\x0C\xBDa\x12LV[a\x0C\xB3_a\x1A.V[_Q` a5|_9_Q\x90_Ra\x0C\xDD\x81a\x13\xC8V[a\n+a\x1A\x9EV[_\x91\x82R_Q` a5\x9C_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\rX\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\r}a\x0F\xCEV[a\n+\x81a\x1A\xE6V[a\r\x8Ea\x0F\xCEV[3a\r\x98\x81a\x1B\xF6V[a\r\xA1\x84a\x14\x1FV[a\r\xAA\x85a\x14ZV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\xDC\x81\x85\x88a\x14\x96V[`\x01`\x04_a\r\xEA\x89a\r\x1BV[\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\x0EL\x94\x93\x92\x91\x90a2\x19V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a5\xDC_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\x8DWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xA8WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB6WP\x80\x15[\x15a\x0E\xD4W`@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\xFEW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x07\x86a\x1CwV[a\x0F\x0Fa\x11\x9CV[a\x0F\x17a\x1C\x88V[a\x0F\"\x89\x89\x89a\x1DzV[\x83\x15a\x0FhW\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\x0F|\x82a\n.V[a\x0F\x85\x81a\x13\xC8V[a\nj\x83\x83a\x15+V[a\x0F\x97a\x12LV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xC5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n+\x81a\x1A.V[_Q` a5\xBC_9_Q\x90_RT`\xFF\x16\x15a\x0C\xB3W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\x07\x82a\x1B\xF6V[3_\x82\x90\x03a\x10)W`@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\x10wW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x9B\x91\x90a2\x7FV[\x90P\x82\x81\x10\x15a\x10\xC8W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x0F\xBCV[`\x02Ta\x10\xE0\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x1E#V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x11\x07\x90\x84\x90a2\x96V[\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\x11B\x90\x84\x90a2\x96V[\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\x11\x8E\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0C\xB3a\x1E\xC0V[__Q` a5\x9C_9_Q\x90_Ra\x11\xBD\x84\x84a\x0C\xE5V[a\x12<W_\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\xF23\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\x12~\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\xB3W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0F\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x12\xE1W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13\x02W`@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\x13JW`@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\x13\x7F\x91\x16\x84\x83a\x1E\xF6V[\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\xBA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\n+\x813a\x1F\x7FV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x14\x01Wa\x14\x01a1\x12V[\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<\x82\x82a\x1F\xB8V[\x15a\x07\xFCW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x14f\x83a\r\x1BV[\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\x14\x9F\x82a\x1F\xD9V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a5\x18`$\x919\x90P_\x84\x82`@Q` \x01a\x14\xCF\x92\x91\x90a2\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x14\xEA\x82a oV[\x90Pa\x15\x07\x81\x85a\x14\xFA\x88a!\\V[a\x15\x02a!\xD3V[a\"\xA0V[a\x15#W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[__Q` a5\x9C_9_Q\x90_Ra\x15D\x84\x84a\x0C\xE5V[\x15a\x12<W_\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\xACa#~V[_Q` a5\xBC_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\x16\r\x82a\x1B\xF6V[3_\x82\x90\x03a\x16/W`@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\x16rW`@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\xBBW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\xBCV[`\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\xF1\x90\x84\x90a2\xDCV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x17\x17\x91\x90a2\x96V[\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\x17j\x90\x84\x90a2\xDCV[\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\x11\x8E\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<WP\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\x180_Q` a5\\_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xB3W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18ba\x12LV[`@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\xF9V[\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\xF5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xF2\x91\x81\x01\x90a2\x7FV[`\x01[a\x19\x1DW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[_Q` a5\\_9_Q\x90_R\x81\x14a\x19MW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F\xBCV[a\x0C7\x83\x83a#\xADV[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\xB3W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x19\xAA\x81a\x1B\xF6V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19\xDC\x90Ba2\x96V[`\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\xA6a\x0F\xCEV[_Q` a5\xBC_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\xE5V[`\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+W`@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\x1BsW`@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\xAE\x91\x16\x83\x83a\x1E\xF6V[\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\xE9\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\x1C'Wa\x1C'a1\x12V[\x03a\x1CEW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1CYWa\x1CYa1\x12V[\x03a\x07\xFCW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x7Fa\x1E\xC0V[a\n+\x81a$\x02V[_Q` a5\xDC_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1C\xB9WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1C\xD4WP0;\x15[\x90P\x81\x15\x80\x15a\x1C\xE2WP\x80\x15[\x15a\x1D\0W`@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*W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x1DsW\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\x1D\xA1W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1D\xC8W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`Z\x80\x82\x10\x15a\x1E\x1BW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[_`@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\x1DsW`@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\xBCV[_Q` a5\xDC_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xB3W`@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\x1F@WP\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\xBCV[a\x1F\x89\x82\x82a\x0C\xE5V[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\xBCV[\x80Q\x82Q_\x91\x14\x80\x15a\x1F\xD2WP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a5<_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x1F\xFFWPPPV[\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\x0C7W`@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\xBCV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a \x8C\x83a$\nV[\x90P_Q` a5<_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a \xB3Wa \xB3a2\xEFV[\x84\x82\t\x90P\x82\x80a \xC6Wa \xC6a2\xEFV[\x82\x82\x08\x90P__a \xD6\x83a&\x12V[\x92P\x90P[\x80a!?W\x84\x80a \xEEWa \xEEa2\xEFV[`\x01\x87\x08\x95P\x84\x80a!\x02Wa!\x02a2\xEFV[\x86\x87\t\x92P\x84\x80a!\x15Wa!\x15a2\xEFV[\x86\x84\t\x92P\x84\x80a!(Wa!(a2\xEFV[\x84\x84\x08\x92Pa!6\x83a&\x12V[\x92P\x90Pa \xDBV[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!\x83WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a5<_9_Q\x90_R\x84` \x01Qa!\xB4\x91\x90a3\x03V[a!\xCB\x90_Q` a5<_9_Q\x90_Ra2\xDCV[\x90R\x92\x91PPV[a!\xFA`@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#rW`@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\xBCV[P\x15\x15\x95\x94PPPPPV[_Q` a5\xBC_9_Q\x90_RT`\xFF\x16a\x0C\xB3W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xB6\x82a'\tV[`@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#\xFAWa\x0C7\x82\x82a'lV[a\x07\xFCa'\xDEV[a\x0F\x97a\x1E\xC0V[__a$\x15\x83a'\xFDV[\x80Q\x90\x91P`0\x81\x14a$*Wa$*a3\"V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a$CWa$Ca,\xC1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$mW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a$\xDCW\x83`\x01a$\x87\x83\x86a2\xDCV[a$\x91\x91\x90a2\xDCV[\x81Q\x81\x10a$\xA1Wa$\xA1a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a$\xBEWa$\xBEa36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a$rV[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%lW\x83\x81a%\x18\x85\x88a2\xDCV[a%\"\x91\x90a2\x96V[\x81Q\x81\x10a%2Wa%2a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a%RWa%Ra36V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a%\x04V[P_a%w\x82a+HV[\x90Pa\x01\0_Q` a5<_9_Q\x90_R_a%\x95\x86\x89a2\xDCV[\x90P_[\x81\x81\x10\x15a&\x02W_\x88`\x01a%\xAF\x84\x86a2\xDCV[a%\xB9\x91\x90a2\xDCV[\x81Q\x81\x10a%\xC9Wa%\xC9a36V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a%\xE1Wa%\xE1a2\xEFV[\x85\x87\t\x95P\x83\x80a%\xF4Wa%\xF4a2\xEFV[\x81\x87\x08\x95PP`\x01\x01a%\x99V[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` a5<_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&\xCFW`@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\xBCV[\x80`\x01\x84\x90\x1B\x11\x15a&\xE8Wa&\xE5\x83\x82a2\xDCV[\x92P[\x80\x80a&\xF6Wa&\xF6a2\xEFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'>W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[_Q` a5\\_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'\x88\x91\x90a3JV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a'\xC0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a'\xC5V[``\x91P[P\x91P\x91Pa'\xD5\x85\x83\x83a+\xA8V[\x95\x94PPPPPV[4\x15a\x0C\xB3W`@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(=\x92\x91\x90a2\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a(d\x92\x91\x90a3UV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a(\x86\x91\x90a3\x7FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a(\xB0\x90\x83\x90\x83\x90` \x01a3\x97V[`@\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)\x1FWa)\x1Fa,\xC1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)IW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a)`\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a)\xCAW\x81\x81\x81Q\x81\x10a)\x8FWa)\x8Fa36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a)\xACWa)\xACa36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a)tV[P_\x84`@Q` \x01a)\xDF\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*qW_\x83\x82\x81Q\x81\x10a*\x18Wa*\x18a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a*5Wa*5a36V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a*V\x92\x91\x90a3\xBBV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a)\xFDV[P\x86\x88\x87`@Q` \x01a*\x87\x93\x92\x91\x90a3\xDFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a*\xB5\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a*\xD6\x8A`\xFF\x8D\x16a2\xDCV[\x81\x10\x15a+7W\x82\x81\x81Q\x81\x10a*\xEFWa*\xEFa36V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a+\t\x83\x8Da2\x96V[\x81Q\x81\x10a+\x19Wa+\x19a36V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*\xC9V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x12EW\x83\x81\x81Q\x81\x10a+gWa+ga36V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a+\x7F\x91\x90a4\x12V[a+\x8A\x90`\x02a5\x0CV[a+\x94\x91\x90a4\x12V[a+\x9E\x90\x83a2\x96V[\x91P`\x01\x01a+LV[``\x82a+\xBDWa+\xB8\x82a+\xFDV[a\x1F\xD2V[\x81Q\x15\x80\x15a+\xD4WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x12EW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F\xBCV[\x80Q\x15a,\rW\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,6W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1F\xD2W__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a,cW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a,yW__\xFD[a,\x82\x83a,MV[\x94` \x93\x90\x93\x015\x93PPPV[__`@\x83\x85\x03\x12\x15a,\xA1W__\xFD[a,\xAA\x83a,MV[\x91Pa,\xB8` \x84\x01a,MV[\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,\xF7Wa,\xF7a,\xC1V[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a-\rW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-/Wa-/a,\xC1V[`@\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-mW__\xFD[a-ua,\xD5V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a,cW__\xFD[____a\x01 \x85\x87\x03\x12\x15a-\xB1W__\xFD[a-\xBB\x86\x86a,\xFDV[\x93Pa-\xCA\x86`\x80\x87\x01a-]V[\x92Pa-\xD9\x86`\xC0\x87\x01a-]V[\x91Pa-\xE8a\x01\0\x86\x01a-\x8CV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\n+W__\xFD[_` \x82\x84\x03\x12\x15a.\x17W__\xFD[\x815a\x1F\xD2\x81a-\xF3V[_` \x82\x84\x03\x12\x15a.2W__\xFD[a\x1F\xD2\x82a,MV[_` \x82\x84\x03\x12\x15a.KW__\xFD[P5\x91\x90PV[__`@\x83\x85\x03\x12\x15a.cW__\xFD[\x825\x91Pa,\xB8` \x84\x01a,MV[_\x82`\x1F\x83\x01\x12a.\x82W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9BWa.\x9Ba,\xC1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xC9Wa.\xC9a,\xC1V[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a.\xE0W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a/\x11W__\xFD[a/\x1B\x87\x87a,\xFDV[\x94Pa/*\x87`\x80\x88\x01a-]V[\x93Pa/9\x87`\xC0\x88\x01a-]V[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/TW__\xFD[a/`\x88\x82\x89\x01a.sV[\x92PPa/pa\x01 \x87\x01a-\x8CV[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a/\x8DW__\xFD[a/\x96\x83a,MV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xB0W__\xFD[a/\xBC\x85\x82\x86\x01a.sV[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a/\xD9W__\xFD[a/\xE3\x85\x85a,\xFDV[\x92Pa/\xF2\x85`\x80\x86\x01a-]V[\x91Pa0\x01\x85`\xC0\x86\x01a-]V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a0\x1AW__\xFD[a\x1F\xD2\x83\x83a,\xFDV[____a\x01 \x85\x87\x03\x12\x15a08W__\xFD[a0B\x86\x86a,\xFDV[\x93Pa0Q\x86`\x80\x87\x01a-]V[\x92Pa0`\x86`\xC0\x87\x01a-]V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0{W__\xFD[a0\x87\x87\x82\x88\x01a.sV[\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\xD2` \x83\x01\x84a0\x93V[____`\x80\x85\x87\x03\x12\x15a0\xE6W__\xFD[a0\xEF\x85a,MV[\x93Pa0\xFD` \x86\x01a,MV[\x92P`@\x85\x015\x91Pa-\xE8``\x86\x01a,MV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a1IWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a1fW__\xFD[\x81Qa\x1F\xD2\x81a-\xF3V[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\x12EWa\x12Ea1qV[\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_a2\x0Ea\x01@\x83\x01\x84a0\x93V[\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_a2ua\x01 \x83\x01\x84a0\x93V[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a2\x8FW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x07\xE4Wa\x07\xE4a1qV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\xD4a2\xCE\x83\x86a2\xA9V[\x84a2\xA9V[\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x07\xE4Wa\x07\xE4a1qV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a3\x1DWcNH{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\xD2\x82\x84a2\xA9V[_a3`\x82\x85a2\xA9V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a3\x8A\x82\x84a2\xA9V[_\x81R`\x01\x01\x93\x92PPPV[_a3\xA2\x82\x85a2\xA9V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a3\xC6\x82\x85a2\xA9V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a3\xEA\x82\x86a2\xA9V[`\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\xE4a1qV[`\x01\x81[`\x01\x84\x11\x15a4dW\x80\x85\x04\x81\x11\x15a4HWa4Ha1qV[`\x01\x84\x16\x15a4VW\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a4-V[\x93P\x93\x91PPV[_\x82a4zWP`\x01a\x07\xE4V[\x81a4\x86WP_a\x07\xE4V[\x81`\x01\x81\x14a4\x9CW`\x02\x81\x14a4\xA6Wa4\xC2V[`\x01\x91PPa\x07\xE4V[`\xFF\x84\x11\x15a4\xB7Wa4\xB7a1qV[PP`\x01\x82\x1Ba\x07\xE4V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a4\xE5WP\x81\x81\na\x07\xE4V[a4\xF1_\x19\x84\x84a4)V[\x80_\x19\x04\x82\x11\x15a5\x04Wa5\x04a1qV[\x02\x93\x92PPPV[_a\x1F\xD2\x83\x83a4lV\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",
3181    );
3182    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3183    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
3184```solidity
3185error AccessControlBadConfirmation();
3186```*/
3187    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3188    #[derive(Clone)]
3189    pub struct AccessControlBadConfirmation {}
3190    #[allow(
3191        non_camel_case_types,
3192        non_snake_case,
3193        clippy::pub_underscore_fields,
3194        clippy::style
3195    )]
3196    const _: () = {
3197        use alloy::sol_types as alloy_sol_types;
3198        #[doc(hidden)]
3199        type UnderlyingSolTuple<'a> = ();
3200        #[doc(hidden)]
3201        type UnderlyingRustTuple<'a> = ();
3202        #[cfg(test)]
3203        #[allow(dead_code, unreachable_patterns)]
3204        fn _type_assertion(
3205            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3206        ) {
3207            match _t {
3208                alloy_sol_types::private::AssertTypeEq::<
3209                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3210                >(_) => {}
3211            }
3212        }
3213        #[automatically_derived]
3214        #[doc(hidden)]
3215        impl ::core::convert::From<AccessControlBadConfirmation>
3216        for UnderlyingRustTuple<'_> {
3217            fn from(value: AccessControlBadConfirmation) -> Self {
3218                ()
3219            }
3220        }
3221        #[automatically_derived]
3222        #[doc(hidden)]
3223        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3224        for AccessControlBadConfirmation {
3225            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3226                Self {}
3227            }
3228        }
3229        #[automatically_derived]
3230        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
3231            type Parameters<'a> = UnderlyingSolTuple<'a>;
3232            type Token<'a> = <Self::Parameters<
3233                'a,
3234            > as alloy_sol_types::SolType>::Token<'a>;
3235            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
3236            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
3237            #[inline]
3238            fn new<'a>(
3239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3240            ) -> Self {
3241                tuple.into()
3242            }
3243            #[inline]
3244            fn tokenize(&self) -> Self::Token<'_> {
3245                ()
3246            }
3247        }
3248    };
3249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3250    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
3251```solidity
3252error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
3253```*/
3254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3255    #[derive(Clone)]
3256    pub struct AccessControlUnauthorizedAccount {
3257        #[allow(missing_docs)]
3258        pub account: alloy::sol_types::private::Address,
3259        #[allow(missing_docs)]
3260        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
3261    }
3262    #[allow(
3263        non_camel_case_types,
3264        non_snake_case,
3265        clippy::pub_underscore_fields,
3266        clippy::style
3267    )]
3268    const _: () = {
3269        use alloy::sol_types as alloy_sol_types;
3270        #[doc(hidden)]
3271        type UnderlyingSolTuple<'a> = (
3272            alloy::sol_types::sol_data::Address,
3273            alloy::sol_types::sol_data::FixedBytes<32>,
3274        );
3275        #[doc(hidden)]
3276        type UnderlyingRustTuple<'a> = (
3277            alloy::sol_types::private::Address,
3278            alloy::sol_types::private::FixedBytes<32>,
3279        );
3280        #[cfg(test)]
3281        #[allow(dead_code, unreachable_patterns)]
3282        fn _type_assertion(
3283            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3284        ) {
3285            match _t {
3286                alloy_sol_types::private::AssertTypeEq::<
3287                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3288                >(_) => {}
3289            }
3290        }
3291        #[automatically_derived]
3292        #[doc(hidden)]
3293        impl ::core::convert::From<AccessControlUnauthorizedAccount>
3294        for UnderlyingRustTuple<'_> {
3295            fn from(value: AccessControlUnauthorizedAccount) -> Self {
3296                (value.account, value.neededRole)
3297            }
3298        }
3299        #[automatically_derived]
3300        #[doc(hidden)]
3301        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3302        for AccessControlUnauthorizedAccount {
3303            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3304                Self {
3305                    account: tuple.0,
3306                    neededRole: tuple.1,
3307                }
3308            }
3309        }
3310        #[automatically_derived]
3311        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
3312            type Parameters<'a> = UnderlyingSolTuple<'a>;
3313            type Token<'a> = <Self::Parameters<
3314                'a,
3315            > as alloy_sol_types::SolType>::Token<'a>;
3316            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
3317            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
3318            #[inline]
3319            fn new<'a>(
3320                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3321            ) -> Self {
3322                tuple.into()
3323            }
3324            #[inline]
3325            fn tokenize(&self) -> Self::Token<'_> {
3326                (
3327                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3328                        &self.account,
3329                    ),
3330                    <alloy::sol_types::sol_data::FixedBytes<
3331                        32,
3332                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
3333                )
3334            }
3335        }
3336    };
3337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3338    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
3339```solidity
3340error AddressEmptyCode(address target);
3341```*/
3342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3343    #[derive(Clone)]
3344    pub struct AddressEmptyCode {
3345        #[allow(missing_docs)]
3346        pub target: alloy::sol_types::private::Address,
3347    }
3348    #[allow(
3349        non_camel_case_types,
3350        non_snake_case,
3351        clippy::pub_underscore_fields,
3352        clippy::style
3353    )]
3354    const _: () = {
3355        use alloy::sol_types as alloy_sol_types;
3356        #[doc(hidden)]
3357        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3358        #[doc(hidden)]
3359        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3360        #[cfg(test)]
3361        #[allow(dead_code, unreachable_patterns)]
3362        fn _type_assertion(
3363            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3364        ) {
3365            match _t {
3366                alloy_sol_types::private::AssertTypeEq::<
3367                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3368                >(_) => {}
3369            }
3370        }
3371        #[automatically_derived]
3372        #[doc(hidden)]
3373        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
3374            fn from(value: AddressEmptyCode) -> Self {
3375                (value.target,)
3376            }
3377        }
3378        #[automatically_derived]
3379        #[doc(hidden)]
3380        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
3381            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3382                Self { target: tuple.0 }
3383            }
3384        }
3385        #[automatically_derived]
3386        impl alloy_sol_types::SolError for AddressEmptyCode {
3387            type Parameters<'a> = UnderlyingSolTuple<'a>;
3388            type Token<'a> = <Self::Parameters<
3389                'a,
3390            > as alloy_sol_types::SolType>::Token<'a>;
3391            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
3392            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
3393            #[inline]
3394            fn new<'a>(
3395                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3396            ) -> Self {
3397                tuple.into()
3398            }
3399            #[inline]
3400            fn tokenize(&self) -> Self::Token<'_> {
3401                (
3402                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3403                        &self.target,
3404                    ),
3405                )
3406            }
3407        }
3408    };
3409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3410    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
3411```solidity
3412error BLSSigVerificationFailed();
3413```*/
3414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3415    #[derive(Clone)]
3416    pub struct BLSSigVerificationFailed {}
3417    #[allow(
3418        non_camel_case_types,
3419        non_snake_case,
3420        clippy::pub_underscore_fields,
3421        clippy::style
3422    )]
3423    const _: () = {
3424        use alloy::sol_types as alloy_sol_types;
3425        #[doc(hidden)]
3426        type UnderlyingSolTuple<'a> = ();
3427        #[doc(hidden)]
3428        type UnderlyingRustTuple<'a> = ();
3429        #[cfg(test)]
3430        #[allow(dead_code, unreachable_patterns)]
3431        fn _type_assertion(
3432            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3433        ) {
3434            match _t {
3435                alloy_sol_types::private::AssertTypeEq::<
3436                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3437                >(_) => {}
3438            }
3439        }
3440        #[automatically_derived]
3441        #[doc(hidden)]
3442        impl ::core::convert::From<BLSSigVerificationFailed>
3443        for UnderlyingRustTuple<'_> {
3444            fn from(value: BLSSigVerificationFailed) -> Self {
3445                ()
3446            }
3447        }
3448        #[automatically_derived]
3449        #[doc(hidden)]
3450        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3451        for BLSSigVerificationFailed {
3452            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3453                Self {}
3454            }
3455        }
3456        #[automatically_derived]
3457        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
3458            type Parameters<'a> = UnderlyingSolTuple<'a>;
3459            type Token<'a> = <Self::Parameters<
3460                'a,
3461            > as alloy_sol_types::SolType>::Token<'a>;
3462            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
3463            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
3464            #[inline]
3465            fn new<'a>(
3466                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3467            ) -> Self {
3468                tuple.into()
3469            }
3470            #[inline]
3471            fn tokenize(&self) -> Self::Token<'_> {
3472                ()
3473            }
3474        }
3475    };
3476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3477    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
3478```solidity
3479error BlsKeyAlreadyUsed();
3480```*/
3481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3482    #[derive(Clone)]
3483    pub struct BlsKeyAlreadyUsed {}
3484    #[allow(
3485        non_camel_case_types,
3486        non_snake_case,
3487        clippy::pub_underscore_fields,
3488        clippy::style
3489    )]
3490    const _: () = {
3491        use alloy::sol_types as alloy_sol_types;
3492        #[doc(hidden)]
3493        type UnderlyingSolTuple<'a> = ();
3494        #[doc(hidden)]
3495        type UnderlyingRustTuple<'a> = ();
3496        #[cfg(test)]
3497        #[allow(dead_code, unreachable_patterns)]
3498        fn _type_assertion(
3499            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3500        ) {
3501            match _t {
3502                alloy_sol_types::private::AssertTypeEq::<
3503                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3504                >(_) => {}
3505            }
3506        }
3507        #[automatically_derived]
3508        #[doc(hidden)]
3509        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
3510            fn from(value: BlsKeyAlreadyUsed) -> Self {
3511                ()
3512            }
3513        }
3514        #[automatically_derived]
3515        #[doc(hidden)]
3516        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
3517            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3518                Self {}
3519            }
3520        }
3521        #[automatically_derived]
3522        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
3523            type Parameters<'a> = UnderlyingSolTuple<'a>;
3524            type Token<'a> = <Self::Parameters<
3525                'a,
3526            > as alloy_sol_types::SolType>::Token<'a>;
3527            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
3528            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
3529            #[inline]
3530            fn new<'a>(
3531                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3532            ) -> Self {
3533                tuple.into()
3534            }
3535            #[inline]
3536            fn tokenize(&self) -> Self::Token<'_> {
3537                ()
3538            }
3539        }
3540    };
3541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3542    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
3543```solidity
3544error DeprecatedFunction();
3545```*/
3546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3547    #[derive(Clone)]
3548    pub struct DeprecatedFunction {}
3549    #[allow(
3550        non_camel_case_types,
3551        non_snake_case,
3552        clippy::pub_underscore_fields,
3553        clippy::style
3554    )]
3555    const _: () = {
3556        use alloy::sol_types as alloy_sol_types;
3557        #[doc(hidden)]
3558        type UnderlyingSolTuple<'a> = ();
3559        #[doc(hidden)]
3560        type UnderlyingRustTuple<'a> = ();
3561        #[cfg(test)]
3562        #[allow(dead_code, unreachable_patterns)]
3563        fn _type_assertion(
3564            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3565        ) {
3566            match _t {
3567                alloy_sol_types::private::AssertTypeEq::<
3568                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3569                >(_) => {}
3570            }
3571        }
3572        #[automatically_derived]
3573        #[doc(hidden)]
3574        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
3575            fn from(value: DeprecatedFunction) -> Self {
3576                ()
3577            }
3578        }
3579        #[automatically_derived]
3580        #[doc(hidden)]
3581        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
3582            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3583                Self {}
3584            }
3585        }
3586        #[automatically_derived]
3587        impl alloy_sol_types::SolError for DeprecatedFunction {
3588            type Parameters<'a> = UnderlyingSolTuple<'a>;
3589            type Token<'a> = <Self::Parameters<
3590                'a,
3591            > as alloy_sol_types::SolType>::Token<'a>;
3592            const SIGNATURE: &'static str = "DeprecatedFunction()";
3593            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
3594            #[inline]
3595            fn new<'a>(
3596                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3597            ) -> Self {
3598                tuple.into()
3599            }
3600            #[inline]
3601            fn tokenize(&self) -> Self::Token<'_> {
3602                ()
3603            }
3604        }
3605    };
3606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3607    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
3608```solidity
3609error ERC1967InvalidImplementation(address implementation);
3610```*/
3611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3612    #[derive(Clone)]
3613    pub struct ERC1967InvalidImplementation {
3614        #[allow(missing_docs)]
3615        pub implementation: alloy::sol_types::private::Address,
3616    }
3617    #[allow(
3618        non_camel_case_types,
3619        non_snake_case,
3620        clippy::pub_underscore_fields,
3621        clippy::style
3622    )]
3623    const _: () = {
3624        use alloy::sol_types as alloy_sol_types;
3625        #[doc(hidden)]
3626        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3627        #[doc(hidden)]
3628        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3629        #[cfg(test)]
3630        #[allow(dead_code, unreachable_patterns)]
3631        fn _type_assertion(
3632            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3633        ) {
3634            match _t {
3635                alloy_sol_types::private::AssertTypeEq::<
3636                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3637                >(_) => {}
3638            }
3639        }
3640        #[automatically_derived]
3641        #[doc(hidden)]
3642        impl ::core::convert::From<ERC1967InvalidImplementation>
3643        for UnderlyingRustTuple<'_> {
3644            fn from(value: ERC1967InvalidImplementation) -> Self {
3645                (value.implementation,)
3646            }
3647        }
3648        #[automatically_derived]
3649        #[doc(hidden)]
3650        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3651        for ERC1967InvalidImplementation {
3652            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3653                Self { implementation: tuple.0 }
3654            }
3655        }
3656        #[automatically_derived]
3657        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
3658            type Parameters<'a> = UnderlyingSolTuple<'a>;
3659            type Token<'a> = <Self::Parameters<
3660                'a,
3661            > as alloy_sol_types::SolType>::Token<'a>;
3662            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
3663            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
3664            #[inline]
3665            fn new<'a>(
3666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3667            ) -> Self {
3668                tuple.into()
3669            }
3670            #[inline]
3671            fn tokenize(&self) -> Self::Token<'_> {
3672                (
3673                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3674                        &self.implementation,
3675                    ),
3676                )
3677            }
3678        }
3679    };
3680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3681    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
3682```solidity
3683error ERC1967NonPayable();
3684```*/
3685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3686    #[derive(Clone)]
3687    pub struct ERC1967NonPayable {}
3688    #[allow(
3689        non_camel_case_types,
3690        non_snake_case,
3691        clippy::pub_underscore_fields,
3692        clippy::style
3693    )]
3694    const _: () = {
3695        use alloy::sol_types as alloy_sol_types;
3696        #[doc(hidden)]
3697        type UnderlyingSolTuple<'a> = ();
3698        #[doc(hidden)]
3699        type UnderlyingRustTuple<'a> = ();
3700        #[cfg(test)]
3701        #[allow(dead_code, unreachable_patterns)]
3702        fn _type_assertion(
3703            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3704        ) {
3705            match _t {
3706                alloy_sol_types::private::AssertTypeEq::<
3707                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3708                >(_) => {}
3709            }
3710        }
3711        #[automatically_derived]
3712        #[doc(hidden)]
3713        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
3714            fn from(value: ERC1967NonPayable) -> Self {
3715                ()
3716            }
3717        }
3718        #[automatically_derived]
3719        #[doc(hidden)]
3720        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
3721            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3722                Self {}
3723            }
3724        }
3725        #[automatically_derived]
3726        impl alloy_sol_types::SolError for ERC1967NonPayable {
3727            type Parameters<'a> = UnderlyingSolTuple<'a>;
3728            type Token<'a> = <Self::Parameters<
3729                'a,
3730            > as alloy_sol_types::SolType>::Token<'a>;
3731            const SIGNATURE: &'static str = "ERC1967NonPayable()";
3732            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
3733            #[inline]
3734            fn new<'a>(
3735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3736            ) -> Self {
3737                tuple.into()
3738            }
3739            #[inline]
3740            fn tokenize(&self) -> Self::Token<'_> {
3741                ()
3742            }
3743        }
3744    };
3745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3746    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
3747```solidity
3748error EnforcedPause();
3749```*/
3750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3751    #[derive(Clone)]
3752    pub struct EnforcedPause {}
3753    #[allow(
3754        non_camel_case_types,
3755        non_snake_case,
3756        clippy::pub_underscore_fields,
3757        clippy::style
3758    )]
3759    const _: () = {
3760        use alloy::sol_types as alloy_sol_types;
3761        #[doc(hidden)]
3762        type UnderlyingSolTuple<'a> = ();
3763        #[doc(hidden)]
3764        type UnderlyingRustTuple<'a> = ();
3765        #[cfg(test)]
3766        #[allow(dead_code, unreachable_patterns)]
3767        fn _type_assertion(
3768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3769        ) {
3770            match _t {
3771                alloy_sol_types::private::AssertTypeEq::<
3772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3773                >(_) => {}
3774            }
3775        }
3776        #[automatically_derived]
3777        #[doc(hidden)]
3778        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
3779            fn from(value: EnforcedPause) -> Self {
3780                ()
3781            }
3782        }
3783        #[automatically_derived]
3784        #[doc(hidden)]
3785        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
3786            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3787                Self {}
3788            }
3789        }
3790        #[automatically_derived]
3791        impl alloy_sol_types::SolError for EnforcedPause {
3792            type Parameters<'a> = UnderlyingSolTuple<'a>;
3793            type Token<'a> = <Self::Parameters<
3794                'a,
3795            > as alloy_sol_types::SolType>::Token<'a>;
3796            const SIGNATURE: &'static str = "EnforcedPause()";
3797            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
3798            #[inline]
3799            fn new<'a>(
3800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3801            ) -> Self {
3802                tuple.into()
3803            }
3804            #[inline]
3805            fn tokenize(&self) -> Self::Token<'_> {
3806                ()
3807            }
3808        }
3809    };
3810    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3811    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
3812```solidity
3813error ExitEscrowPeriodInvalid();
3814```*/
3815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3816    #[derive(Clone)]
3817    pub struct ExitEscrowPeriodInvalid {}
3818    #[allow(
3819        non_camel_case_types,
3820        non_snake_case,
3821        clippy::pub_underscore_fields,
3822        clippy::style
3823    )]
3824    const _: () = {
3825        use alloy::sol_types as alloy_sol_types;
3826        #[doc(hidden)]
3827        type UnderlyingSolTuple<'a> = ();
3828        #[doc(hidden)]
3829        type UnderlyingRustTuple<'a> = ();
3830        #[cfg(test)]
3831        #[allow(dead_code, unreachable_patterns)]
3832        fn _type_assertion(
3833            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3834        ) {
3835            match _t {
3836                alloy_sol_types::private::AssertTypeEq::<
3837                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3838                >(_) => {}
3839            }
3840        }
3841        #[automatically_derived]
3842        #[doc(hidden)]
3843        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
3844            fn from(value: ExitEscrowPeriodInvalid) -> Self {
3845                ()
3846            }
3847        }
3848        #[automatically_derived]
3849        #[doc(hidden)]
3850        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
3851            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3852                Self {}
3853            }
3854        }
3855        #[automatically_derived]
3856        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
3857            type Parameters<'a> = UnderlyingSolTuple<'a>;
3858            type Token<'a> = <Self::Parameters<
3859                'a,
3860            > as alloy_sol_types::SolType>::Token<'a>;
3861            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
3862            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
3863            #[inline]
3864            fn new<'a>(
3865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3866            ) -> Self {
3867                tuple.into()
3868            }
3869            #[inline]
3870            fn tokenize(&self) -> Self::Token<'_> {
3871                ()
3872            }
3873        }
3874    };
3875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3876    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
3877```solidity
3878error ExpectedPause();
3879```*/
3880    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3881    #[derive(Clone)]
3882    pub struct ExpectedPause {}
3883    #[allow(
3884        non_camel_case_types,
3885        non_snake_case,
3886        clippy::pub_underscore_fields,
3887        clippy::style
3888    )]
3889    const _: () = {
3890        use alloy::sol_types as alloy_sol_types;
3891        #[doc(hidden)]
3892        type UnderlyingSolTuple<'a> = ();
3893        #[doc(hidden)]
3894        type UnderlyingRustTuple<'a> = ();
3895        #[cfg(test)]
3896        #[allow(dead_code, unreachable_patterns)]
3897        fn _type_assertion(
3898            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3899        ) {
3900            match _t {
3901                alloy_sol_types::private::AssertTypeEq::<
3902                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3903                >(_) => {}
3904            }
3905        }
3906        #[automatically_derived]
3907        #[doc(hidden)]
3908        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
3909            fn from(value: ExpectedPause) -> Self {
3910                ()
3911            }
3912        }
3913        #[automatically_derived]
3914        #[doc(hidden)]
3915        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
3916            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3917                Self {}
3918            }
3919        }
3920        #[automatically_derived]
3921        impl alloy_sol_types::SolError for ExpectedPause {
3922            type Parameters<'a> = UnderlyingSolTuple<'a>;
3923            type Token<'a> = <Self::Parameters<
3924                'a,
3925            > as alloy_sol_types::SolType>::Token<'a>;
3926            const SIGNATURE: &'static str = "ExpectedPause()";
3927            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
3928            #[inline]
3929            fn new<'a>(
3930                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3931            ) -> Self {
3932                tuple.into()
3933            }
3934            #[inline]
3935            fn tokenize(&self) -> Self::Token<'_> {
3936                ()
3937            }
3938        }
3939    };
3940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3941    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
3942```solidity
3943error FailedInnerCall();
3944```*/
3945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3946    #[derive(Clone)]
3947    pub struct FailedInnerCall {}
3948    #[allow(
3949        non_camel_case_types,
3950        non_snake_case,
3951        clippy::pub_underscore_fields,
3952        clippy::style
3953    )]
3954    const _: () = {
3955        use alloy::sol_types as alloy_sol_types;
3956        #[doc(hidden)]
3957        type UnderlyingSolTuple<'a> = ();
3958        #[doc(hidden)]
3959        type UnderlyingRustTuple<'a> = ();
3960        #[cfg(test)]
3961        #[allow(dead_code, unreachable_patterns)]
3962        fn _type_assertion(
3963            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3964        ) {
3965            match _t {
3966                alloy_sol_types::private::AssertTypeEq::<
3967                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3968                >(_) => {}
3969            }
3970        }
3971        #[automatically_derived]
3972        #[doc(hidden)]
3973        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
3974            fn from(value: FailedInnerCall) -> Self {
3975                ()
3976            }
3977        }
3978        #[automatically_derived]
3979        #[doc(hidden)]
3980        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
3981            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3982                Self {}
3983            }
3984        }
3985        #[automatically_derived]
3986        impl alloy_sol_types::SolError for FailedInnerCall {
3987            type Parameters<'a> = UnderlyingSolTuple<'a>;
3988            type Token<'a> = <Self::Parameters<
3989                'a,
3990            > as alloy_sol_types::SolType>::Token<'a>;
3991            const SIGNATURE: &'static str = "FailedInnerCall()";
3992            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
3993            #[inline]
3994            fn new<'a>(
3995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3996            ) -> Self {
3997                tuple.into()
3998            }
3999            #[inline]
4000            fn tokenize(&self) -> Self::Token<'_> {
4001                ()
4002            }
4003        }
4004    };
4005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4006    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
4007```solidity
4008error InsufficientAllowance(uint256, uint256);
4009```*/
4010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4011    #[derive(Clone)]
4012    pub struct InsufficientAllowance {
4013        #[allow(missing_docs)]
4014        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4015        #[allow(missing_docs)]
4016        pub _1: alloy::sol_types::private::primitives::aliases::U256,
4017    }
4018    #[allow(
4019        non_camel_case_types,
4020        non_snake_case,
4021        clippy::pub_underscore_fields,
4022        clippy::style
4023    )]
4024    const _: () = {
4025        use alloy::sol_types as alloy_sol_types;
4026        #[doc(hidden)]
4027        type UnderlyingSolTuple<'a> = (
4028            alloy::sol_types::sol_data::Uint<256>,
4029            alloy::sol_types::sol_data::Uint<256>,
4030        );
4031        #[doc(hidden)]
4032        type UnderlyingRustTuple<'a> = (
4033            alloy::sol_types::private::primitives::aliases::U256,
4034            alloy::sol_types::private::primitives::aliases::U256,
4035        );
4036        #[cfg(test)]
4037        #[allow(dead_code, unreachable_patterns)]
4038        fn _type_assertion(
4039            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4040        ) {
4041            match _t {
4042                alloy_sol_types::private::AssertTypeEq::<
4043                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4044                >(_) => {}
4045            }
4046        }
4047        #[automatically_derived]
4048        #[doc(hidden)]
4049        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
4050            fn from(value: InsufficientAllowance) -> Self {
4051                (value._0, value._1)
4052            }
4053        }
4054        #[automatically_derived]
4055        #[doc(hidden)]
4056        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
4057            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4058                Self { _0: tuple.0, _1: tuple.1 }
4059            }
4060        }
4061        #[automatically_derived]
4062        impl alloy_sol_types::SolError for InsufficientAllowance {
4063            type Parameters<'a> = UnderlyingSolTuple<'a>;
4064            type Token<'a> = <Self::Parameters<
4065                'a,
4066            > as alloy_sol_types::SolType>::Token<'a>;
4067            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
4068            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
4069            #[inline]
4070            fn new<'a>(
4071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4072            ) -> Self {
4073                tuple.into()
4074            }
4075            #[inline]
4076            fn tokenize(&self) -> Self::Token<'_> {
4077                (
4078                    <alloy::sol_types::sol_data::Uint<
4079                        256,
4080                    > as alloy_sol_types::SolType>::tokenize(&self._0),
4081                    <alloy::sol_types::sol_data::Uint<
4082                        256,
4083                    > as alloy_sol_types::SolType>::tokenize(&self._1),
4084                )
4085            }
4086        }
4087    };
4088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4089    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
4090```solidity
4091error InsufficientBalance(uint256);
4092```*/
4093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4094    #[derive(Clone)]
4095    pub struct InsufficientBalance {
4096        #[allow(missing_docs)]
4097        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4098    }
4099    #[allow(
4100        non_camel_case_types,
4101        non_snake_case,
4102        clippy::pub_underscore_fields,
4103        clippy::style
4104    )]
4105    const _: () = {
4106        use alloy::sol_types as alloy_sol_types;
4107        #[doc(hidden)]
4108        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4109        #[doc(hidden)]
4110        type UnderlyingRustTuple<'a> = (
4111            alloy::sol_types::private::primitives::aliases::U256,
4112        );
4113        #[cfg(test)]
4114        #[allow(dead_code, unreachable_patterns)]
4115        fn _type_assertion(
4116            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4117        ) {
4118            match _t {
4119                alloy_sol_types::private::AssertTypeEq::<
4120                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4121                >(_) => {}
4122            }
4123        }
4124        #[automatically_derived]
4125        #[doc(hidden)]
4126        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
4127            fn from(value: InsufficientBalance) -> Self {
4128                (value._0,)
4129            }
4130        }
4131        #[automatically_derived]
4132        #[doc(hidden)]
4133        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
4134            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4135                Self { _0: tuple.0 }
4136            }
4137        }
4138        #[automatically_derived]
4139        impl alloy_sol_types::SolError for InsufficientBalance {
4140            type Parameters<'a> = UnderlyingSolTuple<'a>;
4141            type Token<'a> = <Self::Parameters<
4142                'a,
4143            > as alloy_sol_types::SolType>::Token<'a>;
4144            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
4145            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
4146            #[inline]
4147            fn new<'a>(
4148                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4149            ) -> Self {
4150                tuple.into()
4151            }
4152            #[inline]
4153            fn tokenize(&self) -> Self::Token<'_> {
4154                (
4155                    <alloy::sol_types::sol_data::Uint<
4156                        256,
4157                    > as alloy_sol_types::SolType>::tokenize(&self._0),
4158                )
4159            }
4160        }
4161    };
4162    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4163    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
4164```solidity
4165error InvalidCommission();
4166```*/
4167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4168    #[derive(Clone)]
4169    pub struct InvalidCommission {}
4170    #[allow(
4171        non_camel_case_types,
4172        non_snake_case,
4173        clippy::pub_underscore_fields,
4174        clippy::style
4175    )]
4176    const _: () = {
4177        use alloy::sol_types as alloy_sol_types;
4178        #[doc(hidden)]
4179        type UnderlyingSolTuple<'a> = ();
4180        #[doc(hidden)]
4181        type UnderlyingRustTuple<'a> = ();
4182        #[cfg(test)]
4183        #[allow(dead_code, unreachable_patterns)]
4184        fn _type_assertion(
4185            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4186        ) {
4187            match _t {
4188                alloy_sol_types::private::AssertTypeEq::<
4189                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4190                >(_) => {}
4191            }
4192        }
4193        #[automatically_derived]
4194        #[doc(hidden)]
4195        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
4196            fn from(value: InvalidCommission) -> Self {
4197                ()
4198            }
4199        }
4200        #[automatically_derived]
4201        #[doc(hidden)]
4202        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
4203            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4204                Self {}
4205            }
4206        }
4207        #[automatically_derived]
4208        impl alloy_sol_types::SolError for InvalidCommission {
4209            type Parameters<'a> = UnderlyingSolTuple<'a>;
4210            type Token<'a> = <Self::Parameters<
4211                'a,
4212            > as alloy_sol_types::SolType>::Token<'a>;
4213            const SIGNATURE: &'static str = "InvalidCommission()";
4214            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
4215            #[inline]
4216            fn new<'a>(
4217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4218            ) -> Self {
4219                tuple.into()
4220            }
4221            #[inline]
4222            fn tokenize(&self) -> Self::Token<'_> {
4223                ()
4224            }
4225        }
4226    };
4227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4228    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4229```solidity
4230error InvalidInitialization();
4231```*/
4232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4233    #[derive(Clone)]
4234    pub struct InvalidInitialization {}
4235    #[allow(
4236        non_camel_case_types,
4237        non_snake_case,
4238        clippy::pub_underscore_fields,
4239        clippy::style
4240    )]
4241    const _: () = {
4242        use alloy::sol_types as alloy_sol_types;
4243        #[doc(hidden)]
4244        type UnderlyingSolTuple<'a> = ();
4245        #[doc(hidden)]
4246        type UnderlyingRustTuple<'a> = ();
4247        #[cfg(test)]
4248        #[allow(dead_code, unreachable_patterns)]
4249        fn _type_assertion(
4250            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4251        ) {
4252            match _t {
4253                alloy_sol_types::private::AssertTypeEq::<
4254                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4255                >(_) => {}
4256            }
4257        }
4258        #[automatically_derived]
4259        #[doc(hidden)]
4260        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4261            fn from(value: InvalidInitialization) -> Self {
4262                ()
4263            }
4264        }
4265        #[automatically_derived]
4266        #[doc(hidden)]
4267        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4268            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4269                Self {}
4270            }
4271        }
4272        #[automatically_derived]
4273        impl alloy_sol_types::SolError for InvalidInitialization {
4274            type Parameters<'a> = UnderlyingSolTuple<'a>;
4275            type Token<'a> = <Self::Parameters<
4276                'a,
4277            > as alloy_sol_types::SolType>::Token<'a>;
4278            const SIGNATURE: &'static str = "InvalidInitialization()";
4279            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4280            #[inline]
4281            fn new<'a>(
4282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4283            ) -> Self {
4284                tuple.into()
4285            }
4286            #[inline]
4287            fn tokenize(&self) -> Self::Token<'_> {
4288                ()
4289            }
4290        }
4291    };
4292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4293    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
4294```solidity
4295error InvalidSchnorrSig();
4296```*/
4297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4298    #[derive(Clone)]
4299    pub struct InvalidSchnorrSig {}
4300    #[allow(
4301        non_camel_case_types,
4302        non_snake_case,
4303        clippy::pub_underscore_fields,
4304        clippy::style
4305    )]
4306    const _: () = {
4307        use alloy::sol_types as alloy_sol_types;
4308        #[doc(hidden)]
4309        type UnderlyingSolTuple<'a> = ();
4310        #[doc(hidden)]
4311        type UnderlyingRustTuple<'a> = ();
4312        #[cfg(test)]
4313        #[allow(dead_code, unreachable_patterns)]
4314        fn _type_assertion(
4315            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4316        ) {
4317            match _t {
4318                alloy_sol_types::private::AssertTypeEq::<
4319                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4320                >(_) => {}
4321            }
4322        }
4323        #[automatically_derived]
4324        #[doc(hidden)]
4325        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
4326            fn from(value: InvalidSchnorrSig) -> Self {
4327                ()
4328            }
4329        }
4330        #[automatically_derived]
4331        #[doc(hidden)]
4332        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
4333            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4334                Self {}
4335            }
4336        }
4337        #[automatically_derived]
4338        impl alloy_sol_types::SolError for InvalidSchnorrSig {
4339            type Parameters<'a> = UnderlyingSolTuple<'a>;
4340            type Token<'a> = <Self::Parameters<
4341                'a,
4342            > as alloy_sol_types::SolType>::Token<'a>;
4343            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
4344            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
4345            #[inline]
4346            fn new<'a>(
4347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4348            ) -> Self {
4349                tuple.into()
4350            }
4351            #[inline]
4352            fn tokenize(&self) -> Self::Token<'_> {
4353                ()
4354            }
4355        }
4356    };
4357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4358    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
4359```solidity
4360error InvalidSchnorrVK();
4361```*/
4362    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4363    #[derive(Clone)]
4364    pub struct InvalidSchnorrVK {}
4365    #[allow(
4366        non_camel_case_types,
4367        non_snake_case,
4368        clippy::pub_underscore_fields,
4369        clippy::style
4370    )]
4371    const _: () = {
4372        use alloy::sol_types as alloy_sol_types;
4373        #[doc(hidden)]
4374        type UnderlyingSolTuple<'a> = ();
4375        #[doc(hidden)]
4376        type UnderlyingRustTuple<'a> = ();
4377        #[cfg(test)]
4378        #[allow(dead_code, unreachable_patterns)]
4379        fn _type_assertion(
4380            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4381        ) {
4382            match _t {
4383                alloy_sol_types::private::AssertTypeEq::<
4384                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4385                >(_) => {}
4386            }
4387        }
4388        #[automatically_derived]
4389        #[doc(hidden)]
4390        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
4391            fn from(value: InvalidSchnorrVK) -> Self {
4392                ()
4393            }
4394        }
4395        #[automatically_derived]
4396        #[doc(hidden)]
4397        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
4398            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4399                Self {}
4400            }
4401        }
4402        #[automatically_derived]
4403        impl alloy_sol_types::SolError for InvalidSchnorrVK {
4404            type Parameters<'a> = UnderlyingSolTuple<'a>;
4405            type Token<'a> = <Self::Parameters<
4406                'a,
4407            > as alloy_sol_types::SolType>::Token<'a>;
4408            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
4409            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
4410            #[inline]
4411            fn new<'a>(
4412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4413            ) -> Self {
4414                tuple.into()
4415            }
4416            #[inline]
4417            fn tokenize(&self) -> Self::Token<'_> {
4418                ()
4419            }
4420        }
4421    };
4422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4423    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
4424```solidity
4425error NotInitializing();
4426```*/
4427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4428    #[derive(Clone)]
4429    pub struct NotInitializing {}
4430    #[allow(
4431        non_camel_case_types,
4432        non_snake_case,
4433        clippy::pub_underscore_fields,
4434        clippy::style
4435    )]
4436    const _: () = {
4437        use alloy::sol_types as alloy_sol_types;
4438        #[doc(hidden)]
4439        type UnderlyingSolTuple<'a> = ();
4440        #[doc(hidden)]
4441        type UnderlyingRustTuple<'a> = ();
4442        #[cfg(test)]
4443        #[allow(dead_code, unreachable_patterns)]
4444        fn _type_assertion(
4445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4446        ) {
4447            match _t {
4448                alloy_sol_types::private::AssertTypeEq::<
4449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4450                >(_) => {}
4451            }
4452        }
4453        #[automatically_derived]
4454        #[doc(hidden)]
4455        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
4456            fn from(value: NotInitializing) -> Self {
4457                ()
4458            }
4459        }
4460        #[automatically_derived]
4461        #[doc(hidden)]
4462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
4463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4464                Self {}
4465            }
4466        }
4467        #[automatically_derived]
4468        impl alloy_sol_types::SolError for NotInitializing {
4469            type Parameters<'a> = UnderlyingSolTuple<'a>;
4470            type Token<'a> = <Self::Parameters<
4471                'a,
4472            > as alloy_sol_types::SolType>::Token<'a>;
4473            const SIGNATURE: &'static str = "NotInitializing()";
4474            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
4475            #[inline]
4476            fn new<'a>(
4477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4478            ) -> Self {
4479                tuple.into()
4480            }
4481            #[inline]
4482            fn tokenize(&self) -> Self::Token<'_> {
4483                ()
4484            }
4485        }
4486    };
4487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4488    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
4489```solidity
4490error NothingToWithdraw();
4491```*/
4492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4493    #[derive(Clone)]
4494    pub struct NothingToWithdraw {}
4495    #[allow(
4496        non_camel_case_types,
4497        non_snake_case,
4498        clippy::pub_underscore_fields,
4499        clippy::style
4500    )]
4501    const _: () = {
4502        use alloy::sol_types as alloy_sol_types;
4503        #[doc(hidden)]
4504        type UnderlyingSolTuple<'a> = ();
4505        #[doc(hidden)]
4506        type UnderlyingRustTuple<'a> = ();
4507        #[cfg(test)]
4508        #[allow(dead_code, unreachable_patterns)]
4509        fn _type_assertion(
4510            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4511        ) {
4512            match _t {
4513                alloy_sol_types::private::AssertTypeEq::<
4514                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4515                >(_) => {}
4516            }
4517        }
4518        #[automatically_derived]
4519        #[doc(hidden)]
4520        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
4521            fn from(value: NothingToWithdraw) -> Self {
4522                ()
4523            }
4524        }
4525        #[automatically_derived]
4526        #[doc(hidden)]
4527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
4528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4529                Self {}
4530            }
4531        }
4532        #[automatically_derived]
4533        impl alloy_sol_types::SolError for NothingToWithdraw {
4534            type Parameters<'a> = UnderlyingSolTuple<'a>;
4535            type Token<'a> = <Self::Parameters<
4536                'a,
4537            > as alloy_sol_types::SolType>::Token<'a>;
4538            const SIGNATURE: &'static str = "NothingToWithdraw()";
4539            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
4540            #[inline]
4541            fn new<'a>(
4542                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4543            ) -> Self {
4544                tuple.into()
4545            }
4546            #[inline]
4547            fn tokenize(&self) -> Self::Token<'_> {
4548                ()
4549            }
4550        }
4551    };
4552    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4553    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
4554```solidity
4555error OwnableInvalidOwner(address owner);
4556```*/
4557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4558    #[derive(Clone)]
4559    pub struct OwnableInvalidOwner {
4560        #[allow(missing_docs)]
4561        pub owner: alloy::sol_types::private::Address,
4562    }
4563    #[allow(
4564        non_camel_case_types,
4565        non_snake_case,
4566        clippy::pub_underscore_fields,
4567        clippy::style
4568    )]
4569    const _: () = {
4570        use alloy::sol_types as alloy_sol_types;
4571        #[doc(hidden)]
4572        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4573        #[doc(hidden)]
4574        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4575        #[cfg(test)]
4576        #[allow(dead_code, unreachable_patterns)]
4577        fn _type_assertion(
4578            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4579        ) {
4580            match _t {
4581                alloy_sol_types::private::AssertTypeEq::<
4582                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4583                >(_) => {}
4584            }
4585        }
4586        #[automatically_derived]
4587        #[doc(hidden)]
4588        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
4589            fn from(value: OwnableInvalidOwner) -> Self {
4590                (value.owner,)
4591            }
4592        }
4593        #[automatically_derived]
4594        #[doc(hidden)]
4595        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
4596            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4597                Self { owner: tuple.0 }
4598            }
4599        }
4600        #[automatically_derived]
4601        impl alloy_sol_types::SolError for OwnableInvalidOwner {
4602            type Parameters<'a> = UnderlyingSolTuple<'a>;
4603            type Token<'a> = <Self::Parameters<
4604                'a,
4605            > as alloy_sol_types::SolType>::Token<'a>;
4606            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
4607            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
4608            #[inline]
4609            fn new<'a>(
4610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4611            ) -> Self {
4612                tuple.into()
4613            }
4614            #[inline]
4615            fn tokenize(&self) -> Self::Token<'_> {
4616                (
4617                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4618                        &self.owner,
4619                    ),
4620                )
4621            }
4622        }
4623    };
4624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4625    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
4626```solidity
4627error OwnableUnauthorizedAccount(address account);
4628```*/
4629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4630    #[derive(Clone)]
4631    pub struct OwnableUnauthorizedAccount {
4632        #[allow(missing_docs)]
4633        pub account: alloy::sol_types::private::Address,
4634    }
4635    #[allow(
4636        non_camel_case_types,
4637        non_snake_case,
4638        clippy::pub_underscore_fields,
4639        clippy::style
4640    )]
4641    const _: () = {
4642        use alloy::sol_types as alloy_sol_types;
4643        #[doc(hidden)]
4644        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4645        #[doc(hidden)]
4646        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4647        #[cfg(test)]
4648        #[allow(dead_code, unreachable_patterns)]
4649        fn _type_assertion(
4650            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4651        ) {
4652            match _t {
4653                alloy_sol_types::private::AssertTypeEq::<
4654                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4655                >(_) => {}
4656            }
4657        }
4658        #[automatically_derived]
4659        #[doc(hidden)]
4660        impl ::core::convert::From<OwnableUnauthorizedAccount>
4661        for UnderlyingRustTuple<'_> {
4662            fn from(value: OwnableUnauthorizedAccount) -> Self {
4663                (value.account,)
4664            }
4665        }
4666        #[automatically_derived]
4667        #[doc(hidden)]
4668        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4669        for OwnableUnauthorizedAccount {
4670            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4671                Self { account: tuple.0 }
4672            }
4673        }
4674        #[automatically_derived]
4675        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
4676            type Parameters<'a> = UnderlyingSolTuple<'a>;
4677            type Token<'a> = <Self::Parameters<
4678                'a,
4679            > as alloy_sol_types::SolType>::Token<'a>;
4680            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
4681            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
4682            #[inline]
4683            fn new<'a>(
4684                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4685            ) -> Self {
4686                tuple.into()
4687            }
4688            #[inline]
4689            fn tokenize(&self) -> Self::Token<'_> {
4690                (
4691                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4692                        &self.account,
4693                    ),
4694                )
4695            }
4696        }
4697    };
4698    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4699    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
4700```solidity
4701error PrematureWithdrawal();
4702```*/
4703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4704    #[derive(Clone)]
4705    pub struct PrematureWithdrawal {}
4706    #[allow(
4707        non_camel_case_types,
4708        non_snake_case,
4709        clippy::pub_underscore_fields,
4710        clippy::style
4711    )]
4712    const _: () = {
4713        use alloy::sol_types as alloy_sol_types;
4714        #[doc(hidden)]
4715        type UnderlyingSolTuple<'a> = ();
4716        #[doc(hidden)]
4717        type UnderlyingRustTuple<'a> = ();
4718        #[cfg(test)]
4719        #[allow(dead_code, unreachable_patterns)]
4720        fn _type_assertion(
4721            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4722        ) {
4723            match _t {
4724                alloy_sol_types::private::AssertTypeEq::<
4725                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4726                >(_) => {}
4727            }
4728        }
4729        #[automatically_derived]
4730        #[doc(hidden)]
4731        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
4732            fn from(value: PrematureWithdrawal) -> Self {
4733                ()
4734            }
4735        }
4736        #[automatically_derived]
4737        #[doc(hidden)]
4738        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
4739            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4740                Self {}
4741            }
4742        }
4743        #[automatically_derived]
4744        impl alloy_sol_types::SolError for PrematureWithdrawal {
4745            type Parameters<'a> = UnderlyingSolTuple<'a>;
4746            type Token<'a> = <Self::Parameters<
4747                'a,
4748            > as alloy_sol_types::SolType>::Token<'a>;
4749            const SIGNATURE: &'static str = "PrematureWithdrawal()";
4750            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
4751            #[inline]
4752            fn new<'a>(
4753                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4754            ) -> Self {
4755                tuple.into()
4756            }
4757            #[inline]
4758            fn tokenize(&self) -> Self::Token<'_> {
4759                ()
4760            }
4761        }
4762    };
4763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4764    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
4765```solidity
4766error UUPSUnauthorizedCallContext();
4767```*/
4768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4769    #[derive(Clone)]
4770    pub struct UUPSUnauthorizedCallContext {}
4771    #[allow(
4772        non_camel_case_types,
4773        non_snake_case,
4774        clippy::pub_underscore_fields,
4775        clippy::style
4776    )]
4777    const _: () = {
4778        use alloy::sol_types as alloy_sol_types;
4779        #[doc(hidden)]
4780        type UnderlyingSolTuple<'a> = ();
4781        #[doc(hidden)]
4782        type UnderlyingRustTuple<'a> = ();
4783        #[cfg(test)]
4784        #[allow(dead_code, unreachable_patterns)]
4785        fn _type_assertion(
4786            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4787        ) {
4788            match _t {
4789                alloy_sol_types::private::AssertTypeEq::<
4790                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4791                >(_) => {}
4792            }
4793        }
4794        #[automatically_derived]
4795        #[doc(hidden)]
4796        impl ::core::convert::From<UUPSUnauthorizedCallContext>
4797        for UnderlyingRustTuple<'_> {
4798            fn from(value: UUPSUnauthorizedCallContext) -> Self {
4799                ()
4800            }
4801        }
4802        #[automatically_derived]
4803        #[doc(hidden)]
4804        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4805        for UUPSUnauthorizedCallContext {
4806            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4807                Self {}
4808            }
4809        }
4810        #[automatically_derived]
4811        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4812            type Parameters<'a> = UnderlyingSolTuple<'a>;
4813            type Token<'a> = <Self::Parameters<
4814                'a,
4815            > as alloy_sol_types::SolType>::Token<'a>;
4816            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4817            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4818            #[inline]
4819            fn new<'a>(
4820                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4821            ) -> Self {
4822                tuple.into()
4823            }
4824            #[inline]
4825            fn tokenize(&self) -> Self::Token<'_> {
4826                ()
4827            }
4828        }
4829    };
4830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4831    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4832```solidity
4833error UUPSUnsupportedProxiableUUID(bytes32 slot);
4834```*/
4835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4836    #[derive(Clone)]
4837    pub struct UUPSUnsupportedProxiableUUID {
4838        #[allow(missing_docs)]
4839        pub slot: alloy::sol_types::private::FixedBytes<32>,
4840    }
4841    #[allow(
4842        non_camel_case_types,
4843        non_snake_case,
4844        clippy::pub_underscore_fields,
4845        clippy::style
4846    )]
4847    const _: () = {
4848        use alloy::sol_types as alloy_sol_types;
4849        #[doc(hidden)]
4850        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4851        #[doc(hidden)]
4852        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4853        #[cfg(test)]
4854        #[allow(dead_code, unreachable_patterns)]
4855        fn _type_assertion(
4856            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4857        ) {
4858            match _t {
4859                alloy_sol_types::private::AssertTypeEq::<
4860                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4861                >(_) => {}
4862            }
4863        }
4864        #[automatically_derived]
4865        #[doc(hidden)]
4866        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
4867        for UnderlyingRustTuple<'_> {
4868            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4869                (value.slot,)
4870            }
4871        }
4872        #[automatically_derived]
4873        #[doc(hidden)]
4874        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4875        for UUPSUnsupportedProxiableUUID {
4876            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4877                Self { slot: tuple.0 }
4878            }
4879        }
4880        #[automatically_derived]
4881        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4882            type Parameters<'a> = UnderlyingSolTuple<'a>;
4883            type Token<'a> = <Self::Parameters<
4884                'a,
4885            > as alloy_sol_types::SolType>::Token<'a>;
4886            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4887            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4888            #[inline]
4889            fn new<'a>(
4890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4891            ) -> Self {
4892                tuple.into()
4893            }
4894            #[inline]
4895            fn tokenize(&self) -> Self::Token<'_> {
4896                (
4897                    <alloy::sol_types::sol_data::FixedBytes<
4898                        32,
4899                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4900                )
4901            }
4902        }
4903    };
4904    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4905    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4906```solidity
4907error UndelegationAlreadyExists();
4908```*/
4909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4910    #[derive(Clone)]
4911    pub struct UndelegationAlreadyExists {}
4912    #[allow(
4913        non_camel_case_types,
4914        non_snake_case,
4915        clippy::pub_underscore_fields,
4916        clippy::style
4917    )]
4918    const _: () = {
4919        use alloy::sol_types as alloy_sol_types;
4920        #[doc(hidden)]
4921        type UnderlyingSolTuple<'a> = ();
4922        #[doc(hidden)]
4923        type UnderlyingRustTuple<'a> = ();
4924        #[cfg(test)]
4925        #[allow(dead_code, unreachable_patterns)]
4926        fn _type_assertion(
4927            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4928        ) {
4929            match _t {
4930                alloy_sol_types::private::AssertTypeEq::<
4931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4932                >(_) => {}
4933            }
4934        }
4935        #[automatically_derived]
4936        #[doc(hidden)]
4937        impl ::core::convert::From<UndelegationAlreadyExists>
4938        for UnderlyingRustTuple<'_> {
4939            fn from(value: UndelegationAlreadyExists) -> Self {
4940                ()
4941            }
4942        }
4943        #[automatically_derived]
4944        #[doc(hidden)]
4945        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4946        for UndelegationAlreadyExists {
4947            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4948                Self {}
4949            }
4950        }
4951        #[automatically_derived]
4952        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4953            type Parameters<'a> = UnderlyingSolTuple<'a>;
4954            type Token<'a> = <Self::Parameters<
4955                'a,
4956            > as alloy_sol_types::SolType>::Token<'a>;
4957            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4958            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4959            #[inline]
4960            fn new<'a>(
4961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4962            ) -> Self {
4963                tuple.into()
4964            }
4965            #[inline]
4966            fn tokenize(&self) -> Self::Token<'_> {
4967                ()
4968            }
4969        }
4970    };
4971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4972    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4973```solidity
4974error ValidatorAlreadyExited();
4975```*/
4976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4977    #[derive(Clone)]
4978    pub struct ValidatorAlreadyExited {}
4979    #[allow(
4980        non_camel_case_types,
4981        non_snake_case,
4982        clippy::pub_underscore_fields,
4983        clippy::style
4984    )]
4985    const _: () = {
4986        use alloy::sol_types as alloy_sol_types;
4987        #[doc(hidden)]
4988        type UnderlyingSolTuple<'a> = ();
4989        #[doc(hidden)]
4990        type UnderlyingRustTuple<'a> = ();
4991        #[cfg(test)]
4992        #[allow(dead_code, unreachable_patterns)]
4993        fn _type_assertion(
4994            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4995        ) {
4996            match _t {
4997                alloy_sol_types::private::AssertTypeEq::<
4998                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4999                >(_) => {}
5000            }
5001        }
5002        #[automatically_derived]
5003        #[doc(hidden)]
5004        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
5005            fn from(value: ValidatorAlreadyExited) -> Self {
5006                ()
5007            }
5008        }
5009        #[automatically_derived]
5010        #[doc(hidden)]
5011        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
5012            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5013                Self {}
5014            }
5015        }
5016        #[automatically_derived]
5017        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
5018            type Parameters<'a> = UnderlyingSolTuple<'a>;
5019            type Token<'a> = <Self::Parameters<
5020                'a,
5021            > as alloy_sol_types::SolType>::Token<'a>;
5022            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
5023            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
5024            #[inline]
5025            fn new<'a>(
5026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5027            ) -> Self {
5028                tuple.into()
5029            }
5030            #[inline]
5031            fn tokenize(&self) -> Self::Token<'_> {
5032                ()
5033            }
5034        }
5035    };
5036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5037    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
5038```solidity
5039error ValidatorAlreadyRegistered();
5040```*/
5041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5042    #[derive(Clone)]
5043    pub struct ValidatorAlreadyRegistered {}
5044    #[allow(
5045        non_camel_case_types,
5046        non_snake_case,
5047        clippy::pub_underscore_fields,
5048        clippy::style
5049    )]
5050    const _: () = {
5051        use alloy::sol_types as alloy_sol_types;
5052        #[doc(hidden)]
5053        type UnderlyingSolTuple<'a> = ();
5054        #[doc(hidden)]
5055        type UnderlyingRustTuple<'a> = ();
5056        #[cfg(test)]
5057        #[allow(dead_code, unreachable_patterns)]
5058        fn _type_assertion(
5059            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5060        ) {
5061            match _t {
5062                alloy_sol_types::private::AssertTypeEq::<
5063                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5064                >(_) => {}
5065            }
5066        }
5067        #[automatically_derived]
5068        #[doc(hidden)]
5069        impl ::core::convert::From<ValidatorAlreadyRegistered>
5070        for UnderlyingRustTuple<'_> {
5071            fn from(value: ValidatorAlreadyRegistered) -> Self {
5072                ()
5073            }
5074        }
5075        #[automatically_derived]
5076        #[doc(hidden)]
5077        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5078        for ValidatorAlreadyRegistered {
5079            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5080                Self {}
5081            }
5082        }
5083        #[automatically_derived]
5084        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
5085            type Parameters<'a> = UnderlyingSolTuple<'a>;
5086            type Token<'a> = <Self::Parameters<
5087                'a,
5088            > as alloy_sol_types::SolType>::Token<'a>;
5089            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
5090            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
5091            #[inline]
5092            fn new<'a>(
5093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5094            ) -> Self {
5095                tuple.into()
5096            }
5097            #[inline]
5098            fn tokenize(&self) -> Self::Token<'_> {
5099                ()
5100            }
5101        }
5102    };
5103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5104    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
5105```solidity
5106error ValidatorInactive();
5107```*/
5108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5109    #[derive(Clone)]
5110    pub struct ValidatorInactive {}
5111    #[allow(
5112        non_camel_case_types,
5113        non_snake_case,
5114        clippy::pub_underscore_fields,
5115        clippy::style
5116    )]
5117    const _: () = {
5118        use alloy::sol_types as alloy_sol_types;
5119        #[doc(hidden)]
5120        type UnderlyingSolTuple<'a> = ();
5121        #[doc(hidden)]
5122        type UnderlyingRustTuple<'a> = ();
5123        #[cfg(test)]
5124        #[allow(dead_code, unreachable_patterns)]
5125        fn _type_assertion(
5126            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5127        ) {
5128            match _t {
5129                alloy_sol_types::private::AssertTypeEq::<
5130                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5131                >(_) => {}
5132            }
5133        }
5134        #[automatically_derived]
5135        #[doc(hidden)]
5136        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
5137            fn from(value: ValidatorInactive) -> Self {
5138                ()
5139            }
5140        }
5141        #[automatically_derived]
5142        #[doc(hidden)]
5143        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
5144            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5145                Self {}
5146            }
5147        }
5148        #[automatically_derived]
5149        impl alloy_sol_types::SolError for ValidatorInactive {
5150            type Parameters<'a> = UnderlyingSolTuple<'a>;
5151            type Token<'a> = <Self::Parameters<
5152                'a,
5153            > as alloy_sol_types::SolType>::Token<'a>;
5154            const SIGNATURE: &'static str = "ValidatorInactive()";
5155            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
5156            #[inline]
5157            fn new<'a>(
5158                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5159            ) -> Self {
5160                tuple.into()
5161            }
5162            #[inline]
5163            fn tokenize(&self) -> Self::Token<'_> {
5164                ()
5165            }
5166        }
5167    };
5168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5169    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
5170```solidity
5171error ValidatorNotExited();
5172```*/
5173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5174    #[derive(Clone)]
5175    pub struct ValidatorNotExited {}
5176    #[allow(
5177        non_camel_case_types,
5178        non_snake_case,
5179        clippy::pub_underscore_fields,
5180        clippy::style
5181    )]
5182    const _: () = {
5183        use alloy::sol_types as alloy_sol_types;
5184        #[doc(hidden)]
5185        type UnderlyingSolTuple<'a> = ();
5186        #[doc(hidden)]
5187        type UnderlyingRustTuple<'a> = ();
5188        #[cfg(test)]
5189        #[allow(dead_code, unreachable_patterns)]
5190        fn _type_assertion(
5191            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5192        ) {
5193            match _t {
5194                alloy_sol_types::private::AssertTypeEq::<
5195                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5196                >(_) => {}
5197            }
5198        }
5199        #[automatically_derived]
5200        #[doc(hidden)]
5201        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
5202            fn from(value: ValidatorNotExited) -> Self {
5203                ()
5204            }
5205        }
5206        #[automatically_derived]
5207        #[doc(hidden)]
5208        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
5209            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5210                Self {}
5211            }
5212        }
5213        #[automatically_derived]
5214        impl alloy_sol_types::SolError for ValidatorNotExited {
5215            type Parameters<'a> = UnderlyingSolTuple<'a>;
5216            type Token<'a> = <Self::Parameters<
5217                'a,
5218            > as alloy_sol_types::SolType>::Token<'a>;
5219            const SIGNATURE: &'static str = "ValidatorNotExited()";
5220            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
5221            #[inline]
5222            fn new<'a>(
5223                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5224            ) -> Self {
5225                tuple.into()
5226            }
5227            #[inline]
5228            fn tokenize(&self) -> Self::Token<'_> {
5229                ()
5230            }
5231        }
5232    };
5233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5234    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
5235```solidity
5236error ZeroAddress();
5237```*/
5238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5239    #[derive(Clone)]
5240    pub struct ZeroAddress {}
5241    #[allow(
5242        non_camel_case_types,
5243        non_snake_case,
5244        clippy::pub_underscore_fields,
5245        clippy::style
5246    )]
5247    const _: () = {
5248        use alloy::sol_types as alloy_sol_types;
5249        #[doc(hidden)]
5250        type UnderlyingSolTuple<'a> = ();
5251        #[doc(hidden)]
5252        type UnderlyingRustTuple<'a> = ();
5253        #[cfg(test)]
5254        #[allow(dead_code, unreachable_patterns)]
5255        fn _type_assertion(
5256            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5257        ) {
5258            match _t {
5259                alloy_sol_types::private::AssertTypeEq::<
5260                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5261                >(_) => {}
5262            }
5263        }
5264        #[automatically_derived]
5265        #[doc(hidden)]
5266        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
5267            fn from(value: ZeroAddress) -> Self {
5268                ()
5269            }
5270        }
5271        #[automatically_derived]
5272        #[doc(hidden)]
5273        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
5274            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5275                Self {}
5276            }
5277        }
5278        #[automatically_derived]
5279        impl alloy_sol_types::SolError for ZeroAddress {
5280            type Parameters<'a> = UnderlyingSolTuple<'a>;
5281            type Token<'a> = <Self::Parameters<
5282                'a,
5283            > as alloy_sol_types::SolType>::Token<'a>;
5284            const SIGNATURE: &'static str = "ZeroAddress()";
5285            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
5286            #[inline]
5287            fn new<'a>(
5288                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5289            ) -> Self {
5290                tuple.into()
5291            }
5292            #[inline]
5293            fn tokenize(&self) -> Self::Token<'_> {
5294                ()
5295            }
5296        }
5297    };
5298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5299    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
5300```solidity
5301error ZeroAmount();
5302```*/
5303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5304    #[derive(Clone)]
5305    pub struct ZeroAmount {}
5306    #[allow(
5307        non_camel_case_types,
5308        non_snake_case,
5309        clippy::pub_underscore_fields,
5310        clippy::style
5311    )]
5312    const _: () = {
5313        use alloy::sol_types as alloy_sol_types;
5314        #[doc(hidden)]
5315        type UnderlyingSolTuple<'a> = ();
5316        #[doc(hidden)]
5317        type UnderlyingRustTuple<'a> = ();
5318        #[cfg(test)]
5319        #[allow(dead_code, unreachable_patterns)]
5320        fn _type_assertion(
5321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5322        ) {
5323            match _t {
5324                alloy_sol_types::private::AssertTypeEq::<
5325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5326                >(_) => {}
5327            }
5328        }
5329        #[automatically_derived]
5330        #[doc(hidden)]
5331        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
5332            fn from(value: ZeroAmount) -> Self {
5333                ()
5334            }
5335        }
5336        #[automatically_derived]
5337        #[doc(hidden)]
5338        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
5339            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5340                Self {}
5341            }
5342        }
5343        #[automatically_derived]
5344        impl alloy_sol_types::SolError for ZeroAmount {
5345            type Parameters<'a> = UnderlyingSolTuple<'a>;
5346            type Token<'a> = <Self::Parameters<
5347                'a,
5348            > as alloy_sol_types::SolType>::Token<'a>;
5349            const SIGNATURE: &'static str = "ZeroAmount()";
5350            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
5351            #[inline]
5352            fn new<'a>(
5353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5354            ) -> Self {
5355                tuple.into()
5356            }
5357            #[inline]
5358            fn tokenize(&self) -> Self::Token<'_> {
5359                ()
5360            }
5361        }
5362    };
5363    #[derive()]
5364    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
5365```solidity
5366event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
5367```*/
5368    #[allow(
5369        non_camel_case_types,
5370        non_snake_case,
5371        clippy::pub_underscore_fields,
5372        clippy::style
5373    )]
5374    #[derive(Clone)]
5375    pub struct ConsensusKeysUpdated {
5376        #[allow(missing_docs)]
5377        pub account: alloy::sol_types::private::Address,
5378        #[allow(missing_docs)]
5379        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5380        #[allow(missing_docs)]
5381        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5382    }
5383    #[allow(
5384        non_camel_case_types,
5385        non_snake_case,
5386        clippy::pub_underscore_fields,
5387        clippy::style
5388    )]
5389    const _: () = {
5390        use alloy::sol_types as alloy_sol_types;
5391        #[automatically_derived]
5392        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
5393            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
5394            type DataToken<'a> = <Self::DataTuple<
5395                'a,
5396            > as alloy_sol_types::SolType>::Token<'a>;
5397            type TopicList = (
5398                alloy_sol_types::sol_data::FixedBytes<32>,
5399                alloy::sol_types::sol_data::Address,
5400            );
5401            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
5402            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5403                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
5404                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
5405                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
5406            ]);
5407            const ANONYMOUS: bool = false;
5408            #[allow(unused_variables)]
5409            #[inline]
5410            fn new(
5411                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5412                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5413            ) -> Self {
5414                Self {
5415                    account: topics.1,
5416                    blsVK: data.0,
5417                    schnorrVK: data.1,
5418                }
5419            }
5420            #[inline]
5421            fn check_signature(
5422                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5423            ) -> alloy_sol_types::Result<()> {
5424                if topics.0 != Self::SIGNATURE_HASH {
5425                    return Err(
5426                        alloy_sol_types::Error::invalid_event_signature_hash(
5427                            Self::SIGNATURE,
5428                            topics.0,
5429                            Self::SIGNATURE_HASH,
5430                        ),
5431                    );
5432                }
5433                Ok(())
5434            }
5435            #[inline]
5436            fn tokenize_body(&self) -> Self::DataToken<'_> {
5437                (
5438                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
5439                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5440                        &self.schnorrVK,
5441                    ),
5442                )
5443            }
5444            #[inline]
5445            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5446                (Self::SIGNATURE_HASH.into(), self.account.clone())
5447            }
5448            #[inline]
5449            fn encode_topics_raw(
5450                &self,
5451                out: &mut [alloy_sol_types::abi::token::WordToken],
5452            ) -> alloy_sol_types::Result<()> {
5453                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5454                    return Err(alloy_sol_types::Error::Overrun);
5455                }
5456                out[0usize] = alloy_sol_types::abi::token::WordToken(
5457                    Self::SIGNATURE_HASH,
5458                );
5459                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5460                    &self.account,
5461                );
5462                Ok(())
5463            }
5464        }
5465        #[automatically_derived]
5466        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
5467            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5468                From::from(self)
5469            }
5470            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5471                From::from(&self)
5472            }
5473        }
5474        #[automatically_derived]
5475        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
5476            #[inline]
5477            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
5478                alloy_sol_types::SolEvent::encode_log_data(this)
5479            }
5480        }
5481    };
5482    #[derive()]
5483    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
5484```solidity
5485event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
5486```*/
5487    #[allow(
5488        non_camel_case_types,
5489        non_snake_case,
5490        clippy::pub_underscore_fields,
5491        clippy::style
5492    )]
5493    #[derive(Clone)]
5494    pub struct ConsensusKeysUpdatedV2 {
5495        #[allow(missing_docs)]
5496        pub account: alloy::sol_types::private::Address,
5497        #[allow(missing_docs)]
5498        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5499        #[allow(missing_docs)]
5500        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5501        #[allow(missing_docs)]
5502        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
5503        #[allow(missing_docs)]
5504        pub schnorrSig: alloy::sol_types::private::Bytes,
5505    }
5506    #[allow(
5507        non_camel_case_types,
5508        non_snake_case,
5509        clippy::pub_underscore_fields,
5510        clippy::style
5511    )]
5512    const _: () = {
5513        use alloy::sol_types as alloy_sol_types;
5514        #[automatically_derived]
5515        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
5516            type DataTuple<'a> = (
5517                BN254::G2Point,
5518                EdOnBN254::EdOnBN254Point,
5519                BN254::G1Point,
5520                alloy::sol_types::sol_data::Bytes,
5521            );
5522            type DataToken<'a> = <Self::DataTuple<
5523                'a,
5524            > as alloy_sol_types::SolType>::Token<'a>;
5525            type TopicList = (
5526                alloy_sol_types::sol_data::FixedBytes<32>,
5527                alloy::sol_types::sol_data::Address,
5528            );
5529            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
5530            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5531                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
5532                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
5533                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
5534            ]);
5535            const ANONYMOUS: bool = false;
5536            #[allow(unused_variables)]
5537            #[inline]
5538            fn new(
5539                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5540                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5541            ) -> Self {
5542                Self {
5543                    account: topics.1,
5544                    blsVK: data.0,
5545                    schnorrVK: data.1,
5546                    blsSig: data.2,
5547                    schnorrSig: data.3,
5548                }
5549            }
5550            #[inline]
5551            fn check_signature(
5552                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5553            ) -> alloy_sol_types::Result<()> {
5554                if topics.0 != Self::SIGNATURE_HASH {
5555                    return Err(
5556                        alloy_sol_types::Error::invalid_event_signature_hash(
5557                            Self::SIGNATURE,
5558                            topics.0,
5559                            Self::SIGNATURE_HASH,
5560                        ),
5561                    );
5562                }
5563                Ok(())
5564            }
5565            #[inline]
5566            fn tokenize_body(&self) -> Self::DataToken<'_> {
5567                (
5568                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
5569                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5570                        &self.schnorrVK,
5571                    ),
5572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
5573                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5574                        &self.schnorrSig,
5575                    ),
5576                )
5577            }
5578            #[inline]
5579            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5580                (Self::SIGNATURE_HASH.into(), self.account.clone())
5581            }
5582            #[inline]
5583            fn encode_topics_raw(
5584                &self,
5585                out: &mut [alloy_sol_types::abi::token::WordToken],
5586            ) -> alloy_sol_types::Result<()> {
5587                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5588                    return Err(alloy_sol_types::Error::Overrun);
5589                }
5590                out[0usize] = alloy_sol_types::abi::token::WordToken(
5591                    Self::SIGNATURE_HASH,
5592                );
5593                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5594                    &self.account,
5595                );
5596                Ok(())
5597            }
5598        }
5599        #[automatically_derived]
5600        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
5601            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5602                From::from(self)
5603            }
5604            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5605                From::from(&self)
5606            }
5607        }
5608        #[automatically_derived]
5609        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
5610            #[inline]
5611            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
5612                alloy_sol_types::SolEvent::encode_log_data(this)
5613            }
5614        }
5615    };
5616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5617    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
5618```solidity
5619event Delegated(address indexed delegator, address indexed validator, uint256 amount);
5620```*/
5621    #[allow(
5622        non_camel_case_types,
5623        non_snake_case,
5624        clippy::pub_underscore_fields,
5625        clippy::style
5626    )]
5627    #[derive(Clone)]
5628    pub struct Delegated {
5629        #[allow(missing_docs)]
5630        pub delegator: alloy::sol_types::private::Address,
5631        #[allow(missing_docs)]
5632        pub validator: alloy::sol_types::private::Address,
5633        #[allow(missing_docs)]
5634        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5635    }
5636    #[allow(
5637        non_camel_case_types,
5638        non_snake_case,
5639        clippy::pub_underscore_fields,
5640        clippy::style
5641    )]
5642    const _: () = {
5643        use alloy::sol_types as alloy_sol_types;
5644        #[automatically_derived]
5645        impl alloy_sol_types::SolEvent for Delegated {
5646            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5647            type DataToken<'a> = <Self::DataTuple<
5648                'a,
5649            > as alloy_sol_types::SolType>::Token<'a>;
5650            type TopicList = (
5651                alloy_sol_types::sol_data::FixedBytes<32>,
5652                alloy::sol_types::sol_data::Address,
5653                alloy::sol_types::sol_data::Address,
5654            );
5655            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
5656            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5657                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
5658                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
5659                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
5660            ]);
5661            const ANONYMOUS: bool = false;
5662            #[allow(unused_variables)]
5663            #[inline]
5664            fn new(
5665                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5666                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5667            ) -> Self {
5668                Self {
5669                    delegator: topics.1,
5670                    validator: topics.2,
5671                    amount: data.0,
5672                }
5673            }
5674            #[inline]
5675            fn check_signature(
5676                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5677            ) -> alloy_sol_types::Result<()> {
5678                if topics.0 != Self::SIGNATURE_HASH {
5679                    return Err(
5680                        alloy_sol_types::Error::invalid_event_signature_hash(
5681                            Self::SIGNATURE,
5682                            topics.0,
5683                            Self::SIGNATURE_HASH,
5684                        ),
5685                    );
5686                }
5687                Ok(())
5688            }
5689            #[inline]
5690            fn tokenize_body(&self) -> Self::DataToken<'_> {
5691                (
5692                    <alloy::sol_types::sol_data::Uint<
5693                        256,
5694                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5695                )
5696            }
5697            #[inline]
5698            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5699                (
5700                    Self::SIGNATURE_HASH.into(),
5701                    self.delegator.clone(),
5702                    self.validator.clone(),
5703                )
5704            }
5705            #[inline]
5706            fn encode_topics_raw(
5707                &self,
5708                out: &mut [alloy_sol_types::abi::token::WordToken],
5709            ) -> alloy_sol_types::Result<()> {
5710                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5711                    return Err(alloy_sol_types::Error::Overrun);
5712                }
5713                out[0usize] = alloy_sol_types::abi::token::WordToken(
5714                    Self::SIGNATURE_HASH,
5715                );
5716                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5717                    &self.delegator,
5718                );
5719                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5720                    &self.validator,
5721                );
5722                Ok(())
5723            }
5724        }
5725        #[automatically_derived]
5726        impl alloy_sol_types::private::IntoLogData for Delegated {
5727            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5728                From::from(self)
5729            }
5730            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5731                From::from(&self)
5732            }
5733        }
5734        #[automatically_derived]
5735        impl From<&Delegated> for alloy_sol_types::private::LogData {
5736            #[inline]
5737            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
5738                alloy_sol_types::SolEvent::encode_log_data(this)
5739            }
5740        }
5741    };
5742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5743    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
5744```solidity
5745event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
5746```*/
5747    #[allow(
5748        non_camel_case_types,
5749        non_snake_case,
5750        clippy::pub_underscore_fields,
5751        clippy::style
5752    )]
5753    #[derive(Clone)]
5754    pub struct ExitEscrowPeriodUpdated {
5755        #[allow(missing_docs)]
5756        pub newExitEscrowPeriod: u64,
5757    }
5758    #[allow(
5759        non_camel_case_types,
5760        non_snake_case,
5761        clippy::pub_underscore_fields,
5762        clippy::style
5763    )]
5764    const _: () = {
5765        use alloy::sol_types as alloy_sol_types;
5766        #[automatically_derived]
5767        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
5768            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5769            type DataToken<'a> = <Self::DataTuple<
5770                'a,
5771            > as alloy_sol_types::SolType>::Token<'a>;
5772            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5773            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
5774            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5775                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
5776                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
5777                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
5778            ]);
5779            const ANONYMOUS: bool = false;
5780            #[allow(unused_variables)]
5781            #[inline]
5782            fn new(
5783                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5784                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5785            ) -> Self {
5786                Self {
5787                    newExitEscrowPeriod: data.0,
5788                }
5789            }
5790            #[inline]
5791            fn check_signature(
5792                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5793            ) -> alloy_sol_types::Result<()> {
5794                if topics.0 != Self::SIGNATURE_HASH {
5795                    return Err(
5796                        alloy_sol_types::Error::invalid_event_signature_hash(
5797                            Self::SIGNATURE,
5798                            topics.0,
5799                            Self::SIGNATURE_HASH,
5800                        ),
5801                    );
5802                }
5803                Ok(())
5804            }
5805            #[inline]
5806            fn tokenize_body(&self) -> Self::DataToken<'_> {
5807                (
5808                    <alloy::sol_types::sol_data::Uint<
5809                        64,
5810                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
5811                )
5812            }
5813            #[inline]
5814            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5815                (Self::SIGNATURE_HASH.into(),)
5816            }
5817            #[inline]
5818            fn encode_topics_raw(
5819                &self,
5820                out: &mut [alloy_sol_types::abi::token::WordToken],
5821            ) -> alloy_sol_types::Result<()> {
5822                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5823                    return Err(alloy_sol_types::Error::Overrun);
5824                }
5825                out[0usize] = alloy_sol_types::abi::token::WordToken(
5826                    Self::SIGNATURE_HASH,
5827                );
5828                Ok(())
5829            }
5830        }
5831        #[automatically_derived]
5832        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
5833            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5834                From::from(self)
5835            }
5836            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5837                From::from(&self)
5838            }
5839        }
5840        #[automatically_derived]
5841        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
5842            #[inline]
5843            fn from(
5844                this: &ExitEscrowPeriodUpdated,
5845            ) -> alloy_sol_types::private::LogData {
5846                alloy_sol_types::SolEvent::encode_log_data(this)
5847            }
5848        }
5849    };
5850    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5851    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5852```solidity
5853event Initialized(uint64 version);
5854```*/
5855    #[allow(
5856        non_camel_case_types,
5857        non_snake_case,
5858        clippy::pub_underscore_fields,
5859        clippy::style
5860    )]
5861    #[derive(Clone)]
5862    pub struct Initialized {
5863        #[allow(missing_docs)]
5864        pub version: u64,
5865    }
5866    #[allow(
5867        non_camel_case_types,
5868        non_snake_case,
5869        clippy::pub_underscore_fields,
5870        clippy::style
5871    )]
5872    const _: () = {
5873        use alloy::sol_types as alloy_sol_types;
5874        #[automatically_derived]
5875        impl alloy_sol_types::SolEvent for Initialized {
5876            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5877            type DataToken<'a> = <Self::DataTuple<
5878                'a,
5879            > as alloy_sol_types::SolType>::Token<'a>;
5880            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5881            const SIGNATURE: &'static str = "Initialized(uint64)";
5882            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5883                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5884                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5885                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5886            ]);
5887            const ANONYMOUS: bool = false;
5888            #[allow(unused_variables)]
5889            #[inline]
5890            fn new(
5891                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5892                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5893            ) -> Self {
5894                Self { version: data.0 }
5895            }
5896            #[inline]
5897            fn check_signature(
5898                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5899            ) -> alloy_sol_types::Result<()> {
5900                if topics.0 != Self::SIGNATURE_HASH {
5901                    return Err(
5902                        alloy_sol_types::Error::invalid_event_signature_hash(
5903                            Self::SIGNATURE,
5904                            topics.0,
5905                            Self::SIGNATURE_HASH,
5906                        ),
5907                    );
5908                }
5909                Ok(())
5910            }
5911            #[inline]
5912            fn tokenize_body(&self) -> Self::DataToken<'_> {
5913                (
5914                    <alloy::sol_types::sol_data::Uint<
5915                        64,
5916                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5917                )
5918            }
5919            #[inline]
5920            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5921                (Self::SIGNATURE_HASH.into(),)
5922            }
5923            #[inline]
5924            fn encode_topics_raw(
5925                &self,
5926                out: &mut [alloy_sol_types::abi::token::WordToken],
5927            ) -> alloy_sol_types::Result<()> {
5928                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5929                    return Err(alloy_sol_types::Error::Overrun);
5930                }
5931                out[0usize] = alloy_sol_types::abi::token::WordToken(
5932                    Self::SIGNATURE_HASH,
5933                );
5934                Ok(())
5935            }
5936        }
5937        #[automatically_derived]
5938        impl alloy_sol_types::private::IntoLogData for Initialized {
5939            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5940                From::from(self)
5941            }
5942            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5943                From::from(&self)
5944            }
5945        }
5946        #[automatically_derived]
5947        impl From<&Initialized> for alloy_sol_types::private::LogData {
5948            #[inline]
5949            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5950                alloy_sol_types::SolEvent::encode_log_data(this)
5951            }
5952        }
5953    };
5954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5955    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5956```solidity
5957event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5958```*/
5959    #[allow(
5960        non_camel_case_types,
5961        non_snake_case,
5962        clippy::pub_underscore_fields,
5963        clippy::style
5964    )]
5965    #[derive(Clone)]
5966    pub struct OwnershipTransferred {
5967        #[allow(missing_docs)]
5968        pub previousOwner: alloy::sol_types::private::Address,
5969        #[allow(missing_docs)]
5970        pub newOwner: alloy::sol_types::private::Address,
5971    }
5972    #[allow(
5973        non_camel_case_types,
5974        non_snake_case,
5975        clippy::pub_underscore_fields,
5976        clippy::style
5977    )]
5978    const _: () = {
5979        use alloy::sol_types as alloy_sol_types;
5980        #[automatically_derived]
5981        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5982            type DataTuple<'a> = ();
5983            type DataToken<'a> = <Self::DataTuple<
5984                'a,
5985            > as alloy_sol_types::SolType>::Token<'a>;
5986            type TopicList = (
5987                alloy_sol_types::sol_data::FixedBytes<32>,
5988                alloy::sol_types::sol_data::Address,
5989                alloy::sol_types::sol_data::Address,
5990            );
5991            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5992            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5993                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5994                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5995                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5996            ]);
5997            const ANONYMOUS: bool = false;
5998            #[allow(unused_variables)]
5999            #[inline]
6000            fn new(
6001                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6002                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6003            ) -> Self {
6004                Self {
6005                    previousOwner: topics.1,
6006                    newOwner: topics.2,
6007                }
6008            }
6009            #[inline]
6010            fn check_signature(
6011                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6012            ) -> alloy_sol_types::Result<()> {
6013                if topics.0 != Self::SIGNATURE_HASH {
6014                    return Err(
6015                        alloy_sol_types::Error::invalid_event_signature_hash(
6016                            Self::SIGNATURE,
6017                            topics.0,
6018                            Self::SIGNATURE_HASH,
6019                        ),
6020                    );
6021                }
6022                Ok(())
6023            }
6024            #[inline]
6025            fn tokenize_body(&self) -> Self::DataToken<'_> {
6026                ()
6027            }
6028            #[inline]
6029            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6030                (
6031                    Self::SIGNATURE_HASH.into(),
6032                    self.previousOwner.clone(),
6033                    self.newOwner.clone(),
6034                )
6035            }
6036            #[inline]
6037            fn encode_topics_raw(
6038                &self,
6039                out: &mut [alloy_sol_types::abi::token::WordToken],
6040            ) -> alloy_sol_types::Result<()> {
6041                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6042                    return Err(alloy_sol_types::Error::Overrun);
6043                }
6044                out[0usize] = alloy_sol_types::abi::token::WordToken(
6045                    Self::SIGNATURE_HASH,
6046                );
6047                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6048                    &self.previousOwner,
6049                );
6050                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6051                    &self.newOwner,
6052                );
6053                Ok(())
6054            }
6055        }
6056        #[automatically_derived]
6057        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6058            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6059                From::from(self)
6060            }
6061            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6062                From::from(&self)
6063            }
6064        }
6065        #[automatically_derived]
6066        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6067            #[inline]
6068            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6069                alloy_sol_types::SolEvent::encode_log_data(this)
6070            }
6071        }
6072    };
6073    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6074    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
6075```solidity
6076event Paused(address account);
6077```*/
6078    #[allow(
6079        non_camel_case_types,
6080        non_snake_case,
6081        clippy::pub_underscore_fields,
6082        clippy::style
6083    )]
6084    #[derive(Clone)]
6085    pub struct Paused {
6086        #[allow(missing_docs)]
6087        pub account: alloy::sol_types::private::Address,
6088    }
6089    #[allow(
6090        non_camel_case_types,
6091        non_snake_case,
6092        clippy::pub_underscore_fields,
6093        clippy::style
6094    )]
6095    const _: () = {
6096        use alloy::sol_types as alloy_sol_types;
6097        #[automatically_derived]
6098        impl alloy_sol_types::SolEvent for Paused {
6099            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6100            type DataToken<'a> = <Self::DataTuple<
6101                'a,
6102            > as alloy_sol_types::SolType>::Token<'a>;
6103            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6104            const SIGNATURE: &'static str = "Paused(address)";
6105            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6106                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
6107                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
6108                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
6109            ]);
6110            const ANONYMOUS: bool = false;
6111            #[allow(unused_variables)]
6112            #[inline]
6113            fn new(
6114                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6115                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6116            ) -> Self {
6117                Self { account: data.0 }
6118            }
6119            #[inline]
6120            fn check_signature(
6121                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6122            ) -> alloy_sol_types::Result<()> {
6123                if topics.0 != Self::SIGNATURE_HASH {
6124                    return Err(
6125                        alloy_sol_types::Error::invalid_event_signature_hash(
6126                            Self::SIGNATURE,
6127                            topics.0,
6128                            Self::SIGNATURE_HASH,
6129                        ),
6130                    );
6131                }
6132                Ok(())
6133            }
6134            #[inline]
6135            fn tokenize_body(&self) -> Self::DataToken<'_> {
6136                (
6137                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6138                        &self.account,
6139                    ),
6140                )
6141            }
6142            #[inline]
6143            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6144                (Self::SIGNATURE_HASH.into(),)
6145            }
6146            #[inline]
6147            fn encode_topics_raw(
6148                &self,
6149                out: &mut [alloy_sol_types::abi::token::WordToken],
6150            ) -> alloy_sol_types::Result<()> {
6151                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6152                    return Err(alloy_sol_types::Error::Overrun);
6153                }
6154                out[0usize] = alloy_sol_types::abi::token::WordToken(
6155                    Self::SIGNATURE_HASH,
6156                );
6157                Ok(())
6158            }
6159        }
6160        #[automatically_derived]
6161        impl alloy_sol_types::private::IntoLogData for Paused {
6162            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6163                From::from(self)
6164            }
6165            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6166                From::from(&self)
6167            }
6168        }
6169        #[automatically_derived]
6170        impl From<&Paused> for alloy_sol_types::private::LogData {
6171            #[inline]
6172            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
6173                alloy_sol_types::SolEvent::encode_log_data(this)
6174            }
6175        }
6176    };
6177    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6178    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
6179```solidity
6180event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
6181```*/
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    #[derive(Clone)]
6189    pub struct RoleAdminChanged {
6190        #[allow(missing_docs)]
6191        pub role: alloy::sol_types::private::FixedBytes<32>,
6192        #[allow(missing_docs)]
6193        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
6194        #[allow(missing_docs)]
6195        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
6196    }
6197    #[allow(
6198        non_camel_case_types,
6199        non_snake_case,
6200        clippy::pub_underscore_fields,
6201        clippy::style
6202    )]
6203    const _: () = {
6204        use alloy::sol_types as alloy_sol_types;
6205        #[automatically_derived]
6206        impl alloy_sol_types::SolEvent for RoleAdminChanged {
6207            type DataTuple<'a> = ();
6208            type DataToken<'a> = <Self::DataTuple<
6209                'a,
6210            > as alloy_sol_types::SolType>::Token<'a>;
6211            type TopicList = (
6212                alloy_sol_types::sol_data::FixedBytes<32>,
6213                alloy::sol_types::sol_data::FixedBytes<32>,
6214                alloy::sol_types::sol_data::FixedBytes<32>,
6215                alloy::sol_types::sol_data::FixedBytes<32>,
6216            );
6217            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
6218            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6219                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
6220                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
6221                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
6222            ]);
6223            const ANONYMOUS: bool = false;
6224            #[allow(unused_variables)]
6225            #[inline]
6226            fn new(
6227                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6228                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6229            ) -> Self {
6230                Self {
6231                    role: topics.1,
6232                    previousAdminRole: topics.2,
6233                    newAdminRole: topics.3,
6234                }
6235            }
6236            #[inline]
6237            fn check_signature(
6238                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6239            ) -> alloy_sol_types::Result<()> {
6240                if topics.0 != Self::SIGNATURE_HASH {
6241                    return Err(
6242                        alloy_sol_types::Error::invalid_event_signature_hash(
6243                            Self::SIGNATURE,
6244                            topics.0,
6245                            Self::SIGNATURE_HASH,
6246                        ),
6247                    );
6248                }
6249                Ok(())
6250            }
6251            #[inline]
6252            fn tokenize_body(&self) -> Self::DataToken<'_> {
6253                ()
6254            }
6255            #[inline]
6256            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6257                (
6258                    Self::SIGNATURE_HASH.into(),
6259                    self.role.clone(),
6260                    self.previousAdminRole.clone(),
6261                    self.newAdminRole.clone(),
6262                )
6263            }
6264            #[inline]
6265            fn encode_topics_raw(
6266                &self,
6267                out: &mut [alloy_sol_types::abi::token::WordToken],
6268            ) -> alloy_sol_types::Result<()> {
6269                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6270                    return Err(alloy_sol_types::Error::Overrun);
6271                }
6272                out[0usize] = alloy_sol_types::abi::token::WordToken(
6273                    Self::SIGNATURE_HASH,
6274                );
6275                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
6276                    32,
6277                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
6278                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
6279                    32,
6280                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
6281                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
6282                    32,
6283                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
6284                Ok(())
6285            }
6286        }
6287        #[automatically_derived]
6288        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
6289            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6290                From::from(self)
6291            }
6292            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6293                From::from(&self)
6294            }
6295        }
6296        #[automatically_derived]
6297        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
6298            #[inline]
6299            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
6300                alloy_sol_types::SolEvent::encode_log_data(this)
6301            }
6302        }
6303    };
6304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6305    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
6306```solidity
6307event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
6308```*/
6309    #[allow(
6310        non_camel_case_types,
6311        non_snake_case,
6312        clippy::pub_underscore_fields,
6313        clippy::style
6314    )]
6315    #[derive(Clone)]
6316    pub struct RoleGranted {
6317        #[allow(missing_docs)]
6318        pub role: alloy::sol_types::private::FixedBytes<32>,
6319        #[allow(missing_docs)]
6320        pub account: alloy::sol_types::private::Address,
6321        #[allow(missing_docs)]
6322        pub sender: alloy::sol_types::private::Address,
6323    }
6324    #[allow(
6325        non_camel_case_types,
6326        non_snake_case,
6327        clippy::pub_underscore_fields,
6328        clippy::style
6329    )]
6330    const _: () = {
6331        use alloy::sol_types as alloy_sol_types;
6332        #[automatically_derived]
6333        impl alloy_sol_types::SolEvent for RoleGranted {
6334            type DataTuple<'a> = ();
6335            type DataToken<'a> = <Self::DataTuple<
6336                'a,
6337            > as alloy_sol_types::SolType>::Token<'a>;
6338            type TopicList = (
6339                alloy_sol_types::sol_data::FixedBytes<32>,
6340                alloy::sol_types::sol_data::FixedBytes<32>,
6341                alloy::sol_types::sol_data::Address,
6342                alloy::sol_types::sol_data::Address,
6343            );
6344            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
6345            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6346                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
6347                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
6348                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
6349            ]);
6350            const ANONYMOUS: bool = false;
6351            #[allow(unused_variables)]
6352            #[inline]
6353            fn new(
6354                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6355                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6356            ) -> Self {
6357                Self {
6358                    role: topics.1,
6359                    account: topics.2,
6360                    sender: topics.3,
6361                }
6362            }
6363            #[inline]
6364            fn check_signature(
6365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6366            ) -> alloy_sol_types::Result<()> {
6367                if topics.0 != Self::SIGNATURE_HASH {
6368                    return Err(
6369                        alloy_sol_types::Error::invalid_event_signature_hash(
6370                            Self::SIGNATURE,
6371                            topics.0,
6372                            Self::SIGNATURE_HASH,
6373                        ),
6374                    );
6375                }
6376                Ok(())
6377            }
6378            #[inline]
6379            fn tokenize_body(&self) -> Self::DataToken<'_> {
6380                ()
6381            }
6382            #[inline]
6383            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6384                (
6385                    Self::SIGNATURE_HASH.into(),
6386                    self.role.clone(),
6387                    self.account.clone(),
6388                    self.sender.clone(),
6389                )
6390            }
6391            #[inline]
6392            fn encode_topics_raw(
6393                &self,
6394                out: &mut [alloy_sol_types::abi::token::WordToken],
6395            ) -> alloy_sol_types::Result<()> {
6396                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6397                    return Err(alloy_sol_types::Error::Overrun);
6398                }
6399                out[0usize] = alloy_sol_types::abi::token::WordToken(
6400                    Self::SIGNATURE_HASH,
6401                );
6402                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
6403                    32,
6404                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
6405                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6406                    &self.account,
6407                );
6408                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6409                    &self.sender,
6410                );
6411                Ok(())
6412            }
6413        }
6414        #[automatically_derived]
6415        impl alloy_sol_types::private::IntoLogData for RoleGranted {
6416            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6417                From::from(self)
6418            }
6419            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6420                From::from(&self)
6421            }
6422        }
6423        #[automatically_derived]
6424        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
6425            #[inline]
6426            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
6427                alloy_sol_types::SolEvent::encode_log_data(this)
6428            }
6429        }
6430    };
6431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6432    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
6433```solidity
6434event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
6435```*/
6436    #[allow(
6437        non_camel_case_types,
6438        non_snake_case,
6439        clippy::pub_underscore_fields,
6440        clippy::style
6441    )]
6442    #[derive(Clone)]
6443    pub struct RoleRevoked {
6444        #[allow(missing_docs)]
6445        pub role: alloy::sol_types::private::FixedBytes<32>,
6446        #[allow(missing_docs)]
6447        pub account: alloy::sol_types::private::Address,
6448        #[allow(missing_docs)]
6449        pub sender: alloy::sol_types::private::Address,
6450    }
6451    #[allow(
6452        non_camel_case_types,
6453        non_snake_case,
6454        clippy::pub_underscore_fields,
6455        clippy::style
6456    )]
6457    const _: () = {
6458        use alloy::sol_types as alloy_sol_types;
6459        #[automatically_derived]
6460        impl alloy_sol_types::SolEvent for RoleRevoked {
6461            type DataTuple<'a> = ();
6462            type DataToken<'a> = <Self::DataTuple<
6463                'a,
6464            > as alloy_sol_types::SolType>::Token<'a>;
6465            type TopicList = (
6466                alloy_sol_types::sol_data::FixedBytes<32>,
6467                alloy::sol_types::sol_data::FixedBytes<32>,
6468                alloy::sol_types::sol_data::Address,
6469                alloy::sol_types::sol_data::Address,
6470            );
6471            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
6472            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6473                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
6474                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
6475                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
6476            ]);
6477            const ANONYMOUS: bool = false;
6478            #[allow(unused_variables)]
6479            #[inline]
6480            fn new(
6481                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6482                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6483            ) -> Self {
6484                Self {
6485                    role: topics.1,
6486                    account: topics.2,
6487                    sender: topics.3,
6488                }
6489            }
6490            #[inline]
6491            fn check_signature(
6492                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6493            ) -> alloy_sol_types::Result<()> {
6494                if topics.0 != Self::SIGNATURE_HASH {
6495                    return Err(
6496                        alloy_sol_types::Error::invalid_event_signature_hash(
6497                            Self::SIGNATURE,
6498                            topics.0,
6499                            Self::SIGNATURE_HASH,
6500                        ),
6501                    );
6502                }
6503                Ok(())
6504            }
6505            #[inline]
6506            fn tokenize_body(&self) -> Self::DataToken<'_> {
6507                ()
6508            }
6509            #[inline]
6510            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6511                (
6512                    Self::SIGNATURE_HASH.into(),
6513                    self.role.clone(),
6514                    self.account.clone(),
6515                    self.sender.clone(),
6516                )
6517            }
6518            #[inline]
6519            fn encode_topics_raw(
6520                &self,
6521                out: &mut [alloy_sol_types::abi::token::WordToken],
6522            ) -> alloy_sol_types::Result<()> {
6523                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6524                    return Err(alloy_sol_types::Error::Overrun);
6525                }
6526                out[0usize] = alloy_sol_types::abi::token::WordToken(
6527                    Self::SIGNATURE_HASH,
6528                );
6529                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
6530                    32,
6531                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
6532                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6533                    &self.account,
6534                );
6535                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6536                    &self.sender,
6537                );
6538                Ok(())
6539            }
6540        }
6541        #[automatically_derived]
6542        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
6543            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6544                From::from(self)
6545            }
6546            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6547                From::from(&self)
6548            }
6549        }
6550        #[automatically_derived]
6551        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
6552            #[inline]
6553            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
6554                alloy_sol_types::SolEvent::encode_log_data(this)
6555            }
6556        }
6557    };
6558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6559    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
6560```solidity
6561event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
6562```*/
6563    #[allow(
6564        non_camel_case_types,
6565        non_snake_case,
6566        clippy::pub_underscore_fields,
6567        clippy::style
6568    )]
6569    #[derive(Clone)]
6570    pub struct Undelegated {
6571        #[allow(missing_docs)]
6572        pub delegator: alloy::sol_types::private::Address,
6573        #[allow(missing_docs)]
6574        pub validator: alloy::sol_types::private::Address,
6575        #[allow(missing_docs)]
6576        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6577    }
6578    #[allow(
6579        non_camel_case_types,
6580        non_snake_case,
6581        clippy::pub_underscore_fields,
6582        clippy::style
6583    )]
6584    const _: () = {
6585        use alloy::sol_types as alloy_sol_types;
6586        #[automatically_derived]
6587        impl alloy_sol_types::SolEvent for Undelegated {
6588            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6589            type DataToken<'a> = <Self::DataTuple<
6590                'a,
6591            > as alloy_sol_types::SolType>::Token<'a>;
6592            type TopicList = (
6593                alloy_sol_types::sol_data::FixedBytes<32>,
6594                alloy::sol_types::sol_data::Address,
6595                alloy::sol_types::sol_data::Address,
6596            );
6597            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
6598            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6599                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
6600                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
6601                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
6602            ]);
6603            const ANONYMOUS: bool = false;
6604            #[allow(unused_variables)]
6605            #[inline]
6606            fn new(
6607                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6608                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6609            ) -> Self {
6610                Self {
6611                    delegator: topics.1,
6612                    validator: topics.2,
6613                    amount: data.0,
6614                }
6615            }
6616            #[inline]
6617            fn check_signature(
6618                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6619            ) -> alloy_sol_types::Result<()> {
6620                if topics.0 != Self::SIGNATURE_HASH {
6621                    return Err(
6622                        alloy_sol_types::Error::invalid_event_signature_hash(
6623                            Self::SIGNATURE,
6624                            topics.0,
6625                            Self::SIGNATURE_HASH,
6626                        ),
6627                    );
6628                }
6629                Ok(())
6630            }
6631            #[inline]
6632            fn tokenize_body(&self) -> Self::DataToken<'_> {
6633                (
6634                    <alloy::sol_types::sol_data::Uint<
6635                        256,
6636                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
6637                )
6638            }
6639            #[inline]
6640            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6641                (
6642                    Self::SIGNATURE_HASH.into(),
6643                    self.delegator.clone(),
6644                    self.validator.clone(),
6645                )
6646            }
6647            #[inline]
6648            fn encode_topics_raw(
6649                &self,
6650                out: &mut [alloy_sol_types::abi::token::WordToken],
6651            ) -> alloy_sol_types::Result<()> {
6652                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6653                    return Err(alloy_sol_types::Error::Overrun);
6654                }
6655                out[0usize] = alloy_sol_types::abi::token::WordToken(
6656                    Self::SIGNATURE_HASH,
6657                );
6658                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6659                    &self.delegator,
6660                );
6661                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6662                    &self.validator,
6663                );
6664                Ok(())
6665            }
6666        }
6667        #[automatically_derived]
6668        impl alloy_sol_types::private::IntoLogData for Undelegated {
6669            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6670                From::from(self)
6671            }
6672            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6673                From::from(&self)
6674            }
6675        }
6676        #[automatically_derived]
6677        impl From<&Undelegated> for alloy_sol_types::private::LogData {
6678            #[inline]
6679            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
6680                alloy_sol_types::SolEvent::encode_log_data(this)
6681            }
6682        }
6683    };
6684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6685    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
6686```solidity
6687event Unpaused(address account);
6688```*/
6689    #[allow(
6690        non_camel_case_types,
6691        non_snake_case,
6692        clippy::pub_underscore_fields,
6693        clippy::style
6694    )]
6695    #[derive(Clone)]
6696    pub struct Unpaused {
6697        #[allow(missing_docs)]
6698        pub account: alloy::sol_types::private::Address,
6699    }
6700    #[allow(
6701        non_camel_case_types,
6702        non_snake_case,
6703        clippy::pub_underscore_fields,
6704        clippy::style
6705    )]
6706    const _: () = {
6707        use alloy::sol_types as alloy_sol_types;
6708        #[automatically_derived]
6709        impl alloy_sol_types::SolEvent for Unpaused {
6710            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6711            type DataToken<'a> = <Self::DataTuple<
6712                'a,
6713            > as alloy_sol_types::SolType>::Token<'a>;
6714            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6715            const SIGNATURE: &'static str = "Unpaused(address)";
6716            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6717                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
6718                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
6719                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
6720            ]);
6721            const ANONYMOUS: bool = false;
6722            #[allow(unused_variables)]
6723            #[inline]
6724            fn new(
6725                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6726                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6727            ) -> Self {
6728                Self { account: data.0 }
6729            }
6730            #[inline]
6731            fn check_signature(
6732                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6733            ) -> alloy_sol_types::Result<()> {
6734                if topics.0 != Self::SIGNATURE_HASH {
6735                    return Err(
6736                        alloy_sol_types::Error::invalid_event_signature_hash(
6737                            Self::SIGNATURE,
6738                            topics.0,
6739                            Self::SIGNATURE_HASH,
6740                        ),
6741                    );
6742                }
6743                Ok(())
6744            }
6745            #[inline]
6746            fn tokenize_body(&self) -> Self::DataToken<'_> {
6747                (
6748                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6749                        &self.account,
6750                    ),
6751                )
6752            }
6753            #[inline]
6754            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6755                (Self::SIGNATURE_HASH.into(),)
6756            }
6757            #[inline]
6758            fn encode_topics_raw(
6759                &self,
6760                out: &mut [alloy_sol_types::abi::token::WordToken],
6761            ) -> alloy_sol_types::Result<()> {
6762                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6763                    return Err(alloy_sol_types::Error::Overrun);
6764                }
6765                out[0usize] = alloy_sol_types::abi::token::WordToken(
6766                    Self::SIGNATURE_HASH,
6767                );
6768                Ok(())
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::private::IntoLogData for Unpaused {
6773            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6774                From::from(self)
6775            }
6776            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6777                From::from(&self)
6778            }
6779        }
6780        #[automatically_derived]
6781        impl From<&Unpaused> for alloy_sol_types::private::LogData {
6782            #[inline]
6783            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
6784                alloy_sol_types::SolEvent::encode_log_data(this)
6785            }
6786        }
6787    };
6788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6789    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6790```solidity
6791event Upgrade(address implementation);
6792```*/
6793    #[allow(
6794        non_camel_case_types,
6795        non_snake_case,
6796        clippy::pub_underscore_fields,
6797        clippy::style
6798    )]
6799    #[derive(Clone)]
6800    pub struct Upgrade {
6801        #[allow(missing_docs)]
6802        pub implementation: alloy::sol_types::private::Address,
6803    }
6804    #[allow(
6805        non_camel_case_types,
6806        non_snake_case,
6807        clippy::pub_underscore_fields,
6808        clippy::style
6809    )]
6810    const _: () = {
6811        use alloy::sol_types as alloy_sol_types;
6812        #[automatically_derived]
6813        impl alloy_sol_types::SolEvent for Upgrade {
6814            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6815            type DataToken<'a> = <Self::DataTuple<
6816                'a,
6817            > as alloy_sol_types::SolType>::Token<'a>;
6818            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6819            const SIGNATURE: &'static str = "Upgrade(address)";
6820            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6821                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6822                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6823                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6824            ]);
6825            const ANONYMOUS: bool = false;
6826            #[allow(unused_variables)]
6827            #[inline]
6828            fn new(
6829                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6830                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6831            ) -> Self {
6832                Self { implementation: data.0 }
6833            }
6834            #[inline]
6835            fn check_signature(
6836                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6837            ) -> alloy_sol_types::Result<()> {
6838                if topics.0 != Self::SIGNATURE_HASH {
6839                    return Err(
6840                        alloy_sol_types::Error::invalid_event_signature_hash(
6841                            Self::SIGNATURE,
6842                            topics.0,
6843                            Self::SIGNATURE_HASH,
6844                        ),
6845                    );
6846                }
6847                Ok(())
6848            }
6849            #[inline]
6850            fn tokenize_body(&self) -> Self::DataToken<'_> {
6851                (
6852                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6853                        &self.implementation,
6854                    ),
6855                )
6856            }
6857            #[inline]
6858            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6859                (Self::SIGNATURE_HASH.into(),)
6860            }
6861            #[inline]
6862            fn encode_topics_raw(
6863                &self,
6864                out: &mut [alloy_sol_types::abi::token::WordToken],
6865            ) -> alloy_sol_types::Result<()> {
6866                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6867                    return Err(alloy_sol_types::Error::Overrun);
6868                }
6869                out[0usize] = alloy_sol_types::abi::token::WordToken(
6870                    Self::SIGNATURE_HASH,
6871                );
6872                Ok(())
6873            }
6874        }
6875        #[automatically_derived]
6876        impl alloy_sol_types::private::IntoLogData for Upgrade {
6877            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6878                From::from(self)
6879            }
6880            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6881                From::from(&self)
6882            }
6883        }
6884        #[automatically_derived]
6885        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6886            #[inline]
6887            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6888                alloy_sol_types::SolEvent::encode_log_data(this)
6889            }
6890        }
6891    };
6892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6893    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6894```solidity
6895event Upgraded(address indexed implementation);
6896```*/
6897    #[allow(
6898        non_camel_case_types,
6899        non_snake_case,
6900        clippy::pub_underscore_fields,
6901        clippy::style
6902    )]
6903    #[derive(Clone)]
6904    pub struct Upgraded {
6905        #[allow(missing_docs)]
6906        pub implementation: alloy::sol_types::private::Address,
6907    }
6908    #[allow(
6909        non_camel_case_types,
6910        non_snake_case,
6911        clippy::pub_underscore_fields,
6912        clippy::style
6913    )]
6914    const _: () = {
6915        use alloy::sol_types as alloy_sol_types;
6916        #[automatically_derived]
6917        impl alloy_sol_types::SolEvent for Upgraded {
6918            type DataTuple<'a> = ();
6919            type DataToken<'a> = <Self::DataTuple<
6920                'a,
6921            > as alloy_sol_types::SolType>::Token<'a>;
6922            type TopicList = (
6923                alloy_sol_types::sol_data::FixedBytes<32>,
6924                alloy::sol_types::sol_data::Address,
6925            );
6926            const SIGNATURE: &'static str = "Upgraded(address)";
6927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6928                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6929                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6930                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6931            ]);
6932            const ANONYMOUS: bool = false;
6933            #[allow(unused_variables)]
6934            #[inline]
6935            fn new(
6936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6938            ) -> Self {
6939                Self { implementation: topics.1 }
6940            }
6941            #[inline]
6942            fn check_signature(
6943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6944            ) -> alloy_sol_types::Result<()> {
6945                if topics.0 != Self::SIGNATURE_HASH {
6946                    return Err(
6947                        alloy_sol_types::Error::invalid_event_signature_hash(
6948                            Self::SIGNATURE,
6949                            topics.0,
6950                            Self::SIGNATURE_HASH,
6951                        ),
6952                    );
6953                }
6954                Ok(())
6955            }
6956            #[inline]
6957            fn tokenize_body(&self) -> Self::DataToken<'_> {
6958                ()
6959            }
6960            #[inline]
6961            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6962                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6963            }
6964            #[inline]
6965            fn encode_topics_raw(
6966                &self,
6967                out: &mut [alloy_sol_types::abi::token::WordToken],
6968            ) -> alloy_sol_types::Result<()> {
6969                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6970                    return Err(alloy_sol_types::Error::Overrun);
6971                }
6972                out[0usize] = alloy_sol_types::abi::token::WordToken(
6973                    Self::SIGNATURE_HASH,
6974                );
6975                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6976                    &self.implementation,
6977                );
6978                Ok(())
6979            }
6980        }
6981        #[automatically_derived]
6982        impl alloy_sol_types::private::IntoLogData for Upgraded {
6983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6984                From::from(self)
6985            }
6986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6987                From::from(&self)
6988            }
6989        }
6990        #[automatically_derived]
6991        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6992            #[inline]
6993            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6994                alloy_sol_types::SolEvent::encode_log_data(this)
6995            }
6996        }
6997    };
6998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6999    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
7000```solidity
7001event ValidatorExit(address indexed validator);
7002```*/
7003    #[allow(
7004        non_camel_case_types,
7005        non_snake_case,
7006        clippy::pub_underscore_fields,
7007        clippy::style
7008    )]
7009    #[derive(Clone)]
7010    pub struct ValidatorExit {
7011        #[allow(missing_docs)]
7012        pub validator: alloy::sol_types::private::Address,
7013    }
7014    #[allow(
7015        non_camel_case_types,
7016        non_snake_case,
7017        clippy::pub_underscore_fields,
7018        clippy::style
7019    )]
7020    const _: () = {
7021        use alloy::sol_types as alloy_sol_types;
7022        #[automatically_derived]
7023        impl alloy_sol_types::SolEvent for ValidatorExit {
7024            type DataTuple<'a> = ();
7025            type DataToken<'a> = <Self::DataTuple<
7026                'a,
7027            > as alloy_sol_types::SolType>::Token<'a>;
7028            type TopicList = (
7029                alloy_sol_types::sol_data::FixedBytes<32>,
7030                alloy::sol_types::sol_data::Address,
7031            );
7032            const SIGNATURE: &'static str = "ValidatorExit(address)";
7033            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7034                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
7035                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
7036                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
7037            ]);
7038            const ANONYMOUS: bool = false;
7039            #[allow(unused_variables)]
7040            #[inline]
7041            fn new(
7042                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7043                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7044            ) -> Self {
7045                Self { validator: topics.1 }
7046            }
7047            #[inline]
7048            fn check_signature(
7049                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7050            ) -> alloy_sol_types::Result<()> {
7051                if topics.0 != Self::SIGNATURE_HASH {
7052                    return Err(
7053                        alloy_sol_types::Error::invalid_event_signature_hash(
7054                            Self::SIGNATURE,
7055                            topics.0,
7056                            Self::SIGNATURE_HASH,
7057                        ),
7058                    );
7059                }
7060                Ok(())
7061            }
7062            #[inline]
7063            fn tokenize_body(&self) -> Self::DataToken<'_> {
7064                ()
7065            }
7066            #[inline]
7067            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7068                (Self::SIGNATURE_HASH.into(), self.validator.clone())
7069            }
7070            #[inline]
7071            fn encode_topics_raw(
7072                &self,
7073                out: &mut [alloy_sol_types::abi::token::WordToken],
7074            ) -> alloy_sol_types::Result<()> {
7075                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7076                    return Err(alloy_sol_types::Error::Overrun);
7077                }
7078                out[0usize] = alloy_sol_types::abi::token::WordToken(
7079                    Self::SIGNATURE_HASH,
7080                );
7081                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7082                    &self.validator,
7083                );
7084                Ok(())
7085            }
7086        }
7087        #[automatically_derived]
7088        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
7089            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7090                From::from(self)
7091            }
7092            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7093                From::from(&self)
7094            }
7095        }
7096        #[automatically_derived]
7097        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
7098            #[inline]
7099            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
7100                alloy_sol_types::SolEvent::encode_log_data(this)
7101            }
7102        }
7103    };
7104    #[derive()]
7105    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
7106```solidity
7107event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
7108```*/
7109    #[allow(
7110        non_camel_case_types,
7111        non_snake_case,
7112        clippy::pub_underscore_fields,
7113        clippy::style
7114    )]
7115    #[derive(Clone)]
7116    pub struct ValidatorRegistered {
7117        #[allow(missing_docs)]
7118        pub account: alloy::sol_types::private::Address,
7119        #[allow(missing_docs)]
7120        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7121        #[allow(missing_docs)]
7122        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7123        #[allow(missing_docs)]
7124        pub commission: u16,
7125    }
7126    #[allow(
7127        non_camel_case_types,
7128        non_snake_case,
7129        clippy::pub_underscore_fields,
7130        clippy::style
7131    )]
7132    const _: () = {
7133        use alloy::sol_types as alloy_sol_types;
7134        #[automatically_derived]
7135        impl alloy_sol_types::SolEvent for ValidatorRegistered {
7136            type DataTuple<'a> = (
7137                BN254::G2Point,
7138                EdOnBN254::EdOnBN254Point,
7139                alloy::sol_types::sol_data::Uint<16>,
7140            );
7141            type DataToken<'a> = <Self::DataTuple<
7142                'a,
7143            > as alloy_sol_types::SolType>::Token<'a>;
7144            type TopicList = (
7145                alloy_sol_types::sol_data::FixedBytes<32>,
7146                alloy::sol_types::sol_data::Address,
7147            );
7148            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
7149            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7150                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
7151                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
7152                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
7153            ]);
7154            const ANONYMOUS: bool = false;
7155            #[allow(unused_variables)]
7156            #[inline]
7157            fn new(
7158                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7159                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7160            ) -> Self {
7161                Self {
7162                    account: topics.1,
7163                    blsVk: data.0,
7164                    schnorrVk: data.1,
7165                    commission: data.2,
7166                }
7167            }
7168            #[inline]
7169            fn check_signature(
7170                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7171            ) -> alloy_sol_types::Result<()> {
7172                if topics.0 != Self::SIGNATURE_HASH {
7173                    return Err(
7174                        alloy_sol_types::Error::invalid_event_signature_hash(
7175                            Self::SIGNATURE,
7176                            topics.0,
7177                            Self::SIGNATURE_HASH,
7178                        ),
7179                    );
7180                }
7181                Ok(())
7182            }
7183            #[inline]
7184            fn tokenize_body(&self) -> Self::DataToken<'_> {
7185                (
7186                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
7187                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7188                        &self.schnorrVk,
7189                    ),
7190                    <alloy::sol_types::sol_data::Uint<
7191                        16,
7192                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
7193                )
7194            }
7195            #[inline]
7196            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7197                (Self::SIGNATURE_HASH.into(), self.account.clone())
7198            }
7199            #[inline]
7200            fn encode_topics_raw(
7201                &self,
7202                out: &mut [alloy_sol_types::abi::token::WordToken],
7203            ) -> alloy_sol_types::Result<()> {
7204                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7205                    return Err(alloy_sol_types::Error::Overrun);
7206                }
7207                out[0usize] = alloy_sol_types::abi::token::WordToken(
7208                    Self::SIGNATURE_HASH,
7209                );
7210                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7211                    &self.account,
7212                );
7213                Ok(())
7214            }
7215        }
7216        #[automatically_derived]
7217        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
7218            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7219                From::from(self)
7220            }
7221            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7222                From::from(&self)
7223            }
7224        }
7225        #[automatically_derived]
7226        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
7227            #[inline]
7228            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
7229                alloy_sol_types::SolEvent::encode_log_data(this)
7230            }
7231        }
7232    };
7233    #[derive()]
7234    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)` and selector `0xf057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a`.
7235```solidity
7236event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
7237```*/
7238    #[allow(
7239        non_camel_case_types,
7240        non_snake_case,
7241        clippy::pub_underscore_fields,
7242        clippy::style
7243    )]
7244    #[derive(Clone)]
7245    pub struct ValidatorRegisteredV2 {
7246        #[allow(missing_docs)]
7247        pub account: alloy::sol_types::private::Address,
7248        #[allow(missing_docs)]
7249        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7250        #[allow(missing_docs)]
7251        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7252        #[allow(missing_docs)]
7253        pub commission: u16,
7254        #[allow(missing_docs)]
7255        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
7256        #[allow(missing_docs)]
7257        pub schnorrSig: alloy::sol_types::private::Bytes,
7258    }
7259    #[allow(
7260        non_camel_case_types,
7261        non_snake_case,
7262        clippy::pub_underscore_fields,
7263        clippy::style
7264    )]
7265    const _: () = {
7266        use alloy::sol_types as alloy_sol_types;
7267        #[automatically_derived]
7268        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
7269            type DataTuple<'a> = (
7270                BN254::G2Point,
7271                EdOnBN254::EdOnBN254Point,
7272                alloy::sol_types::sol_data::Uint<16>,
7273                BN254::G1Point,
7274                alloy::sol_types::sol_data::Bytes,
7275            );
7276            type DataToken<'a> = <Self::DataTuple<
7277                'a,
7278            > as alloy_sol_types::SolType>::Token<'a>;
7279            type TopicList = (
7280                alloy_sol_types::sol_data::FixedBytes<32>,
7281                alloy::sol_types::sol_data::Address,
7282            );
7283            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)";
7284            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7285                240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8,
7286                144u8, 120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8,
7287                43u8, 66u8, 52u8, 126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
7288            ]);
7289            const ANONYMOUS: bool = false;
7290            #[allow(unused_variables)]
7291            #[inline]
7292            fn new(
7293                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7294                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7295            ) -> Self {
7296                Self {
7297                    account: topics.1,
7298                    blsVK: data.0,
7299                    schnorrVK: data.1,
7300                    commission: data.2,
7301                    blsSig: data.3,
7302                    schnorrSig: data.4,
7303                }
7304            }
7305            #[inline]
7306            fn check_signature(
7307                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7308            ) -> alloy_sol_types::Result<()> {
7309                if topics.0 != Self::SIGNATURE_HASH {
7310                    return Err(
7311                        alloy_sol_types::Error::invalid_event_signature_hash(
7312                            Self::SIGNATURE,
7313                            topics.0,
7314                            Self::SIGNATURE_HASH,
7315                        ),
7316                    );
7317                }
7318                Ok(())
7319            }
7320            #[inline]
7321            fn tokenize_body(&self) -> Self::DataToken<'_> {
7322                (
7323                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7324                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7325                        &self.schnorrVK,
7326                    ),
7327                    <alloy::sol_types::sol_data::Uint<
7328                        16,
7329                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
7330                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
7331                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7332                        &self.schnorrSig,
7333                    ),
7334                )
7335            }
7336            #[inline]
7337            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7338                (Self::SIGNATURE_HASH.into(), self.account.clone())
7339            }
7340            #[inline]
7341            fn encode_topics_raw(
7342                &self,
7343                out: &mut [alloy_sol_types::abi::token::WordToken],
7344            ) -> alloy_sol_types::Result<()> {
7345                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7346                    return Err(alloy_sol_types::Error::Overrun);
7347                }
7348                out[0usize] = alloy_sol_types::abi::token::WordToken(
7349                    Self::SIGNATURE_HASH,
7350                );
7351                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7352                    &self.account,
7353                );
7354                Ok(())
7355            }
7356        }
7357        #[automatically_derived]
7358        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
7359            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7360                From::from(self)
7361            }
7362            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7363                From::from(&self)
7364            }
7365        }
7366        #[automatically_derived]
7367        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
7368            #[inline]
7369            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
7370                alloy_sol_types::SolEvent::encode_log_data(this)
7371            }
7372        }
7373    };
7374    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7375    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
7376```solidity
7377event Withdrawal(address indexed account, uint256 amount);
7378```*/
7379    #[allow(
7380        non_camel_case_types,
7381        non_snake_case,
7382        clippy::pub_underscore_fields,
7383        clippy::style
7384    )]
7385    #[derive(Clone)]
7386    pub struct Withdrawal {
7387        #[allow(missing_docs)]
7388        pub account: alloy::sol_types::private::Address,
7389        #[allow(missing_docs)]
7390        pub amount: alloy::sol_types::private::primitives::aliases::U256,
7391    }
7392    #[allow(
7393        non_camel_case_types,
7394        non_snake_case,
7395        clippy::pub_underscore_fields,
7396        clippy::style
7397    )]
7398    const _: () = {
7399        use alloy::sol_types as alloy_sol_types;
7400        #[automatically_derived]
7401        impl alloy_sol_types::SolEvent for Withdrawal {
7402            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7403            type DataToken<'a> = <Self::DataTuple<
7404                'a,
7405            > as alloy_sol_types::SolType>::Token<'a>;
7406            type TopicList = (
7407                alloy_sol_types::sol_data::FixedBytes<32>,
7408                alloy::sol_types::sol_data::Address,
7409            );
7410            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
7411            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7412                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
7413                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
7414                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
7415            ]);
7416            const ANONYMOUS: bool = false;
7417            #[allow(unused_variables)]
7418            #[inline]
7419            fn new(
7420                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7421                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7422            ) -> Self {
7423                Self {
7424                    account: topics.1,
7425                    amount: data.0,
7426                }
7427            }
7428            #[inline]
7429            fn check_signature(
7430                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7431            ) -> alloy_sol_types::Result<()> {
7432                if topics.0 != Self::SIGNATURE_HASH {
7433                    return Err(
7434                        alloy_sol_types::Error::invalid_event_signature_hash(
7435                            Self::SIGNATURE,
7436                            topics.0,
7437                            Self::SIGNATURE_HASH,
7438                        ),
7439                    );
7440                }
7441                Ok(())
7442            }
7443            #[inline]
7444            fn tokenize_body(&self) -> Self::DataToken<'_> {
7445                (
7446                    <alloy::sol_types::sol_data::Uint<
7447                        256,
7448                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
7449                )
7450            }
7451            #[inline]
7452            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7453                (Self::SIGNATURE_HASH.into(), self.account.clone())
7454            }
7455            #[inline]
7456            fn encode_topics_raw(
7457                &self,
7458                out: &mut [alloy_sol_types::abi::token::WordToken],
7459            ) -> alloy_sol_types::Result<()> {
7460                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7461                    return Err(alloy_sol_types::Error::Overrun);
7462                }
7463                out[0usize] = alloy_sol_types::abi::token::WordToken(
7464                    Self::SIGNATURE_HASH,
7465                );
7466                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7467                    &self.account,
7468                );
7469                Ok(())
7470            }
7471        }
7472        #[automatically_derived]
7473        impl alloy_sol_types::private::IntoLogData for Withdrawal {
7474            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7475                From::from(self)
7476            }
7477            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7478                From::from(&self)
7479            }
7480        }
7481        #[automatically_derived]
7482        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
7483            #[inline]
7484            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
7485                alloy_sol_types::SolEvent::encode_log_data(this)
7486            }
7487        }
7488    };
7489    /**Constructor`.
7490```solidity
7491constructor();
7492```*/
7493    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7494    #[derive(Clone)]
7495    pub struct constructorCall {}
7496    const _: () = {
7497        use alloy::sol_types as alloy_sol_types;
7498        {
7499            #[doc(hidden)]
7500            type UnderlyingSolTuple<'a> = ();
7501            #[doc(hidden)]
7502            type UnderlyingRustTuple<'a> = ();
7503            #[cfg(test)]
7504            #[allow(dead_code, unreachable_patterns)]
7505            fn _type_assertion(
7506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7507            ) {
7508                match _t {
7509                    alloy_sol_types::private::AssertTypeEq::<
7510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7511                    >(_) => {}
7512                }
7513            }
7514            #[automatically_derived]
7515            #[doc(hidden)]
7516            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
7517                fn from(value: constructorCall) -> Self {
7518                    ()
7519                }
7520            }
7521            #[automatically_derived]
7522            #[doc(hidden)]
7523            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
7524                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7525                    Self {}
7526                }
7527            }
7528        }
7529        #[automatically_derived]
7530        impl alloy_sol_types::SolConstructor for constructorCall {
7531            type Parameters<'a> = ();
7532            type Token<'a> = <Self::Parameters<
7533                'a,
7534            > as alloy_sol_types::SolType>::Token<'a>;
7535            #[inline]
7536            fn new<'a>(
7537                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7538            ) -> Self {
7539                tuple.into()
7540            }
7541            #[inline]
7542            fn tokenize(&self) -> Self::Token<'_> {
7543                ()
7544            }
7545        }
7546    };
7547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7548    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
7549```solidity
7550function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
7551```*/
7552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7553    #[derive(Clone)]
7554    pub struct DEFAULT_ADMIN_ROLECall {}
7555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7556    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
7557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7558    #[derive(Clone)]
7559    pub struct DEFAULT_ADMIN_ROLEReturn {
7560        #[allow(missing_docs)]
7561        pub _0: alloy::sol_types::private::FixedBytes<32>,
7562    }
7563    #[allow(
7564        non_camel_case_types,
7565        non_snake_case,
7566        clippy::pub_underscore_fields,
7567        clippy::style
7568    )]
7569    const _: () = {
7570        use alloy::sol_types as alloy_sol_types;
7571        {
7572            #[doc(hidden)]
7573            type UnderlyingSolTuple<'a> = ();
7574            #[doc(hidden)]
7575            type UnderlyingRustTuple<'a> = ();
7576            #[cfg(test)]
7577            #[allow(dead_code, unreachable_patterns)]
7578            fn _type_assertion(
7579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7580            ) {
7581                match _t {
7582                    alloy_sol_types::private::AssertTypeEq::<
7583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7584                    >(_) => {}
7585                }
7586            }
7587            #[automatically_derived]
7588            #[doc(hidden)]
7589            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
7590            for UnderlyingRustTuple<'_> {
7591                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
7592                    ()
7593                }
7594            }
7595            #[automatically_derived]
7596            #[doc(hidden)]
7597            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7598            for DEFAULT_ADMIN_ROLECall {
7599                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7600                    Self {}
7601                }
7602            }
7603        }
7604        {
7605            #[doc(hidden)]
7606            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7607            #[doc(hidden)]
7608            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7609            #[cfg(test)]
7610            #[allow(dead_code, unreachable_patterns)]
7611            fn _type_assertion(
7612                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7613            ) {
7614                match _t {
7615                    alloy_sol_types::private::AssertTypeEq::<
7616                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7617                    >(_) => {}
7618                }
7619            }
7620            #[automatically_derived]
7621            #[doc(hidden)]
7622            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
7623            for UnderlyingRustTuple<'_> {
7624                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
7625                    (value._0,)
7626                }
7627            }
7628            #[automatically_derived]
7629            #[doc(hidden)]
7630            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7631            for DEFAULT_ADMIN_ROLEReturn {
7632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7633                    Self { _0: tuple.0 }
7634                }
7635            }
7636        }
7637        #[automatically_derived]
7638        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
7639            type Parameters<'a> = ();
7640            type Token<'a> = <Self::Parameters<
7641                'a,
7642            > as alloy_sol_types::SolType>::Token<'a>;
7643            type Return = DEFAULT_ADMIN_ROLEReturn;
7644            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7645            type ReturnToken<'a> = <Self::ReturnTuple<
7646                'a,
7647            > as alloy_sol_types::SolType>::Token<'a>;
7648            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
7649            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
7650            #[inline]
7651            fn new<'a>(
7652                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7653            ) -> Self {
7654                tuple.into()
7655            }
7656            #[inline]
7657            fn tokenize(&self) -> Self::Token<'_> {
7658                ()
7659            }
7660            #[inline]
7661            fn abi_decode_returns(
7662                data: &[u8],
7663                validate: bool,
7664            ) -> alloy_sol_types::Result<Self::Return> {
7665                <Self::ReturnTuple<
7666                    '_,
7667                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7668                    .map(Into::into)
7669            }
7670        }
7671    };
7672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7673    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
7674```solidity
7675function PAUSER_ROLE() external view returns (bytes32);
7676```*/
7677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7678    #[derive(Clone)]
7679    pub struct PAUSER_ROLECall {}
7680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7681    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
7682    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7683    #[derive(Clone)]
7684    pub struct PAUSER_ROLEReturn {
7685        #[allow(missing_docs)]
7686        pub _0: alloy::sol_types::private::FixedBytes<32>,
7687    }
7688    #[allow(
7689        non_camel_case_types,
7690        non_snake_case,
7691        clippy::pub_underscore_fields,
7692        clippy::style
7693    )]
7694    const _: () = {
7695        use alloy::sol_types as alloy_sol_types;
7696        {
7697            #[doc(hidden)]
7698            type UnderlyingSolTuple<'a> = ();
7699            #[doc(hidden)]
7700            type UnderlyingRustTuple<'a> = ();
7701            #[cfg(test)]
7702            #[allow(dead_code, unreachable_patterns)]
7703            fn _type_assertion(
7704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705            ) {
7706                match _t {
7707                    alloy_sol_types::private::AssertTypeEq::<
7708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                    >(_) => {}
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
7715                fn from(value: PAUSER_ROLECall) -> Self {
7716                    ()
7717                }
7718            }
7719            #[automatically_derived]
7720            #[doc(hidden)]
7721            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
7722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7723                    Self {}
7724                }
7725            }
7726        }
7727        {
7728            #[doc(hidden)]
7729            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7730            #[doc(hidden)]
7731            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7732            #[cfg(test)]
7733            #[allow(dead_code, unreachable_patterns)]
7734            fn _type_assertion(
7735                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7736            ) {
7737                match _t {
7738                    alloy_sol_types::private::AssertTypeEq::<
7739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7740                    >(_) => {}
7741                }
7742            }
7743            #[automatically_derived]
7744            #[doc(hidden)]
7745            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
7746                fn from(value: PAUSER_ROLEReturn) -> Self {
7747                    (value._0,)
7748                }
7749            }
7750            #[automatically_derived]
7751            #[doc(hidden)]
7752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
7753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7754                    Self { _0: tuple.0 }
7755                }
7756            }
7757        }
7758        #[automatically_derived]
7759        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
7760            type Parameters<'a> = ();
7761            type Token<'a> = <Self::Parameters<
7762                'a,
7763            > as alloy_sol_types::SolType>::Token<'a>;
7764            type Return = PAUSER_ROLEReturn;
7765            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7766            type ReturnToken<'a> = <Self::ReturnTuple<
7767                'a,
7768            > as alloy_sol_types::SolType>::Token<'a>;
7769            const SIGNATURE: &'static str = "PAUSER_ROLE()";
7770            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
7771            #[inline]
7772            fn new<'a>(
7773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7774            ) -> Self {
7775                tuple.into()
7776            }
7777            #[inline]
7778            fn tokenize(&self) -> Self::Token<'_> {
7779                ()
7780            }
7781            #[inline]
7782            fn abi_decode_returns(
7783                data: &[u8],
7784                validate: bool,
7785            ) -> alloy_sol_types::Result<Self::Return> {
7786                <Self::ReturnTuple<
7787                    '_,
7788                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7789                    .map(Into::into)
7790            }
7791        }
7792    };
7793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7794    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7795```solidity
7796function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7797```*/
7798    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7799    #[derive(Clone)]
7800    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7802    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7804    #[derive(Clone)]
7805    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7806        #[allow(missing_docs)]
7807        pub _0: alloy::sol_types::private::String,
7808    }
7809    #[allow(
7810        non_camel_case_types,
7811        non_snake_case,
7812        clippy::pub_underscore_fields,
7813        clippy::style
7814    )]
7815    const _: () = {
7816        use alloy::sol_types as alloy_sol_types;
7817        {
7818            #[doc(hidden)]
7819            type UnderlyingSolTuple<'a> = ();
7820            #[doc(hidden)]
7821            type UnderlyingRustTuple<'a> = ();
7822            #[cfg(test)]
7823            #[allow(dead_code, unreachable_patterns)]
7824            fn _type_assertion(
7825                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7826            ) {
7827                match _t {
7828                    alloy_sol_types::private::AssertTypeEq::<
7829                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7830                    >(_) => {}
7831                }
7832            }
7833            #[automatically_derived]
7834            #[doc(hidden)]
7835            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7836            for UnderlyingRustTuple<'_> {
7837                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7838                    ()
7839                }
7840            }
7841            #[automatically_derived]
7842            #[doc(hidden)]
7843            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7844            for UPGRADE_INTERFACE_VERSIONCall {
7845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7846                    Self {}
7847                }
7848            }
7849        }
7850        {
7851            #[doc(hidden)]
7852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7853            #[doc(hidden)]
7854            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7855            #[cfg(test)]
7856            #[allow(dead_code, unreachable_patterns)]
7857            fn _type_assertion(
7858                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7859            ) {
7860                match _t {
7861                    alloy_sol_types::private::AssertTypeEq::<
7862                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7863                    >(_) => {}
7864                }
7865            }
7866            #[automatically_derived]
7867            #[doc(hidden)]
7868            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7869            for UnderlyingRustTuple<'_> {
7870                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7871                    (value._0,)
7872                }
7873            }
7874            #[automatically_derived]
7875            #[doc(hidden)]
7876            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7877            for UPGRADE_INTERFACE_VERSIONReturn {
7878                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7879                    Self { _0: tuple.0 }
7880                }
7881            }
7882        }
7883        #[automatically_derived]
7884        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7885            type Parameters<'a> = ();
7886            type Token<'a> = <Self::Parameters<
7887                'a,
7888            > as alloy_sol_types::SolType>::Token<'a>;
7889            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7890            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7891            type ReturnToken<'a> = <Self::ReturnTuple<
7892                'a,
7893            > as alloy_sol_types::SolType>::Token<'a>;
7894            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7895            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7896            #[inline]
7897            fn new<'a>(
7898                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7899            ) -> Self {
7900                tuple.into()
7901            }
7902            #[inline]
7903            fn tokenize(&self) -> Self::Token<'_> {
7904                ()
7905            }
7906            #[inline]
7907            fn abi_decode_returns(
7908                data: &[u8],
7909                validate: bool,
7910            ) -> alloy_sol_types::Result<Self::Return> {
7911                <Self::ReturnTuple<
7912                    '_,
7913                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7914                    .map(Into::into)
7915            }
7916        }
7917    };
7918    #[derive()]
7919    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
7920```solidity
7921function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
7922```*/
7923    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7924    #[derive(Clone)]
7925    pub struct _hashBlsKeyCall {
7926        #[allow(missing_docs)]
7927        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7928    }
7929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7930    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
7931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7932    #[derive(Clone)]
7933    pub struct _hashBlsKeyReturn {
7934        #[allow(missing_docs)]
7935        pub _0: alloy::sol_types::private::FixedBytes<32>,
7936    }
7937    #[allow(
7938        non_camel_case_types,
7939        non_snake_case,
7940        clippy::pub_underscore_fields,
7941        clippy::style
7942    )]
7943    const _: () = {
7944        use alloy::sol_types as alloy_sol_types;
7945        {
7946            #[doc(hidden)]
7947            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
7948            #[doc(hidden)]
7949            type UnderlyingRustTuple<'a> = (
7950                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7951            );
7952            #[cfg(test)]
7953            #[allow(dead_code, unreachable_patterns)]
7954            fn _type_assertion(
7955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7956            ) {
7957                match _t {
7958                    alloy_sol_types::private::AssertTypeEq::<
7959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7960                    >(_) => {}
7961                }
7962            }
7963            #[automatically_derived]
7964            #[doc(hidden)]
7965            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
7966                fn from(value: _hashBlsKeyCall) -> Self {
7967                    (value.blsVK,)
7968                }
7969            }
7970            #[automatically_derived]
7971            #[doc(hidden)]
7972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
7973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7974                    Self { blsVK: tuple.0 }
7975                }
7976            }
7977        }
7978        {
7979            #[doc(hidden)]
7980            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7981            #[doc(hidden)]
7982            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7983            #[cfg(test)]
7984            #[allow(dead_code, unreachable_patterns)]
7985            fn _type_assertion(
7986                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7987            ) {
7988                match _t {
7989                    alloy_sol_types::private::AssertTypeEq::<
7990                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7991                    >(_) => {}
7992                }
7993            }
7994            #[automatically_derived]
7995            #[doc(hidden)]
7996            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
7997                fn from(value: _hashBlsKeyReturn) -> Self {
7998                    (value._0,)
7999                }
8000            }
8001            #[automatically_derived]
8002            #[doc(hidden)]
8003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
8004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8005                    Self { _0: tuple.0 }
8006                }
8007            }
8008        }
8009        #[automatically_derived]
8010        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
8011            type Parameters<'a> = (BN254::G2Point,);
8012            type Token<'a> = <Self::Parameters<
8013                'a,
8014            > as alloy_sol_types::SolType>::Token<'a>;
8015            type Return = _hashBlsKeyReturn;
8016            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8017            type ReturnToken<'a> = <Self::ReturnTuple<
8018                'a,
8019            > as alloy_sol_types::SolType>::Token<'a>;
8020            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
8021            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
8022            #[inline]
8023            fn new<'a>(
8024                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8025            ) -> Self {
8026                tuple.into()
8027            }
8028            #[inline]
8029            fn tokenize(&self) -> Self::Token<'_> {
8030                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
8031            }
8032            #[inline]
8033            fn abi_decode_returns(
8034                data: &[u8],
8035                validate: bool,
8036            ) -> alloy_sol_types::Result<Self::Return> {
8037                <Self::ReturnTuple<
8038                    '_,
8039                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8040                    .map(Into::into)
8041            }
8042        }
8043    };
8044    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8045    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
8046```solidity
8047function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
8048```*/
8049    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8050    #[derive(Clone)]
8051    pub struct blsKeysCall {
8052        #[allow(missing_docs)]
8053        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
8054    }
8055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8056    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
8057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8058    #[derive(Clone)]
8059    pub struct blsKeysReturn {
8060        #[allow(missing_docs)]
8061        pub used: bool,
8062    }
8063    #[allow(
8064        non_camel_case_types,
8065        non_snake_case,
8066        clippy::pub_underscore_fields,
8067        clippy::style
8068    )]
8069    const _: () = {
8070        use alloy::sol_types as alloy_sol_types;
8071        {
8072            #[doc(hidden)]
8073            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8074            #[doc(hidden)]
8075            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8076            #[cfg(test)]
8077            #[allow(dead_code, unreachable_patterns)]
8078            fn _type_assertion(
8079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8080            ) {
8081                match _t {
8082                    alloy_sol_types::private::AssertTypeEq::<
8083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8084                    >(_) => {}
8085                }
8086            }
8087            #[automatically_derived]
8088            #[doc(hidden)]
8089            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
8090                fn from(value: blsKeysCall) -> Self {
8091                    (value.blsKeyHash,)
8092                }
8093            }
8094            #[automatically_derived]
8095            #[doc(hidden)]
8096            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
8097                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8098                    Self { blsKeyHash: tuple.0 }
8099                }
8100            }
8101        }
8102        {
8103            #[doc(hidden)]
8104            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8105            #[doc(hidden)]
8106            type UnderlyingRustTuple<'a> = (bool,);
8107            #[cfg(test)]
8108            #[allow(dead_code, unreachable_patterns)]
8109            fn _type_assertion(
8110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8111            ) {
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<blsKeysReturn> for UnderlyingRustTuple<'_> {
8121                fn from(value: blsKeysReturn) -> Self {
8122                    (value.used,)
8123                }
8124            }
8125            #[automatically_derived]
8126            #[doc(hidden)]
8127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
8128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8129                    Self { used: tuple.0 }
8130                }
8131            }
8132        }
8133        #[automatically_derived]
8134        impl alloy_sol_types::SolCall for blsKeysCall {
8135            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8136            type Token<'a> = <Self::Parameters<
8137                'a,
8138            > as alloy_sol_types::SolType>::Token<'a>;
8139            type Return = blsKeysReturn;
8140            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8141            type ReturnToken<'a> = <Self::ReturnTuple<
8142                'a,
8143            > as alloy_sol_types::SolType>::Token<'a>;
8144            const SIGNATURE: &'static str = "blsKeys(bytes32)";
8145            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
8146            #[inline]
8147            fn new<'a>(
8148                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8149            ) -> Self {
8150                tuple.into()
8151            }
8152            #[inline]
8153            fn tokenize(&self) -> Self::Token<'_> {
8154                (
8155                    <alloy::sol_types::sol_data::FixedBytes<
8156                        32,
8157                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
8158                )
8159            }
8160            #[inline]
8161            fn abi_decode_returns(
8162                data: &[u8],
8163                validate: bool,
8164            ) -> alloy_sol_types::Result<Self::Return> {
8165                <Self::ReturnTuple<
8166                    '_,
8167                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8168                    .map(Into::into)
8169            }
8170        }
8171    };
8172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8173    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
8174```solidity
8175function claimValidatorExit(address validator) external;
8176```*/
8177    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8178    #[derive(Clone)]
8179    pub struct claimValidatorExitCall {
8180        #[allow(missing_docs)]
8181        pub validator: alloy::sol_types::private::Address,
8182    }
8183    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
8184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8185    #[derive(Clone)]
8186    pub struct claimValidatorExitReturn {}
8187    #[allow(
8188        non_camel_case_types,
8189        non_snake_case,
8190        clippy::pub_underscore_fields,
8191        clippy::style
8192    )]
8193    const _: () = {
8194        use alloy::sol_types as alloy_sol_types;
8195        {
8196            #[doc(hidden)]
8197            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8198            #[doc(hidden)]
8199            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8200            #[cfg(test)]
8201            #[allow(dead_code, unreachable_patterns)]
8202            fn _type_assertion(
8203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8204            ) {
8205                match _t {
8206                    alloy_sol_types::private::AssertTypeEq::<
8207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8208                    >(_) => {}
8209                }
8210            }
8211            #[automatically_derived]
8212            #[doc(hidden)]
8213            impl ::core::convert::From<claimValidatorExitCall>
8214            for UnderlyingRustTuple<'_> {
8215                fn from(value: claimValidatorExitCall) -> Self {
8216                    (value.validator,)
8217                }
8218            }
8219            #[automatically_derived]
8220            #[doc(hidden)]
8221            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8222            for claimValidatorExitCall {
8223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8224                    Self { validator: tuple.0 }
8225                }
8226            }
8227        }
8228        {
8229            #[doc(hidden)]
8230            type UnderlyingSolTuple<'a> = ();
8231            #[doc(hidden)]
8232            type UnderlyingRustTuple<'a> = ();
8233            #[cfg(test)]
8234            #[allow(dead_code, unreachable_patterns)]
8235            fn _type_assertion(
8236                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8237            ) {
8238                match _t {
8239                    alloy_sol_types::private::AssertTypeEq::<
8240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8241                    >(_) => {}
8242                }
8243            }
8244            #[automatically_derived]
8245            #[doc(hidden)]
8246            impl ::core::convert::From<claimValidatorExitReturn>
8247            for UnderlyingRustTuple<'_> {
8248                fn from(value: claimValidatorExitReturn) -> Self {
8249                    ()
8250                }
8251            }
8252            #[automatically_derived]
8253            #[doc(hidden)]
8254            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8255            for claimValidatorExitReturn {
8256                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8257                    Self {}
8258                }
8259            }
8260        }
8261        #[automatically_derived]
8262        impl alloy_sol_types::SolCall for claimValidatorExitCall {
8263            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8264            type Token<'a> = <Self::Parameters<
8265                'a,
8266            > as alloy_sol_types::SolType>::Token<'a>;
8267            type Return = claimValidatorExitReturn;
8268            type ReturnTuple<'a> = ();
8269            type ReturnToken<'a> = <Self::ReturnTuple<
8270                'a,
8271            > as alloy_sol_types::SolType>::Token<'a>;
8272            const SIGNATURE: &'static str = "claimValidatorExit(address)";
8273            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
8274            #[inline]
8275            fn new<'a>(
8276                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8277            ) -> Self {
8278                tuple.into()
8279            }
8280            #[inline]
8281            fn tokenize(&self) -> Self::Token<'_> {
8282                (
8283                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8284                        &self.validator,
8285                    ),
8286                )
8287            }
8288            #[inline]
8289            fn abi_decode_returns(
8290                data: &[u8],
8291                validate: bool,
8292            ) -> alloy_sol_types::Result<Self::Return> {
8293                <Self::ReturnTuple<
8294                    '_,
8295                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8296                    .map(Into::into)
8297            }
8298        }
8299    };
8300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8301    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
8302```solidity
8303function claimWithdrawal(address validator) external;
8304```*/
8305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8306    #[derive(Clone)]
8307    pub struct claimWithdrawalCall {
8308        #[allow(missing_docs)]
8309        pub validator: alloy::sol_types::private::Address,
8310    }
8311    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
8312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8313    #[derive(Clone)]
8314    pub struct claimWithdrawalReturn {}
8315    #[allow(
8316        non_camel_case_types,
8317        non_snake_case,
8318        clippy::pub_underscore_fields,
8319        clippy::style
8320    )]
8321    const _: () = {
8322        use alloy::sol_types as alloy_sol_types;
8323        {
8324            #[doc(hidden)]
8325            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8326            #[doc(hidden)]
8327            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8328            #[cfg(test)]
8329            #[allow(dead_code, unreachable_patterns)]
8330            fn _type_assertion(
8331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8332            ) {
8333                match _t {
8334                    alloy_sol_types::private::AssertTypeEq::<
8335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8336                    >(_) => {}
8337                }
8338            }
8339            #[automatically_derived]
8340            #[doc(hidden)]
8341            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
8342                fn from(value: claimWithdrawalCall) -> Self {
8343                    (value.validator,)
8344                }
8345            }
8346            #[automatically_derived]
8347            #[doc(hidden)]
8348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
8349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8350                    Self { validator: tuple.0 }
8351                }
8352            }
8353        }
8354        {
8355            #[doc(hidden)]
8356            type UnderlyingSolTuple<'a> = ();
8357            #[doc(hidden)]
8358            type UnderlyingRustTuple<'a> = ();
8359            #[cfg(test)]
8360            #[allow(dead_code, unreachable_patterns)]
8361            fn _type_assertion(
8362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8363            ) {
8364                match _t {
8365                    alloy_sol_types::private::AssertTypeEq::<
8366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8367                    >(_) => {}
8368                }
8369            }
8370            #[automatically_derived]
8371            #[doc(hidden)]
8372            impl ::core::convert::From<claimWithdrawalReturn>
8373            for UnderlyingRustTuple<'_> {
8374                fn from(value: claimWithdrawalReturn) -> Self {
8375                    ()
8376                }
8377            }
8378            #[automatically_derived]
8379            #[doc(hidden)]
8380            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8381            for claimWithdrawalReturn {
8382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8383                    Self {}
8384                }
8385            }
8386        }
8387        #[automatically_derived]
8388        impl alloy_sol_types::SolCall for claimWithdrawalCall {
8389            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8390            type Token<'a> = <Self::Parameters<
8391                'a,
8392            > as alloy_sol_types::SolType>::Token<'a>;
8393            type Return = claimWithdrawalReturn;
8394            type ReturnTuple<'a> = ();
8395            type ReturnToken<'a> = <Self::ReturnTuple<
8396                'a,
8397            > as alloy_sol_types::SolType>::Token<'a>;
8398            const SIGNATURE: &'static str = "claimWithdrawal(address)";
8399            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
8400            #[inline]
8401            fn new<'a>(
8402                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8403            ) -> Self {
8404                tuple.into()
8405            }
8406            #[inline]
8407            fn tokenize(&self) -> Self::Token<'_> {
8408                (
8409                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8410                        &self.validator,
8411                    ),
8412                )
8413            }
8414            #[inline]
8415            fn abi_decode_returns(
8416                data: &[u8],
8417                validate: bool,
8418            ) -> alloy_sol_types::Result<Self::Return> {
8419                <Self::ReturnTuple<
8420                    '_,
8421                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8422                    .map(Into::into)
8423            }
8424        }
8425    };
8426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8427    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
8428```solidity
8429function delegate(address validator, uint256 amount) external;
8430```*/
8431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8432    #[derive(Clone)]
8433    pub struct delegateCall {
8434        #[allow(missing_docs)]
8435        pub validator: alloy::sol_types::private::Address,
8436        #[allow(missing_docs)]
8437        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8438    }
8439    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
8440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8441    #[derive(Clone)]
8442    pub struct delegateReturn {}
8443    #[allow(
8444        non_camel_case_types,
8445        non_snake_case,
8446        clippy::pub_underscore_fields,
8447        clippy::style
8448    )]
8449    const _: () = {
8450        use alloy::sol_types as alloy_sol_types;
8451        {
8452            #[doc(hidden)]
8453            type UnderlyingSolTuple<'a> = (
8454                alloy::sol_types::sol_data::Address,
8455                alloy::sol_types::sol_data::Uint<256>,
8456            );
8457            #[doc(hidden)]
8458            type UnderlyingRustTuple<'a> = (
8459                alloy::sol_types::private::Address,
8460                alloy::sol_types::private::primitives::aliases::U256,
8461            );
8462            #[cfg(test)]
8463            #[allow(dead_code, unreachable_patterns)]
8464            fn _type_assertion(
8465                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8466            ) {
8467                match _t {
8468                    alloy_sol_types::private::AssertTypeEq::<
8469                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8470                    >(_) => {}
8471                }
8472            }
8473            #[automatically_derived]
8474            #[doc(hidden)]
8475            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
8476                fn from(value: delegateCall) -> Self {
8477                    (value.validator, value.amount)
8478                }
8479            }
8480            #[automatically_derived]
8481            #[doc(hidden)]
8482            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
8483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8484                    Self {
8485                        validator: tuple.0,
8486                        amount: tuple.1,
8487                    }
8488                }
8489            }
8490        }
8491        {
8492            #[doc(hidden)]
8493            type UnderlyingSolTuple<'a> = ();
8494            #[doc(hidden)]
8495            type UnderlyingRustTuple<'a> = ();
8496            #[cfg(test)]
8497            #[allow(dead_code, unreachable_patterns)]
8498            fn _type_assertion(
8499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8500            ) {
8501                match _t {
8502                    alloy_sol_types::private::AssertTypeEq::<
8503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8504                    >(_) => {}
8505                }
8506            }
8507            #[automatically_derived]
8508            #[doc(hidden)]
8509            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
8510                fn from(value: delegateReturn) -> Self {
8511                    ()
8512                }
8513            }
8514            #[automatically_derived]
8515            #[doc(hidden)]
8516            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
8517                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8518                    Self {}
8519                }
8520            }
8521        }
8522        #[automatically_derived]
8523        impl alloy_sol_types::SolCall for delegateCall {
8524            type Parameters<'a> = (
8525                alloy::sol_types::sol_data::Address,
8526                alloy::sol_types::sol_data::Uint<256>,
8527            );
8528            type Token<'a> = <Self::Parameters<
8529                'a,
8530            > as alloy_sol_types::SolType>::Token<'a>;
8531            type Return = delegateReturn;
8532            type ReturnTuple<'a> = ();
8533            type ReturnToken<'a> = <Self::ReturnTuple<
8534                'a,
8535            > as alloy_sol_types::SolType>::Token<'a>;
8536            const SIGNATURE: &'static str = "delegate(address,uint256)";
8537            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
8538            #[inline]
8539            fn new<'a>(
8540                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8541            ) -> Self {
8542                tuple.into()
8543            }
8544            #[inline]
8545            fn tokenize(&self) -> Self::Token<'_> {
8546                (
8547                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8548                        &self.validator,
8549                    ),
8550                    <alloy::sol_types::sol_data::Uint<
8551                        256,
8552                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8553                )
8554            }
8555            #[inline]
8556            fn abi_decode_returns(
8557                data: &[u8],
8558                validate: bool,
8559            ) -> alloy_sol_types::Result<Self::Return> {
8560                <Self::ReturnTuple<
8561                    '_,
8562                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8563                    .map(Into::into)
8564            }
8565        }
8566    };
8567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8568    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
8569```solidity
8570function delegations(address validator, address delegator) external view returns (uint256 amount);
8571```*/
8572    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8573    #[derive(Clone)]
8574    pub struct delegationsCall {
8575        #[allow(missing_docs)]
8576        pub validator: alloy::sol_types::private::Address,
8577        #[allow(missing_docs)]
8578        pub delegator: alloy::sol_types::private::Address,
8579    }
8580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8581    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
8582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8583    #[derive(Clone)]
8584    pub struct delegationsReturn {
8585        #[allow(missing_docs)]
8586        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8587    }
8588    #[allow(
8589        non_camel_case_types,
8590        non_snake_case,
8591        clippy::pub_underscore_fields,
8592        clippy::style
8593    )]
8594    const _: () = {
8595        use alloy::sol_types as alloy_sol_types;
8596        {
8597            #[doc(hidden)]
8598            type UnderlyingSolTuple<'a> = (
8599                alloy::sol_types::sol_data::Address,
8600                alloy::sol_types::sol_data::Address,
8601            );
8602            #[doc(hidden)]
8603            type UnderlyingRustTuple<'a> = (
8604                alloy::sol_types::private::Address,
8605                alloy::sol_types::private::Address,
8606            );
8607            #[cfg(test)]
8608            #[allow(dead_code, unreachable_patterns)]
8609            fn _type_assertion(
8610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8611            ) {
8612                match _t {
8613                    alloy_sol_types::private::AssertTypeEq::<
8614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8615                    >(_) => {}
8616                }
8617            }
8618            #[automatically_derived]
8619            #[doc(hidden)]
8620            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
8621                fn from(value: delegationsCall) -> Self {
8622                    (value.validator, value.delegator)
8623                }
8624            }
8625            #[automatically_derived]
8626            #[doc(hidden)]
8627            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
8628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8629                    Self {
8630                        validator: tuple.0,
8631                        delegator: tuple.1,
8632                    }
8633                }
8634            }
8635        }
8636        {
8637            #[doc(hidden)]
8638            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8639            #[doc(hidden)]
8640            type UnderlyingRustTuple<'a> = (
8641                alloy::sol_types::private::primitives::aliases::U256,
8642            );
8643            #[cfg(test)]
8644            #[allow(dead_code, unreachable_patterns)]
8645            fn _type_assertion(
8646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8647            ) {
8648                match _t {
8649                    alloy_sol_types::private::AssertTypeEq::<
8650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8651                    >(_) => {}
8652                }
8653            }
8654            #[automatically_derived]
8655            #[doc(hidden)]
8656            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
8657                fn from(value: delegationsReturn) -> Self {
8658                    (value.amount,)
8659                }
8660            }
8661            #[automatically_derived]
8662            #[doc(hidden)]
8663            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
8664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8665                    Self { amount: tuple.0 }
8666                }
8667            }
8668        }
8669        #[automatically_derived]
8670        impl alloy_sol_types::SolCall for delegationsCall {
8671            type Parameters<'a> = (
8672                alloy::sol_types::sol_data::Address,
8673                alloy::sol_types::sol_data::Address,
8674            );
8675            type Token<'a> = <Self::Parameters<
8676                'a,
8677            > as alloy_sol_types::SolType>::Token<'a>;
8678            type Return = delegationsReturn;
8679            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8680            type ReturnToken<'a> = <Self::ReturnTuple<
8681                'a,
8682            > as alloy_sol_types::SolType>::Token<'a>;
8683            const SIGNATURE: &'static str = "delegations(address,address)";
8684            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
8685            #[inline]
8686            fn new<'a>(
8687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8688            ) -> Self {
8689                tuple.into()
8690            }
8691            #[inline]
8692            fn tokenize(&self) -> Self::Token<'_> {
8693                (
8694                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8695                        &self.validator,
8696                    ),
8697                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8698                        &self.delegator,
8699                    ),
8700                )
8701            }
8702            #[inline]
8703            fn abi_decode_returns(
8704                data: &[u8],
8705                validate: bool,
8706            ) -> alloy_sol_types::Result<Self::Return> {
8707                <Self::ReturnTuple<
8708                    '_,
8709                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8710                    .map(Into::into)
8711            }
8712        }
8713    };
8714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8715    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
8716```solidity
8717function deregisterValidator() external;
8718```*/
8719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8720    #[derive(Clone)]
8721    pub struct deregisterValidatorCall {}
8722    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
8723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8724    #[derive(Clone)]
8725    pub struct deregisterValidatorReturn {}
8726    #[allow(
8727        non_camel_case_types,
8728        non_snake_case,
8729        clippy::pub_underscore_fields,
8730        clippy::style
8731    )]
8732    const _: () = {
8733        use alloy::sol_types as alloy_sol_types;
8734        {
8735            #[doc(hidden)]
8736            type UnderlyingSolTuple<'a> = ();
8737            #[doc(hidden)]
8738            type UnderlyingRustTuple<'a> = ();
8739            #[cfg(test)]
8740            #[allow(dead_code, unreachable_patterns)]
8741            fn _type_assertion(
8742                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8743            ) {
8744                match _t {
8745                    alloy_sol_types::private::AssertTypeEq::<
8746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8747                    >(_) => {}
8748                }
8749            }
8750            #[automatically_derived]
8751            #[doc(hidden)]
8752            impl ::core::convert::From<deregisterValidatorCall>
8753            for UnderlyingRustTuple<'_> {
8754                fn from(value: deregisterValidatorCall) -> Self {
8755                    ()
8756                }
8757            }
8758            #[automatically_derived]
8759            #[doc(hidden)]
8760            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8761            for deregisterValidatorCall {
8762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8763                    Self {}
8764                }
8765            }
8766        }
8767        {
8768            #[doc(hidden)]
8769            type UnderlyingSolTuple<'a> = ();
8770            #[doc(hidden)]
8771            type UnderlyingRustTuple<'a> = ();
8772            #[cfg(test)]
8773            #[allow(dead_code, unreachable_patterns)]
8774            fn _type_assertion(
8775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8776            ) {
8777                match _t {
8778                    alloy_sol_types::private::AssertTypeEq::<
8779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8780                    >(_) => {}
8781                }
8782            }
8783            #[automatically_derived]
8784            #[doc(hidden)]
8785            impl ::core::convert::From<deregisterValidatorReturn>
8786            for UnderlyingRustTuple<'_> {
8787                fn from(value: deregisterValidatorReturn) -> Self {
8788                    ()
8789                }
8790            }
8791            #[automatically_derived]
8792            #[doc(hidden)]
8793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8794            for deregisterValidatorReturn {
8795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8796                    Self {}
8797                }
8798            }
8799        }
8800        #[automatically_derived]
8801        impl alloy_sol_types::SolCall for deregisterValidatorCall {
8802            type Parameters<'a> = ();
8803            type Token<'a> = <Self::Parameters<
8804                'a,
8805            > as alloy_sol_types::SolType>::Token<'a>;
8806            type Return = deregisterValidatorReturn;
8807            type ReturnTuple<'a> = ();
8808            type ReturnToken<'a> = <Self::ReturnTuple<
8809                'a,
8810            > as alloy_sol_types::SolType>::Token<'a>;
8811            const SIGNATURE: &'static str = "deregisterValidator()";
8812            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
8813            #[inline]
8814            fn new<'a>(
8815                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8816            ) -> Self {
8817                tuple.into()
8818            }
8819            #[inline]
8820            fn tokenize(&self) -> Self::Token<'_> {
8821                ()
8822            }
8823            #[inline]
8824            fn abi_decode_returns(
8825                data: &[u8],
8826                validate: bool,
8827            ) -> alloy_sol_types::Result<Self::Return> {
8828                <Self::ReturnTuple<
8829                    '_,
8830                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8831                    .map(Into::into)
8832            }
8833        }
8834    };
8835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8836    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
8837```solidity
8838function exitEscrowPeriod() external view returns (uint256);
8839```*/
8840    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8841    #[derive(Clone)]
8842    pub struct exitEscrowPeriodCall {}
8843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8844    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
8845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8846    #[derive(Clone)]
8847    pub struct exitEscrowPeriodReturn {
8848        #[allow(missing_docs)]
8849        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8850    }
8851    #[allow(
8852        non_camel_case_types,
8853        non_snake_case,
8854        clippy::pub_underscore_fields,
8855        clippy::style
8856    )]
8857    const _: () = {
8858        use alloy::sol_types as alloy_sol_types;
8859        {
8860            #[doc(hidden)]
8861            type UnderlyingSolTuple<'a> = ();
8862            #[doc(hidden)]
8863            type UnderlyingRustTuple<'a> = ();
8864            #[cfg(test)]
8865            #[allow(dead_code, unreachable_patterns)]
8866            fn _type_assertion(
8867                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8868            ) {
8869                match _t {
8870                    alloy_sol_types::private::AssertTypeEq::<
8871                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8872                    >(_) => {}
8873                }
8874            }
8875            #[automatically_derived]
8876            #[doc(hidden)]
8877            impl ::core::convert::From<exitEscrowPeriodCall>
8878            for UnderlyingRustTuple<'_> {
8879                fn from(value: exitEscrowPeriodCall) -> Self {
8880                    ()
8881                }
8882            }
8883            #[automatically_derived]
8884            #[doc(hidden)]
8885            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8886            for exitEscrowPeriodCall {
8887                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8888                    Self {}
8889                }
8890            }
8891        }
8892        {
8893            #[doc(hidden)]
8894            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8895            #[doc(hidden)]
8896            type UnderlyingRustTuple<'a> = (
8897                alloy::sol_types::private::primitives::aliases::U256,
8898            );
8899            #[cfg(test)]
8900            #[allow(dead_code, unreachable_patterns)]
8901            fn _type_assertion(
8902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8903            ) {
8904                match _t {
8905                    alloy_sol_types::private::AssertTypeEq::<
8906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8907                    >(_) => {}
8908                }
8909            }
8910            #[automatically_derived]
8911            #[doc(hidden)]
8912            impl ::core::convert::From<exitEscrowPeriodReturn>
8913            for UnderlyingRustTuple<'_> {
8914                fn from(value: exitEscrowPeriodReturn) -> Self {
8915                    (value._0,)
8916                }
8917            }
8918            #[automatically_derived]
8919            #[doc(hidden)]
8920            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8921            for exitEscrowPeriodReturn {
8922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8923                    Self { _0: tuple.0 }
8924                }
8925            }
8926        }
8927        #[automatically_derived]
8928        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
8929            type Parameters<'a> = ();
8930            type Token<'a> = <Self::Parameters<
8931                'a,
8932            > as alloy_sol_types::SolType>::Token<'a>;
8933            type Return = exitEscrowPeriodReturn;
8934            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8935            type ReturnToken<'a> = <Self::ReturnTuple<
8936                'a,
8937            > as alloy_sol_types::SolType>::Token<'a>;
8938            const SIGNATURE: &'static str = "exitEscrowPeriod()";
8939            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
8940            #[inline]
8941            fn new<'a>(
8942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8943            ) -> Self {
8944                tuple.into()
8945            }
8946            #[inline]
8947            fn tokenize(&self) -> Self::Token<'_> {
8948                ()
8949            }
8950            #[inline]
8951            fn abi_decode_returns(
8952                data: &[u8],
8953                validate: bool,
8954            ) -> alloy_sol_types::Result<Self::Return> {
8955                <Self::ReturnTuple<
8956                    '_,
8957                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8958                    .map(Into::into)
8959            }
8960        }
8961    };
8962    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8963    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
8964```solidity
8965function getRoleAdmin(bytes32 role) external view returns (bytes32);
8966```*/
8967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8968    #[derive(Clone)]
8969    pub struct getRoleAdminCall {
8970        #[allow(missing_docs)]
8971        pub role: alloy::sol_types::private::FixedBytes<32>,
8972    }
8973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8974    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
8975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8976    #[derive(Clone)]
8977    pub struct getRoleAdminReturn {
8978        #[allow(missing_docs)]
8979        pub _0: alloy::sol_types::private::FixedBytes<32>,
8980    }
8981    #[allow(
8982        non_camel_case_types,
8983        non_snake_case,
8984        clippy::pub_underscore_fields,
8985        clippy::style
8986    )]
8987    const _: () = {
8988        use alloy::sol_types as alloy_sol_types;
8989        {
8990            #[doc(hidden)]
8991            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8992            #[doc(hidden)]
8993            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8994            #[cfg(test)]
8995            #[allow(dead_code, unreachable_patterns)]
8996            fn _type_assertion(
8997                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8998            ) {
8999                match _t {
9000                    alloy_sol_types::private::AssertTypeEq::<
9001                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9002                    >(_) => {}
9003                }
9004            }
9005            #[automatically_derived]
9006            #[doc(hidden)]
9007            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
9008                fn from(value: getRoleAdminCall) -> Self {
9009                    (value.role,)
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
9015                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9016                    Self { role: tuple.0 }
9017                }
9018            }
9019        }
9020        {
9021            #[doc(hidden)]
9022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9023            #[doc(hidden)]
9024            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9025            #[cfg(test)]
9026            #[allow(dead_code, unreachable_patterns)]
9027            fn _type_assertion(
9028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9029            ) {
9030                match _t {
9031                    alloy_sol_types::private::AssertTypeEq::<
9032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9033                    >(_) => {}
9034                }
9035            }
9036            #[automatically_derived]
9037            #[doc(hidden)]
9038            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
9039                fn from(value: getRoleAdminReturn) -> Self {
9040                    (value._0,)
9041                }
9042            }
9043            #[automatically_derived]
9044            #[doc(hidden)]
9045            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
9046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9047                    Self { _0: tuple.0 }
9048                }
9049            }
9050        }
9051        #[automatically_derived]
9052        impl alloy_sol_types::SolCall for getRoleAdminCall {
9053            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9054            type Token<'a> = <Self::Parameters<
9055                'a,
9056            > as alloy_sol_types::SolType>::Token<'a>;
9057            type Return = getRoleAdminReturn;
9058            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9059            type ReturnToken<'a> = <Self::ReturnTuple<
9060                'a,
9061            > as alloy_sol_types::SolType>::Token<'a>;
9062            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
9063            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
9064            #[inline]
9065            fn new<'a>(
9066                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9067            ) -> Self {
9068                tuple.into()
9069            }
9070            #[inline]
9071            fn tokenize(&self) -> Self::Token<'_> {
9072                (
9073                    <alloy::sol_types::sol_data::FixedBytes<
9074                        32,
9075                    > as alloy_sol_types::SolType>::tokenize(&self.role),
9076                )
9077            }
9078            #[inline]
9079            fn abi_decode_returns(
9080                data: &[u8],
9081                validate: bool,
9082            ) -> alloy_sol_types::Result<Self::Return> {
9083                <Self::ReturnTuple<
9084                    '_,
9085                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9086                    .map(Into::into)
9087            }
9088        }
9089    };
9090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9091    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9092```solidity
9093function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9094```*/
9095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9096    #[derive(Clone)]
9097    pub struct getVersionCall {}
9098    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9099    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9101    #[derive(Clone)]
9102    pub struct getVersionReturn {
9103        #[allow(missing_docs)]
9104        pub majorVersion: u8,
9105        #[allow(missing_docs)]
9106        pub minorVersion: u8,
9107        #[allow(missing_docs)]
9108        pub patchVersion: u8,
9109    }
9110    #[allow(
9111        non_camel_case_types,
9112        non_snake_case,
9113        clippy::pub_underscore_fields,
9114        clippy::style
9115    )]
9116    const _: () = {
9117        use alloy::sol_types as alloy_sol_types;
9118        {
9119            #[doc(hidden)]
9120            type UnderlyingSolTuple<'a> = ();
9121            #[doc(hidden)]
9122            type UnderlyingRustTuple<'a> = ();
9123            #[cfg(test)]
9124            #[allow(dead_code, unreachable_patterns)]
9125            fn _type_assertion(
9126                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9127            ) {
9128                match _t {
9129                    alloy_sol_types::private::AssertTypeEq::<
9130                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9131                    >(_) => {}
9132                }
9133            }
9134            #[automatically_derived]
9135            #[doc(hidden)]
9136            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9137                fn from(value: getVersionCall) -> Self {
9138                    ()
9139                }
9140            }
9141            #[automatically_derived]
9142            #[doc(hidden)]
9143            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9144                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9145                    Self {}
9146                }
9147            }
9148        }
9149        {
9150            #[doc(hidden)]
9151            type UnderlyingSolTuple<'a> = (
9152                alloy::sol_types::sol_data::Uint<8>,
9153                alloy::sol_types::sol_data::Uint<8>,
9154                alloy::sol_types::sol_data::Uint<8>,
9155            );
9156            #[doc(hidden)]
9157            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9158            #[cfg(test)]
9159            #[allow(dead_code, unreachable_patterns)]
9160            fn _type_assertion(
9161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9162            ) {
9163                match _t {
9164                    alloy_sol_types::private::AssertTypeEq::<
9165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9166                    >(_) => {}
9167                }
9168            }
9169            #[automatically_derived]
9170            #[doc(hidden)]
9171            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9172                fn from(value: getVersionReturn) -> Self {
9173                    (value.majorVersion, value.minorVersion, value.patchVersion)
9174                }
9175            }
9176            #[automatically_derived]
9177            #[doc(hidden)]
9178            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9180                    Self {
9181                        majorVersion: tuple.0,
9182                        minorVersion: tuple.1,
9183                        patchVersion: tuple.2,
9184                    }
9185                }
9186            }
9187        }
9188        #[automatically_derived]
9189        impl alloy_sol_types::SolCall for getVersionCall {
9190            type Parameters<'a> = ();
9191            type Token<'a> = <Self::Parameters<
9192                'a,
9193            > as alloy_sol_types::SolType>::Token<'a>;
9194            type Return = getVersionReturn;
9195            type ReturnTuple<'a> = (
9196                alloy::sol_types::sol_data::Uint<8>,
9197                alloy::sol_types::sol_data::Uint<8>,
9198                alloy::sol_types::sol_data::Uint<8>,
9199            );
9200            type ReturnToken<'a> = <Self::ReturnTuple<
9201                'a,
9202            > as alloy_sol_types::SolType>::Token<'a>;
9203            const SIGNATURE: &'static str = "getVersion()";
9204            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9205            #[inline]
9206            fn new<'a>(
9207                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9208            ) -> Self {
9209                tuple.into()
9210            }
9211            #[inline]
9212            fn tokenize(&self) -> Self::Token<'_> {
9213                ()
9214            }
9215            #[inline]
9216            fn abi_decode_returns(
9217                data: &[u8],
9218                validate: bool,
9219            ) -> alloy_sol_types::Result<Self::Return> {
9220                <Self::ReturnTuple<
9221                    '_,
9222                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9223                    .map(Into::into)
9224            }
9225        }
9226    };
9227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9228    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
9229```solidity
9230function grantRole(bytes32 role, address account) external;
9231```*/
9232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9233    #[derive(Clone)]
9234    pub struct grantRoleCall {
9235        #[allow(missing_docs)]
9236        pub role: alloy::sol_types::private::FixedBytes<32>,
9237        #[allow(missing_docs)]
9238        pub account: alloy::sol_types::private::Address,
9239    }
9240    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
9241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9242    #[derive(Clone)]
9243    pub struct grantRoleReturn {}
9244    #[allow(
9245        non_camel_case_types,
9246        non_snake_case,
9247        clippy::pub_underscore_fields,
9248        clippy::style
9249    )]
9250    const _: () = {
9251        use alloy::sol_types as alloy_sol_types;
9252        {
9253            #[doc(hidden)]
9254            type UnderlyingSolTuple<'a> = (
9255                alloy::sol_types::sol_data::FixedBytes<32>,
9256                alloy::sol_types::sol_data::Address,
9257            );
9258            #[doc(hidden)]
9259            type UnderlyingRustTuple<'a> = (
9260                alloy::sol_types::private::FixedBytes<32>,
9261                alloy::sol_types::private::Address,
9262            );
9263            #[cfg(test)]
9264            #[allow(dead_code, unreachable_patterns)]
9265            fn _type_assertion(
9266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9267            ) {
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<grantRoleCall> for UnderlyingRustTuple<'_> {
9277                fn from(value: grantRoleCall) -> Self {
9278                    (value.role, value.account)
9279                }
9280            }
9281            #[automatically_derived]
9282            #[doc(hidden)]
9283            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
9284                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9285                    Self {
9286                        role: tuple.0,
9287                        account: tuple.1,
9288                    }
9289                }
9290            }
9291        }
9292        {
9293            #[doc(hidden)]
9294            type UnderlyingSolTuple<'a> = ();
9295            #[doc(hidden)]
9296            type UnderlyingRustTuple<'a> = ();
9297            #[cfg(test)]
9298            #[allow(dead_code, unreachable_patterns)]
9299            fn _type_assertion(
9300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9301            ) {
9302                match _t {
9303                    alloy_sol_types::private::AssertTypeEq::<
9304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9305                    >(_) => {}
9306                }
9307            }
9308            #[automatically_derived]
9309            #[doc(hidden)]
9310            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
9311                fn from(value: grantRoleReturn) -> Self {
9312                    ()
9313                }
9314            }
9315            #[automatically_derived]
9316            #[doc(hidden)]
9317            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
9318                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9319                    Self {}
9320                }
9321            }
9322        }
9323        #[automatically_derived]
9324        impl alloy_sol_types::SolCall for grantRoleCall {
9325            type Parameters<'a> = (
9326                alloy::sol_types::sol_data::FixedBytes<32>,
9327                alloy::sol_types::sol_data::Address,
9328            );
9329            type Token<'a> = <Self::Parameters<
9330                'a,
9331            > as alloy_sol_types::SolType>::Token<'a>;
9332            type Return = grantRoleReturn;
9333            type ReturnTuple<'a> = ();
9334            type ReturnToken<'a> = <Self::ReturnTuple<
9335                'a,
9336            > as alloy_sol_types::SolType>::Token<'a>;
9337            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
9338            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
9339            #[inline]
9340            fn new<'a>(
9341                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9342            ) -> Self {
9343                tuple.into()
9344            }
9345            #[inline]
9346            fn tokenize(&self) -> Self::Token<'_> {
9347                (
9348                    <alloy::sol_types::sol_data::FixedBytes<
9349                        32,
9350                    > as alloy_sol_types::SolType>::tokenize(&self.role),
9351                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9352                        &self.account,
9353                    ),
9354                )
9355            }
9356            #[inline]
9357            fn abi_decode_returns(
9358                data: &[u8],
9359                validate: bool,
9360            ) -> alloy_sol_types::Result<Self::Return> {
9361                <Self::ReturnTuple<
9362                    '_,
9363                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9364                    .map(Into::into)
9365            }
9366        }
9367    };
9368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9369    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
9370```solidity
9371function hasRole(bytes32 role, address account) external view returns (bool);
9372```*/
9373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9374    #[derive(Clone)]
9375    pub struct hasRoleCall {
9376        #[allow(missing_docs)]
9377        pub role: alloy::sol_types::private::FixedBytes<32>,
9378        #[allow(missing_docs)]
9379        pub account: alloy::sol_types::private::Address,
9380    }
9381    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9382    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
9383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9384    #[derive(Clone)]
9385    pub struct hasRoleReturn {
9386        #[allow(missing_docs)]
9387        pub _0: bool,
9388    }
9389    #[allow(
9390        non_camel_case_types,
9391        non_snake_case,
9392        clippy::pub_underscore_fields,
9393        clippy::style
9394    )]
9395    const _: () = {
9396        use alloy::sol_types as alloy_sol_types;
9397        {
9398            #[doc(hidden)]
9399            type UnderlyingSolTuple<'a> = (
9400                alloy::sol_types::sol_data::FixedBytes<32>,
9401                alloy::sol_types::sol_data::Address,
9402            );
9403            #[doc(hidden)]
9404            type UnderlyingRustTuple<'a> = (
9405                alloy::sol_types::private::FixedBytes<32>,
9406                alloy::sol_types::private::Address,
9407            );
9408            #[cfg(test)]
9409            #[allow(dead_code, unreachable_patterns)]
9410            fn _type_assertion(
9411                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9412            ) {
9413                match _t {
9414                    alloy_sol_types::private::AssertTypeEq::<
9415                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9416                    >(_) => {}
9417                }
9418            }
9419            #[automatically_derived]
9420            #[doc(hidden)]
9421            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
9422                fn from(value: hasRoleCall) -> Self {
9423                    (value.role, value.account)
9424                }
9425            }
9426            #[automatically_derived]
9427            #[doc(hidden)]
9428            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
9429                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9430                    Self {
9431                        role: tuple.0,
9432                        account: tuple.1,
9433                    }
9434                }
9435            }
9436        }
9437        {
9438            #[doc(hidden)]
9439            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9440            #[doc(hidden)]
9441            type UnderlyingRustTuple<'a> = (bool,);
9442            #[cfg(test)]
9443            #[allow(dead_code, unreachable_patterns)]
9444            fn _type_assertion(
9445                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9446            ) {
9447                match _t {
9448                    alloy_sol_types::private::AssertTypeEq::<
9449                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9450                    >(_) => {}
9451                }
9452            }
9453            #[automatically_derived]
9454            #[doc(hidden)]
9455            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
9456                fn from(value: hasRoleReturn) -> Self {
9457                    (value._0,)
9458                }
9459            }
9460            #[automatically_derived]
9461            #[doc(hidden)]
9462            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
9463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9464                    Self { _0: tuple.0 }
9465                }
9466            }
9467        }
9468        #[automatically_derived]
9469        impl alloy_sol_types::SolCall for hasRoleCall {
9470            type Parameters<'a> = (
9471                alloy::sol_types::sol_data::FixedBytes<32>,
9472                alloy::sol_types::sol_data::Address,
9473            );
9474            type Token<'a> = <Self::Parameters<
9475                'a,
9476            > as alloy_sol_types::SolType>::Token<'a>;
9477            type Return = hasRoleReturn;
9478            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9479            type ReturnToken<'a> = <Self::ReturnTuple<
9480                'a,
9481            > as alloy_sol_types::SolType>::Token<'a>;
9482            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
9483            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
9484            #[inline]
9485            fn new<'a>(
9486                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9487            ) -> Self {
9488                tuple.into()
9489            }
9490            #[inline]
9491            fn tokenize(&self) -> Self::Token<'_> {
9492                (
9493                    <alloy::sol_types::sol_data::FixedBytes<
9494                        32,
9495                    > as alloy_sol_types::SolType>::tokenize(&self.role),
9496                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9497                        &self.account,
9498                    ),
9499                )
9500            }
9501            #[inline]
9502            fn abi_decode_returns(
9503                data: &[u8],
9504                validate: bool,
9505            ) -> alloy_sol_types::Result<Self::Return> {
9506                <Self::ReturnTuple<
9507                    '_,
9508                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9509                    .map(Into::into)
9510            }
9511        }
9512    };
9513    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9514    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
9515```solidity
9516function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
9517```*/
9518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9519    #[derive(Clone)]
9520    pub struct initializeCall {
9521        #[allow(missing_docs)]
9522        pub _tokenAddress: alloy::sol_types::private::Address,
9523        #[allow(missing_docs)]
9524        pub _lightClientAddress: alloy::sol_types::private::Address,
9525        #[allow(missing_docs)]
9526        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
9527        #[allow(missing_docs)]
9528        pub _timelock: alloy::sol_types::private::Address,
9529    }
9530    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
9531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9532    #[derive(Clone)]
9533    pub struct initializeReturn {}
9534    #[allow(
9535        non_camel_case_types,
9536        non_snake_case,
9537        clippy::pub_underscore_fields,
9538        clippy::style
9539    )]
9540    const _: () = {
9541        use alloy::sol_types as alloy_sol_types;
9542        {
9543            #[doc(hidden)]
9544            type UnderlyingSolTuple<'a> = (
9545                alloy::sol_types::sol_data::Address,
9546                alloy::sol_types::sol_data::Address,
9547                alloy::sol_types::sol_data::Uint<256>,
9548                alloy::sol_types::sol_data::Address,
9549            );
9550            #[doc(hidden)]
9551            type UnderlyingRustTuple<'a> = (
9552                alloy::sol_types::private::Address,
9553                alloy::sol_types::private::Address,
9554                alloy::sol_types::private::primitives::aliases::U256,
9555                alloy::sol_types::private::Address,
9556            );
9557            #[cfg(test)]
9558            #[allow(dead_code, unreachable_patterns)]
9559            fn _type_assertion(
9560                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9561            ) {
9562                match _t {
9563                    alloy_sol_types::private::AssertTypeEq::<
9564                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9565                    >(_) => {}
9566                }
9567            }
9568            #[automatically_derived]
9569            #[doc(hidden)]
9570            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9571                fn from(value: initializeCall) -> Self {
9572                    (
9573                        value._tokenAddress,
9574                        value._lightClientAddress,
9575                        value._exitEscrowPeriod,
9576                        value._timelock,
9577                    )
9578                }
9579            }
9580            #[automatically_derived]
9581            #[doc(hidden)]
9582            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9584                    Self {
9585                        _tokenAddress: tuple.0,
9586                        _lightClientAddress: tuple.1,
9587                        _exitEscrowPeriod: tuple.2,
9588                        _timelock: tuple.3,
9589                    }
9590                }
9591            }
9592        }
9593        {
9594            #[doc(hidden)]
9595            type UnderlyingSolTuple<'a> = ();
9596            #[doc(hidden)]
9597            type UnderlyingRustTuple<'a> = ();
9598            #[cfg(test)]
9599            #[allow(dead_code, unreachable_patterns)]
9600            fn _type_assertion(
9601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9602            ) {
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<initializeReturn> for UnderlyingRustTuple<'_> {
9612                fn from(value: initializeReturn) -> Self {
9613                    ()
9614                }
9615            }
9616            #[automatically_derived]
9617            #[doc(hidden)]
9618            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9620                    Self {}
9621                }
9622            }
9623        }
9624        #[automatically_derived]
9625        impl alloy_sol_types::SolCall for initializeCall {
9626            type Parameters<'a> = (
9627                alloy::sol_types::sol_data::Address,
9628                alloy::sol_types::sol_data::Address,
9629                alloy::sol_types::sol_data::Uint<256>,
9630                alloy::sol_types::sol_data::Address,
9631            );
9632            type Token<'a> = <Self::Parameters<
9633                'a,
9634            > as alloy_sol_types::SolType>::Token<'a>;
9635            type Return = initializeReturn;
9636            type ReturnTuple<'a> = ();
9637            type ReturnToken<'a> = <Self::ReturnTuple<
9638                'a,
9639            > as alloy_sol_types::SolType>::Token<'a>;
9640            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
9641            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
9642            #[inline]
9643            fn new<'a>(
9644                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9645            ) -> Self {
9646                tuple.into()
9647            }
9648            #[inline]
9649            fn tokenize(&self) -> Self::Token<'_> {
9650                (
9651                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9652                        &self._tokenAddress,
9653                    ),
9654                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9655                        &self._lightClientAddress,
9656                    ),
9657                    <alloy::sol_types::sol_data::Uint<
9658                        256,
9659                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
9660                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9661                        &self._timelock,
9662                    ),
9663                )
9664            }
9665            #[inline]
9666            fn abi_decode_returns(
9667                data: &[u8],
9668                validate: bool,
9669            ) -> alloy_sol_types::Result<Self::Return> {
9670                <Self::ReturnTuple<
9671                    '_,
9672                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9673                    .map(Into::into)
9674            }
9675        }
9676    };
9677    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9678    /**Function with signature `initializeV2(address,address)` and selector `0x0840ba72`.
9679```solidity
9680function initializeV2(address pauser, address admin) external;
9681```*/
9682    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9683    #[derive(Clone)]
9684    pub struct initializeV2Call {
9685        #[allow(missing_docs)]
9686        pub pauser: alloy::sol_types::private::Address,
9687        #[allow(missing_docs)]
9688        pub admin: alloy::sol_types::private::Address,
9689    }
9690    ///Container type for the return parameters of the [`initializeV2(address,address)`](initializeV2Call) function.
9691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9692    #[derive(Clone)]
9693    pub struct initializeV2Return {}
9694    #[allow(
9695        non_camel_case_types,
9696        non_snake_case,
9697        clippy::pub_underscore_fields,
9698        clippy::style
9699    )]
9700    const _: () = {
9701        use alloy::sol_types as alloy_sol_types;
9702        {
9703            #[doc(hidden)]
9704            type UnderlyingSolTuple<'a> = (
9705                alloy::sol_types::sol_data::Address,
9706                alloy::sol_types::sol_data::Address,
9707            );
9708            #[doc(hidden)]
9709            type UnderlyingRustTuple<'a> = (
9710                alloy::sol_types::private::Address,
9711                alloy::sol_types::private::Address,
9712            );
9713            #[cfg(test)]
9714            #[allow(dead_code, unreachable_patterns)]
9715            fn _type_assertion(
9716                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9717            ) {
9718                match _t {
9719                    alloy_sol_types::private::AssertTypeEq::<
9720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9721                    >(_) => {}
9722                }
9723            }
9724            #[automatically_derived]
9725            #[doc(hidden)]
9726            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9727                fn from(value: initializeV2Call) -> Self {
9728                    (value.pauser, value.admin)
9729                }
9730            }
9731            #[automatically_derived]
9732            #[doc(hidden)]
9733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9735                    Self {
9736                        pauser: tuple.0,
9737                        admin: tuple.1,
9738                    }
9739                }
9740            }
9741        }
9742        {
9743            #[doc(hidden)]
9744            type UnderlyingSolTuple<'a> = ();
9745            #[doc(hidden)]
9746            type UnderlyingRustTuple<'a> = ();
9747            #[cfg(test)]
9748            #[allow(dead_code, unreachable_patterns)]
9749            fn _type_assertion(
9750                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9751            ) {
9752                match _t {
9753                    alloy_sol_types::private::AssertTypeEq::<
9754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9755                    >(_) => {}
9756                }
9757            }
9758            #[automatically_derived]
9759            #[doc(hidden)]
9760            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9761                fn from(value: initializeV2Return) -> Self {
9762                    ()
9763                }
9764            }
9765            #[automatically_derived]
9766            #[doc(hidden)]
9767            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9769                    Self {}
9770                }
9771            }
9772        }
9773        #[automatically_derived]
9774        impl alloy_sol_types::SolCall for initializeV2Call {
9775            type Parameters<'a> = (
9776                alloy::sol_types::sol_data::Address,
9777                alloy::sol_types::sol_data::Address,
9778            );
9779            type Token<'a> = <Self::Parameters<
9780                'a,
9781            > as alloy_sol_types::SolType>::Token<'a>;
9782            type Return = initializeV2Return;
9783            type ReturnTuple<'a> = ();
9784            type ReturnToken<'a> = <Self::ReturnTuple<
9785                'a,
9786            > as alloy_sol_types::SolType>::Token<'a>;
9787            const SIGNATURE: &'static str = "initializeV2(address,address)";
9788            const SELECTOR: [u8; 4] = [8u8, 64u8, 186u8, 114u8];
9789            #[inline]
9790            fn new<'a>(
9791                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9792            ) -> Self {
9793                tuple.into()
9794            }
9795            #[inline]
9796            fn tokenize(&self) -> Self::Token<'_> {
9797                (
9798                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9799                        &self.pauser,
9800                    ),
9801                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9802                        &self.admin,
9803                    ),
9804                )
9805            }
9806            #[inline]
9807            fn abi_decode_returns(
9808                data: &[u8],
9809                validate: bool,
9810            ) -> alloy_sol_types::Result<Self::Return> {
9811                <Self::ReturnTuple<
9812                    '_,
9813                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9814                    .map(Into::into)
9815            }
9816        }
9817    };
9818    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9819    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
9820```solidity
9821function initializedAtBlock() external view returns (uint256);
9822```*/
9823    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9824    #[derive(Clone)]
9825    pub struct initializedAtBlockCall {}
9826    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9827    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
9828    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9829    #[derive(Clone)]
9830    pub struct initializedAtBlockReturn {
9831        #[allow(missing_docs)]
9832        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9833    }
9834    #[allow(
9835        non_camel_case_types,
9836        non_snake_case,
9837        clippy::pub_underscore_fields,
9838        clippy::style
9839    )]
9840    const _: () = {
9841        use alloy::sol_types as alloy_sol_types;
9842        {
9843            #[doc(hidden)]
9844            type UnderlyingSolTuple<'a> = ();
9845            #[doc(hidden)]
9846            type UnderlyingRustTuple<'a> = ();
9847            #[cfg(test)]
9848            #[allow(dead_code, unreachable_patterns)]
9849            fn _type_assertion(
9850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9851            ) {
9852                match _t {
9853                    alloy_sol_types::private::AssertTypeEq::<
9854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9855                    >(_) => {}
9856                }
9857            }
9858            #[automatically_derived]
9859            #[doc(hidden)]
9860            impl ::core::convert::From<initializedAtBlockCall>
9861            for UnderlyingRustTuple<'_> {
9862                fn from(value: initializedAtBlockCall) -> Self {
9863                    ()
9864                }
9865            }
9866            #[automatically_derived]
9867            #[doc(hidden)]
9868            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9869            for initializedAtBlockCall {
9870                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9871                    Self {}
9872                }
9873            }
9874        }
9875        {
9876            #[doc(hidden)]
9877            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9878            #[doc(hidden)]
9879            type UnderlyingRustTuple<'a> = (
9880                alloy::sol_types::private::primitives::aliases::U256,
9881            );
9882            #[cfg(test)]
9883            #[allow(dead_code, unreachable_patterns)]
9884            fn _type_assertion(
9885                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9886            ) {
9887                match _t {
9888                    alloy_sol_types::private::AssertTypeEq::<
9889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9890                    >(_) => {}
9891                }
9892            }
9893            #[automatically_derived]
9894            #[doc(hidden)]
9895            impl ::core::convert::From<initializedAtBlockReturn>
9896            for UnderlyingRustTuple<'_> {
9897                fn from(value: initializedAtBlockReturn) -> Self {
9898                    (value._0,)
9899                }
9900            }
9901            #[automatically_derived]
9902            #[doc(hidden)]
9903            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9904            for initializedAtBlockReturn {
9905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9906                    Self { _0: tuple.0 }
9907                }
9908            }
9909        }
9910        #[automatically_derived]
9911        impl alloy_sol_types::SolCall for initializedAtBlockCall {
9912            type Parameters<'a> = ();
9913            type Token<'a> = <Self::Parameters<
9914                'a,
9915            > as alloy_sol_types::SolType>::Token<'a>;
9916            type Return = initializedAtBlockReturn;
9917            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9918            type ReturnToken<'a> = <Self::ReturnTuple<
9919                'a,
9920            > as alloy_sol_types::SolType>::Token<'a>;
9921            const SIGNATURE: &'static str = "initializedAtBlock()";
9922            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
9923            #[inline]
9924            fn new<'a>(
9925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9926            ) -> Self {
9927                tuple.into()
9928            }
9929            #[inline]
9930            fn tokenize(&self) -> Self::Token<'_> {
9931                ()
9932            }
9933            #[inline]
9934            fn abi_decode_returns(
9935                data: &[u8],
9936                validate: bool,
9937            ) -> alloy_sol_types::Result<Self::Return> {
9938                <Self::ReturnTuple<
9939                    '_,
9940                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9941                    .map(Into::into)
9942            }
9943        }
9944    };
9945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9946    /**Function with signature `lightClient()` and selector `0xb5700e68`.
9947```solidity
9948function lightClient() external view returns (address);
9949```*/
9950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9951    #[derive(Clone)]
9952    pub struct lightClientCall {}
9953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9954    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
9955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9956    #[derive(Clone)]
9957    pub struct lightClientReturn {
9958        #[allow(missing_docs)]
9959        pub _0: alloy::sol_types::private::Address,
9960    }
9961    #[allow(
9962        non_camel_case_types,
9963        non_snake_case,
9964        clippy::pub_underscore_fields,
9965        clippy::style
9966    )]
9967    const _: () = {
9968        use alloy::sol_types as alloy_sol_types;
9969        {
9970            #[doc(hidden)]
9971            type UnderlyingSolTuple<'a> = ();
9972            #[doc(hidden)]
9973            type UnderlyingRustTuple<'a> = ();
9974            #[cfg(test)]
9975            #[allow(dead_code, unreachable_patterns)]
9976            fn _type_assertion(
9977                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9978            ) {
9979                match _t {
9980                    alloy_sol_types::private::AssertTypeEq::<
9981                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9982                    >(_) => {}
9983                }
9984            }
9985            #[automatically_derived]
9986            #[doc(hidden)]
9987            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
9988                fn from(value: lightClientCall) -> Self {
9989                    ()
9990                }
9991            }
9992            #[automatically_derived]
9993            #[doc(hidden)]
9994            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
9995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9996                    Self {}
9997                }
9998            }
9999        }
10000        {
10001            #[doc(hidden)]
10002            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10003            #[doc(hidden)]
10004            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10005            #[cfg(test)]
10006            #[allow(dead_code, unreachable_patterns)]
10007            fn _type_assertion(
10008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10009            ) {
10010                match _t {
10011                    alloy_sol_types::private::AssertTypeEq::<
10012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10013                    >(_) => {}
10014                }
10015            }
10016            #[automatically_derived]
10017            #[doc(hidden)]
10018            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
10019                fn from(value: lightClientReturn) -> Self {
10020                    (value._0,)
10021                }
10022            }
10023            #[automatically_derived]
10024            #[doc(hidden)]
10025            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
10026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10027                    Self { _0: tuple.0 }
10028                }
10029            }
10030        }
10031        #[automatically_derived]
10032        impl alloy_sol_types::SolCall for lightClientCall {
10033            type Parameters<'a> = ();
10034            type Token<'a> = <Self::Parameters<
10035                'a,
10036            > as alloy_sol_types::SolType>::Token<'a>;
10037            type Return = lightClientReturn;
10038            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10039            type ReturnToken<'a> = <Self::ReturnTuple<
10040                'a,
10041            > as alloy_sol_types::SolType>::Token<'a>;
10042            const SIGNATURE: &'static str = "lightClient()";
10043            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
10044            #[inline]
10045            fn new<'a>(
10046                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10047            ) -> Self {
10048                tuple.into()
10049            }
10050            #[inline]
10051            fn tokenize(&self) -> Self::Token<'_> {
10052                ()
10053            }
10054            #[inline]
10055            fn abi_decode_returns(
10056                data: &[u8],
10057                validate: bool,
10058            ) -> alloy_sol_types::Result<Self::Return> {
10059                <Self::ReturnTuple<
10060                    '_,
10061                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10062                    .map(Into::into)
10063            }
10064        }
10065    };
10066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10067    /**Function with signature `owner()` and selector `0x8da5cb5b`.
10068```solidity
10069function owner() external view returns (address);
10070```*/
10071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10072    #[derive(Clone)]
10073    pub struct ownerCall {}
10074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10075    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
10076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10077    #[derive(Clone)]
10078    pub struct ownerReturn {
10079        #[allow(missing_docs)]
10080        pub _0: alloy::sol_types::private::Address,
10081    }
10082    #[allow(
10083        non_camel_case_types,
10084        non_snake_case,
10085        clippy::pub_underscore_fields,
10086        clippy::style
10087    )]
10088    const _: () = {
10089        use alloy::sol_types as alloy_sol_types;
10090        {
10091            #[doc(hidden)]
10092            type UnderlyingSolTuple<'a> = ();
10093            #[doc(hidden)]
10094            type UnderlyingRustTuple<'a> = ();
10095            #[cfg(test)]
10096            #[allow(dead_code, unreachable_patterns)]
10097            fn _type_assertion(
10098                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10099            ) {
10100                match _t {
10101                    alloy_sol_types::private::AssertTypeEq::<
10102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10103                    >(_) => {}
10104                }
10105            }
10106            #[automatically_derived]
10107            #[doc(hidden)]
10108            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
10109                fn from(value: ownerCall) -> Self {
10110                    ()
10111                }
10112            }
10113            #[automatically_derived]
10114            #[doc(hidden)]
10115            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
10116                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10117                    Self {}
10118                }
10119            }
10120        }
10121        {
10122            #[doc(hidden)]
10123            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10124            #[doc(hidden)]
10125            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10126            #[cfg(test)]
10127            #[allow(dead_code, unreachable_patterns)]
10128            fn _type_assertion(
10129                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10130            ) {
10131                match _t {
10132                    alloy_sol_types::private::AssertTypeEq::<
10133                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10134                    >(_) => {}
10135                }
10136            }
10137            #[automatically_derived]
10138            #[doc(hidden)]
10139            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
10140                fn from(value: ownerReturn) -> Self {
10141                    (value._0,)
10142                }
10143            }
10144            #[automatically_derived]
10145            #[doc(hidden)]
10146            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
10147                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10148                    Self { _0: tuple.0 }
10149                }
10150            }
10151        }
10152        #[automatically_derived]
10153        impl alloy_sol_types::SolCall for ownerCall {
10154            type Parameters<'a> = ();
10155            type Token<'a> = <Self::Parameters<
10156                'a,
10157            > as alloy_sol_types::SolType>::Token<'a>;
10158            type Return = ownerReturn;
10159            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10160            type ReturnToken<'a> = <Self::ReturnTuple<
10161                'a,
10162            > as alloy_sol_types::SolType>::Token<'a>;
10163            const SIGNATURE: &'static str = "owner()";
10164            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
10165            #[inline]
10166            fn new<'a>(
10167                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10168            ) -> Self {
10169                tuple.into()
10170            }
10171            #[inline]
10172            fn tokenize(&self) -> Self::Token<'_> {
10173                ()
10174            }
10175            #[inline]
10176            fn abi_decode_returns(
10177                data: &[u8],
10178                validate: bool,
10179            ) -> alloy_sol_types::Result<Self::Return> {
10180                <Self::ReturnTuple<
10181                    '_,
10182                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10183                    .map(Into::into)
10184            }
10185        }
10186    };
10187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10188    /**Function with signature `pause()` and selector `0x8456cb59`.
10189```solidity
10190function pause() external;
10191```*/
10192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10193    #[derive(Clone)]
10194    pub struct pauseCall {}
10195    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
10196    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10197    #[derive(Clone)]
10198    pub struct pauseReturn {}
10199    #[allow(
10200        non_camel_case_types,
10201        non_snake_case,
10202        clippy::pub_underscore_fields,
10203        clippy::style
10204    )]
10205    const _: () = {
10206        use alloy::sol_types as alloy_sol_types;
10207        {
10208            #[doc(hidden)]
10209            type UnderlyingSolTuple<'a> = ();
10210            #[doc(hidden)]
10211            type UnderlyingRustTuple<'a> = ();
10212            #[cfg(test)]
10213            #[allow(dead_code, unreachable_patterns)]
10214            fn _type_assertion(
10215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10216            ) {
10217                match _t {
10218                    alloy_sol_types::private::AssertTypeEq::<
10219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10220                    >(_) => {}
10221                }
10222            }
10223            #[automatically_derived]
10224            #[doc(hidden)]
10225            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
10226                fn from(value: pauseCall) -> Self {
10227                    ()
10228                }
10229            }
10230            #[automatically_derived]
10231            #[doc(hidden)]
10232            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
10233                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10234                    Self {}
10235                }
10236            }
10237        }
10238        {
10239            #[doc(hidden)]
10240            type UnderlyingSolTuple<'a> = ();
10241            #[doc(hidden)]
10242            type UnderlyingRustTuple<'a> = ();
10243            #[cfg(test)]
10244            #[allow(dead_code, unreachable_patterns)]
10245            fn _type_assertion(
10246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10247            ) {
10248                match _t {
10249                    alloy_sol_types::private::AssertTypeEq::<
10250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10251                    >(_) => {}
10252                }
10253            }
10254            #[automatically_derived]
10255            #[doc(hidden)]
10256            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
10257                fn from(value: pauseReturn) -> Self {
10258                    ()
10259                }
10260            }
10261            #[automatically_derived]
10262            #[doc(hidden)]
10263            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
10264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10265                    Self {}
10266                }
10267            }
10268        }
10269        #[automatically_derived]
10270        impl alloy_sol_types::SolCall for pauseCall {
10271            type Parameters<'a> = ();
10272            type Token<'a> = <Self::Parameters<
10273                'a,
10274            > as alloy_sol_types::SolType>::Token<'a>;
10275            type Return = pauseReturn;
10276            type ReturnTuple<'a> = ();
10277            type ReturnToken<'a> = <Self::ReturnTuple<
10278                'a,
10279            > as alloy_sol_types::SolType>::Token<'a>;
10280            const SIGNATURE: &'static str = "pause()";
10281            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
10282            #[inline]
10283            fn new<'a>(
10284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10285            ) -> Self {
10286                tuple.into()
10287            }
10288            #[inline]
10289            fn tokenize(&self) -> Self::Token<'_> {
10290                ()
10291            }
10292            #[inline]
10293            fn abi_decode_returns(
10294                data: &[u8],
10295                validate: bool,
10296            ) -> alloy_sol_types::Result<Self::Return> {
10297                <Self::ReturnTuple<
10298                    '_,
10299                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10300                    .map(Into::into)
10301            }
10302        }
10303    };
10304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10305    /**Function with signature `paused()` and selector `0x5c975abb`.
10306```solidity
10307function paused() external view returns (bool);
10308```*/
10309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10310    #[derive(Clone)]
10311    pub struct pausedCall {}
10312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10313    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
10314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10315    #[derive(Clone)]
10316    pub struct pausedReturn {
10317        #[allow(missing_docs)]
10318        pub _0: bool,
10319    }
10320    #[allow(
10321        non_camel_case_types,
10322        non_snake_case,
10323        clippy::pub_underscore_fields,
10324        clippy::style
10325    )]
10326    const _: () = {
10327        use alloy::sol_types as alloy_sol_types;
10328        {
10329            #[doc(hidden)]
10330            type UnderlyingSolTuple<'a> = ();
10331            #[doc(hidden)]
10332            type UnderlyingRustTuple<'a> = ();
10333            #[cfg(test)]
10334            #[allow(dead_code, unreachable_patterns)]
10335            fn _type_assertion(
10336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10337            ) {
10338                match _t {
10339                    alloy_sol_types::private::AssertTypeEq::<
10340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10341                    >(_) => {}
10342                }
10343            }
10344            #[automatically_derived]
10345            #[doc(hidden)]
10346            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
10347                fn from(value: pausedCall) -> Self {
10348                    ()
10349                }
10350            }
10351            #[automatically_derived]
10352            #[doc(hidden)]
10353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
10354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10355                    Self {}
10356                }
10357            }
10358        }
10359        {
10360            #[doc(hidden)]
10361            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10362            #[doc(hidden)]
10363            type UnderlyingRustTuple<'a> = (bool,);
10364            #[cfg(test)]
10365            #[allow(dead_code, unreachable_patterns)]
10366            fn _type_assertion(
10367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10368            ) {
10369                match _t {
10370                    alloy_sol_types::private::AssertTypeEq::<
10371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10372                    >(_) => {}
10373                }
10374            }
10375            #[automatically_derived]
10376            #[doc(hidden)]
10377            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
10378                fn from(value: pausedReturn) -> Self {
10379                    (value._0,)
10380                }
10381            }
10382            #[automatically_derived]
10383            #[doc(hidden)]
10384            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
10385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10386                    Self { _0: tuple.0 }
10387                }
10388            }
10389        }
10390        #[automatically_derived]
10391        impl alloy_sol_types::SolCall for pausedCall {
10392            type Parameters<'a> = ();
10393            type Token<'a> = <Self::Parameters<
10394                'a,
10395            > as alloy_sol_types::SolType>::Token<'a>;
10396            type Return = pausedReturn;
10397            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10398            type ReturnToken<'a> = <Self::ReturnTuple<
10399                'a,
10400            > as alloy_sol_types::SolType>::Token<'a>;
10401            const SIGNATURE: &'static str = "paused()";
10402            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
10403            #[inline]
10404            fn new<'a>(
10405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10406            ) -> Self {
10407                tuple.into()
10408            }
10409            #[inline]
10410            fn tokenize(&self) -> Self::Token<'_> {
10411                ()
10412            }
10413            #[inline]
10414            fn abi_decode_returns(
10415                data: &[u8],
10416                validate: bool,
10417            ) -> alloy_sol_types::Result<Self::Return> {
10418                <Self::ReturnTuple<
10419                    '_,
10420                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10421                    .map(Into::into)
10422            }
10423        }
10424    };
10425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10426    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
10427```solidity
10428function proxiableUUID() external view returns (bytes32);
10429```*/
10430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10431    #[derive(Clone)]
10432    pub struct proxiableUUIDCall {}
10433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10434    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
10435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10436    #[derive(Clone)]
10437    pub struct proxiableUUIDReturn {
10438        #[allow(missing_docs)]
10439        pub _0: alloy::sol_types::private::FixedBytes<32>,
10440    }
10441    #[allow(
10442        non_camel_case_types,
10443        non_snake_case,
10444        clippy::pub_underscore_fields,
10445        clippy::style
10446    )]
10447    const _: () = {
10448        use alloy::sol_types as alloy_sol_types;
10449        {
10450            #[doc(hidden)]
10451            type UnderlyingSolTuple<'a> = ();
10452            #[doc(hidden)]
10453            type UnderlyingRustTuple<'a> = ();
10454            #[cfg(test)]
10455            #[allow(dead_code, unreachable_patterns)]
10456            fn _type_assertion(
10457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10458            ) {
10459                match _t {
10460                    alloy_sol_types::private::AssertTypeEq::<
10461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10462                    >(_) => {}
10463                }
10464            }
10465            #[automatically_derived]
10466            #[doc(hidden)]
10467            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
10468                fn from(value: proxiableUUIDCall) -> Self {
10469                    ()
10470                }
10471            }
10472            #[automatically_derived]
10473            #[doc(hidden)]
10474            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
10475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10476                    Self {}
10477                }
10478            }
10479        }
10480        {
10481            #[doc(hidden)]
10482            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10483            #[doc(hidden)]
10484            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10485            #[cfg(test)]
10486            #[allow(dead_code, unreachable_patterns)]
10487            fn _type_assertion(
10488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10489            ) {
10490                match _t {
10491                    alloy_sol_types::private::AssertTypeEq::<
10492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10493                    >(_) => {}
10494                }
10495            }
10496            #[automatically_derived]
10497            #[doc(hidden)]
10498            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
10499                fn from(value: proxiableUUIDReturn) -> Self {
10500                    (value._0,)
10501                }
10502            }
10503            #[automatically_derived]
10504            #[doc(hidden)]
10505            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
10506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10507                    Self { _0: tuple.0 }
10508                }
10509            }
10510        }
10511        #[automatically_derived]
10512        impl alloy_sol_types::SolCall for proxiableUUIDCall {
10513            type Parameters<'a> = ();
10514            type Token<'a> = <Self::Parameters<
10515                'a,
10516            > as alloy_sol_types::SolType>::Token<'a>;
10517            type Return = proxiableUUIDReturn;
10518            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10519            type ReturnToken<'a> = <Self::ReturnTuple<
10520                'a,
10521            > as alloy_sol_types::SolType>::Token<'a>;
10522            const SIGNATURE: &'static str = "proxiableUUID()";
10523            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
10524            #[inline]
10525            fn new<'a>(
10526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10527            ) -> Self {
10528                tuple.into()
10529            }
10530            #[inline]
10531            fn tokenize(&self) -> Self::Token<'_> {
10532                ()
10533            }
10534            #[inline]
10535            fn abi_decode_returns(
10536                data: &[u8],
10537                validate: bool,
10538            ) -> alloy_sol_types::Result<Self::Return> {
10539                <Self::ReturnTuple<
10540                    '_,
10541                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10542                    .map(Into::into)
10543            }
10544        }
10545    };
10546    #[derive()]
10547    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
10548```solidity
10549function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
10550```*/
10551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10552    #[derive(Clone)]
10553    pub struct registerValidatorCall {
10554        #[allow(missing_docs)]
10555        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10556        #[allow(missing_docs)]
10557        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10558        #[allow(missing_docs)]
10559        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10560        #[allow(missing_docs)]
10561        pub _3: u16,
10562    }
10563    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
10564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10565    #[derive(Clone)]
10566    pub struct registerValidatorReturn {}
10567    #[allow(
10568        non_camel_case_types,
10569        non_snake_case,
10570        clippy::pub_underscore_fields,
10571        clippy::style
10572    )]
10573    const _: () = {
10574        use alloy::sol_types as alloy_sol_types;
10575        {
10576            #[doc(hidden)]
10577            type UnderlyingSolTuple<'a> = (
10578                BN254::G2Point,
10579                EdOnBN254::EdOnBN254Point,
10580                BN254::G1Point,
10581                alloy::sol_types::sol_data::Uint<16>,
10582            );
10583            #[doc(hidden)]
10584            type UnderlyingRustTuple<'a> = (
10585                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10586                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10587                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10588                u16,
10589            );
10590            #[cfg(test)]
10591            #[allow(dead_code, unreachable_patterns)]
10592            fn _type_assertion(
10593                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10594            ) {
10595                match _t {
10596                    alloy_sol_types::private::AssertTypeEq::<
10597                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10598                    >(_) => {}
10599                }
10600            }
10601            #[automatically_derived]
10602            #[doc(hidden)]
10603            impl ::core::convert::From<registerValidatorCall>
10604            for UnderlyingRustTuple<'_> {
10605                fn from(value: registerValidatorCall) -> Self {
10606                    (value._0, value._1, value._2, value._3)
10607                }
10608            }
10609            #[automatically_derived]
10610            #[doc(hidden)]
10611            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10612            for registerValidatorCall {
10613                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10614                    Self {
10615                        _0: tuple.0,
10616                        _1: tuple.1,
10617                        _2: tuple.2,
10618                        _3: tuple.3,
10619                    }
10620                }
10621            }
10622        }
10623        {
10624            #[doc(hidden)]
10625            type UnderlyingSolTuple<'a> = ();
10626            #[doc(hidden)]
10627            type UnderlyingRustTuple<'a> = ();
10628            #[cfg(test)]
10629            #[allow(dead_code, unreachable_patterns)]
10630            fn _type_assertion(
10631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10632            ) {
10633                match _t {
10634                    alloy_sol_types::private::AssertTypeEq::<
10635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10636                    >(_) => {}
10637                }
10638            }
10639            #[automatically_derived]
10640            #[doc(hidden)]
10641            impl ::core::convert::From<registerValidatorReturn>
10642            for UnderlyingRustTuple<'_> {
10643                fn from(value: registerValidatorReturn) -> Self {
10644                    ()
10645                }
10646            }
10647            #[automatically_derived]
10648            #[doc(hidden)]
10649            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10650            for registerValidatorReturn {
10651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10652                    Self {}
10653                }
10654            }
10655        }
10656        #[automatically_derived]
10657        impl alloy_sol_types::SolCall for registerValidatorCall {
10658            type Parameters<'a> = (
10659                BN254::G2Point,
10660                EdOnBN254::EdOnBN254Point,
10661                BN254::G1Point,
10662                alloy::sol_types::sol_data::Uint<16>,
10663            );
10664            type Token<'a> = <Self::Parameters<
10665                'a,
10666            > as alloy_sol_types::SolType>::Token<'a>;
10667            type Return = registerValidatorReturn;
10668            type ReturnTuple<'a> = ();
10669            type ReturnToken<'a> = <Self::ReturnTuple<
10670                'a,
10671            > as alloy_sol_types::SolType>::Token<'a>;
10672            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
10673            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
10674            #[inline]
10675            fn new<'a>(
10676                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10677            ) -> Self {
10678                tuple.into()
10679            }
10680            #[inline]
10681            fn tokenize(&self) -> Self::Token<'_> {
10682                (
10683                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
10684                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10685                        &self._1,
10686                    ),
10687                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
10688                    <alloy::sol_types::sol_data::Uint<
10689                        16,
10690                    > as alloy_sol_types::SolType>::tokenize(&self._3),
10691                )
10692            }
10693            #[inline]
10694            fn abi_decode_returns(
10695                data: &[u8],
10696                validate: bool,
10697            ) -> alloy_sol_types::Result<Self::Return> {
10698                <Self::ReturnTuple<
10699                    '_,
10700                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10701                    .map(Into::into)
10702            }
10703        }
10704    };
10705    #[derive()]
10706    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)` and selector `0x304240bf`.
10707```solidity
10708function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
10709```*/
10710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10711    #[derive(Clone)]
10712    pub struct registerValidatorV2Call {
10713        #[allow(missing_docs)]
10714        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10715        #[allow(missing_docs)]
10716        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10717        #[allow(missing_docs)]
10718        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10719        #[allow(missing_docs)]
10720        pub schnorrSig: alloy::sol_types::private::Bytes,
10721        #[allow(missing_docs)]
10722        pub commission: u16,
10723    }
10724    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)`](registerValidatorV2Call) function.
10725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10726    #[derive(Clone)]
10727    pub struct registerValidatorV2Return {}
10728    #[allow(
10729        non_camel_case_types,
10730        non_snake_case,
10731        clippy::pub_underscore_fields,
10732        clippy::style
10733    )]
10734    const _: () = {
10735        use alloy::sol_types as alloy_sol_types;
10736        {
10737            #[doc(hidden)]
10738            type UnderlyingSolTuple<'a> = (
10739                BN254::G2Point,
10740                EdOnBN254::EdOnBN254Point,
10741                BN254::G1Point,
10742                alloy::sol_types::sol_data::Bytes,
10743                alloy::sol_types::sol_data::Uint<16>,
10744            );
10745            #[doc(hidden)]
10746            type UnderlyingRustTuple<'a> = (
10747                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10748                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10749                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10750                alloy::sol_types::private::Bytes,
10751                u16,
10752            );
10753            #[cfg(test)]
10754            #[allow(dead_code, unreachable_patterns)]
10755            fn _type_assertion(
10756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10757            ) {
10758                match _t {
10759                    alloy_sol_types::private::AssertTypeEq::<
10760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10761                    >(_) => {}
10762                }
10763            }
10764            #[automatically_derived]
10765            #[doc(hidden)]
10766            impl ::core::convert::From<registerValidatorV2Call>
10767            for UnderlyingRustTuple<'_> {
10768                fn from(value: registerValidatorV2Call) -> Self {
10769                    (
10770                        value.blsVK,
10771                        value.schnorrVK,
10772                        value.blsSig,
10773                        value.schnorrSig,
10774                        value.commission,
10775                    )
10776                }
10777            }
10778            #[automatically_derived]
10779            #[doc(hidden)]
10780            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10781            for registerValidatorV2Call {
10782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10783                    Self {
10784                        blsVK: tuple.0,
10785                        schnorrVK: tuple.1,
10786                        blsSig: tuple.2,
10787                        schnorrSig: tuple.3,
10788                        commission: tuple.4,
10789                    }
10790                }
10791            }
10792        }
10793        {
10794            #[doc(hidden)]
10795            type UnderlyingSolTuple<'a> = ();
10796            #[doc(hidden)]
10797            type UnderlyingRustTuple<'a> = ();
10798            #[cfg(test)]
10799            #[allow(dead_code, unreachable_patterns)]
10800            fn _type_assertion(
10801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10802            ) {
10803                match _t {
10804                    alloy_sol_types::private::AssertTypeEq::<
10805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10806                    >(_) => {}
10807                }
10808            }
10809            #[automatically_derived]
10810            #[doc(hidden)]
10811            impl ::core::convert::From<registerValidatorV2Return>
10812            for UnderlyingRustTuple<'_> {
10813                fn from(value: registerValidatorV2Return) -> Self {
10814                    ()
10815                }
10816            }
10817            #[automatically_derived]
10818            #[doc(hidden)]
10819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10820            for registerValidatorV2Return {
10821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10822                    Self {}
10823                }
10824            }
10825        }
10826        #[automatically_derived]
10827        impl alloy_sol_types::SolCall for registerValidatorV2Call {
10828            type Parameters<'a> = (
10829                BN254::G2Point,
10830                EdOnBN254::EdOnBN254Point,
10831                BN254::G1Point,
10832                alloy::sol_types::sol_data::Bytes,
10833                alloy::sol_types::sol_data::Uint<16>,
10834            );
10835            type Token<'a> = <Self::Parameters<
10836                'a,
10837            > as alloy_sol_types::SolType>::Token<'a>;
10838            type Return = registerValidatorV2Return;
10839            type ReturnTuple<'a> = ();
10840            type ReturnToken<'a> = <Self::ReturnTuple<
10841                'a,
10842            > as alloy_sol_types::SolType>::Token<'a>;
10843            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)";
10844            const SELECTOR: [u8; 4] = [48u8, 66u8, 64u8, 191u8];
10845            #[inline]
10846            fn new<'a>(
10847                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10848            ) -> Self {
10849                tuple.into()
10850            }
10851            #[inline]
10852            fn tokenize(&self) -> Self::Token<'_> {
10853                (
10854                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10855                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10856                        &self.schnorrVK,
10857                    ),
10858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10859                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10860                        &self.schnorrSig,
10861                    ),
10862                    <alloy::sol_types::sol_data::Uint<
10863                        16,
10864                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10865                )
10866            }
10867            #[inline]
10868            fn abi_decode_returns(
10869                data: &[u8],
10870                validate: bool,
10871            ) -> alloy_sol_types::Result<Self::Return> {
10872                <Self::ReturnTuple<
10873                    '_,
10874                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10875                    .map(Into::into)
10876            }
10877        }
10878    };
10879    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10880    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10881```solidity
10882function renounceOwnership() external;
10883```*/
10884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10885    #[derive(Clone)]
10886    pub struct renounceOwnershipCall {}
10887    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10888    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10889    #[derive(Clone)]
10890    pub struct renounceOwnershipReturn {}
10891    #[allow(
10892        non_camel_case_types,
10893        non_snake_case,
10894        clippy::pub_underscore_fields,
10895        clippy::style
10896    )]
10897    const _: () = {
10898        use alloy::sol_types as alloy_sol_types;
10899        {
10900            #[doc(hidden)]
10901            type UnderlyingSolTuple<'a> = ();
10902            #[doc(hidden)]
10903            type UnderlyingRustTuple<'a> = ();
10904            #[cfg(test)]
10905            #[allow(dead_code, unreachable_patterns)]
10906            fn _type_assertion(
10907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10908            ) {
10909                match _t {
10910                    alloy_sol_types::private::AssertTypeEq::<
10911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10912                    >(_) => {}
10913                }
10914            }
10915            #[automatically_derived]
10916            #[doc(hidden)]
10917            impl ::core::convert::From<renounceOwnershipCall>
10918            for UnderlyingRustTuple<'_> {
10919                fn from(value: renounceOwnershipCall) -> Self {
10920                    ()
10921                }
10922            }
10923            #[automatically_derived]
10924            #[doc(hidden)]
10925            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10926            for renounceOwnershipCall {
10927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10928                    Self {}
10929                }
10930            }
10931        }
10932        {
10933            #[doc(hidden)]
10934            type UnderlyingSolTuple<'a> = ();
10935            #[doc(hidden)]
10936            type UnderlyingRustTuple<'a> = ();
10937            #[cfg(test)]
10938            #[allow(dead_code, unreachable_patterns)]
10939            fn _type_assertion(
10940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10941            ) {
10942                match _t {
10943                    alloy_sol_types::private::AssertTypeEq::<
10944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10945                    >(_) => {}
10946                }
10947            }
10948            #[automatically_derived]
10949            #[doc(hidden)]
10950            impl ::core::convert::From<renounceOwnershipReturn>
10951            for UnderlyingRustTuple<'_> {
10952                fn from(value: renounceOwnershipReturn) -> Self {
10953                    ()
10954                }
10955            }
10956            #[automatically_derived]
10957            #[doc(hidden)]
10958            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10959            for renounceOwnershipReturn {
10960                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10961                    Self {}
10962                }
10963            }
10964        }
10965        #[automatically_derived]
10966        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10967            type Parameters<'a> = ();
10968            type Token<'a> = <Self::Parameters<
10969                'a,
10970            > as alloy_sol_types::SolType>::Token<'a>;
10971            type Return = renounceOwnershipReturn;
10972            type ReturnTuple<'a> = ();
10973            type ReturnToken<'a> = <Self::ReturnTuple<
10974                'a,
10975            > as alloy_sol_types::SolType>::Token<'a>;
10976            const SIGNATURE: &'static str = "renounceOwnership()";
10977            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10978            #[inline]
10979            fn new<'a>(
10980                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10981            ) -> Self {
10982                tuple.into()
10983            }
10984            #[inline]
10985            fn tokenize(&self) -> Self::Token<'_> {
10986                ()
10987            }
10988            #[inline]
10989            fn abi_decode_returns(
10990                data: &[u8],
10991                validate: bool,
10992            ) -> alloy_sol_types::Result<Self::Return> {
10993                <Self::ReturnTuple<
10994                    '_,
10995                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10996                    .map(Into::into)
10997            }
10998        }
10999    };
11000    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11001    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
11002```solidity
11003function renounceRole(bytes32 role, address callerConfirmation) external;
11004```*/
11005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11006    #[derive(Clone)]
11007    pub struct renounceRoleCall {
11008        #[allow(missing_docs)]
11009        pub role: alloy::sol_types::private::FixedBytes<32>,
11010        #[allow(missing_docs)]
11011        pub callerConfirmation: alloy::sol_types::private::Address,
11012    }
11013    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
11014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11015    #[derive(Clone)]
11016    pub struct renounceRoleReturn {}
11017    #[allow(
11018        non_camel_case_types,
11019        non_snake_case,
11020        clippy::pub_underscore_fields,
11021        clippy::style
11022    )]
11023    const _: () = {
11024        use alloy::sol_types as alloy_sol_types;
11025        {
11026            #[doc(hidden)]
11027            type UnderlyingSolTuple<'a> = (
11028                alloy::sol_types::sol_data::FixedBytes<32>,
11029                alloy::sol_types::sol_data::Address,
11030            );
11031            #[doc(hidden)]
11032            type UnderlyingRustTuple<'a> = (
11033                alloy::sol_types::private::FixedBytes<32>,
11034                alloy::sol_types::private::Address,
11035            );
11036            #[cfg(test)]
11037            #[allow(dead_code, unreachable_patterns)]
11038            fn _type_assertion(
11039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11040            ) {
11041                match _t {
11042                    alloy_sol_types::private::AssertTypeEq::<
11043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11044                    >(_) => {}
11045                }
11046            }
11047            #[automatically_derived]
11048            #[doc(hidden)]
11049            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
11050                fn from(value: renounceRoleCall) -> Self {
11051                    (value.role, value.callerConfirmation)
11052                }
11053            }
11054            #[automatically_derived]
11055            #[doc(hidden)]
11056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
11057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11058                    Self {
11059                        role: tuple.0,
11060                        callerConfirmation: tuple.1,
11061                    }
11062                }
11063            }
11064        }
11065        {
11066            #[doc(hidden)]
11067            type UnderlyingSolTuple<'a> = ();
11068            #[doc(hidden)]
11069            type UnderlyingRustTuple<'a> = ();
11070            #[cfg(test)]
11071            #[allow(dead_code, unreachable_patterns)]
11072            fn _type_assertion(
11073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11074            ) {
11075                match _t {
11076                    alloy_sol_types::private::AssertTypeEq::<
11077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11078                    >(_) => {}
11079                }
11080            }
11081            #[automatically_derived]
11082            #[doc(hidden)]
11083            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
11084                fn from(value: renounceRoleReturn) -> Self {
11085                    ()
11086                }
11087            }
11088            #[automatically_derived]
11089            #[doc(hidden)]
11090            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
11091                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11092                    Self {}
11093                }
11094            }
11095        }
11096        #[automatically_derived]
11097        impl alloy_sol_types::SolCall for renounceRoleCall {
11098            type Parameters<'a> = (
11099                alloy::sol_types::sol_data::FixedBytes<32>,
11100                alloy::sol_types::sol_data::Address,
11101            );
11102            type Token<'a> = <Self::Parameters<
11103                'a,
11104            > as alloy_sol_types::SolType>::Token<'a>;
11105            type Return = renounceRoleReturn;
11106            type ReturnTuple<'a> = ();
11107            type ReturnToken<'a> = <Self::ReturnTuple<
11108                'a,
11109            > as alloy_sol_types::SolType>::Token<'a>;
11110            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
11111            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
11112            #[inline]
11113            fn new<'a>(
11114                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11115            ) -> Self {
11116                tuple.into()
11117            }
11118            #[inline]
11119            fn tokenize(&self) -> Self::Token<'_> {
11120                (
11121                    <alloy::sol_types::sol_data::FixedBytes<
11122                        32,
11123                    > as alloy_sol_types::SolType>::tokenize(&self.role),
11124                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11125                        &self.callerConfirmation,
11126                    ),
11127                )
11128            }
11129            #[inline]
11130            fn abi_decode_returns(
11131                data: &[u8],
11132                validate: bool,
11133            ) -> alloy_sol_types::Result<Self::Return> {
11134                <Self::ReturnTuple<
11135                    '_,
11136                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11137                    .map(Into::into)
11138            }
11139        }
11140    };
11141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11142    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
11143```solidity
11144function revokeRole(bytes32 role, address account) external;
11145```*/
11146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11147    #[derive(Clone)]
11148    pub struct revokeRoleCall {
11149        #[allow(missing_docs)]
11150        pub role: alloy::sol_types::private::FixedBytes<32>,
11151        #[allow(missing_docs)]
11152        pub account: alloy::sol_types::private::Address,
11153    }
11154    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
11155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11156    #[derive(Clone)]
11157    pub struct revokeRoleReturn {}
11158    #[allow(
11159        non_camel_case_types,
11160        non_snake_case,
11161        clippy::pub_underscore_fields,
11162        clippy::style
11163    )]
11164    const _: () = {
11165        use alloy::sol_types as alloy_sol_types;
11166        {
11167            #[doc(hidden)]
11168            type UnderlyingSolTuple<'a> = (
11169                alloy::sol_types::sol_data::FixedBytes<32>,
11170                alloy::sol_types::sol_data::Address,
11171            );
11172            #[doc(hidden)]
11173            type UnderlyingRustTuple<'a> = (
11174                alloy::sol_types::private::FixedBytes<32>,
11175                alloy::sol_types::private::Address,
11176            );
11177            #[cfg(test)]
11178            #[allow(dead_code, unreachable_patterns)]
11179            fn _type_assertion(
11180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11181            ) {
11182                match _t {
11183                    alloy_sol_types::private::AssertTypeEq::<
11184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11185                    >(_) => {}
11186                }
11187            }
11188            #[automatically_derived]
11189            #[doc(hidden)]
11190            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
11191                fn from(value: revokeRoleCall) -> Self {
11192                    (value.role, value.account)
11193                }
11194            }
11195            #[automatically_derived]
11196            #[doc(hidden)]
11197            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
11198                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11199                    Self {
11200                        role: tuple.0,
11201                        account: tuple.1,
11202                    }
11203                }
11204            }
11205        }
11206        {
11207            #[doc(hidden)]
11208            type UnderlyingSolTuple<'a> = ();
11209            #[doc(hidden)]
11210            type UnderlyingRustTuple<'a> = ();
11211            #[cfg(test)]
11212            #[allow(dead_code, unreachable_patterns)]
11213            fn _type_assertion(
11214                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11215            ) {
11216                match _t {
11217                    alloy_sol_types::private::AssertTypeEq::<
11218                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11219                    >(_) => {}
11220                }
11221            }
11222            #[automatically_derived]
11223            #[doc(hidden)]
11224            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
11225                fn from(value: revokeRoleReturn) -> Self {
11226                    ()
11227                }
11228            }
11229            #[automatically_derived]
11230            #[doc(hidden)]
11231            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
11232                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11233                    Self {}
11234                }
11235            }
11236        }
11237        #[automatically_derived]
11238        impl alloy_sol_types::SolCall for revokeRoleCall {
11239            type Parameters<'a> = (
11240                alloy::sol_types::sol_data::FixedBytes<32>,
11241                alloy::sol_types::sol_data::Address,
11242            );
11243            type Token<'a> = <Self::Parameters<
11244                'a,
11245            > as alloy_sol_types::SolType>::Token<'a>;
11246            type Return = revokeRoleReturn;
11247            type ReturnTuple<'a> = ();
11248            type ReturnToken<'a> = <Self::ReturnTuple<
11249                'a,
11250            > as alloy_sol_types::SolType>::Token<'a>;
11251            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
11252            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
11253            #[inline]
11254            fn new<'a>(
11255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11256            ) -> Self {
11257                tuple.into()
11258            }
11259            #[inline]
11260            fn tokenize(&self) -> Self::Token<'_> {
11261                (
11262                    <alloy::sol_types::sol_data::FixedBytes<
11263                        32,
11264                    > as alloy_sol_types::SolType>::tokenize(&self.role),
11265                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11266                        &self.account,
11267                    ),
11268                )
11269            }
11270            #[inline]
11271            fn abi_decode_returns(
11272                data: &[u8],
11273                validate: bool,
11274            ) -> alloy_sol_types::Result<Self::Return> {
11275                <Self::ReturnTuple<
11276                    '_,
11277                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11278                    .map(Into::into)
11279            }
11280        }
11281    };
11282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11283    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
11284```solidity
11285function supportsInterface(bytes4 interfaceId) external view returns (bool);
11286```*/
11287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11288    #[derive(Clone)]
11289    pub struct supportsInterfaceCall {
11290        #[allow(missing_docs)]
11291        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
11292    }
11293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11294    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
11295    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11296    #[derive(Clone)]
11297    pub struct supportsInterfaceReturn {
11298        #[allow(missing_docs)]
11299        pub _0: bool,
11300    }
11301    #[allow(
11302        non_camel_case_types,
11303        non_snake_case,
11304        clippy::pub_underscore_fields,
11305        clippy::style
11306    )]
11307    const _: () = {
11308        use alloy::sol_types as alloy_sol_types;
11309        {
11310            #[doc(hidden)]
11311            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
11312            #[doc(hidden)]
11313            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
11314            #[cfg(test)]
11315            #[allow(dead_code, unreachable_patterns)]
11316            fn _type_assertion(
11317                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11318            ) {
11319                match _t {
11320                    alloy_sol_types::private::AssertTypeEq::<
11321                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11322                    >(_) => {}
11323                }
11324            }
11325            #[automatically_derived]
11326            #[doc(hidden)]
11327            impl ::core::convert::From<supportsInterfaceCall>
11328            for UnderlyingRustTuple<'_> {
11329                fn from(value: supportsInterfaceCall) -> Self {
11330                    (value.interfaceId,)
11331                }
11332            }
11333            #[automatically_derived]
11334            #[doc(hidden)]
11335            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11336            for supportsInterfaceCall {
11337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11338                    Self { interfaceId: tuple.0 }
11339                }
11340            }
11341        }
11342        {
11343            #[doc(hidden)]
11344            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11345            #[doc(hidden)]
11346            type UnderlyingRustTuple<'a> = (bool,);
11347            #[cfg(test)]
11348            #[allow(dead_code, unreachable_patterns)]
11349            fn _type_assertion(
11350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11351            ) {
11352                match _t {
11353                    alloy_sol_types::private::AssertTypeEq::<
11354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11355                    >(_) => {}
11356                }
11357            }
11358            #[automatically_derived]
11359            #[doc(hidden)]
11360            impl ::core::convert::From<supportsInterfaceReturn>
11361            for UnderlyingRustTuple<'_> {
11362                fn from(value: supportsInterfaceReturn) -> Self {
11363                    (value._0,)
11364                }
11365            }
11366            #[automatically_derived]
11367            #[doc(hidden)]
11368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11369            for supportsInterfaceReturn {
11370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11371                    Self { _0: tuple.0 }
11372                }
11373            }
11374        }
11375        #[automatically_derived]
11376        impl alloy_sol_types::SolCall for supportsInterfaceCall {
11377            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
11378            type Token<'a> = <Self::Parameters<
11379                'a,
11380            > as alloy_sol_types::SolType>::Token<'a>;
11381            type Return = supportsInterfaceReturn;
11382            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11383            type ReturnToken<'a> = <Self::ReturnTuple<
11384                'a,
11385            > as alloy_sol_types::SolType>::Token<'a>;
11386            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
11387            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
11388            #[inline]
11389            fn new<'a>(
11390                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11391            ) -> Self {
11392                tuple.into()
11393            }
11394            #[inline]
11395            fn tokenize(&self) -> Self::Token<'_> {
11396                (
11397                    <alloy::sol_types::sol_data::FixedBytes<
11398                        4,
11399                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
11400                )
11401            }
11402            #[inline]
11403            fn abi_decode_returns(
11404                data: &[u8],
11405                validate: bool,
11406            ) -> alloy_sol_types::Result<Self::Return> {
11407                <Self::ReturnTuple<
11408                    '_,
11409                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11410                    .map(Into::into)
11411            }
11412        }
11413    };
11414    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11415    /**Function with signature `token()` and selector `0xfc0c546a`.
11416```solidity
11417function token() external view returns (address);
11418```*/
11419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11420    #[derive(Clone)]
11421    pub struct tokenCall {}
11422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11423    ///Container type for the return parameters of the [`token()`](tokenCall) function.
11424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11425    #[derive(Clone)]
11426    pub struct tokenReturn {
11427        #[allow(missing_docs)]
11428        pub _0: alloy::sol_types::private::Address,
11429    }
11430    #[allow(
11431        non_camel_case_types,
11432        non_snake_case,
11433        clippy::pub_underscore_fields,
11434        clippy::style
11435    )]
11436    const _: () = {
11437        use alloy::sol_types as alloy_sol_types;
11438        {
11439            #[doc(hidden)]
11440            type UnderlyingSolTuple<'a> = ();
11441            #[doc(hidden)]
11442            type UnderlyingRustTuple<'a> = ();
11443            #[cfg(test)]
11444            #[allow(dead_code, unreachable_patterns)]
11445            fn _type_assertion(
11446                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11447            ) {
11448                match _t {
11449                    alloy_sol_types::private::AssertTypeEq::<
11450                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11451                    >(_) => {}
11452                }
11453            }
11454            #[automatically_derived]
11455            #[doc(hidden)]
11456            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
11457                fn from(value: tokenCall) -> Self {
11458                    ()
11459                }
11460            }
11461            #[automatically_derived]
11462            #[doc(hidden)]
11463            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
11464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11465                    Self {}
11466                }
11467            }
11468        }
11469        {
11470            #[doc(hidden)]
11471            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11472            #[doc(hidden)]
11473            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11474            #[cfg(test)]
11475            #[allow(dead_code, unreachable_patterns)]
11476            fn _type_assertion(
11477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11478            ) {
11479                match _t {
11480                    alloy_sol_types::private::AssertTypeEq::<
11481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11482                    >(_) => {}
11483                }
11484            }
11485            #[automatically_derived]
11486            #[doc(hidden)]
11487            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
11488                fn from(value: tokenReturn) -> Self {
11489                    (value._0,)
11490                }
11491            }
11492            #[automatically_derived]
11493            #[doc(hidden)]
11494            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
11495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11496                    Self { _0: tuple.0 }
11497                }
11498            }
11499        }
11500        #[automatically_derived]
11501        impl alloy_sol_types::SolCall for tokenCall {
11502            type Parameters<'a> = ();
11503            type Token<'a> = <Self::Parameters<
11504                'a,
11505            > as alloy_sol_types::SolType>::Token<'a>;
11506            type Return = tokenReturn;
11507            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11508            type ReturnToken<'a> = <Self::ReturnTuple<
11509                'a,
11510            > as alloy_sol_types::SolType>::Token<'a>;
11511            const SIGNATURE: &'static str = "token()";
11512            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
11513            #[inline]
11514            fn new<'a>(
11515                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11516            ) -> Self {
11517                tuple.into()
11518            }
11519            #[inline]
11520            fn tokenize(&self) -> Self::Token<'_> {
11521                ()
11522            }
11523            #[inline]
11524            fn abi_decode_returns(
11525                data: &[u8],
11526                validate: bool,
11527            ) -> alloy_sol_types::Result<Self::Return> {
11528                <Self::ReturnTuple<
11529                    '_,
11530                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11531                    .map(Into::into)
11532            }
11533        }
11534    };
11535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11536    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11537```solidity
11538function transferOwnership(address newOwner) external;
11539```*/
11540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11541    #[derive(Clone)]
11542    pub struct transferOwnershipCall {
11543        #[allow(missing_docs)]
11544        pub newOwner: alloy::sol_types::private::Address,
11545    }
11546    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11548    #[derive(Clone)]
11549    pub struct transferOwnershipReturn {}
11550    #[allow(
11551        non_camel_case_types,
11552        non_snake_case,
11553        clippy::pub_underscore_fields,
11554        clippy::style
11555    )]
11556    const _: () = {
11557        use alloy::sol_types as alloy_sol_types;
11558        {
11559            #[doc(hidden)]
11560            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11561            #[doc(hidden)]
11562            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11563            #[cfg(test)]
11564            #[allow(dead_code, unreachable_patterns)]
11565            fn _type_assertion(
11566                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11567            ) {
11568                match _t {
11569                    alloy_sol_types::private::AssertTypeEq::<
11570                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11571                    >(_) => {}
11572                }
11573            }
11574            #[automatically_derived]
11575            #[doc(hidden)]
11576            impl ::core::convert::From<transferOwnershipCall>
11577            for UnderlyingRustTuple<'_> {
11578                fn from(value: transferOwnershipCall) -> Self {
11579                    (value.newOwner,)
11580                }
11581            }
11582            #[automatically_derived]
11583            #[doc(hidden)]
11584            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11585            for transferOwnershipCall {
11586                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11587                    Self { newOwner: tuple.0 }
11588                }
11589            }
11590        }
11591        {
11592            #[doc(hidden)]
11593            type UnderlyingSolTuple<'a> = ();
11594            #[doc(hidden)]
11595            type UnderlyingRustTuple<'a> = ();
11596            #[cfg(test)]
11597            #[allow(dead_code, unreachable_patterns)]
11598            fn _type_assertion(
11599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11600            ) {
11601                match _t {
11602                    alloy_sol_types::private::AssertTypeEq::<
11603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11604                    >(_) => {}
11605                }
11606            }
11607            #[automatically_derived]
11608            #[doc(hidden)]
11609            impl ::core::convert::From<transferOwnershipReturn>
11610            for UnderlyingRustTuple<'_> {
11611                fn from(value: transferOwnershipReturn) -> Self {
11612                    ()
11613                }
11614            }
11615            #[automatically_derived]
11616            #[doc(hidden)]
11617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11618            for transferOwnershipReturn {
11619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11620                    Self {}
11621                }
11622            }
11623        }
11624        #[automatically_derived]
11625        impl alloy_sol_types::SolCall for transferOwnershipCall {
11626            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11627            type Token<'a> = <Self::Parameters<
11628                'a,
11629            > as alloy_sol_types::SolType>::Token<'a>;
11630            type Return = transferOwnershipReturn;
11631            type ReturnTuple<'a> = ();
11632            type ReturnToken<'a> = <Self::ReturnTuple<
11633                'a,
11634            > as alloy_sol_types::SolType>::Token<'a>;
11635            const SIGNATURE: &'static str = "transferOwnership(address)";
11636            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11637            #[inline]
11638            fn new<'a>(
11639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11640            ) -> Self {
11641                tuple.into()
11642            }
11643            #[inline]
11644            fn tokenize(&self) -> Self::Token<'_> {
11645                (
11646                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11647                        &self.newOwner,
11648                    ),
11649                )
11650            }
11651            #[inline]
11652            fn abi_decode_returns(
11653                data: &[u8],
11654                validate: bool,
11655            ) -> alloy_sol_types::Result<Self::Return> {
11656                <Self::ReturnTuple<
11657                    '_,
11658                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11659                    .map(Into::into)
11660            }
11661        }
11662    };
11663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11664    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
11665```solidity
11666function undelegate(address validator, uint256 amount) external;
11667```*/
11668    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11669    #[derive(Clone)]
11670    pub struct undelegateCall {
11671        #[allow(missing_docs)]
11672        pub validator: alloy::sol_types::private::Address,
11673        #[allow(missing_docs)]
11674        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11675    }
11676    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
11677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11678    #[derive(Clone)]
11679    pub struct undelegateReturn {}
11680    #[allow(
11681        non_camel_case_types,
11682        non_snake_case,
11683        clippy::pub_underscore_fields,
11684        clippy::style
11685    )]
11686    const _: () = {
11687        use alloy::sol_types as alloy_sol_types;
11688        {
11689            #[doc(hidden)]
11690            type UnderlyingSolTuple<'a> = (
11691                alloy::sol_types::sol_data::Address,
11692                alloy::sol_types::sol_data::Uint<256>,
11693            );
11694            #[doc(hidden)]
11695            type UnderlyingRustTuple<'a> = (
11696                alloy::sol_types::private::Address,
11697                alloy::sol_types::private::primitives::aliases::U256,
11698            );
11699            #[cfg(test)]
11700            #[allow(dead_code, unreachable_patterns)]
11701            fn _type_assertion(
11702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11703            ) {
11704                match _t {
11705                    alloy_sol_types::private::AssertTypeEq::<
11706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11707                    >(_) => {}
11708                }
11709            }
11710            #[automatically_derived]
11711            #[doc(hidden)]
11712            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
11713                fn from(value: undelegateCall) -> Self {
11714                    (value.validator, value.amount)
11715                }
11716            }
11717            #[automatically_derived]
11718            #[doc(hidden)]
11719            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
11720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11721                    Self {
11722                        validator: tuple.0,
11723                        amount: tuple.1,
11724                    }
11725                }
11726            }
11727        }
11728        {
11729            #[doc(hidden)]
11730            type UnderlyingSolTuple<'a> = ();
11731            #[doc(hidden)]
11732            type UnderlyingRustTuple<'a> = ();
11733            #[cfg(test)]
11734            #[allow(dead_code, unreachable_patterns)]
11735            fn _type_assertion(
11736                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11737            ) {
11738                match _t {
11739                    alloy_sol_types::private::AssertTypeEq::<
11740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11741                    >(_) => {}
11742                }
11743            }
11744            #[automatically_derived]
11745            #[doc(hidden)]
11746            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
11747                fn from(value: undelegateReturn) -> Self {
11748                    ()
11749                }
11750            }
11751            #[automatically_derived]
11752            #[doc(hidden)]
11753            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
11754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11755                    Self {}
11756                }
11757            }
11758        }
11759        #[automatically_derived]
11760        impl alloy_sol_types::SolCall for undelegateCall {
11761            type Parameters<'a> = (
11762                alloy::sol_types::sol_data::Address,
11763                alloy::sol_types::sol_data::Uint<256>,
11764            );
11765            type Token<'a> = <Self::Parameters<
11766                'a,
11767            > as alloy_sol_types::SolType>::Token<'a>;
11768            type Return = undelegateReturn;
11769            type ReturnTuple<'a> = ();
11770            type ReturnToken<'a> = <Self::ReturnTuple<
11771                'a,
11772            > as alloy_sol_types::SolType>::Token<'a>;
11773            const SIGNATURE: &'static str = "undelegate(address,uint256)";
11774            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
11775            #[inline]
11776            fn new<'a>(
11777                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11778            ) -> Self {
11779                tuple.into()
11780            }
11781            #[inline]
11782            fn tokenize(&self) -> Self::Token<'_> {
11783                (
11784                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11785                        &self.validator,
11786                    ),
11787                    <alloy::sol_types::sol_data::Uint<
11788                        256,
11789                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11790                )
11791            }
11792            #[inline]
11793            fn abi_decode_returns(
11794                data: &[u8],
11795                validate: bool,
11796            ) -> alloy_sol_types::Result<Self::Return> {
11797                <Self::ReturnTuple<
11798                    '_,
11799                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11800                    .map(Into::into)
11801            }
11802        }
11803    };
11804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11805    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
11806```solidity
11807function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
11808```*/
11809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11810    #[derive(Clone)]
11811    pub struct undelegationsCall {
11812        #[allow(missing_docs)]
11813        pub validator: alloy::sol_types::private::Address,
11814        #[allow(missing_docs)]
11815        pub delegator: alloy::sol_types::private::Address,
11816    }
11817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11818    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
11819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11820    #[derive(Clone)]
11821    pub struct undelegationsReturn {
11822        #[allow(missing_docs)]
11823        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11824        #[allow(missing_docs)]
11825        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11826    }
11827    #[allow(
11828        non_camel_case_types,
11829        non_snake_case,
11830        clippy::pub_underscore_fields,
11831        clippy::style
11832    )]
11833    const _: () = {
11834        use alloy::sol_types as alloy_sol_types;
11835        {
11836            #[doc(hidden)]
11837            type UnderlyingSolTuple<'a> = (
11838                alloy::sol_types::sol_data::Address,
11839                alloy::sol_types::sol_data::Address,
11840            );
11841            #[doc(hidden)]
11842            type UnderlyingRustTuple<'a> = (
11843                alloy::sol_types::private::Address,
11844                alloy::sol_types::private::Address,
11845            );
11846            #[cfg(test)]
11847            #[allow(dead_code, unreachable_patterns)]
11848            fn _type_assertion(
11849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11850            ) {
11851                match _t {
11852                    alloy_sol_types::private::AssertTypeEq::<
11853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11854                    >(_) => {}
11855                }
11856            }
11857            #[automatically_derived]
11858            #[doc(hidden)]
11859            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
11860                fn from(value: undelegationsCall) -> Self {
11861                    (value.validator, value.delegator)
11862                }
11863            }
11864            #[automatically_derived]
11865            #[doc(hidden)]
11866            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
11867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11868                    Self {
11869                        validator: tuple.0,
11870                        delegator: tuple.1,
11871                    }
11872                }
11873            }
11874        }
11875        {
11876            #[doc(hidden)]
11877            type UnderlyingSolTuple<'a> = (
11878                alloy::sol_types::sol_data::Uint<256>,
11879                alloy::sol_types::sol_data::Uint<256>,
11880            );
11881            #[doc(hidden)]
11882            type UnderlyingRustTuple<'a> = (
11883                alloy::sol_types::private::primitives::aliases::U256,
11884                alloy::sol_types::private::primitives::aliases::U256,
11885            );
11886            #[cfg(test)]
11887            #[allow(dead_code, unreachable_patterns)]
11888            fn _type_assertion(
11889                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11890            ) {
11891                match _t {
11892                    alloy_sol_types::private::AssertTypeEq::<
11893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11894                    >(_) => {}
11895                }
11896            }
11897            #[automatically_derived]
11898            #[doc(hidden)]
11899            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
11900                fn from(value: undelegationsReturn) -> Self {
11901                    (value.amount, value.unlocksAt)
11902                }
11903            }
11904            #[automatically_derived]
11905            #[doc(hidden)]
11906            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
11907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11908                    Self {
11909                        amount: tuple.0,
11910                        unlocksAt: tuple.1,
11911                    }
11912                }
11913            }
11914        }
11915        #[automatically_derived]
11916        impl alloy_sol_types::SolCall for undelegationsCall {
11917            type Parameters<'a> = (
11918                alloy::sol_types::sol_data::Address,
11919                alloy::sol_types::sol_data::Address,
11920            );
11921            type Token<'a> = <Self::Parameters<
11922                'a,
11923            > as alloy_sol_types::SolType>::Token<'a>;
11924            type Return = undelegationsReturn;
11925            type ReturnTuple<'a> = (
11926                alloy::sol_types::sol_data::Uint<256>,
11927                alloy::sol_types::sol_data::Uint<256>,
11928            );
11929            type ReturnToken<'a> = <Self::ReturnTuple<
11930                'a,
11931            > as alloy_sol_types::SolType>::Token<'a>;
11932            const SIGNATURE: &'static str = "undelegations(address,address)";
11933            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
11934            #[inline]
11935            fn new<'a>(
11936                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11937            ) -> Self {
11938                tuple.into()
11939            }
11940            #[inline]
11941            fn tokenize(&self) -> Self::Token<'_> {
11942                (
11943                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11944                        &self.validator,
11945                    ),
11946                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11947                        &self.delegator,
11948                    ),
11949                )
11950            }
11951            #[inline]
11952            fn abi_decode_returns(
11953                data: &[u8],
11954                validate: bool,
11955            ) -> alloy_sol_types::Result<Self::Return> {
11956                <Self::ReturnTuple<
11957                    '_,
11958                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11959                    .map(Into::into)
11960            }
11961        }
11962    };
11963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11964    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
11965```solidity
11966function unpause() external;
11967```*/
11968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11969    #[derive(Clone)]
11970    pub struct unpauseCall {}
11971    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
11972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11973    #[derive(Clone)]
11974    pub struct unpauseReturn {}
11975    #[allow(
11976        non_camel_case_types,
11977        non_snake_case,
11978        clippy::pub_underscore_fields,
11979        clippy::style
11980    )]
11981    const _: () = {
11982        use alloy::sol_types as alloy_sol_types;
11983        {
11984            #[doc(hidden)]
11985            type UnderlyingSolTuple<'a> = ();
11986            #[doc(hidden)]
11987            type UnderlyingRustTuple<'a> = ();
11988            #[cfg(test)]
11989            #[allow(dead_code, unreachable_patterns)]
11990            fn _type_assertion(
11991                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11992            ) {
11993                match _t {
11994                    alloy_sol_types::private::AssertTypeEq::<
11995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11996                    >(_) => {}
11997                }
11998            }
11999            #[automatically_derived]
12000            #[doc(hidden)]
12001            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
12002                fn from(value: unpauseCall) -> Self {
12003                    ()
12004                }
12005            }
12006            #[automatically_derived]
12007            #[doc(hidden)]
12008            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
12009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12010                    Self {}
12011                }
12012            }
12013        }
12014        {
12015            #[doc(hidden)]
12016            type UnderlyingSolTuple<'a> = ();
12017            #[doc(hidden)]
12018            type UnderlyingRustTuple<'a> = ();
12019            #[cfg(test)]
12020            #[allow(dead_code, unreachable_patterns)]
12021            fn _type_assertion(
12022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12023            ) {
12024                match _t {
12025                    alloy_sol_types::private::AssertTypeEq::<
12026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12027                    >(_) => {}
12028                }
12029            }
12030            #[automatically_derived]
12031            #[doc(hidden)]
12032            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
12033                fn from(value: unpauseReturn) -> Self {
12034                    ()
12035                }
12036            }
12037            #[automatically_derived]
12038            #[doc(hidden)]
12039            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
12040                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12041                    Self {}
12042                }
12043            }
12044        }
12045        #[automatically_derived]
12046        impl alloy_sol_types::SolCall for unpauseCall {
12047            type Parameters<'a> = ();
12048            type Token<'a> = <Self::Parameters<
12049                'a,
12050            > as alloy_sol_types::SolType>::Token<'a>;
12051            type Return = unpauseReturn;
12052            type ReturnTuple<'a> = ();
12053            type ReturnToken<'a> = <Self::ReturnTuple<
12054                'a,
12055            > as alloy_sol_types::SolType>::Token<'a>;
12056            const SIGNATURE: &'static str = "unpause()";
12057            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
12058            #[inline]
12059            fn new<'a>(
12060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12061            ) -> Self {
12062                tuple.into()
12063            }
12064            #[inline]
12065            fn tokenize(&self) -> Self::Token<'_> {
12066                ()
12067            }
12068            #[inline]
12069            fn abi_decode_returns(
12070                data: &[u8],
12071                validate: bool,
12072            ) -> alloy_sol_types::Result<Self::Return> {
12073                <Self::ReturnTuple<
12074                    '_,
12075                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12076                    .map(Into::into)
12077            }
12078        }
12079    };
12080    #[derive()]
12081    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
12082```solidity
12083function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
12084```*/
12085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12086    #[derive(Clone)]
12087    pub struct updateConsensusKeysCall {
12088        #[allow(missing_docs)]
12089        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12090        #[allow(missing_docs)]
12091        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12092        #[allow(missing_docs)]
12093        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12094    }
12095    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
12096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12097    #[derive(Clone)]
12098    pub struct updateConsensusKeysReturn {}
12099    #[allow(
12100        non_camel_case_types,
12101        non_snake_case,
12102        clippy::pub_underscore_fields,
12103        clippy::style
12104    )]
12105    const _: () = {
12106        use alloy::sol_types as alloy_sol_types;
12107        {
12108            #[doc(hidden)]
12109            type UnderlyingSolTuple<'a> = (
12110                BN254::G2Point,
12111                EdOnBN254::EdOnBN254Point,
12112                BN254::G1Point,
12113            );
12114            #[doc(hidden)]
12115            type UnderlyingRustTuple<'a> = (
12116                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12117                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12118                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12119            );
12120            #[cfg(test)]
12121            #[allow(dead_code, unreachable_patterns)]
12122            fn _type_assertion(
12123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12124            ) {
12125                match _t {
12126                    alloy_sol_types::private::AssertTypeEq::<
12127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12128                    >(_) => {}
12129                }
12130            }
12131            #[automatically_derived]
12132            #[doc(hidden)]
12133            impl ::core::convert::From<updateConsensusKeysCall>
12134            for UnderlyingRustTuple<'_> {
12135                fn from(value: updateConsensusKeysCall) -> Self {
12136                    (value._0, value._1, value._2)
12137                }
12138            }
12139            #[automatically_derived]
12140            #[doc(hidden)]
12141            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12142            for updateConsensusKeysCall {
12143                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12144                    Self {
12145                        _0: tuple.0,
12146                        _1: tuple.1,
12147                        _2: tuple.2,
12148                    }
12149                }
12150            }
12151        }
12152        {
12153            #[doc(hidden)]
12154            type UnderlyingSolTuple<'a> = ();
12155            #[doc(hidden)]
12156            type UnderlyingRustTuple<'a> = ();
12157            #[cfg(test)]
12158            #[allow(dead_code, unreachable_patterns)]
12159            fn _type_assertion(
12160                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12161            ) {
12162                match _t {
12163                    alloy_sol_types::private::AssertTypeEq::<
12164                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12165                    >(_) => {}
12166                }
12167            }
12168            #[automatically_derived]
12169            #[doc(hidden)]
12170            impl ::core::convert::From<updateConsensusKeysReturn>
12171            for UnderlyingRustTuple<'_> {
12172                fn from(value: updateConsensusKeysReturn) -> Self {
12173                    ()
12174                }
12175            }
12176            #[automatically_derived]
12177            #[doc(hidden)]
12178            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12179            for updateConsensusKeysReturn {
12180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12181                    Self {}
12182                }
12183            }
12184        }
12185        #[automatically_derived]
12186        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
12187            type Parameters<'a> = (
12188                BN254::G2Point,
12189                EdOnBN254::EdOnBN254Point,
12190                BN254::G1Point,
12191            );
12192            type Token<'a> = <Self::Parameters<
12193                'a,
12194            > as alloy_sol_types::SolType>::Token<'a>;
12195            type Return = updateConsensusKeysReturn;
12196            type ReturnTuple<'a> = ();
12197            type ReturnToken<'a> = <Self::ReturnTuple<
12198                'a,
12199            > as alloy_sol_types::SolType>::Token<'a>;
12200            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
12201            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
12202            #[inline]
12203            fn new<'a>(
12204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12205            ) -> Self {
12206                tuple.into()
12207            }
12208            #[inline]
12209            fn tokenize(&self) -> Self::Token<'_> {
12210                (
12211                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
12212                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
12213                        &self._1,
12214                    ),
12215                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
12216                )
12217            }
12218            #[inline]
12219            fn abi_decode_returns(
12220                data: &[u8],
12221                validate: bool,
12222            ) -> alloy_sol_types::Result<Self::Return> {
12223                <Self::ReturnTuple<
12224                    '_,
12225                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12226                    .map(Into::into)
12227            }
12228        }
12229    };
12230    #[derive()]
12231    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
12232```solidity
12233function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
12234```*/
12235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12236    #[derive(Clone)]
12237    pub struct updateConsensusKeysV2Call {
12238        #[allow(missing_docs)]
12239        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12240        #[allow(missing_docs)]
12241        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12242        #[allow(missing_docs)]
12243        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12244        #[allow(missing_docs)]
12245        pub schnorrSig: alloy::sol_types::private::Bytes,
12246    }
12247    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
12248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12249    #[derive(Clone)]
12250    pub struct updateConsensusKeysV2Return {}
12251    #[allow(
12252        non_camel_case_types,
12253        non_snake_case,
12254        clippy::pub_underscore_fields,
12255        clippy::style
12256    )]
12257    const _: () = {
12258        use alloy::sol_types as alloy_sol_types;
12259        {
12260            #[doc(hidden)]
12261            type UnderlyingSolTuple<'a> = (
12262                BN254::G2Point,
12263                EdOnBN254::EdOnBN254Point,
12264                BN254::G1Point,
12265                alloy::sol_types::sol_data::Bytes,
12266            );
12267            #[doc(hidden)]
12268            type UnderlyingRustTuple<'a> = (
12269                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12270                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12271                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12272                alloy::sol_types::private::Bytes,
12273            );
12274            #[cfg(test)]
12275            #[allow(dead_code, unreachable_patterns)]
12276            fn _type_assertion(
12277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12278            ) {
12279                match _t {
12280                    alloy_sol_types::private::AssertTypeEq::<
12281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12282                    >(_) => {}
12283                }
12284            }
12285            #[automatically_derived]
12286            #[doc(hidden)]
12287            impl ::core::convert::From<updateConsensusKeysV2Call>
12288            for UnderlyingRustTuple<'_> {
12289                fn from(value: updateConsensusKeysV2Call) -> Self {
12290                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
12291                }
12292            }
12293            #[automatically_derived]
12294            #[doc(hidden)]
12295            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12296            for updateConsensusKeysV2Call {
12297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12298                    Self {
12299                        blsVK: tuple.0,
12300                        schnorrVK: tuple.1,
12301                        blsSig: tuple.2,
12302                        schnorrSig: tuple.3,
12303                    }
12304                }
12305            }
12306        }
12307        {
12308            #[doc(hidden)]
12309            type UnderlyingSolTuple<'a> = ();
12310            #[doc(hidden)]
12311            type UnderlyingRustTuple<'a> = ();
12312            #[cfg(test)]
12313            #[allow(dead_code, unreachable_patterns)]
12314            fn _type_assertion(
12315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12316            ) {
12317                match _t {
12318                    alloy_sol_types::private::AssertTypeEq::<
12319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12320                    >(_) => {}
12321                }
12322            }
12323            #[automatically_derived]
12324            #[doc(hidden)]
12325            impl ::core::convert::From<updateConsensusKeysV2Return>
12326            for UnderlyingRustTuple<'_> {
12327                fn from(value: updateConsensusKeysV2Return) -> Self {
12328                    ()
12329                }
12330            }
12331            #[automatically_derived]
12332            #[doc(hidden)]
12333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12334            for updateConsensusKeysV2Return {
12335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12336                    Self {}
12337                }
12338            }
12339        }
12340        #[automatically_derived]
12341        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
12342            type Parameters<'a> = (
12343                BN254::G2Point,
12344                EdOnBN254::EdOnBN254Point,
12345                BN254::G1Point,
12346                alloy::sol_types::sol_data::Bytes,
12347            );
12348            type Token<'a> = <Self::Parameters<
12349                'a,
12350            > as alloy_sol_types::SolType>::Token<'a>;
12351            type Return = updateConsensusKeysV2Return;
12352            type ReturnTuple<'a> = ();
12353            type ReturnToken<'a> = <Self::ReturnTuple<
12354                'a,
12355            > as alloy_sol_types::SolType>::Token<'a>;
12356            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
12357            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
12358            #[inline]
12359            fn new<'a>(
12360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12361            ) -> Self {
12362                tuple.into()
12363            }
12364            #[inline]
12365            fn tokenize(&self) -> Self::Token<'_> {
12366                (
12367                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
12368                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
12369                        &self.schnorrVK,
12370                    ),
12371                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
12372                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
12373                        &self.schnorrSig,
12374                    ),
12375                )
12376            }
12377            #[inline]
12378            fn abi_decode_returns(
12379                data: &[u8],
12380                validate: bool,
12381            ) -> alloy_sol_types::Result<Self::Return> {
12382                <Self::ReturnTuple<
12383                    '_,
12384                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12385                    .map(Into::into)
12386            }
12387        }
12388    };
12389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12390    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
12391```solidity
12392function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
12393```*/
12394    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12395    #[derive(Clone)]
12396    pub struct updateExitEscrowPeriodCall {
12397        #[allow(missing_docs)]
12398        pub newExitEscrowPeriod: u64,
12399    }
12400    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
12401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12402    #[derive(Clone)]
12403    pub struct updateExitEscrowPeriodReturn {}
12404    #[allow(
12405        non_camel_case_types,
12406        non_snake_case,
12407        clippy::pub_underscore_fields,
12408        clippy::style
12409    )]
12410    const _: () = {
12411        use alloy::sol_types as alloy_sol_types;
12412        {
12413            #[doc(hidden)]
12414            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12415            #[doc(hidden)]
12416            type UnderlyingRustTuple<'a> = (u64,);
12417            #[cfg(test)]
12418            #[allow(dead_code, unreachable_patterns)]
12419            fn _type_assertion(
12420                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12421            ) {
12422                match _t {
12423                    alloy_sol_types::private::AssertTypeEq::<
12424                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12425                    >(_) => {}
12426                }
12427            }
12428            #[automatically_derived]
12429            #[doc(hidden)]
12430            impl ::core::convert::From<updateExitEscrowPeriodCall>
12431            for UnderlyingRustTuple<'_> {
12432                fn from(value: updateExitEscrowPeriodCall) -> Self {
12433                    (value.newExitEscrowPeriod,)
12434                }
12435            }
12436            #[automatically_derived]
12437            #[doc(hidden)]
12438            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12439            for updateExitEscrowPeriodCall {
12440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12441                    Self {
12442                        newExitEscrowPeriod: tuple.0,
12443                    }
12444                }
12445            }
12446        }
12447        {
12448            #[doc(hidden)]
12449            type UnderlyingSolTuple<'a> = ();
12450            #[doc(hidden)]
12451            type UnderlyingRustTuple<'a> = ();
12452            #[cfg(test)]
12453            #[allow(dead_code, unreachable_patterns)]
12454            fn _type_assertion(
12455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12456            ) {
12457                match _t {
12458                    alloy_sol_types::private::AssertTypeEq::<
12459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12460                    >(_) => {}
12461                }
12462            }
12463            #[automatically_derived]
12464            #[doc(hidden)]
12465            impl ::core::convert::From<updateExitEscrowPeriodReturn>
12466            for UnderlyingRustTuple<'_> {
12467                fn from(value: updateExitEscrowPeriodReturn) -> Self {
12468                    ()
12469                }
12470            }
12471            #[automatically_derived]
12472            #[doc(hidden)]
12473            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12474            for updateExitEscrowPeriodReturn {
12475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12476                    Self {}
12477                }
12478            }
12479        }
12480        #[automatically_derived]
12481        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
12482            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12483            type Token<'a> = <Self::Parameters<
12484                'a,
12485            > as alloy_sol_types::SolType>::Token<'a>;
12486            type Return = updateExitEscrowPeriodReturn;
12487            type ReturnTuple<'a> = ();
12488            type ReturnToken<'a> = <Self::ReturnTuple<
12489                'a,
12490            > as alloy_sol_types::SolType>::Token<'a>;
12491            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
12492            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
12493            #[inline]
12494            fn new<'a>(
12495                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12496            ) -> Self {
12497                tuple.into()
12498            }
12499            #[inline]
12500            fn tokenize(&self) -> Self::Token<'_> {
12501                (
12502                    <alloy::sol_types::sol_data::Uint<
12503                        64,
12504                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
12505                )
12506            }
12507            #[inline]
12508            fn abi_decode_returns(
12509                data: &[u8],
12510                validate: bool,
12511            ) -> alloy_sol_types::Result<Self::Return> {
12512                <Self::ReturnTuple<
12513                    '_,
12514                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12515                    .map(Into::into)
12516            }
12517        }
12518    };
12519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12520    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12521```solidity
12522function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12523```*/
12524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12525    #[derive(Clone)]
12526    pub struct upgradeToAndCallCall {
12527        #[allow(missing_docs)]
12528        pub newImplementation: alloy::sol_types::private::Address,
12529        #[allow(missing_docs)]
12530        pub data: alloy::sol_types::private::Bytes,
12531    }
12532    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12533    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12534    #[derive(Clone)]
12535    pub struct upgradeToAndCallReturn {}
12536    #[allow(
12537        non_camel_case_types,
12538        non_snake_case,
12539        clippy::pub_underscore_fields,
12540        clippy::style
12541    )]
12542    const _: () = {
12543        use alloy::sol_types as alloy_sol_types;
12544        {
12545            #[doc(hidden)]
12546            type UnderlyingSolTuple<'a> = (
12547                alloy::sol_types::sol_data::Address,
12548                alloy::sol_types::sol_data::Bytes,
12549            );
12550            #[doc(hidden)]
12551            type UnderlyingRustTuple<'a> = (
12552                alloy::sol_types::private::Address,
12553                alloy::sol_types::private::Bytes,
12554            );
12555            #[cfg(test)]
12556            #[allow(dead_code, unreachable_patterns)]
12557            fn _type_assertion(
12558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12559            ) {
12560                match _t {
12561                    alloy_sol_types::private::AssertTypeEq::<
12562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12563                    >(_) => {}
12564                }
12565            }
12566            #[automatically_derived]
12567            #[doc(hidden)]
12568            impl ::core::convert::From<upgradeToAndCallCall>
12569            for UnderlyingRustTuple<'_> {
12570                fn from(value: upgradeToAndCallCall) -> Self {
12571                    (value.newImplementation, value.data)
12572                }
12573            }
12574            #[automatically_derived]
12575            #[doc(hidden)]
12576            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12577            for upgradeToAndCallCall {
12578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12579                    Self {
12580                        newImplementation: tuple.0,
12581                        data: tuple.1,
12582                    }
12583                }
12584            }
12585        }
12586        {
12587            #[doc(hidden)]
12588            type UnderlyingSolTuple<'a> = ();
12589            #[doc(hidden)]
12590            type UnderlyingRustTuple<'a> = ();
12591            #[cfg(test)]
12592            #[allow(dead_code, unreachable_patterns)]
12593            fn _type_assertion(
12594                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12595            ) {
12596                match _t {
12597                    alloy_sol_types::private::AssertTypeEq::<
12598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12599                    >(_) => {}
12600                }
12601            }
12602            #[automatically_derived]
12603            #[doc(hidden)]
12604            impl ::core::convert::From<upgradeToAndCallReturn>
12605            for UnderlyingRustTuple<'_> {
12606                fn from(value: upgradeToAndCallReturn) -> Self {
12607                    ()
12608                }
12609            }
12610            #[automatically_derived]
12611            #[doc(hidden)]
12612            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12613            for upgradeToAndCallReturn {
12614                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12615                    Self {}
12616                }
12617            }
12618        }
12619        #[automatically_derived]
12620        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
12621            type Parameters<'a> = (
12622                alloy::sol_types::sol_data::Address,
12623                alloy::sol_types::sol_data::Bytes,
12624            );
12625            type Token<'a> = <Self::Parameters<
12626                'a,
12627            > as alloy_sol_types::SolType>::Token<'a>;
12628            type Return = upgradeToAndCallReturn;
12629            type ReturnTuple<'a> = ();
12630            type ReturnToken<'a> = <Self::ReturnTuple<
12631                'a,
12632            > as alloy_sol_types::SolType>::Token<'a>;
12633            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
12634            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
12635            #[inline]
12636            fn new<'a>(
12637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12638            ) -> Self {
12639                tuple.into()
12640            }
12641            #[inline]
12642            fn tokenize(&self) -> Self::Token<'_> {
12643                (
12644                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12645                        &self.newImplementation,
12646                    ),
12647                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
12648                        &self.data,
12649                    ),
12650                )
12651            }
12652            #[inline]
12653            fn abi_decode_returns(
12654                data: &[u8],
12655                validate: bool,
12656            ) -> alloy_sol_types::Result<Self::Return> {
12657                <Self::ReturnTuple<
12658                    '_,
12659                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12660                    .map(Into::into)
12661            }
12662        }
12663    };
12664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12665    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
12666```solidity
12667function validatorExits(address validator) external view returns (uint256 unlocksAt);
12668```*/
12669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12670    #[derive(Clone)]
12671    pub struct validatorExitsCall {
12672        #[allow(missing_docs)]
12673        pub validator: alloy::sol_types::private::Address,
12674    }
12675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12676    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
12677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12678    #[derive(Clone)]
12679    pub struct validatorExitsReturn {
12680        #[allow(missing_docs)]
12681        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
12682    }
12683    #[allow(
12684        non_camel_case_types,
12685        non_snake_case,
12686        clippy::pub_underscore_fields,
12687        clippy::style
12688    )]
12689    const _: () = {
12690        use alloy::sol_types as alloy_sol_types;
12691        {
12692            #[doc(hidden)]
12693            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12694            #[doc(hidden)]
12695            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12696            #[cfg(test)]
12697            #[allow(dead_code, unreachable_patterns)]
12698            fn _type_assertion(
12699                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12700            ) {
12701                match _t {
12702                    alloy_sol_types::private::AssertTypeEq::<
12703                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12704                    >(_) => {}
12705                }
12706            }
12707            #[automatically_derived]
12708            #[doc(hidden)]
12709            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
12710                fn from(value: validatorExitsCall) -> Self {
12711                    (value.validator,)
12712                }
12713            }
12714            #[automatically_derived]
12715            #[doc(hidden)]
12716            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
12717                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12718                    Self { validator: tuple.0 }
12719                }
12720            }
12721        }
12722        {
12723            #[doc(hidden)]
12724            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12725            #[doc(hidden)]
12726            type UnderlyingRustTuple<'a> = (
12727                alloy::sol_types::private::primitives::aliases::U256,
12728            );
12729            #[cfg(test)]
12730            #[allow(dead_code, unreachable_patterns)]
12731            fn _type_assertion(
12732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12733            ) {
12734                match _t {
12735                    alloy_sol_types::private::AssertTypeEq::<
12736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12737                    >(_) => {}
12738                }
12739            }
12740            #[automatically_derived]
12741            #[doc(hidden)]
12742            impl ::core::convert::From<validatorExitsReturn>
12743            for UnderlyingRustTuple<'_> {
12744                fn from(value: validatorExitsReturn) -> Self {
12745                    (value.unlocksAt,)
12746                }
12747            }
12748            #[automatically_derived]
12749            #[doc(hidden)]
12750            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12751            for validatorExitsReturn {
12752                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12753                    Self { unlocksAt: tuple.0 }
12754                }
12755            }
12756        }
12757        #[automatically_derived]
12758        impl alloy_sol_types::SolCall for validatorExitsCall {
12759            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12760            type Token<'a> = <Self::Parameters<
12761                'a,
12762            > as alloy_sol_types::SolType>::Token<'a>;
12763            type Return = validatorExitsReturn;
12764            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12765            type ReturnToken<'a> = <Self::ReturnTuple<
12766                'a,
12767            > as alloy_sol_types::SolType>::Token<'a>;
12768            const SIGNATURE: &'static str = "validatorExits(address)";
12769            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
12770            #[inline]
12771            fn new<'a>(
12772                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12773            ) -> Self {
12774                tuple.into()
12775            }
12776            #[inline]
12777            fn tokenize(&self) -> Self::Token<'_> {
12778                (
12779                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12780                        &self.validator,
12781                    ),
12782                )
12783            }
12784            #[inline]
12785            fn abi_decode_returns(
12786                data: &[u8],
12787                validate: bool,
12788            ) -> alloy_sol_types::Result<Self::Return> {
12789                <Self::ReturnTuple<
12790                    '_,
12791                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12792                    .map(Into::into)
12793            }
12794        }
12795    };
12796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12797    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
12798```solidity
12799function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
12800```*/
12801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12802    #[derive(Clone)]
12803    pub struct validatorsCall {
12804        #[allow(missing_docs)]
12805        pub account: alloy::sol_types::private::Address,
12806    }
12807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12808    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
12809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12810    #[derive(Clone)]
12811    pub struct validatorsReturn {
12812        #[allow(missing_docs)]
12813        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
12814        #[allow(missing_docs)]
12815        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
12816    }
12817    #[allow(
12818        non_camel_case_types,
12819        non_snake_case,
12820        clippy::pub_underscore_fields,
12821        clippy::style
12822    )]
12823    const _: () = {
12824        use alloy::sol_types as alloy_sol_types;
12825        {
12826            #[doc(hidden)]
12827            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12828            #[doc(hidden)]
12829            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12830            #[cfg(test)]
12831            #[allow(dead_code, unreachable_patterns)]
12832            fn _type_assertion(
12833                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12834            ) {
12835                match _t {
12836                    alloy_sol_types::private::AssertTypeEq::<
12837                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12838                    >(_) => {}
12839                }
12840            }
12841            #[automatically_derived]
12842            #[doc(hidden)]
12843            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
12844                fn from(value: validatorsCall) -> Self {
12845                    (value.account,)
12846                }
12847            }
12848            #[automatically_derived]
12849            #[doc(hidden)]
12850            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
12851                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12852                    Self { account: tuple.0 }
12853                }
12854            }
12855        }
12856        {
12857            #[doc(hidden)]
12858            type UnderlyingSolTuple<'a> = (
12859                alloy::sol_types::sol_data::Uint<256>,
12860                StakeTable::ValidatorStatus,
12861            );
12862            #[doc(hidden)]
12863            type UnderlyingRustTuple<'a> = (
12864                alloy::sol_types::private::primitives::aliases::U256,
12865                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
12866            );
12867            #[cfg(test)]
12868            #[allow(dead_code, unreachable_patterns)]
12869            fn _type_assertion(
12870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12871            ) {
12872                match _t {
12873                    alloy_sol_types::private::AssertTypeEq::<
12874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12875                    >(_) => {}
12876                }
12877            }
12878            #[automatically_derived]
12879            #[doc(hidden)]
12880            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
12881                fn from(value: validatorsReturn) -> Self {
12882                    (value.delegatedAmount, value.status)
12883                }
12884            }
12885            #[automatically_derived]
12886            #[doc(hidden)]
12887            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
12888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12889                    Self {
12890                        delegatedAmount: tuple.0,
12891                        status: tuple.1,
12892                    }
12893                }
12894            }
12895        }
12896        #[automatically_derived]
12897        impl alloy_sol_types::SolCall for validatorsCall {
12898            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12899            type Token<'a> = <Self::Parameters<
12900                'a,
12901            > as alloy_sol_types::SolType>::Token<'a>;
12902            type Return = validatorsReturn;
12903            type ReturnTuple<'a> = (
12904                alloy::sol_types::sol_data::Uint<256>,
12905                StakeTable::ValidatorStatus,
12906            );
12907            type ReturnToken<'a> = <Self::ReturnTuple<
12908                'a,
12909            > as alloy_sol_types::SolType>::Token<'a>;
12910            const SIGNATURE: &'static str = "validators(address)";
12911            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
12912            #[inline]
12913            fn new<'a>(
12914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12915            ) -> Self {
12916                tuple.into()
12917            }
12918            #[inline]
12919            fn tokenize(&self) -> Self::Token<'_> {
12920                (
12921                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12922                        &self.account,
12923                    ),
12924                )
12925            }
12926            #[inline]
12927            fn abi_decode_returns(
12928                data: &[u8],
12929                validate: bool,
12930            ) -> alloy_sol_types::Result<Self::Return> {
12931                <Self::ReturnTuple<
12932                    '_,
12933                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12934                    .map(Into::into)
12935            }
12936        }
12937    };
12938    ///Container for all the [`StakeTableV2`](self) function calls.
12939    #[derive()]
12940    pub enum StakeTableV2Calls {
12941        #[allow(missing_docs)]
12942        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
12943        #[allow(missing_docs)]
12944        PAUSER_ROLE(PAUSER_ROLECall),
12945        #[allow(missing_docs)]
12946        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12947        #[allow(missing_docs)]
12948        _hashBlsKey(_hashBlsKeyCall),
12949        #[allow(missing_docs)]
12950        blsKeys(blsKeysCall),
12951        #[allow(missing_docs)]
12952        claimValidatorExit(claimValidatorExitCall),
12953        #[allow(missing_docs)]
12954        claimWithdrawal(claimWithdrawalCall),
12955        #[allow(missing_docs)]
12956        delegate(delegateCall),
12957        #[allow(missing_docs)]
12958        delegations(delegationsCall),
12959        #[allow(missing_docs)]
12960        deregisterValidator(deregisterValidatorCall),
12961        #[allow(missing_docs)]
12962        exitEscrowPeriod(exitEscrowPeriodCall),
12963        #[allow(missing_docs)]
12964        getRoleAdmin(getRoleAdminCall),
12965        #[allow(missing_docs)]
12966        getVersion(getVersionCall),
12967        #[allow(missing_docs)]
12968        grantRole(grantRoleCall),
12969        #[allow(missing_docs)]
12970        hasRole(hasRoleCall),
12971        #[allow(missing_docs)]
12972        initialize(initializeCall),
12973        #[allow(missing_docs)]
12974        initializeV2(initializeV2Call),
12975        #[allow(missing_docs)]
12976        initializedAtBlock(initializedAtBlockCall),
12977        #[allow(missing_docs)]
12978        lightClient(lightClientCall),
12979        #[allow(missing_docs)]
12980        owner(ownerCall),
12981        #[allow(missing_docs)]
12982        pause(pauseCall),
12983        #[allow(missing_docs)]
12984        paused(pausedCall),
12985        #[allow(missing_docs)]
12986        proxiableUUID(proxiableUUIDCall),
12987        #[allow(missing_docs)]
12988        registerValidator(registerValidatorCall),
12989        #[allow(missing_docs)]
12990        registerValidatorV2(registerValidatorV2Call),
12991        #[allow(missing_docs)]
12992        renounceOwnership(renounceOwnershipCall),
12993        #[allow(missing_docs)]
12994        renounceRole(renounceRoleCall),
12995        #[allow(missing_docs)]
12996        revokeRole(revokeRoleCall),
12997        #[allow(missing_docs)]
12998        supportsInterface(supportsInterfaceCall),
12999        #[allow(missing_docs)]
13000        token(tokenCall),
13001        #[allow(missing_docs)]
13002        transferOwnership(transferOwnershipCall),
13003        #[allow(missing_docs)]
13004        undelegate(undelegateCall),
13005        #[allow(missing_docs)]
13006        undelegations(undelegationsCall),
13007        #[allow(missing_docs)]
13008        unpause(unpauseCall),
13009        #[allow(missing_docs)]
13010        updateConsensusKeys(updateConsensusKeysCall),
13011        #[allow(missing_docs)]
13012        updateConsensusKeysV2(updateConsensusKeysV2Call),
13013        #[allow(missing_docs)]
13014        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
13015        #[allow(missing_docs)]
13016        upgradeToAndCall(upgradeToAndCallCall),
13017        #[allow(missing_docs)]
13018        validatorExits(validatorExitsCall),
13019        #[allow(missing_docs)]
13020        validators(validatorsCall),
13021    }
13022    #[automatically_derived]
13023    impl StakeTableV2Calls {
13024        /// All the selectors of this enum.
13025        ///
13026        /// Note that the selectors might not be in the same order as the variants.
13027        /// No guarantees are made about the order of the selectors.
13028        ///
13029        /// Prefer using `SolInterface` methods instead.
13030        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13031            [1u8, 255u8, 201u8, 167u8],
13032            [2u8, 110u8, 64u8, 43u8],
13033            [8u8, 64u8, 186u8, 114u8],
13034            [13u8, 142u8, 110u8, 44u8],
13035            [19u8, 185u8, 5u8, 122u8],
13036            [26u8, 32u8, 205u8, 99u8],
13037            [33u8, 64u8, 254u8, 205u8],
13038            [36u8, 138u8, 156u8, 163u8],
13039            [47u8, 47u8, 241u8, 93u8],
13040            [48u8, 66u8, 64u8, 191u8],
13041            [54u8, 86u8, 138u8, 190u8],
13042            [62u8, 157u8, 249u8, 181u8],
13043            [63u8, 75u8, 168u8, 58u8],
13044            [77u8, 153u8, 221u8, 22u8],
13045            [79u8, 30u8, 242u8, 134u8],
13046            [82u8, 209u8, 144u8, 45u8],
13047            [85u8, 68u8, 194u8, 241u8],
13048            [92u8, 151u8, 90u8, 187u8],
13049            [106u8, 145u8, 28u8, 207u8],
13050            [113u8, 80u8, 24u8, 166u8],
13051            [132u8, 86u8, 203u8, 89u8],
13052            [141u8, 165u8, 203u8, 91u8],
13053            [145u8, 209u8, 72u8, 84u8],
13054            [155u8, 48u8, 165u8, 230u8],
13055            [158u8, 154u8, 143u8, 49u8],
13056            [162u8, 23u8, 253u8, 223u8],
13057            [162u8, 215u8, 141u8, 213u8],
13058            [163u8, 6u8, 106u8, 171u8],
13059            [172u8, 92u8, 42u8, 208u8],
13060            [173u8, 60u8, 177u8, 204u8],
13061            [179u8, 230u8, 235u8, 213u8],
13062            [181u8, 112u8, 14u8, 104u8],
13063            [181u8, 236u8, 179u8, 68u8],
13064            [190u8, 32u8, 48u8, 148u8],
13065            [198u8, 72u8, 20u8, 221u8],
13066            [213u8, 71u8, 116u8, 31u8],
13067            [230u8, 58u8, 177u8, 233u8],
13068            [242u8, 253u8, 227u8, 139u8],
13069            [250u8, 82u8, 199u8, 216u8],
13070            [252u8, 12u8, 84u8, 106u8],
13071        ];
13072    }
13073    #[automatically_derived]
13074    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
13075        const NAME: &'static str = "StakeTableV2Calls";
13076        const MIN_DATA_LENGTH: usize = 0usize;
13077        const COUNT: usize = 40usize;
13078        #[inline]
13079        fn selector(&self) -> [u8; 4] {
13080            match self {
13081                Self::DEFAULT_ADMIN_ROLE(_) => {
13082                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
13083                }
13084                Self::PAUSER_ROLE(_) => {
13085                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
13086                }
13087                Self::UPGRADE_INTERFACE_VERSION(_) => {
13088                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13089                }
13090                Self::_hashBlsKey(_) => {
13091                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
13092                }
13093                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
13094                Self::claimValidatorExit(_) => {
13095                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
13096                }
13097                Self::claimWithdrawal(_) => {
13098                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
13099                }
13100                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
13101                Self::delegations(_) => {
13102                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
13103                }
13104                Self::deregisterValidator(_) => {
13105                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
13106                }
13107                Self::exitEscrowPeriod(_) => {
13108                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13109                }
13110                Self::getRoleAdmin(_) => {
13111                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
13112                }
13113                Self::getVersion(_) => {
13114                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13115                }
13116                Self::grantRole(_) => {
13117                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
13118                }
13119                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
13120                Self::initialize(_) => {
13121                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13122                }
13123                Self::initializeV2(_) => {
13124                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13125                }
13126                Self::initializedAtBlock(_) => {
13127                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
13128                }
13129                Self::lightClient(_) => {
13130                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
13131                }
13132                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13133                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
13134                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
13135                Self::proxiableUUID(_) => {
13136                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13137                }
13138                Self::registerValidator(_) => {
13139                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
13140                }
13141                Self::registerValidatorV2(_) => {
13142                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
13143                }
13144                Self::renounceOwnership(_) => {
13145                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13146                }
13147                Self::renounceRole(_) => {
13148                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
13149                }
13150                Self::revokeRole(_) => {
13151                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
13152                }
13153                Self::supportsInterface(_) => {
13154                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
13155                }
13156                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
13157                Self::transferOwnership(_) => {
13158                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13159                }
13160                Self::undelegate(_) => {
13161                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
13162                }
13163                Self::undelegations(_) => {
13164                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
13165                }
13166                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
13167                Self::updateConsensusKeys(_) => {
13168                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
13169                }
13170                Self::updateConsensusKeysV2(_) => {
13171                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
13172                }
13173                Self::updateExitEscrowPeriod(_) => {
13174                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13175                }
13176                Self::upgradeToAndCall(_) => {
13177                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13178                }
13179                Self::validatorExits(_) => {
13180                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
13181                }
13182                Self::validators(_) => {
13183                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
13184                }
13185            }
13186        }
13187        #[inline]
13188        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13189            Self::SELECTORS.get(i).copied()
13190        }
13191        #[inline]
13192        fn valid_selector(selector: [u8; 4]) -> bool {
13193            Self::SELECTORS.binary_search(&selector).is_ok()
13194        }
13195        #[inline]
13196        #[allow(non_snake_case)]
13197        fn abi_decode_raw(
13198            selector: [u8; 4],
13199            data: &[u8],
13200            validate: bool,
13201        ) -> alloy_sol_types::Result<Self> {
13202            static DECODE_SHIMS: &[fn(
13203                &[u8],
13204                bool,
13205            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
13206                {
13207                    fn supportsInterface(
13208                        data: &[u8],
13209                        validate: bool,
13210                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13211                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
13212                                data,
13213                                validate,
13214                            )
13215                            .map(StakeTableV2Calls::supportsInterface)
13216                    }
13217                    supportsInterface
13218                },
13219                {
13220                    fn delegate(
13221                        data: &[u8],
13222                        validate: bool,
13223                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13224                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13225                                data,
13226                                validate,
13227                            )
13228                            .map(StakeTableV2Calls::delegate)
13229                    }
13230                    delegate
13231                },
13232                {
13233                    fn initializeV2(
13234                        data: &[u8],
13235                        validate: bool,
13236                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13237                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13238                                data,
13239                                validate,
13240                            )
13241                            .map(StakeTableV2Calls::initializeV2)
13242                    }
13243                    initializeV2
13244                },
13245                {
13246                    fn getVersion(
13247                        data: &[u8],
13248                        validate: bool,
13249                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13250                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13251                                data,
13252                                validate,
13253                            )
13254                            .map(StakeTableV2Calls::getVersion)
13255                    }
13256                    getVersion
13257                },
13258                {
13259                    fn registerValidator(
13260                        data: &[u8],
13261                        validate: bool,
13262                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13263                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
13264                                data,
13265                                validate,
13266                            )
13267                            .map(StakeTableV2Calls::registerValidator)
13268                    }
13269                    registerValidator
13270                },
13271                {
13272                    fn updateExitEscrowPeriod(
13273                        data: &[u8],
13274                        validate: bool,
13275                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13276                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13277                                data,
13278                                validate,
13279                            )
13280                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
13281                    }
13282                    updateExitEscrowPeriod
13283                },
13284                {
13285                    fn claimValidatorExit(
13286                        data: &[u8],
13287                        validate: bool,
13288                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13289                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
13290                                data,
13291                                validate,
13292                            )
13293                            .map(StakeTableV2Calls::claimValidatorExit)
13294                    }
13295                    claimValidatorExit
13296                },
13297                {
13298                    fn getRoleAdmin(
13299                        data: &[u8],
13300                        validate: bool,
13301                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13302                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
13303                                data,
13304                                validate,
13305                            )
13306                            .map(StakeTableV2Calls::getRoleAdmin)
13307                    }
13308                    getRoleAdmin
13309                },
13310                {
13311                    fn grantRole(
13312                        data: &[u8],
13313                        validate: bool,
13314                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13315                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
13316                                data,
13317                                validate,
13318                            )
13319                            .map(StakeTableV2Calls::grantRole)
13320                    }
13321                    grantRole
13322                },
13323                {
13324                    fn registerValidatorV2(
13325                        data: &[u8],
13326                        validate: bool,
13327                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13328                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13329                                data,
13330                                validate,
13331                            )
13332                            .map(StakeTableV2Calls::registerValidatorV2)
13333                    }
13334                    registerValidatorV2
13335                },
13336                {
13337                    fn renounceRole(
13338                        data: &[u8],
13339                        validate: bool,
13340                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13341                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
13342                                data,
13343                                validate,
13344                            )
13345                            .map(StakeTableV2Calls::renounceRole)
13346                    }
13347                    renounceRole
13348                },
13349                {
13350                    fn initializedAtBlock(
13351                        data: &[u8],
13352                        validate: bool,
13353                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13354                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13355                                data,
13356                                validate,
13357                            )
13358                            .map(StakeTableV2Calls::initializedAtBlock)
13359                    }
13360                    initializedAtBlock
13361                },
13362                {
13363                    fn unpause(
13364                        data: &[u8],
13365                        validate: bool,
13366                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13367                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
13368                                data,
13369                                validate,
13370                            )
13371                            .map(StakeTableV2Calls::unpause)
13372                    }
13373                    unpause
13374                },
13375                {
13376                    fn undelegate(
13377                        data: &[u8],
13378                        validate: bool,
13379                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13380                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13381                                data,
13382                                validate,
13383                            )
13384                            .map(StakeTableV2Calls::undelegate)
13385                    }
13386                    undelegate
13387                },
13388                {
13389                    fn upgradeToAndCall(
13390                        data: &[u8],
13391                        validate: bool,
13392                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13393                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13394                                data,
13395                                validate,
13396                            )
13397                            .map(StakeTableV2Calls::upgradeToAndCall)
13398                    }
13399                    upgradeToAndCall
13400                },
13401                {
13402                    fn proxiableUUID(
13403                        data: &[u8],
13404                        validate: bool,
13405                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13406                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13407                                data,
13408                                validate,
13409                            )
13410                            .map(StakeTableV2Calls::proxiableUUID)
13411                    }
13412                    proxiableUUID
13413                },
13414                {
13415                    fn updateConsensusKeys(
13416                        data: &[u8],
13417                        validate: bool,
13418                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13419                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
13420                                data,
13421                                validate,
13422                            )
13423                            .map(StakeTableV2Calls::updateConsensusKeys)
13424                    }
13425                    updateConsensusKeys
13426                },
13427                {
13428                    fn paused(
13429                        data: &[u8],
13430                        validate: bool,
13431                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13432                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(
13433                                data,
13434                                validate,
13435                            )
13436                            .map(StakeTableV2Calls::paused)
13437                    }
13438                    paused
13439                },
13440                {
13441                    fn deregisterValidator(
13442                        data: &[u8],
13443                        validate: bool,
13444                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13445                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
13446                                data,
13447                                validate,
13448                            )
13449                            .map(StakeTableV2Calls::deregisterValidator)
13450                    }
13451                    deregisterValidator
13452                },
13453                {
13454                    fn renounceOwnership(
13455                        data: &[u8],
13456                        validate: bool,
13457                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13458                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13459                                data,
13460                                validate,
13461                            )
13462                            .map(StakeTableV2Calls::renounceOwnership)
13463                    }
13464                    renounceOwnership
13465                },
13466                {
13467                    fn pause(
13468                        data: &[u8],
13469                        validate: bool,
13470                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13471                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
13472                                data,
13473                                validate,
13474                            )
13475                            .map(StakeTableV2Calls::pause)
13476                    }
13477                    pause
13478                },
13479                {
13480                    fn owner(
13481                        data: &[u8],
13482                        validate: bool,
13483                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13484                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
13485                                data,
13486                                validate,
13487                            )
13488                            .map(StakeTableV2Calls::owner)
13489                    }
13490                    owner
13491                },
13492                {
13493                    fn hasRole(
13494                        data: &[u8],
13495                        validate: bool,
13496                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13497                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
13498                                data,
13499                                validate,
13500                            )
13501                            .map(StakeTableV2Calls::hasRole)
13502                    }
13503                    hasRole
13504                },
13505                {
13506                    fn _hashBlsKey(
13507                        data: &[u8],
13508                        validate: bool,
13509                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13510                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
13511                                data,
13512                                validate,
13513                            )
13514                            .map(StakeTableV2Calls::_hashBlsKey)
13515                    }
13516                    _hashBlsKey
13517                },
13518                {
13519                    fn exitEscrowPeriod(
13520                        data: &[u8],
13521                        validate: bool,
13522                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13523                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13524                                data,
13525                                validate,
13526                            )
13527                            .map(StakeTableV2Calls::exitEscrowPeriod)
13528                    }
13529                    exitEscrowPeriod
13530                },
13531                {
13532                    fn DEFAULT_ADMIN_ROLE(
13533                        data: &[u8],
13534                        validate: bool,
13535                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13536                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
13537                                data,
13538                                validate,
13539                            )
13540                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
13541                    }
13542                    DEFAULT_ADMIN_ROLE
13543                },
13544                {
13545                    fn undelegations(
13546                        data: &[u8],
13547                        validate: bool,
13548                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13549                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13550                                data,
13551                                validate,
13552                            )
13553                            .map(StakeTableV2Calls::undelegations)
13554                    }
13555                    undelegations
13556                },
13557                {
13558                    fn claimWithdrawal(
13559                        data: &[u8],
13560                        validate: bool,
13561                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13562                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
13563                                data,
13564                                validate,
13565                            )
13566                            .map(StakeTableV2Calls::claimWithdrawal)
13567                    }
13568                    claimWithdrawal
13569                },
13570                {
13571                    fn updateConsensusKeysV2(
13572                        data: &[u8],
13573                        validate: bool,
13574                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13575                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13576                                data,
13577                                validate,
13578                            )
13579                            .map(StakeTableV2Calls::updateConsensusKeysV2)
13580                    }
13581                    updateConsensusKeysV2
13582                },
13583                {
13584                    fn UPGRADE_INTERFACE_VERSION(
13585                        data: &[u8],
13586                        validate: bool,
13587                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13588                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13589                                data,
13590                                validate,
13591                            )
13592                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
13593                    }
13594                    UPGRADE_INTERFACE_VERSION
13595                },
13596                {
13597                    fn blsKeys(
13598                        data: &[u8],
13599                        validate: bool,
13600                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13601                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
13602                                data,
13603                                validate,
13604                            )
13605                            .map(StakeTableV2Calls::blsKeys)
13606                    }
13607                    blsKeys
13608                },
13609                {
13610                    fn lightClient(
13611                        data: &[u8],
13612                        validate: bool,
13613                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13614                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
13615                                data,
13616                                validate,
13617                            )
13618                            .map(StakeTableV2Calls::lightClient)
13619                    }
13620                    lightClient
13621                },
13622                {
13623                    fn validatorExits(
13624                        data: &[u8],
13625                        validate: bool,
13626                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13627                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13628                                data,
13629                                validate,
13630                            )
13631                            .map(StakeTableV2Calls::validatorExits)
13632                    }
13633                    validatorExits
13634                },
13635                {
13636                    fn initialize(
13637                        data: &[u8],
13638                        validate: bool,
13639                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13640                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13641                                data,
13642                                validate,
13643                            )
13644                            .map(StakeTableV2Calls::initialize)
13645                    }
13646                    initialize
13647                },
13648                {
13649                    fn delegations(
13650                        data: &[u8],
13651                        validate: bool,
13652                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13653                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13654                                data,
13655                                validate,
13656                            )
13657                            .map(StakeTableV2Calls::delegations)
13658                    }
13659                    delegations
13660                },
13661                {
13662                    fn revokeRole(
13663                        data: &[u8],
13664                        validate: bool,
13665                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13666                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
13667                                data,
13668                                validate,
13669                            )
13670                            .map(StakeTableV2Calls::revokeRole)
13671                    }
13672                    revokeRole
13673                },
13674                {
13675                    fn PAUSER_ROLE(
13676                        data: &[u8],
13677                        validate: bool,
13678                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13679                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
13680                                data,
13681                                validate,
13682                            )
13683                            .map(StakeTableV2Calls::PAUSER_ROLE)
13684                    }
13685                    PAUSER_ROLE
13686                },
13687                {
13688                    fn transferOwnership(
13689                        data: &[u8],
13690                        validate: bool,
13691                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13692                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13693                                data,
13694                                validate,
13695                            )
13696                            .map(StakeTableV2Calls::transferOwnership)
13697                    }
13698                    transferOwnership
13699                },
13700                {
13701                    fn validators(
13702                        data: &[u8],
13703                        validate: bool,
13704                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13705                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13706                                data,
13707                                validate,
13708                            )
13709                            .map(StakeTableV2Calls::validators)
13710                    }
13711                    validators
13712                },
13713                {
13714                    fn token(
13715                        data: &[u8],
13716                        validate: bool,
13717                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
13718                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(
13719                                data,
13720                                validate,
13721                            )
13722                            .map(StakeTableV2Calls::token)
13723                    }
13724                    token
13725                },
13726            ];
13727            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13728                return Err(
13729                    alloy_sol_types::Error::unknown_selector(
13730                        <Self as alloy_sol_types::SolInterface>::NAME,
13731                        selector,
13732                    ),
13733                );
13734            };
13735            DECODE_SHIMS[idx](data, validate)
13736        }
13737        #[inline]
13738        fn abi_encoded_size(&self) -> usize {
13739            match self {
13740                Self::DEFAULT_ADMIN_ROLE(inner) => {
13741                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
13742                        inner,
13743                    )
13744                }
13745                Self::PAUSER_ROLE(inner) => {
13746                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
13747                        inner,
13748                    )
13749                }
13750                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13751                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
13752                        inner,
13753                    )
13754                }
13755                Self::_hashBlsKey(inner) => {
13756                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
13757                        inner,
13758                    )
13759                }
13760                Self::blsKeys(inner) => {
13761                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13762                }
13763                Self::claimValidatorExit(inner) => {
13764                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
13765                        inner,
13766                    )
13767                }
13768                Self::claimWithdrawal(inner) => {
13769                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
13770                        inner,
13771                    )
13772                }
13773                Self::delegate(inner) => {
13774                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13775                }
13776                Self::delegations(inner) => {
13777                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13778                        inner,
13779                    )
13780                }
13781                Self::deregisterValidator(inner) => {
13782                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
13783                        inner,
13784                    )
13785                }
13786                Self::exitEscrowPeriod(inner) => {
13787                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13788                        inner,
13789                    )
13790                }
13791                Self::getRoleAdmin(inner) => {
13792                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
13793                        inner,
13794                    )
13795                }
13796                Self::getVersion(inner) => {
13797                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13798                }
13799                Self::grantRole(inner) => {
13800                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13801                }
13802                Self::hasRole(inner) => {
13803                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13804                }
13805                Self::initialize(inner) => {
13806                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13807                }
13808                Self::initializeV2(inner) => {
13809                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13810                        inner,
13811                    )
13812                }
13813                Self::initializedAtBlock(inner) => {
13814                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
13815                        inner,
13816                    )
13817                }
13818                Self::lightClient(inner) => {
13819                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
13820                        inner,
13821                    )
13822                }
13823                Self::owner(inner) => {
13824                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13825                }
13826                Self::pause(inner) => {
13827                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13828                }
13829                Self::paused(inner) => {
13830                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13831                }
13832                Self::proxiableUUID(inner) => {
13833                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
13834                        inner,
13835                    )
13836                }
13837                Self::registerValidator(inner) => {
13838                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
13839                        inner,
13840                    )
13841                }
13842                Self::registerValidatorV2(inner) => {
13843                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13844                        inner,
13845                    )
13846                }
13847                Self::renounceOwnership(inner) => {
13848                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13849                        inner,
13850                    )
13851                }
13852                Self::renounceRole(inner) => {
13853                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
13854                        inner,
13855                    )
13856                }
13857                Self::revokeRole(inner) => {
13858                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13859                }
13860                Self::supportsInterface(inner) => {
13861                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
13862                        inner,
13863                    )
13864                }
13865                Self::token(inner) => {
13866                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13867                }
13868                Self::transferOwnership(inner) => {
13869                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13870                        inner,
13871                    )
13872                }
13873                Self::undelegate(inner) => {
13874                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13875                }
13876                Self::undelegations(inner) => {
13877                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13878                        inner,
13879                    )
13880                }
13881                Self::unpause(inner) => {
13882                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13883                }
13884                Self::updateConsensusKeys(inner) => {
13885                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
13886                        inner,
13887                    )
13888                }
13889                Self::updateConsensusKeysV2(inner) => {
13890                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13891                        inner,
13892                    )
13893                }
13894                Self::updateExitEscrowPeriod(inner) => {
13895                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13896                        inner,
13897                    )
13898                }
13899                Self::upgradeToAndCall(inner) => {
13900                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
13901                        inner,
13902                    )
13903                }
13904                Self::validatorExits(inner) => {
13905                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13906                        inner,
13907                    )
13908                }
13909                Self::validators(inner) => {
13910                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13911                }
13912            }
13913        }
13914        #[inline]
13915        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13916            match self {
13917                Self::DEFAULT_ADMIN_ROLE(inner) => {
13918                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
13919                        inner,
13920                        out,
13921                    )
13922                }
13923                Self::PAUSER_ROLE(inner) => {
13924                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
13925                        inner,
13926                        out,
13927                    )
13928                }
13929                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13930                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13931                        inner,
13932                        out,
13933                    )
13934                }
13935                Self::_hashBlsKey(inner) => {
13936                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
13937                        inner,
13938                        out,
13939                    )
13940                }
13941                Self::blsKeys(inner) => {
13942                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13943                }
13944                Self::claimValidatorExit(inner) => {
13945                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
13946                        inner,
13947                        out,
13948                    )
13949                }
13950                Self::claimWithdrawal(inner) => {
13951                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
13952                        inner,
13953                        out,
13954                    )
13955                }
13956                Self::delegate(inner) => {
13957                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13958                        inner,
13959                        out,
13960                    )
13961                }
13962                Self::delegations(inner) => {
13963                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13964                        inner,
13965                        out,
13966                    )
13967                }
13968                Self::deregisterValidator(inner) => {
13969                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
13970                        inner,
13971                        out,
13972                    )
13973                }
13974                Self::exitEscrowPeriod(inner) => {
13975                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13976                        inner,
13977                        out,
13978                    )
13979                }
13980                Self::getRoleAdmin(inner) => {
13981                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
13982                        inner,
13983                        out,
13984                    )
13985                }
13986                Self::getVersion(inner) => {
13987                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
13988                        inner,
13989                        out,
13990                    )
13991                }
13992                Self::grantRole(inner) => {
13993                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
13994                        inner,
13995                        out,
13996                    )
13997                }
13998                Self::hasRole(inner) => {
13999                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14000                }
14001                Self::initialize(inner) => {
14002                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14003                        inner,
14004                        out,
14005                    )
14006                }
14007                Self::initializeV2(inner) => {
14008                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14009                        inner,
14010                        out,
14011                    )
14012                }
14013                Self::initializedAtBlock(inner) => {
14014                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14015                        inner,
14016                        out,
14017                    )
14018                }
14019                Self::lightClient(inner) => {
14020                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
14021                        inner,
14022                        out,
14023                    )
14024                }
14025                Self::owner(inner) => {
14026                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14027                }
14028                Self::pause(inner) => {
14029                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14030                }
14031                Self::paused(inner) => {
14032                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14033                }
14034                Self::proxiableUUID(inner) => {
14035                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14036                        inner,
14037                        out,
14038                    )
14039                }
14040                Self::registerValidator(inner) => {
14041                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
14042                        inner,
14043                        out,
14044                    )
14045                }
14046                Self::registerValidatorV2(inner) => {
14047                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14048                        inner,
14049                        out,
14050                    )
14051                }
14052                Self::renounceOwnership(inner) => {
14053                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14054                        inner,
14055                        out,
14056                    )
14057                }
14058                Self::renounceRole(inner) => {
14059                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
14060                        inner,
14061                        out,
14062                    )
14063                }
14064                Self::revokeRole(inner) => {
14065                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
14066                        inner,
14067                        out,
14068                    )
14069                }
14070                Self::supportsInterface(inner) => {
14071                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
14072                        inner,
14073                        out,
14074                    )
14075                }
14076                Self::token(inner) => {
14077                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14078                }
14079                Self::transferOwnership(inner) => {
14080                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14081                        inner,
14082                        out,
14083                    )
14084                }
14085                Self::undelegate(inner) => {
14086                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14087                        inner,
14088                        out,
14089                    )
14090                }
14091                Self::undelegations(inner) => {
14092                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14093                        inner,
14094                        out,
14095                    )
14096                }
14097                Self::unpause(inner) => {
14098                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14099                }
14100                Self::updateConsensusKeys(inner) => {
14101                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
14102                        inner,
14103                        out,
14104                    )
14105                }
14106                Self::updateConsensusKeysV2(inner) => {
14107                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14108                        inner,
14109                        out,
14110                    )
14111                }
14112                Self::updateExitEscrowPeriod(inner) => {
14113                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14114                        inner,
14115                        out,
14116                    )
14117                }
14118                Self::upgradeToAndCall(inner) => {
14119                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14120                        inner,
14121                        out,
14122                    )
14123                }
14124                Self::validatorExits(inner) => {
14125                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14126                        inner,
14127                        out,
14128                    )
14129                }
14130                Self::validators(inner) => {
14131                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14132                        inner,
14133                        out,
14134                    )
14135                }
14136            }
14137        }
14138    }
14139    ///Container for all the [`StakeTableV2`](self) custom errors.
14140    #[derive(Debug, PartialEq, Eq, Hash)]
14141    pub enum StakeTableV2Errors {
14142        #[allow(missing_docs)]
14143        AccessControlBadConfirmation(AccessControlBadConfirmation),
14144        #[allow(missing_docs)]
14145        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
14146        #[allow(missing_docs)]
14147        AddressEmptyCode(AddressEmptyCode),
14148        #[allow(missing_docs)]
14149        BLSSigVerificationFailed(BLSSigVerificationFailed),
14150        #[allow(missing_docs)]
14151        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
14152        #[allow(missing_docs)]
14153        DeprecatedFunction(DeprecatedFunction),
14154        #[allow(missing_docs)]
14155        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14156        #[allow(missing_docs)]
14157        ERC1967NonPayable(ERC1967NonPayable),
14158        #[allow(missing_docs)]
14159        EnforcedPause(EnforcedPause),
14160        #[allow(missing_docs)]
14161        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
14162        #[allow(missing_docs)]
14163        ExpectedPause(ExpectedPause),
14164        #[allow(missing_docs)]
14165        FailedInnerCall(FailedInnerCall),
14166        #[allow(missing_docs)]
14167        InsufficientAllowance(InsufficientAllowance),
14168        #[allow(missing_docs)]
14169        InsufficientBalance(InsufficientBalance),
14170        #[allow(missing_docs)]
14171        InvalidCommission(InvalidCommission),
14172        #[allow(missing_docs)]
14173        InvalidInitialization(InvalidInitialization),
14174        #[allow(missing_docs)]
14175        InvalidSchnorrSig(InvalidSchnorrSig),
14176        #[allow(missing_docs)]
14177        InvalidSchnorrVK(InvalidSchnorrVK),
14178        #[allow(missing_docs)]
14179        NotInitializing(NotInitializing),
14180        #[allow(missing_docs)]
14181        NothingToWithdraw(NothingToWithdraw),
14182        #[allow(missing_docs)]
14183        OwnableInvalidOwner(OwnableInvalidOwner),
14184        #[allow(missing_docs)]
14185        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14186        #[allow(missing_docs)]
14187        PrematureWithdrawal(PrematureWithdrawal),
14188        #[allow(missing_docs)]
14189        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14190        #[allow(missing_docs)]
14191        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14192        #[allow(missing_docs)]
14193        UndelegationAlreadyExists(UndelegationAlreadyExists),
14194        #[allow(missing_docs)]
14195        ValidatorAlreadyExited(ValidatorAlreadyExited),
14196        #[allow(missing_docs)]
14197        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
14198        #[allow(missing_docs)]
14199        ValidatorInactive(ValidatorInactive),
14200        #[allow(missing_docs)]
14201        ValidatorNotExited(ValidatorNotExited),
14202        #[allow(missing_docs)]
14203        ZeroAddress(ZeroAddress),
14204        #[allow(missing_docs)]
14205        ZeroAmount(ZeroAmount),
14206    }
14207    #[automatically_derived]
14208    impl StakeTableV2Errors {
14209        /// All the selectors of this enum.
14210        ///
14211        /// Note that the selectors might not be in the same order as the variants.
14212        /// No guarantees are made about the order of the selectors.
14213        ///
14214        /// Prefer using `SolInterface` methods instead.
14215        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14216            [1u8, 181u8, 20u8, 174u8],
14217            [6u8, 207u8, 67u8, 143u8],
14218            [12u8, 237u8, 62u8, 80u8],
14219            [17u8, 140u8, 218u8, 167u8],
14220            [20u8, 37u8, 234u8, 66u8],
14221            [30u8, 79u8, 189u8, 247u8],
14222            [31u8, 42u8, 32u8, 5u8],
14223            [42u8, 27u8, 45u8, 216u8],
14224            [66u8, 71u8, 6u8, 135u8],
14225            [76u8, 156u8, 140u8, 227u8],
14226            [80u8, 138u8, 121u8, 63u8],
14227            [90u8, 119u8, 67u8, 87u8],
14228            [102u8, 151u8, 178u8, 50u8],
14229            [141u8, 252u8, 32u8, 43u8],
14230            [146u8, 102u8, 83u8, 81u8],
14231            [153u8, 115u8, 247u8, 216u8],
14232            [153u8, 150u8, 179u8, 21u8],
14233            [170u8, 29u8, 73u8, 164u8],
14234            [179u8, 152u8, 151u8, 159u8],
14235            [181u8, 126u8, 33u8, 223u8],
14236            [194u8, 215u8, 248u8, 19u8],
14237            [208u8, 208u8, 79u8, 96u8],
14238            [212u8, 35u8, 164u8, 241u8],
14239            [215u8, 230u8, 188u8, 248u8],
14240            [217u8, 46u8, 35u8, 61u8],
14241            [217u8, 60u8, 6u8, 101u8],
14242            [220u8, 129u8, 219u8, 133u8],
14243            [224u8, 124u8, 141u8, 186u8],
14244            [226u8, 81u8, 125u8, 63u8],
14245            [234u8, 180u8, 169u8, 99u8],
14246            [242u8, 83u8, 20u8, 166u8],
14247            [249u8, 46u8, 232u8, 169u8],
14248        ];
14249    }
14250    #[automatically_derived]
14251    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
14252        const NAME: &'static str = "StakeTableV2Errors";
14253        const MIN_DATA_LENGTH: usize = 0usize;
14254        const COUNT: usize = 32usize;
14255        #[inline]
14256        fn selector(&self) -> [u8; 4] {
14257            match self {
14258                Self::AccessControlBadConfirmation(_) => {
14259                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
14260                }
14261                Self::AccessControlUnauthorizedAccount(_) => {
14262                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14263                }
14264                Self::AddressEmptyCode(_) => {
14265                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14266                }
14267                Self::BLSSigVerificationFailed(_) => {
14268                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
14269                }
14270                Self::BlsKeyAlreadyUsed(_) => {
14271                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
14272                }
14273                Self::DeprecatedFunction(_) => {
14274                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
14275                }
14276                Self::ERC1967InvalidImplementation(_) => {
14277                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14278                }
14279                Self::ERC1967NonPayable(_) => {
14280                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14281                }
14282                Self::EnforcedPause(_) => {
14283                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
14284                }
14285                Self::ExitEscrowPeriodInvalid(_) => {
14286                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
14287                }
14288                Self::ExpectedPause(_) => {
14289                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
14290                }
14291                Self::FailedInnerCall(_) => {
14292                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14293                }
14294                Self::InsufficientAllowance(_) => {
14295                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
14296                }
14297                Self::InsufficientBalance(_) => {
14298                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
14299                }
14300                Self::InvalidCommission(_) => {
14301                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
14302                }
14303                Self::InvalidInitialization(_) => {
14304                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14305                }
14306                Self::InvalidSchnorrSig(_) => {
14307                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
14308                }
14309                Self::InvalidSchnorrVK(_) => {
14310                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
14311                }
14312                Self::NotInitializing(_) => {
14313                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14314                }
14315                Self::NothingToWithdraw(_) => {
14316                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
14317                }
14318                Self::OwnableInvalidOwner(_) => {
14319                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14320                }
14321                Self::OwnableUnauthorizedAccount(_) => {
14322                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14323                }
14324                Self::PrematureWithdrawal(_) => {
14325                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
14326                }
14327                Self::UUPSUnauthorizedCallContext(_) => {
14328                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14329                }
14330                Self::UUPSUnsupportedProxiableUUID(_) => {
14331                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14332                }
14333                Self::UndelegationAlreadyExists(_) => {
14334                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
14335                }
14336                Self::ValidatorAlreadyExited(_) => {
14337                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
14338                }
14339                Self::ValidatorAlreadyRegistered(_) => {
14340                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
14341                }
14342                Self::ValidatorInactive(_) => {
14343                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
14344                }
14345                Self::ValidatorNotExited(_) => {
14346                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
14347                }
14348                Self::ZeroAddress(_) => {
14349                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
14350                }
14351                Self::ZeroAmount(_) => {
14352                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
14353                }
14354            }
14355        }
14356        #[inline]
14357        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14358            Self::SELECTORS.get(i).copied()
14359        }
14360        #[inline]
14361        fn valid_selector(selector: [u8; 4]) -> bool {
14362            Self::SELECTORS.binary_search(&selector).is_ok()
14363        }
14364        #[inline]
14365        #[allow(non_snake_case)]
14366        fn abi_decode_raw(
14367            selector: [u8; 4],
14368            data: &[u8],
14369            validate: bool,
14370        ) -> alloy_sol_types::Result<Self> {
14371            static DECODE_SHIMS: &[fn(
14372                &[u8],
14373                bool,
14374            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
14375                {
14376                    fn BlsKeyAlreadyUsed(
14377                        data: &[u8],
14378                        validate: bool,
14379                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14380                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
14381                                data,
14382                                validate,
14383                            )
14384                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
14385                    }
14386                    BlsKeyAlreadyUsed
14387                },
14388                {
14389                    fn InvalidSchnorrVK(
14390                        data: &[u8],
14391                        validate: bool,
14392                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14393                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
14394                                data,
14395                                validate,
14396                            )
14397                            .map(StakeTableV2Errors::InvalidSchnorrVK)
14398                    }
14399                    InvalidSchnorrVK
14400                },
14401                {
14402                    fn BLSSigVerificationFailed(
14403                        data: &[u8],
14404                        validate: bool,
14405                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14406                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
14407                                data,
14408                                validate,
14409                            )
14410                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
14411                    }
14412                    BLSSigVerificationFailed
14413                },
14414                {
14415                    fn OwnableUnauthorizedAccount(
14416                        data: &[u8],
14417                        validate: bool,
14418                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14419                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14420                                data,
14421                                validate,
14422                            )
14423                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
14424                    }
14425                    OwnableUnauthorizedAccount
14426                },
14427                {
14428                    fn FailedInnerCall(
14429                        data: &[u8],
14430                        validate: bool,
14431                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14432                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14433                                data,
14434                                validate,
14435                            )
14436                            .map(StakeTableV2Errors::FailedInnerCall)
14437                    }
14438                    FailedInnerCall
14439                },
14440                {
14441                    fn OwnableInvalidOwner(
14442                        data: &[u8],
14443                        validate: bool,
14444                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14445                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
14446                                data,
14447                                validate,
14448                            )
14449                            .map(StakeTableV2Errors::OwnableInvalidOwner)
14450                    }
14451                    OwnableInvalidOwner
14452                },
14453                {
14454                    fn ZeroAmount(
14455                        data: &[u8],
14456                        validate: bool,
14457                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14458                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(
14459                                data,
14460                                validate,
14461                            )
14462                            .map(StakeTableV2Errors::ZeroAmount)
14463                    }
14464                    ZeroAmount
14465                },
14466                {
14467                    fn InsufficientAllowance(
14468                        data: &[u8],
14469                        validate: bool,
14470                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14471                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
14472                                data,
14473                                validate,
14474                            )
14475                            .map(StakeTableV2Errors::InsufficientAllowance)
14476                    }
14477                    InsufficientAllowance
14478                },
14479                {
14480                    fn InvalidSchnorrSig(
14481                        data: &[u8],
14482                        validate: bool,
14483                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14484                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
14485                                data,
14486                                validate,
14487                            )
14488                            .map(StakeTableV2Errors::InvalidSchnorrSig)
14489                    }
14490                    InvalidSchnorrSig
14491                },
14492                {
14493                    fn ERC1967InvalidImplementation(
14494                        data: &[u8],
14495                        validate: bool,
14496                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14497                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
14498                                data,
14499                                validate,
14500                            )
14501                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
14502                    }
14503                    ERC1967InvalidImplementation
14504                },
14505                {
14506                    fn ValidatorInactive(
14507                        data: &[u8],
14508                        validate: bool,
14509                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14510                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
14511                                data,
14512                                validate,
14513                            )
14514                            .map(StakeTableV2Errors::ValidatorInactive)
14515                    }
14516                    ValidatorInactive
14517                },
14518                {
14519                    fn PrematureWithdrawal(
14520                        data: &[u8],
14521                        validate: bool,
14522                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14523                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
14524                                data,
14525                                validate,
14526                            )
14527                            .map(StakeTableV2Errors::PrematureWithdrawal)
14528                    }
14529                    PrematureWithdrawal
14530                },
14531                {
14532                    fn AccessControlBadConfirmation(
14533                        data: &[u8],
14534                        validate: bool,
14535                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14536                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
14537                                data,
14538                                validate,
14539                            )
14540                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
14541                    }
14542                    AccessControlBadConfirmation
14543                },
14544                {
14545                    fn ExpectedPause(
14546                        data: &[u8],
14547                        validate: bool,
14548                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14549                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
14550                                data,
14551                                validate,
14552                            )
14553                            .map(StakeTableV2Errors::ExpectedPause)
14554                    }
14555                    ExpectedPause
14556                },
14557                {
14558                    fn InsufficientBalance(
14559                        data: &[u8],
14560                        validate: bool,
14561                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14562                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
14563                                data,
14564                                validate,
14565                            )
14566                            .map(StakeTableV2Errors::InsufficientBalance)
14567                    }
14568                    InsufficientBalance
14569                },
14570                {
14571                    fn ValidatorAlreadyRegistered(
14572                        data: &[u8],
14573                        validate: bool,
14574                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14575                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
14576                                data,
14577                                validate,
14578                            )
14579                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
14580                    }
14581                    ValidatorAlreadyRegistered
14582                },
14583                {
14584                    fn AddressEmptyCode(
14585                        data: &[u8],
14586                        validate: bool,
14587                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14588                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
14589                                data,
14590                                validate,
14591                            )
14592                            .map(StakeTableV2Errors::AddressEmptyCode)
14593                    }
14594                    AddressEmptyCode
14595                },
14596                {
14597                    fn UUPSUnsupportedProxiableUUID(
14598                        data: &[u8],
14599                        validate: bool,
14600                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14601                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
14602                                data,
14603                                validate,
14604                            )
14605                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
14606                    }
14607                    UUPSUnsupportedProxiableUUID
14608                },
14609                {
14610                    fn ERC1967NonPayable(
14611                        data: &[u8],
14612                        validate: bool,
14613                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14614                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
14615                                data,
14616                                validate,
14617                            )
14618                            .map(StakeTableV2Errors::ERC1967NonPayable)
14619                    }
14620                    ERC1967NonPayable
14621                },
14622                {
14623                    fn ExitEscrowPeriodInvalid(
14624                        data: &[u8],
14625                        validate: bool,
14626                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14627                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
14628                                data,
14629                                validate,
14630                            )
14631                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
14632                    }
14633                    ExitEscrowPeriodInvalid
14634                },
14635                {
14636                    fn DeprecatedFunction(
14637                        data: &[u8],
14638                        validate: bool,
14639                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14640                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
14641                                data,
14642                                validate,
14643                            )
14644                            .map(StakeTableV2Errors::DeprecatedFunction)
14645                    }
14646                    DeprecatedFunction
14647                },
14648                {
14649                    fn NothingToWithdraw(
14650                        data: &[u8],
14651                        validate: bool,
14652                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14653                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
14654                                data,
14655                                validate,
14656                            )
14657                            .map(StakeTableV2Errors::NothingToWithdraw)
14658                    }
14659                    NothingToWithdraw
14660                },
14661                {
14662                    fn UndelegationAlreadyExists(
14663                        data: &[u8],
14664                        validate: bool,
14665                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14666                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
14667                                data,
14668                                validate,
14669                            )
14670                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
14671                    }
14672                    UndelegationAlreadyExists
14673                },
14674                {
14675                    fn NotInitializing(
14676                        data: &[u8],
14677                        validate: bool,
14678                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14679                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
14680                                data,
14681                                validate,
14682                            )
14683                            .map(StakeTableV2Errors::NotInitializing)
14684                    }
14685                    NotInitializing
14686                },
14687                {
14688                    fn ZeroAddress(
14689                        data: &[u8],
14690                        validate: bool,
14691                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14692                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(
14693                                data,
14694                                validate,
14695                            )
14696                            .map(StakeTableV2Errors::ZeroAddress)
14697                    }
14698                    ZeroAddress
14699                },
14700                {
14701                    fn EnforcedPause(
14702                        data: &[u8],
14703                        validate: bool,
14704                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14705                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
14706                                data,
14707                                validate,
14708                            )
14709                            .map(StakeTableV2Errors::EnforcedPause)
14710                    }
14711                    EnforcedPause
14712                },
14713                {
14714                    fn InvalidCommission(
14715                        data: &[u8],
14716                        validate: bool,
14717                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14718                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
14719                                data,
14720                                validate,
14721                            )
14722                            .map(StakeTableV2Errors::InvalidCommission)
14723                    }
14724                    InvalidCommission
14725                },
14726                {
14727                    fn UUPSUnauthorizedCallContext(
14728                        data: &[u8],
14729                        validate: bool,
14730                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14731                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
14732                                data,
14733                                validate,
14734                            )
14735                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
14736                    }
14737                    UUPSUnauthorizedCallContext
14738                },
14739                {
14740                    fn AccessControlUnauthorizedAccount(
14741                        data: &[u8],
14742                        validate: bool,
14743                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14744                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14745                                data,
14746                                validate,
14747                            )
14748                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
14749                    }
14750                    AccessControlUnauthorizedAccount
14751                },
14752                {
14753                    fn ValidatorAlreadyExited(
14754                        data: &[u8],
14755                        validate: bool,
14756                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14757                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
14758                                data,
14759                                validate,
14760                            )
14761                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
14762                    }
14763                    ValidatorAlreadyExited
14764                },
14765                {
14766                    fn ValidatorNotExited(
14767                        data: &[u8],
14768                        validate: bool,
14769                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14770                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
14771                                data,
14772                                validate,
14773                            )
14774                            .map(StakeTableV2Errors::ValidatorNotExited)
14775                    }
14776                    ValidatorNotExited
14777                },
14778                {
14779                    fn InvalidInitialization(
14780                        data: &[u8],
14781                        validate: bool,
14782                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
14783                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
14784                                data,
14785                                validate,
14786                            )
14787                            .map(StakeTableV2Errors::InvalidInitialization)
14788                    }
14789                    InvalidInitialization
14790                },
14791            ];
14792            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14793                return Err(
14794                    alloy_sol_types::Error::unknown_selector(
14795                        <Self as alloy_sol_types::SolInterface>::NAME,
14796                        selector,
14797                    ),
14798                );
14799            };
14800            DECODE_SHIMS[idx](data, validate)
14801        }
14802        #[inline]
14803        fn abi_encoded_size(&self) -> usize {
14804            match self {
14805                Self::AccessControlBadConfirmation(inner) => {
14806                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
14807                        inner,
14808                    )
14809                }
14810                Self::AccessControlUnauthorizedAccount(inner) => {
14811                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
14812                        inner,
14813                    )
14814                }
14815                Self::AddressEmptyCode(inner) => {
14816                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
14817                        inner,
14818                    )
14819                }
14820                Self::BLSSigVerificationFailed(inner) => {
14821                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
14822                        inner,
14823                    )
14824                }
14825                Self::BlsKeyAlreadyUsed(inner) => {
14826                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
14827                        inner,
14828                    )
14829                }
14830                Self::DeprecatedFunction(inner) => {
14831                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
14832                        inner,
14833                    )
14834                }
14835                Self::ERC1967InvalidImplementation(inner) => {
14836                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
14837                        inner,
14838                    )
14839                }
14840                Self::ERC1967NonPayable(inner) => {
14841                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
14842                        inner,
14843                    )
14844                }
14845                Self::EnforcedPause(inner) => {
14846                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
14847                }
14848                Self::ExitEscrowPeriodInvalid(inner) => {
14849                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
14850                        inner,
14851                    )
14852                }
14853                Self::ExpectedPause(inner) => {
14854                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
14855                }
14856                Self::FailedInnerCall(inner) => {
14857                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
14858                        inner,
14859                    )
14860                }
14861                Self::InsufficientAllowance(inner) => {
14862                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
14863                        inner,
14864                    )
14865                }
14866                Self::InsufficientBalance(inner) => {
14867                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
14868                        inner,
14869                    )
14870                }
14871                Self::InvalidCommission(inner) => {
14872                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
14873                        inner,
14874                    )
14875                }
14876                Self::InvalidInitialization(inner) => {
14877                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
14878                        inner,
14879                    )
14880                }
14881                Self::InvalidSchnorrSig(inner) => {
14882                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
14883                        inner,
14884                    )
14885                }
14886                Self::InvalidSchnorrVK(inner) => {
14887                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
14888                        inner,
14889                    )
14890                }
14891                Self::NotInitializing(inner) => {
14892                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
14893                        inner,
14894                    )
14895                }
14896                Self::NothingToWithdraw(inner) => {
14897                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
14898                        inner,
14899                    )
14900                }
14901                Self::OwnableInvalidOwner(inner) => {
14902                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
14903                        inner,
14904                    )
14905                }
14906                Self::OwnableUnauthorizedAccount(inner) => {
14907                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
14908                        inner,
14909                    )
14910                }
14911                Self::PrematureWithdrawal(inner) => {
14912                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
14913                        inner,
14914                    )
14915                }
14916                Self::UUPSUnauthorizedCallContext(inner) => {
14917                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
14918                        inner,
14919                    )
14920                }
14921                Self::UUPSUnsupportedProxiableUUID(inner) => {
14922                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
14923                        inner,
14924                    )
14925                }
14926                Self::UndelegationAlreadyExists(inner) => {
14927                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
14928                        inner,
14929                    )
14930                }
14931                Self::ValidatorAlreadyExited(inner) => {
14932                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
14933                        inner,
14934                    )
14935                }
14936                Self::ValidatorAlreadyRegistered(inner) => {
14937                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
14938                        inner,
14939                    )
14940                }
14941                Self::ValidatorInactive(inner) => {
14942                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
14943                        inner,
14944                    )
14945                }
14946                Self::ValidatorNotExited(inner) => {
14947                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
14948                        inner,
14949                    )
14950                }
14951                Self::ZeroAddress(inner) => {
14952                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
14953                }
14954                Self::ZeroAmount(inner) => {
14955                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
14956                }
14957            }
14958        }
14959        #[inline]
14960        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14961            match self {
14962                Self::AccessControlBadConfirmation(inner) => {
14963                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
14964                        inner,
14965                        out,
14966                    )
14967                }
14968                Self::AccessControlUnauthorizedAccount(inner) => {
14969                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
14970                        inner,
14971                        out,
14972                    )
14973                }
14974                Self::AddressEmptyCode(inner) => {
14975                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
14976                        inner,
14977                        out,
14978                    )
14979                }
14980                Self::BLSSigVerificationFailed(inner) => {
14981                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
14982                        inner,
14983                        out,
14984                    )
14985                }
14986                Self::BlsKeyAlreadyUsed(inner) => {
14987                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
14988                        inner,
14989                        out,
14990                    )
14991                }
14992                Self::DeprecatedFunction(inner) => {
14993                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
14994                        inner,
14995                        out,
14996                    )
14997                }
14998                Self::ERC1967InvalidImplementation(inner) => {
14999                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15000                        inner,
15001                        out,
15002                    )
15003                }
15004                Self::ERC1967NonPayable(inner) => {
15005                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15006                        inner,
15007                        out,
15008                    )
15009                }
15010                Self::EnforcedPause(inner) => {
15011                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
15012                        inner,
15013                        out,
15014                    )
15015                }
15016                Self::ExitEscrowPeriodInvalid(inner) => {
15017                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
15018                        inner,
15019                        out,
15020                    )
15021                }
15022                Self::ExpectedPause(inner) => {
15023                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
15024                        inner,
15025                        out,
15026                    )
15027                }
15028                Self::FailedInnerCall(inner) => {
15029                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15030                        inner,
15031                        out,
15032                    )
15033                }
15034                Self::InsufficientAllowance(inner) => {
15035                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
15036                        inner,
15037                        out,
15038                    )
15039                }
15040                Self::InsufficientBalance(inner) => {
15041                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
15042                        inner,
15043                        out,
15044                    )
15045                }
15046                Self::InvalidCommission(inner) => {
15047                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
15048                        inner,
15049                        out,
15050                    )
15051                }
15052                Self::InvalidInitialization(inner) => {
15053                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15054                        inner,
15055                        out,
15056                    )
15057                }
15058                Self::InvalidSchnorrSig(inner) => {
15059                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
15060                        inner,
15061                        out,
15062                    )
15063                }
15064                Self::InvalidSchnorrVK(inner) => {
15065                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
15066                        inner,
15067                        out,
15068                    )
15069                }
15070                Self::NotInitializing(inner) => {
15071                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15072                        inner,
15073                        out,
15074                    )
15075                }
15076                Self::NothingToWithdraw(inner) => {
15077                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
15078                        inner,
15079                        out,
15080                    )
15081                }
15082                Self::OwnableInvalidOwner(inner) => {
15083                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15084                        inner,
15085                        out,
15086                    )
15087                }
15088                Self::OwnableUnauthorizedAccount(inner) => {
15089                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15090                        inner,
15091                        out,
15092                    )
15093                }
15094                Self::PrematureWithdrawal(inner) => {
15095                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
15096                        inner,
15097                        out,
15098                    )
15099                }
15100                Self::UUPSUnauthorizedCallContext(inner) => {
15101                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15102                        inner,
15103                        out,
15104                    )
15105                }
15106                Self::UUPSUnsupportedProxiableUUID(inner) => {
15107                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15108                        inner,
15109                        out,
15110                    )
15111                }
15112                Self::UndelegationAlreadyExists(inner) => {
15113                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
15114                        inner,
15115                        out,
15116                    )
15117                }
15118                Self::ValidatorAlreadyExited(inner) => {
15119                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
15120                        inner,
15121                        out,
15122                    )
15123                }
15124                Self::ValidatorAlreadyRegistered(inner) => {
15125                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
15126                        inner,
15127                        out,
15128                    )
15129                }
15130                Self::ValidatorInactive(inner) => {
15131                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
15132                        inner,
15133                        out,
15134                    )
15135                }
15136                Self::ValidatorNotExited(inner) => {
15137                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
15138                        inner,
15139                        out,
15140                    )
15141                }
15142                Self::ZeroAddress(inner) => {
15143                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
15144                        inner,
15145                        out,
15146                    )
15147                }
15148                Self::ZeroAmount(inner) => {
15149                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
15150                }
15151            }
15152        }
15153    }
15154    ///Container for all the [`StakeTableV2`](self) events.
15155    #[derive()]
15156    pub enum StakeTableV2Events {
15157        #[allow(missing_docs)]
15158        ConsensusKeysUpdated(ConsensusKeysUpdated),
15159        #[allow(missing_docs)]
15160        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
15161        #[allow(missing_docs)]
15162        Delegated(Delegated),
15163        #[allow(missing_docs)]
15164        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
15165        #[allow(missing_docs)]
15166        Initialized(Initialized),
15167        #[allow(missing_docs)]
15168        OwnershipTransferred(OwnershipTransferred),
15169        #[allow(missing_docs)]
15170        Paused(Paused),
15171        #[allow(missing_docs)]
15172        RoleAdminChanged(RoleAdminChanged),
15173        #[allow(missing_docs)]
15174        RoleGranted(RoleGranted),
15175        #[allow(missing_docs)]
15176        RoleRevoked(RoleRevoked),
15177        #[allow(missing_docs)]
15178        Undelegated(Undelegated),
15179        #[allow(missing_docs)]
15180        Unpaused(Unpaused),
15181        #[allow(missing_docs)]
15182        Upgrade(Upgrade),
15183        #[allow(missing_docs)]
15184        Upgraded(Upgraded),
15185        #[allow(missing_docs)]
15186        ValidatorExit(ValidatorExit),
15187        #[allow(missing_docs)]
15188        ValidatorRegistered(ValidatorRegistered),
15189        #[allow(missing_docs)]
15190        ValidatorRegisteredV2(ValidatorRegisteredV2),
15191        #[allow(missing_docs)]
15192        Withdrawal(Withdrawal),
15193    }
15194    #[automatically_derived]
15195    impl StakeTableV2Events {
15196        /// All the selectors of this enum.
15197        ///
15198        /// Note that the selectors might not be in the same order as the variants.
15199        /// No guarantees are made about the order of the selectors.
15200        ///
15201        /// Prefer using `SolInterface` methods instead.
15202        pub const SELECTORS: &'static [[u8; 32usize]] = &[
15203            [
15204                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
15205                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
15206                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
15207            ],
15208            [
15209                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
15210                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
15211                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
15212            ],
15213            [
15214                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
15215                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
15216                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
15217            ],
15218            [
15219                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
15220                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
15221                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
15222            ],
15223            [
15224                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
15225                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
15226                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
15227            ],
15228            [
15229                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
15230                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
15231                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
15232            ],
15233            [
15234                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
15235                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
15236                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
15237            ],
15238            [
15239                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
15240                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
15241                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
15242            ],
15243            [
15244                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
15245                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
15246                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
15247            ],
15248            [
15249                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
15250                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
15251                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
15252            ],
15253            [
15254                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
15255                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
15256                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
15257            ],
15258            [
15259                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
15260                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
15261                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
15262            ],
15263            [
15264                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
15265                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
15266                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
15267            ],
15268            [
15269                240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8,
15270                144u8, 120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8,
15271                43u8, 66u8, 52u8, 126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
15272            ],
15273            [
15274                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
15275                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
15276                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
15277            ],
15278            [
15279                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
15280                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
15281                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
15282            ],
15283            [
15284                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
15285                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
15286                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
15287            ],
15288            [
15289                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
15290                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
15291                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
15292            ],
15293        ];
15294    }
15295    #[automatically_derived]
15296    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
15297        const NAME: &'static str = "StakeTableV2Events";
15298        const COUNT: usize = 18usize;
15299        fn decode_raw_log(
15300            topics: &[alloy_sol_types::Word],
15301            data: &[u8],
15302            validate: bool,
15303        ) -> alloy_sol_types::Result<Self> {
15304            match topics.first().copied() {
15305                Some(
15306                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15307                ) => {
15308                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
15309                            topics,
15310                            data,
15311                            validate,
15312                        )
15313                        .map(Self::ConsensusKeysUpdated)
15314                }
15315                Some(
15316                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15317                ) => {
15318                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
15319                            topics,
15320                            data,
15321                            validate,
15322                        )
15323                        .map(Self::ConsensusKeysUpdatedV2)
15324                }
15325                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15326                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
15327                            topics,
15328                            data,
15329                            validate,
15330                        )
15331                        .map(Self::Delegated)
15332                }
15333                Some(
15334                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15335                ) => {
15336                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
15337                            topics,
15338                            data,
15339                            validate,
15340                        )
15341                        .map(Self::ExitEscrowPeriodUpdated)
15342                }
15343                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15344                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
15345                            topics,
15346                            data,
15347                            validate,
15348                        )
15349                        .map(Self::Initialized)
15350                }
15351                Some(
15352                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15353                ) => {
15354                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15355                            topics,
15356                            data,
15357                            validate,
15358                        )
15359                        .map(Self::OwnershipTransferred)
15360                }
15361                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15362                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(
15363                            topics,
15364                            data,
15365                            validate,
15366                        )
15367                        .map(Self::Paused)
15368                }
15369                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15370                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
15371                            topics,
15372                            data,
15373                            validate,
15374                        )
15375                        .map(Self::RoleAdminChanged)
15376                }
15377                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15378                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
15379                            topics,
15380                            data,
15381                            validate,
15382                        )
15383                        .map(Self::RoleGranted)
15384                }
15385                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15386                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
15387                            topics,
15388                            data,
15389                            validate,
15390                        )
15391                        .map(Self::RoleRevoked)
15392                }
15393                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15394                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
15395                            topics,
15396                            data,
15397                            validate,
15398                        )
15399                        .map(Self::Undelegated)
15400                }
15401                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15402                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(
15403                            topics,
15404                            data,
15405                            validate,
15406                        )
15407                        .map(Self::Unpaused)
15408                }
15409                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15410                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
15411                            topics,
15412                            data,
15413                            validate,
15414                        )
15415                        .map(Self::Upgrade)
15416                }
15417                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15418                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
15419                            topics,
15420                            data,
15421                            validate,
15422                        )
15423                        .map(Self::Upgraded)
15424                }
15425                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15426                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
15427                            topics,
15428                            data,
15429                            validate,
15430                        )
15431                        .map(Self::ValidatorExit)
15432                }
15433                Some(
15434                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15435                ) => {
15436                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
15437                            topics,
15438                            data,
15439                            validate,
15440                        )
15441                        .map(Self::ValidatorRegistered)
15442                }
15443                Some(
15444                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15445                ) => {
15446                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
15447                            topics,
15448                            data,
15449                            validate,
15450                        )
15451                        .map(Self::ValidatorRegisteredV2)
15452                }
15453                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15454                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
15455                            topics,
15456                            data,
15457                            validate,
15458                        )
15459                        .map(Self::Withdrawal)
15460                }
15461                _ => {
15462                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15463                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15464                        log: alloy_sol_types::private::Box::new(
15465                            alloy_sol_types::private::LogData::new_unchecked(
15466                                topics.to_vec(),
15467                                data.to_vec().into(),
15468                            ),
15469                        ),
15470                    })
15471                }
15472            }
15473        }
15474    }
15475    #[automatically_derived]
15476    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
15477        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15478            match self {
15479                Self::ConsensusKeysUpdated(inner) => {
15480                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15481                }
15482                Self::ConsensusKeysUpdatedV2(inner) => {
15483                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15484                }
15485                Self::Delegated(inner) => {
15486                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15487                }
15488                Self::ExitEscrowPeriodUpdated(inner) => {
15489                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15490                }
15491                Self::Initialized(inner) => {
15492                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15493                }
15494                Self::OwnershipTransferred(inner) => {
15495                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15496                }
15497                Self::Paused(inner) => {
15498                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15499                }
15500                Self::RoleAdminChanged(inner) => {
15501                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15502                }
15503                Self::RoleGranted(inner) => {
15504                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15505                }
15506                Self::RoleRevoked(inner) => {
15507                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15508                }
15509                Self::Undelegated(inner) => {
15510                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15511                }
15512                Self::Unpaused(inner) => {
15513                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15514                }
15515                Self::Upgrade(inner) => {
15516                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15517                }
15518                Self::Upgraded(inner) => {
15519                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15520                }
15521                Self::ValidatorExit(inner) => {
15522                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15523                }
15524                Self::ValidatorRegistered(inner) => {
15525                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15526                }
15527                Self::ValidatorRegisteredV2(inner) => {
15528                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15529                }
15530                Self::Withdrawal(inner) => {
15531                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15532                }
15533            }
15534        }
15535        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15536            match self {
15537                Self::ConsensusKeysUpdated(inner) => {
15538                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15539                }
15540                Self::ConsensusKeysUpdatedV2(inner) => {
15541                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15542                }
15543                Self::Delegated(inner) => {
15544                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15545                }
15546                Self::ExitEscrowPeriodUpdated(inner) => {
15547                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15548                }
15549                Self::Initialized(inner) => {
15550                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15551                }
15552                Self::OwnershipTransferred(inner) => {
15553                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15554                }
15555                Self::Paused(inner) => {
15556                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15557                }
15558                Self::RoleAdminChanged(inner) => {
15559                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15560                }
15561                Self::RoleGranted(inner) => {
15562                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15563                }
15564                Self::RoleRevoked(inner) => {
15565                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15566                }
15567                Self::Undelegated(inner) => {
15568                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15569                }
15570                Self::Unpaused(inner) => {
15571                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15572                }
15573                Self::Upgrade(inner) => {
15574                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15575                }
15576                Self::Upgraded(inner) => {
15577                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15578                }
15579                Self::ValidatorExit(inner) => {
15580                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15581                }
15582                Self::ValidatorRegistered(inner) => {
15583                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15584                }
15585                Self::ValidatorRegisteredV2(inner) => {
15586                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15587                }
15588                Self::Withdrawal(inner) => {
15589                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15590                }
15591            }
15592        }
15593    }
15594    use alloy::contract as alloy_contract;
15595    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
15596
15597See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
15598    #[inline]
15599    pub const fn new<
15600        T: alloy_contract::private::Transport + ::core::clone::Clone,
15601        P: alloy_contract::private::Provider<T, N>,
15602        N: alloy_contract::private::Network,
15603    >(
15604        address: alloy_sol_types::private::Address,
15605        provider: P,
15606    ) -> StakeTableV2Instance<T, P, N> {
15607        StakeTableV2Instance::<T, P, N>::new(address, provider)
15608    }
15609    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15610
15611Returns a new instance of the contract, if the deployment was successful.
15612
15613For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15614    #[inline]
15615    pub fn deploy<
15616        T: alloy_contract::private::Transport + ::core::clone::Clone,
15617        P: alloy_contract::private::Provider<T, N>,
15618        N: alloy_contract::private::Network,
15619    >(
15620        provider: P,
15621    ) -> impl ::core::future::Future<
15622        Output = alloy_contract::Result<StakeTableV2Instance<T, P, N>>,
15623    > {
15624        StakeTableV2Instance::<T, P, N>::deploy(provider)
15625    }
15626    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15627and constructor arguments, if any.
15628
15629This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15630the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15631    #[inline]
15632    pub fn deploy_builder<
15633        T: alloy_contract::private::Transport + ::core::clone::Clone,
15634        P: alloy_contract::private::Provider<T, N>,
15635        N: alloy_contract::private::Network,
15636    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15637        StakeTableV2Instance::<T, P, N>::deploy_builder(provider)
15638    }
15639    /**A [`StakeTableV2`](self) instance.
15640
15641Contains type-safe methods for interacting with an on-chain instance of the
15642[`StakeTableV2`](self) contract located at a given `address`, using a given
15643provider `P`.
15644
15645If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
15646documentation on how to provide it), the `deploy` and `deploy_builder` methods can
15647be used to deploy a new instance of the contract.
15648
15649See the [module-level documentation](self) for all the available methods.*/
15650    #[derive(Clone)]
15651    pub struct StakeTableV2Instance<T, P, N = alloy_contract::private::Ethereum> {
15652        address: alloy_sol_types::private::Address,
15653        provider: P,
15654        _network_transport: ::core::marker::PhantomData<(N, T)>,
15655    }
15656    #[automatically_derived]
15657    impl<T, P, N> ::core::fmt::Debug for StakeTableV2Instance<T, P, N> {
15658        #[inline]
15659        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
15660            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
15661        }
15662    }
15663    /// Instantiation and getters/setters.
15664    #[automatically_derived]
15665    impl<
15666        T: alloy_contract::private::Transport + ::core::clone::Clone,
15667        P: alloy_contract::private::Provider<T, N>,
15668        N: alloy_contract::private::Network,
15669    > StakeTableV2Instance<T, P, N> {
15670        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
15671
15672See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
15673        #[inline]
15674        pub const fn new(
15675            address: alloy_sol_types::private::Address,
15676            provider: P,
15677        ) -> Self {
15678            Self {
15679                address,
15680                provider,
15681                _network_transport: ::core::marker::PhantomData,
15682            }
15683        }
15684        /**Deploys this contract using the given `provider` and constructor arguments, if any.
15685
15686Returns a new instance of the contract, if the deployment was successful.
15687
15688For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15689        #[inline]
15690        pub async fn deploy(
15691            provider: P,
15692        ) -> alloy_contract::Result<StakeTableV2Instance<T, P, N>> {
15693            let call_builder = Self::deploy_builder(provider);
15694            let contract_address = call_builder.deploy().await?;
15695            Ok(Self::new(contract_address, call_builder.provider))
15696        }
15697        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15698and constructor arguments, if any.
15699
15700This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15701the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15702        #[inline]
15703        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15704            alloy_contract::RawCallBuilder::new_raw_deploy(
15705                provider,
15706                ::core::clone::Clone::clone(&BYTECODE),
15707            )
15708        }
15709        /// Returns a reference to the address.
15710        #[inline]
15711        pub const fn address(&self) -> &alloy_sol_types::private::Address {
15712            &self.address
15713        }
15714        /// Sets the address.
15715        #[inline]
15716        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
15717            self.address = address;
15718        }
15719        /// Sets the address and returns `self`.
15720        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
15721            self.set_address(address);
15722            self
15723        }
15724        /// Returns a reference to the provider.
15725        #[inline]
15726        pub const fn provider(&self) -> &P {
15727            &self.provider
15728        }
15729    }
15730    impl<T, P: ::core::clone::Clone, N> StakeTableV2Instance<T, &P, N> {
15731        /// Clones the provider and returns a new instance with the cloned provider.
15732        #[inline]
15733        pub fn with_cloned_provider(self) -> StakeTableV2Instance<T, P, N> {
15734            StakeTableV2Instance {
15735                address: self.address,
15736                provider: ::core::clone::Clone::clone(&self.provider),
15737                _network_transport: ::core::marker::PhantomData,
15738            }
15739        }
15740    }
15741    /// Function calls.
15742    #[automatically_derived]
15743    impl<
15744        T: alloy_contract::private::Transport + ::core::clone::Clone,
15745        P: alloy_contract::private::Provider<T, N>,
15746        N: alloy_contract::private::Network,
15747    > StakeTableV2Instance<T, P, N> {
15748        /// Creates a new call builder using this contract instance's provider and address.
15749        ///
15750        /// Note that the call can be any function call, not just those defined in this
15751        /// contract. Prefer using the other methods for building type-safe contract calls.
15752        pub fn call_builder<C: alloy_sol_types::SolCall>(
15753            &self,
15754            call: &C,
15755        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
15756            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
15757        }
15758        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
15759        pub fn DEFAULT_ADMIN_ROLE(
15760            &self,
15761        ) -> alloy_contract::SolCallBuilder<T, &P, DEFAULT_ADMIN_ROLECall, N> {
15762            self.call_builder(&DEFAULT_ADMIN_ROLECall {})
15763        }
15764        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
15765        pub fn PAUSER_ROLE(
15766            &self,
15767        ) -> alloy_contract::SolCallBuilder<T, &P, PAUSER_ROLECall, N> {
15768            self.call_builder(&PAUSER_ROLECall {})
15769        }
15770        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
15771        pub fn UPGRADE_INTERFACE_VERSION(
15772            &self,
15773        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
15774            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
15775        }
15776        ///Creates a new call builder for the [`_hashBlsKey`] function.
15777        pub fn _hashBlsKey(
15778            &self,
15779            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15780        ) -> alloy_contract::SolCallBuilder<T, &P, _hashBlsKeyCall, N> {
15781            self.call_builder(&_hashBlsKeyCall { blsVK })
15782        }
15783        ///Creates a new call builder for the [`blsKeys`] function.
15784        pub fn blsKeys(
15785            &self,
15786            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
15787        ) -> alloy_contract::SolCallBuilder<T, &P, blsKeysCall, N> {
15788            self.call_builder(&blsKeysCall { blsKeyHash })
15789        }
15790        ///Creates a new call builder for the [`claimValidatorExit`] function.
15791        pub fn claimValidatorExit(
15792            &self,
15793            validator: alloy::sol_types::private::Address,
15794        ) -> alloy_contract::SolCallBuilder<T, &P, claimValidatorExitCall, N> {
15795            self.call_builder(
15796                &claimValidatorExitCall {
15797                    validator,
15798                },
15799            )
15800        }
15801        ///Creates a new call builder for the [`claimWithdrawal`] function.
15802        pub fn claimWithdrawal(
15803            &self,
15804            validator: alloy::sol_types::private::Address,
15805        ) -> alloy_contract::SolCallBuilder<T, &P, claimWithdrawalCall, N> {
15806            self.call_builder(&claimWithdrawalCall { validator })
15807        }
15808        ///Creates a new call builder for the [`delegate`] function.
15809        pub fn delegate(
15810            &self,
15811            validator: alloy::sol_types::private::Address,
15812            amount: alloy::sol_types::private::primitives::aliases::U256,
15813        ) -> alloy_contract::SolCallBuilder<T, &P, delegateCall, N> {
15814            self.call_builder(&delegateCall { validator, amount })
15815        }
15816        ///Creates a new call builder for the [`delegations`] function.
15817        pub fn delegations(
15818            &self,
15819            validator: alloy::sol_types::private::Address,
15820            delegator: alloy::sol_types::private::Address,
15821        ) -> alloy_contract::SolCallBuilder<T, &P, delegationsCall, N> {
15822            self.call_builder(
15823                &delegationsCall {
15824                    validator,
15825                    delegator,
15826                },
15827            )
15828        }
15829        ///Creates a new call builder for the [`deregisterValidator`] function.
15830        pub fn deregisterValidator(
15831            &self,
15832        ) -> alloy_contract::SolCallBuilder<T, &P, deregisterValidatorCall, N> {
15833            self.call_builder(&deregisterValidatorCall {})
15834        }
15835        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
15836        pub fn exitEscrowPeriod(
15837            &self,
15838        ) -> alloy_contract::SolCallBuilder<T, &P, exitEscrowPeriodCall, N> {
15839            self.call_builder(&exitEscrowPeriodCall {})
15840        }
15841        ///Creates a new call builder for the [`getRoleAdmin`] function.
15842        pub fn getRoleAdmin(
15843            &self,
15844            role: alloy::sol_types::private::FixedBytes<32>,
15845        ) -> alloy_contract::SolCallBuilder<T, &P, getRoleAdminCall, N> {
15846            self.call_builder(&getRoleAdminCall { role })
15847        }
15848        ///Creates a new call builder for the [`getVersion`] function.
15849        pub fn getVersion(
15850            &self,
15851        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
15852            self.call_builder(&getVersionCall {})
15853        }
15854        ///Creates a new call builder for the [`grantRole`] function.
15855        pub fn grantRole(
15856            &self,
15857            role: alloy::sol_types::private::FixedBytes<32>,
15858            account: alloy::sol_types::private::Address,
15859        ) -> alloy_contract::SolCallBuilder<T, &P, grantRoleCall, N> {
15860            self.call_builder(&grantRoleCall { role, account })
15861        }
15862        ///Creates a new call builder for the [`hasRole`] function.
15863        pub fn hasRole(
15864            &self,
15865            role: alloy::sol_types::private::FixedBytes<32>,
15866            account: alloy::sol_types::private::Address,
15867        ) -> alloy_contract::SolCallBuilder<T, &P, hasRoleCall, N> {
15868            self.call_builder(&hasRoleCall { role, account })
15869        }
15870        ///Creates a new call builder for the [`initialize`] function.
15871        pub fn initialize(
15872            &self,
15873            _tokenAddress: alloy::sol_types::private::Address,
15874            _lightClientAddress: alloy::sol_types::private::Address,
15875            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
15876            _timelock: alloy::sol_types::private::Address,
15877        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
15878            self.call_builder(
15879                &initializeCall {
15880                    _tokenAddress,
15881                    _lightClientAddress,
15882                    _exitEscrowPeriod,
15883                    _timelock,
15884                },
15885            )
15886        }
15887        ///Creates a new call builder for the [`initializeV2`] function.
15888        pub fn initializeV2(
15889            &self,
15890            pauser: alloy::sol_types::private::Address,
15891            admin: alloy::sol_types::private::Address,
15892        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
15893            self.call_builder(&initializeV2Call { pauser, admin })
15894        }
15895        ///Creates a new call builder for the [`initializedAtBlock`] function.
15896        pub fn initializedAtBlock(
15897            &self,
15898        ) -> alloy_contract::SolCallBuilder<T, &P, initializedAtBlockCall, N> {
15899            self.call_builder(&initializedAtBlockCall {})
15900        }
15901        ///Creates a new call builder for the [`lightClient`] function.
15902        pub fn lightClient(
15903            &self,
15904        ) -> alloy_contract::SolCallBuilder<T, &P, lightClientCall, N> {
15905            self.call_builder(&lightClientCall {})
15906        }
15907        ///Creates a new call builder for the [`owner`] function.
15908        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
15909            self.call_builder(&ownerCall {})
15910        }
15911        ///Creates a new call builder for the [`pause`] function.
15912        pub fn pause(&self) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> {
15913            self.call_builder(&pauseCall {})
15914        }
15915        ///Creates a new call builder for the [`paused`] function.
15916        pub fn paused(&self) -> alloy_contract::SolCallBuilder<T, &P, pausedCall, N> {
15917            self.call_builder(&pausedCall {})
15918        }
15919        ///Creates a new call builder for the [`proxiableUUID`] function.
15920        pub fn proxiableUUID(
15921            &self,
15922        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
15923            self.call_builder(&proxiableUUIDCall {})
15924        }
15925        ///Creates a new call builder for the [`registerValidator`] function.
15926        pub fn registerValidator(
15927            &self,
15928            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15929            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15930            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15931            _3: u16,
15932        ) -> alloy_contract::SolCallBuilder<T, &P, registerValidatorCall, N> {
15933            self.call_builder(
15934                &registerValidatorCall {
15935                    _0,
15936                    _1,
15937                    _2,
15938                    _3,
15939                },
15940            )
15941        }
15942        ///Creates a new call builder for the [`registerValidatorV2`] function.
15943        pub fn registerValidatorV2(
15944            &self,
15945            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15946            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15947            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15948            schnorrSig: alloy::sol_types::private::Bytes,
15949            commission: u16,
15950        ) -> alloy_contract::SolCallBuilder<T, &P, registerValidatorV2Call, N> {
15951            self.call_builder(
15952                &registerValidatorV2Call {
15953                    blsVK,
15954                    schnorrVK,
15955                    blsSig,
15956                    schnorrSig,
15957                    commission,
15958                },
15959            )
15960        }
15961        ///Creates a new call builder for the [`renounceOwnership`] function.
15962        pub fn renounceOwnership(
15963            &self,
15964        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
15965            self.call_builder(&renounceOwnershipCall {})
15966        }
15967        ///Creates a new call builder for the [`renounceRole`] function.
15968        pub fn renounceRole(
15969            &self,
15970            role: alloy::sol_types::private::FixedBytes<32>,
15971            callerConfirmation: alloy::sol_types::private::Address,
15972        ) -> alloy_contract::SolCallBuilder<T, &P, renounceRoleCall, N> {
15973            self.call_builder(
15974                &renounceRoleCall {
15975                    role,
15976                    callerConfirmation,
15977                },
15978            )
15979        }
15980        ///Creates a new call builder for the [`revokeRole`] function.
15981        pub fn revokeRole(
15982            &self,
15983            role: alloy::sol_types::private::FixedBytes<32>,
15984            account: alloy::sol_types::private::Address,
15985        ) -> alloy_contract::SolCallBuilder<T, &P, revokeRoleCall, N> {
15986            self.call_builder(&revokeRoleCall { role, account })
15987        }
15988        ///Creates a new call builder for the [`supportsInterface`] function.
15989        pub fn supportsInterface(
15990            &self,
15991            interfaceId: alloy::sol_types::private::FixedBytes<4>,
15992        ) -> alloy_contract::SolCallBuilder<T, &P, supportsInterfaceCall, N> {
15993            self.call_builder(
15994                &supportsInterfaceCall {
15995                    interfaceId,
15996                },
15997            )
15998        }
15999        ///Creates a new call builder for the [`token`] function.
16000        pub fn token(&self) -> alloy_contract::SolCallBuilder<T, &P, tokenCall, N> {
16001            self.call_builder(&tokenCall {})
16002        }
16003        ///Creates a new call builder for the [`transferOwnership`] function.
16004        pub fn transferOwnership(
16005            &self,
16006            newOwner: alloy::sol_types::private::Address,
16007        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
16008            self.call_builder(&transferOwnershipCall { newOwner })
16009        }
16010        ///Creates a new call builder for the [`undelegate`] function.
16011        pub fn undelegate(
16012            &self,
16013            validator: alloy::sol_types::private::Address,
16014            amount: alloy::sol_types::private::primitives::aliases::U256,
16015        ) -> alloy_contract::SolCallBuilder<T, &P, undelegateCall, N> {
16016            self.call_builder(
16017                &undelegateCall {
16018                    validator,
16019                    amount,
16020                },
16021            )
16022        }
16023        ///Creates a new call builder for the [`undelegations`] function.
16024        pub fn undelegations(
16025            &self,
16026            validator: alloy::sol_types::private::Address,
16027            delegator: alloy::sol_types::private::Address,
16028        ) -> alloy_contract::SolCallBuilder<T, &P, undelegationsCall, N> {
16029            self.call_builder(
16030                &undelegationsCall {
16031                    validator,
16032                    delegator,
16033                },
16034            )
16035        }
16036        ///Creates a new call builder for the [`unpause`] function.
16037        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> {
16038            self.call_builder(&unpauseCall {})
16039        }
16040        ///Creates a new call builder for the [`updateConsensusKeys`] function.
16041        pub fn updateConsensusKeys(
16042            &self,
16043            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16044            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16045            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16046        ) -> alloy_contract::SolCallBuilder<T, &P, updateConsensusKeysCall, N> {
16047            self.call_builder(
16048                &updateConsensusKeysCall {
16049                    _0,
16050                    _1,
16051                    _2,
16052                },
16053            )
16054        }
16055        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
16056        pub fn updateConsensusKeysV2(
16057            &self,
16058            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16059            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16060            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16061            schnorrSig: alloy::sol_types::private::Bytes,
16062        ) -> alloy_contract::SolCallBuilder<T, &P, updateConsensusKeysV2Call, N> {
16063            self.call_builder(
16064                &updateConsensusKeysV2Call {
16065                    blsVK,
16066                    schnorrVK,
16067                    blsSig,
16068                    schnorrSig,
16069                },
16070            )
16071        }
16072        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
16073        pub fn updateExitEscrowPeriod(
16074            &self,
16075            newExitEscrowPeriod: u64,
16076        ) -> alloy_contract::SolCallBuilder<T, &P, updateExitEscrowPeriodCall, N> {
16077            self.call_builder(
16078                &updateExitEscrowPeriodCall {
16079                    newExitEscrowPeriod,
16080                },
16081            )
16082        }
16083        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16084        pub fn upgradeToAndCall(
16085            &self,
16086            newImplementation: alloy::sol_types::private::Address,
16087            data: alloy::sol_types::private::Bytes,
16088        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
16089            self.call_builder(
16090                &upgradeToAndCallCall {
16091                    newImplementation,
16092                    data,
16093                },
16094            )
16095        }
16096        ///Creates a new call builder for the [`validatorExits`] function.
16097        pub fn validatorExits(
16098            &self,
16099            validator: alloy::sol_types::private::Address,
16100        ) -> alloy_contract::SolCallBuilder<T, &P, validatorExitsCall, N> {
16101            self.call_builder(&validatorExitsCall { validator })
16102        }
16103        ///Creates a new call builder for the [`validators`] function.
16104        pub fn validators(
16105            &self,
16106            account: alloy::sol_types::private::Address,
16107        ) -> alloy_contract::SolCallBuilder<T, &P, validatorsCall, N> {
16108            self.call_builder(&validatorsCall { account })
16109        }
16110    }
16111    /// Event filters.
16112    #[automatically_derived]
16113    impl<
16114        T: alloy_contract::private::Transport + ::core::clone::Clone,
16115        P: alloy_contract::private::Provider<T, N>,
16116        N: alloy_contract::private::Network,
16117    > StakeTableV2Instance<T, P, N> {
16118        /// Creates a new event filter using this contract instance's provider and address.
16119        ///
16120        /// Note that the type can be any event, not just those defined in this contract.
16121        /// Prefer using the other methods for building type-safe event filters.
16122        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16123            &self,
16124        ) -> alloy_contract::Event<T, &P, E, N> {
16125            alloy_contract::Event::new_sol(&self.provider, &self.address)
16126        }
16127        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
16128        pub fn ConsensusKeysUpdated_filter(
16129            &self,
16130        ) -> alloy_contract::Event<T, &P, ConsensusKeysUpdated, N> {
16131            self.event_filter::<ConsensusKeysUpdated>()
16132        }
16133        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
16134        pub fn ConsensusKeysUpdatedV2_filter(
16135            &self,
16136        ) -> alloy_contract::Event<T, &P, ConsensusKeysUpdatedV2, N> {
16137            self.event_filter::<ConsensusKeysUpdatedV2>()
16138        }
16139        ///Creates a new event filter for the [`Delegated`] event.
16140        pub fn Delegated_filter(&self) -> alloy_contract::Event<T, &P, Delegated, N> {
16141            self.event_filter::<Delegated>()
16142        }
16143        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
16144        pub fn ExitEscrowPeriodUpdated_filter(
16145            &self,
16146        ) -> alloy_contract::Event<T, &P, ExitEscrowPeriodUpdated, N> {
16147            self.event_filter::<ExitEscrowPeriodUpdated>()
16148        }
16149        ///Creates a new event filter for the [`Initialized`] event.
16150        pub fn Initialized_filter(
16151            &self,
16152        ) -> alloy_contract::Event<T, &P, Initialized, N> {
16153            self.event_filter::<Initialized>()
16154        }
16155        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16156        pub fn OwnershipTransferred_filter(
16157            &self,
16158        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
16159            self.event_filter::<OwnershipTransferred>()
16160        }
16161        ///Creates a new event filter for the [`Paused`] event.
16162        pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> {
16163            self.event_filter::<Paused>()
16164        }
16165        ///Creates a new event filter for the [`RoleAdminChanged`] event.
16166        pub fn RoleAdminChanged_filter(
16167            &self,
16168        ) -> alloy_contract::Event<T, &P, RoleAdminChanged, N> {
16169            self.event_filter::<RoleAdminChanged>()
16170        }
16171        ///Creates a new event filter for the [`RoleGranted`] event.
16172        pub fn RoleGranted_filter(
16173            &self,
16174        ) -> alloy_contract::Event<T, &P, RoleGranted, N> {
16175            self.event_filter::<RoleGranted>()
16176        }
16177        ///Creates a new event filter for the [`RoleRevoked`] event.
16178        pub fn RoleRevoked_filter(
16179            &self,
16180        ) -> alloy_contract::Event<T, &P, RoleRevoked, N> {
16181            self.event_filter::<RoleRevoked>()
16182        }
16183        ///Creates a new event filter for the [`Undelegated`] event.
16184        pub fn Undelegated_filter(
16185            &self,
16186        ) -> alloy_contract::Event<T, &P, Undelegated, N> {
16187            self.event_filter::<Undelegated>()
16188        }
16189        ///Creates a new event filter for the [`Unpaused`] event.
16190        pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> {
16191            self.event_filter::<Unpaused>()
16192        }
16193        ///Creates a new event filter for the [`Upgrade`] event.
16194        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
16195            self.event_filter::<Upgrade>()
16196        }
16197        ///Creates a new event filter for the [`Upgraded`] event.
16198        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
16199            self.event_filter::<Upgraded>()
16200        }
16201        ///Creates a new event filter for the [`ValidatorExit`] event.
16202        pub fn ValidatorExit_filter(
16203            &self,
16204        ) -> alloy_contract::Event<T, &P, ValidatorExit, N> {
16205            self.event_filter::<ValidatorExit>()
16206        }
16207        ///Creates a new event filter for the [`ValidatorRegistered`] event.
16208        pub fn ValidatorRegistered_filter(
16209            &self,
16210        ) -> alloy_contract::Event<T, &P, ValidatorRegistered, N> {
16211            self.event_filter::<ValidatorRegistered>()
16212        }
16213        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
16214        pub fn ValidatorRegisteredV2_filter(
16215            &self,
16216        ) -> alloy_contract::Event<T, &P, ValidatorRegisteredV2, N> {
16217            self.event_filter::<ValidatorRegisteredV2>()
16218        }
16219        ///Creates a new event filter for the [`Withdrawal`] event.
16220        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<T, &P, Withdrawal, N> {
16221            self.event_filter::<Withdrawal>()
16222        }
16223    }
16224}