hotshot_contract_adapter/bindings/
staketable.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/**
1076
1077Generated by the following Solidity interface...
1078```solidity
1079library BN254 {
1080    type BaseField is uint256;
1081    struct G1Point {
1082        BaseField x;
1083        BaseField y;
1084    }
1085    struct G2Point {
1086        BaseField x0;
1087        BaseField x1;
1088        BaseField y0;
1089        BaseField y1;
1090    }
1091}
1092
1093library EdOnBN254 {
1094    struct EdOnBN254Point {
1095        uint256 x;
1096        uint256 y;
1097    }
1098}
1099
1100interface StakeTable {
1101    type ValidatorStatus is uint8;
1102
1103    error AddressEmptyCode(address target);
1104    error BLSSigVerificationFailed();
1105    error BlsKeyAlreadyUsed();
1106    error ERC1967InvalidImplementation(address implementation);
1107    error ERC1967NonPayable();
1108    error ExitEscrowPeriodInvalid();
1109    error FailedInnerCall();
1110    error InsufficientAllowance(uint256, uint256);
1111    error InsufficientBalance(uint256);
1112    error InvalidCommission();
1113    error InvalidInitialization();
1114    error InvalidSchnorrVK();
1115    error NotInitializing();
1116    error NothingToWithdraw();
1117    error OwnableInvalidOwner(address owner);
1118    error OwnableUnauthorizedAccount(address account);
1119    error PrematureWithdrawal();
1120    error UUPSUnauthorizedCallContext();
1121    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1122    error UndelegationAlreadyExists();
1123    error ValidatorAlreadyExited();
1124    error ValidatorAlreadyRegistered();
1125    error ValidatorInactive();
1126    error ValidatorNotExited();
1127    error ZeroAddress();
1128    error ZeroAmount();
1129
1130    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1131    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1132    event Initialized(uint64 version);
1133    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1134    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1135    event Upgraded(address indexed implementation);
1136    event ValidatorExit(address indexed validator);
1137    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1138    event Withdrawal(address indexed account, uint256 amount);
1139
1140    constructor();
1141
1142    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1143    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1144    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1145    function claimValidatorExit(address validator) external;
1146    function claimWithdrawal(address validator) external;
1147    function delegate(address validator, uint256 amount) external;
1148    function delegations(address validator, address delegator) external view returns (uint256 amount);
1149    function deregisterValidator() external;
1150    function exitEscrowPeriod() external view returns (uint256);
1151    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1152    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1153    function initializedAtBlock() external view returns (uint256);
1154    function lightClient() external view returns (address);
1155    function owner() external view returns (address);
1156    function proxiableUUID() external view returns (bytes32);
1157    function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
1158    function renounceOwnership() external;
1159    function token() external view returns (address);
1160    function transferOwnership(address newOwner) external;
1161    function undelegate(address validator, uint256 amount) external;
1162    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1163    function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
1164    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1165    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1166    function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
1167}
1168```
1169
1170...which was generated by the following JSON ABI:
1171```json
1172[
1173  {
1174    "type": "constructor",
1175    "inputs": [],
1176    "stateMutability": "nonpayable"
1177  },
1178  {
1179    "type": "function",
1180    "name": "UPGRADE_INTERFACE_VERSION",
1181    "inputs": [],
1182    "outputs": [
1183      {
1184        "name": "",
1185        "type": "string",
1186        "internalType": "string"
1187      }
1188    ],
1189    "stateMutability": "view"
1190  },
1191  {
1192    "type": "function",
1193    "name": "_hashBlsKey",
1194    "inputs": [
1195      {
1196        "name": "blsVK",
1197        "type": "tuple",
1198        "internalType": "struct BN254.G2Point",
1199        "components": [
1200          {
1201            "name": "x0",
1202            "type": "uint256",
1203            "internalType": "BN254.BaseField"
1204          },
1205          {
1206            "name": "x1",
1207            "type": "uint256",
1208            "internalType": "BN254.BaseField"
1209          },
1210          {
1211            "name": "y0",
1212            "type": "uint256",
1213            "internalType": "BN254.BaseField"
1214          },
1215          {
1216            "name": "y1",
1217            "type": "uint256",
1218            "internalType": "BN254.BaseField"
1219          }
1220        ]
1221      }
1222    ],
1223    "outputs": [
1224      {
1225        "name": "",
1226        "type": "bytes32",
1227        "internalType": "bytes32"
1228      }
1229    ],
1230    "stateMutability": "pure"
1231  },
1232  {
1233    "type": "function",
1234    "name": "blsKeys",
1235    "inputs": [
1236      {
1237        "name": "blsKeyHash",
1238        "type": "bytes32",
1239        "internalType": "bytes32"
1240      }
1241    ],
1242    "outputs": [
1243      {
1244        "name": "used",
1245        "type": "bool",
1246        "internalType": "bool"
1247      }
1248    ],
1249    "stateMutability": "view"
1250  },
1251  {
1252    "type": "function",
1253    "name": "claimValidatorExit",
1254    "inputs": [
1255      {
1256        "name": "validator",
1257        "type": "address",
1258        "internalType": "address"
1259      }
1260    ],
1261    "outputs": [],
1262    "stateMutability": "nonpayable"
1263  },
1264  {
1265    "type": "function",
1266    "name": "claimWithdrawal",
1267    "inputs": [
1268      {
1269        "name": "validator",
1270        "type": "address",
1271        "internalType": "address"
1272      }
1273    ],
1274    "outputs": [],
1275    "stateMutability": "nonpayable"
1276  },
1277  {
1278    "type": "function",
1279    "name": "delegate",
1280    "inputs": [
1281      {
1282        "name": "validator",
1283        "type": "address",
1284        "internalType": "address"
1285      },
1286      {
1287        "name": "amount",
1288        "type": "uint256",
1289        "internalType": "uint256"
1290      }
1291    ],
1292    "outputs": [],
1293    "stateMutability": "nonpayable"
1294  },
1295  {
1296    "type": "function",
1297    "name": "delegations",
1298    "inputs": [
1299      {
1300        "name": "validator",
1301        "type": "address",
1302        "internalType": "address"
1303      },
1304      {
1305        "name": "delegator",
1306        "type": "address",
1307        "internalType": "address"
1308      }
1309    ],
1310    "outputs": [
1311      {
1312        "name": "amount",
1313        "type": "uint256",
1314        "internalType": "uint256"
1315      }
1316    ],
1317    "stateMutability": "view"
1318  },
1319  {
1320    "type": "function",
1321    "name": "deregisterValidator",
1322    "inputs": [],
1323    "outputs": [],
1324    "stateMutability": "nonpayable"
1325  },
1326  {
1327    "type": "function",
1328    "name": "exitEscrowPeriod",
1329    "inputs": [],
1330    "outputs": [
1331      {
1332        "name": "",
1333        "type": "uint256",
1334        "internalType": "uint256"
1335      }
1336    ],
1337    "stateMutability": "view"
1338  },
1339  {
1340    "type": "function",
1341    "name": "getVersion",
1342    "inputs": [],
1343    "outputs": [
1344      {
1345        "name": "majorVersion",
1346        "type": "uint8",
1347        "internalType": "uint8"
1348      },
1349      {
1350        "name": "minorVersion",
1351        "type": "uint8",
1352        "internalType": "uint8"
1353      },
1354      {
1355        "name": "patchVersion",
1356        "type": "uint8",
1357        "internalType": "uint8"
1358      }
1359    ],
1360    "stateMutability": "pure"
1361  },
1362  {
1363    "type": "function",
1364    "name": "initialize",
1365    "inputs": [
1366      {
1367        "name": "_tokenAddress",
1368        "type": "address",
1369        "internalType": "address"
1370      },
1371      {
1372        "name": "_lightClientAddress",
1373        "type": "address",
1374        "internalType": "address"
1375      },
1376      {
1377        "name": "_exitEscrowPeriod",
1378        "type": "uint256",
1379        "internalType": "uint256"
1380      },
1381      {
1382        "name": "_timelock",
1383        "type": "address",
1384        "internalType": "address"
1385      }
1386    ],
1387    "outputs": [],
1388    "stateMutability": "nonpayable"
1389  },
1390  {
1391    "type": "function",
1392    "name": "initializedAtBlock",
1393    "inputs": [],
1394    "outputs": [
1395      {
1396        "name": "",
1397        "type": "uint256",
1398        "internalType": "uint256"
1399      }
1400    ],
1401    "stateMutability": "view"
1402  },
1403  {
1404    "type": "function",
1405    "name": "lightClient",
1406    "inputs": [],
1407    "outputs": [
1408      {
1409        "name": "",
1410        "type": "address",
1411        "internalType": "contract ILightClient"
1412      }
1413    ],
1414    "stateMutability": "view"
1415  },
1416  {
1417    "type": "function",
1418    "name": "owner",
1419    "inputs": [],
1420    "outputs": [
1421      {
1422        "name": "",
1423        "type": "address",
1424        "internalType": "address"
1425      }
1426    ],
1427    "stateMutability": "view"
1428  },
1429  {
1430    "type": "function",
1431    "name": "proxiableUUID",
1432    "inputs": [],
1433    "outputs": [
1434      {
1435        "name": "",
1436        "type": "bytes32",
1437        "internalType": "bytes32"
1438      }
1439    ],
1440    "stateMutability": "view"
1441  },
1442  {
1443    "type": "function",
1444    "name": "registerValidator",
1445    "inputs": [
1446      {
1447        "name": "blsVK",
1448        "type": "tuple",
1449        "internalType": "struct BN254.G2Point",
1450        "components": [
1451          {
1452            "name": "x0",
1453            "type": "uint256",
1454            "internalType": "BN254.BaseField"
1455          },
1456          {
1457            "name": "x1",
1458            "type": "uint256",
1459            "internalType": "BN254.BaseField"
1460          },
1461          {
1462            "name": "y0",
1463            "type": "uint256",
1464            "internalType": "BN254.BaseField"
1465          },
1466          {
1467            "name": "y1",
1468            "type": "uint256",
1469            "internalType": "BN254.BaseField"
1470          }
1471        ]
1472      },
1473      {
1474        "name": "schnorrVK",
1475        "type": "tuple",
1476        "internalType": "struct EdOnBN254.EdOnBN254Point",
1477        "components": [
1478          {
1479            "name": "x",
1480            "type": "uint256",
1481            "internalType": "uint256"
1482          },
1483          {
1484            "name": "y",
1485            "type": "uint256",
1486            "internalType": "uint256"
1487          }
1488        ]
1489      },
1490      {
1491        "name": "blsSig",
1492        "type": "tuple",
1493        "internalType": "struct BN254.G1Point",
1494        "components": [
1495          {
1496            "name": "x",
1497            "type": "uint256",
1498            "internalType": "BN254.BaseField"
1499          },
1500          {
1501            "name": "y",
1502            "type": "uint256",
1503            "internalType": "BN254.BaseField"
1504          }
1505        ]
1506      },
1507      {
1508        "name": "commission",
1509        "type": "uint16",
1510        "internalType": "uint16"
1511      }
1512    ],
1513    "outputs": [],
1514    "stateMutability": "nonpayable"
1515  },
1516  {
1517    "type": "function",
1518    "name": "renounceOwnership",
1519    "inputs": [],
1520    "outputs": [],
1521    "stateMutability": "nonpayable"
1522  },
1523  {
1524    "type": "function",
1525    "name": "token",
1526    "inputs": [],
1527    "outputs": [
1528      {
1529        "name": "",
1530        "type": "address",
1531        "internalType": "contract ERC20"
1532      }
1533    ],
1534    "stateMutability": "view"
1535  },
1536  {
1537    "type": "function",
1538    "name": "transferOwnership",
1539    "inputs": [
1540      {
1541        "name": "newOwner",
1542        "type": "address",
1543        "internalType": "address"
1544      }
1545    ],
1546    "outputs": [],
1547    "stateMutability": "nonpayable"
1548  },
1549  {
1550    "type": "function",
1551    "name": "undelegate",
1552    "inputs": [
1553      {
1554        "name": "validator",
1555        "type": "address",
1556        "internalType": "address"
1557      },
1558      {
1559        "name": "amount",
1560        "type": "uint256",
1561        "internalType": "uint256"
1562      }
1563    ],
1564    "outputs": [],
1565    "stateMutability": "nonpayable"
1566  },
1567  {
1568    "type": "function",
1569    "name": "undelegations",
1570    "inputs": [
1571      {
1572        "name": "validator",
1573        "type": "address",
1574        "internalType": "address"
1575      },
1576      {
1577        "name": "delegator",
1578        "type": "address",
1579        "internalType": "address"
1580      }
1581    ],
1582    "outputs": [
1583      {
1584        "name": "amount",
1585        "type": "uint256",
1586        "internalType": "uint256"
1587      },
1588      {
1589        "name": "unlocksAt",
1590        "type": "uint256",
1591        "internalType": "uint256"
1592      }
1593    ],
1594    "stateMutability": "view"
1595  },
1596  {
1597    "type": "function",
1598    "name": "updateConsensusKeys",
1599    "inputs": [
1600      {
1601        "name": "newBlsVK",
1602        "type": "tuple",
1603        "internalType": "struct BN254.G2Point",
1604        "components": [
1605          {
1606            "name": "x0",
1607            "type": "uint256",
1608            "internalType": "BN254.BaseField"
1609          },
1610          {
1611            "name": "x1",
1612            "type": "uint256",
1613            "internalType": "BN254.BaseField"
1614          },
1615          {
1616            "name": "y0",
1617            "type": "uint256",
1618            "internalType": "BN254.BaseField"
1619          },
1620          {
1621            "name": "y1",
1622            "type": "uint256",
1623            "internalType": "BN254.BaseField"
1624          }
1625        ]
1626      },
1627      {
1628        "name": "newSchnorrVK",
1629        "type": "tuple",
1630        "internalType": "struct EdOnBN254.EdOnBN254Point",
1631        "components": [
1632          {
1633            "name": "x",
1634            "type": "uint256",
1635            "internalType": "uint256"
1636          },
1637          {
1638            "name": "y",
1639            "type": "uint256",
1640            "internalType": "uint256"
1641          }
1642        ]
1643      },
1644      {
1645        "name": "newBlsSig",
1646        "type": "tuple",
1647        "internalType": "struct BN254.G1Point",
1648        "components": [
1649          {
1650            "name": "x",
1651            "type": "uint256",
1652            "internalType": "BN254.BaseField"
1653          },
1654          {
1655            "name": "y",
1656            "type": "uint256",
1657            "internalType": "BN254.BaseField"
1658          }
1659        ]
1660      }
1661    ],
1662    "outputs": [],
1663    "stateMutability": "nonpayable"
1664  },
1665  {
1666    "type": "function",
1667    "name": "upgradeToAndCall",
1668    "inputs": [
1669      {
1670        "name": "newImplementation",
1671        "type": "address",
1672        "internalType": "address"
1673      },
1674      {
1675        "name": "data",
1676        "type": "bytes",
1677        "internalType": "bytes"
1678      }
1679    ],
1680    "outputs": [],
1681    "stateMutability": "payable"
1682  },
1683  {
1684    "type": "function",
1685    "name": "validatorExits",
1686    "inputs": [
1687      {
1688        "name": "validator",
1689        "type": "address",
1690        "internalType": "address"
1691      }
1692    ],
1693    "outputs": [
1694      {
1695        "name": "unlocksAt",
1696        "type": "uint256",
1697        "internalType": "uint256"
1698      }
1699    ],
1700    "stateMutability": "view"
1701  },
1702  {
1703    "type": "function",
1704    "name": "validators",
1705    "inputs": [
1706      {
1707        "name": "account",
1708        "type": "address",
1709        "internalType": "address"
1710      }
1711    ],
1712    "outputs": [
1713      {
1714        "name": "delegatedAmount",
1715        "type": "uint256",
1716        "internalType": "uint256"
1717      },
1718      {
1719        "name": "status",
1720        "type": "uint8",
1721        "internalType": "enum StakeTable.ValidatorStatus"
1722      }
1723    ],
1724    "stateMutability": "view"
1725  },
1726  {
1727    "type": "event",
1728    "name": "ConsensusKeysUpdated",
1729    "inputs": [
1730      {
1731        "name": "account",
1732        "type": "address",
1733        "indexed": true,
1734        "internalType": "address"
1735      },
1736      {
1737        "name": "blsVK",
1738        "type": "tuple",
1739        "indexed": false,
1740        "internalType": "struct BN254.G2Point",
1741        "components": [
1742          {
1743            "name": "x0",
1744            "type": "uint256",
1745            "internalType": "BN254.BaseField"
1746          },
1747          {
1748            "name": "x1",
1749            "type": "uint256",
1750            "internalType": "BN254.BaseField"
1751          },
1752          {
1753            "name": "y0",
1754            "type": "uint256",
1755            "internalType": "BN254.BaseField"
1756          },
1757          {
1758            "name": "y1",
1759            "type": "uint256",
1760            "internalType": "BN254.BaseField"
1761          }
1762        ]
1763      },
1764      {
1765        "name": "schnorrVK",
1766        "type": "tuple",
1767        "indexed": false,
1768        "internalType": "struct EdOnBN254.EdOnBN254Point",
1769        "components": [
1770          {
1771            "name": "x",
1772            "type": "uint256",
1773            "internalType": "uint256"
1774          },
1775          {
1776            "name": "y",
1777            "type": "uint256",
1778            "internalType": "uint256"
1779          }
1780        ]
1781      }
1782    ],
1783    "anonymous": false
1784  },
1785  {
1786    "type": "event",
1787    "name": "Delegated",
1788    "inputs": [
1789      {
1790        "name": "delegator",
1791        "type": "address",
1792        "indexed": true,
1793        "internalType": "address"
1794      },
1795      {
1796        "name": "validator",
1797        "type": "address",
1798        "indexed": true,
1799        "internalType": "address"
1800      },
1801      {
1802        "name": "amount",
1803        "type": "uint256",
1804        "indexed": false,
1805        "internalType": "uint256"
1806      }
1807    ],
1808    "anonymous": false
1809  },
1810  {
1811    "type": "event",
1812    "name": "Initialized",
1813    "inputs": [
1814      {
1815        "name": "version",
1816        "type": "uint64",
1817        "indexed": false,
1818        "internalType": "uint64"
1819      }
1820    ],
1821    "anonymous": false
1822  },
1823  {
1824    "type": "event",
1825    "name": "OwnershipTransferred",
1826    "inputs": [
1827      {
1828        "name": "previousOwner",
1829        "type": "address",
1830        "indexed": true,
1831        "internalType": "address"
1832      },
1833      {
1834        "name": "newOwner",
1835        "type": "address",
1836        "indexed": true,
1837        "internalType": "address"
1838      }
1839    ],
1840    "anonymous": false
1841  },
1842  {
1843    "type": "event",
1844    "name": "Undelegated",
1845    "inputs": [
1846      {
1847        "name": "delegator",
1848        "type": "address",
1849        "indexed": true,
1850        "internalType": "address"
1851      },
1852      {
1853        "name": "validator",
1854        "type": "address",
1855        "indexed": true,
1856        "internalType": "address"
1857      },
1858      {
1859        "name": "amount",
1860        "type": "uint256",
1861        "indexed": false,
1862        "internalType": "uint256"
1863      }
1864    ],
1865    "anonymous": false
1866  },
1867  {
1868    "type": "event",
1869    "name": "Upgraded",
1870    "inputs": [
1871      {
1872        "name": "implementation",
1873        "type": "address",
1874        "indexed": true,
1875        "internalType": "address"
1876      }
1877    ],
1878    "anonymous": false
1879  },
1880  {
1881    "type": "event",
1882    "name": "ValidatorExit",
1883    "inputs": [
1884      {
1885        "name": "validator",
1886        "type": "address",
1887        "indexed": true,
1888        "internalType": "address"
1889      }
1890    ],
1891    "anonymous": false
1892  },
1893  {
1894    "type": "event",
1895    "name": "ValidatorRegistered",
1896    "inputs": [
1897      {
1898        "name": "account",
1899        "type": "address",
1900        "indexed": true,
1901        "internalType": "address"
1902      },
1903      {
1904        "name": "blsVk",
1905        "type": "tuple",
1906        "indexed": false,
1907        "internalType": "struct BN254.G2Point",
1908        "components": [
1909          {
1910            "name": "x0",
1911            "type": "uint256",
1912            "internalType": "BN254.BaseField"
1913          },
1914          {
1915            "name": "x1",
1916            "type": "uint256",
1917            "internalType": "BN254.BaseField"
1918          },
1919          {
1920            "name": "y0",
1921            "type": "uint256",
1922            "internalType": "BN254.BaseField"
1923          },
1924          {
1925            "name": "y1",
1926            "type": "uint256",
1927            "internalType": "BN254.BaseField"
1928          }
1929        ]
1930      },
1931      {
1932        "name": "schnorrVk",
1933        "type": "tuple",
1934        "indexed": false,
1935        "internalType": "struct EdOnBN254.EdOnBN254Point",
1936        "components": [
1937          {
1938            "name": "x",
1939            "type": "uint256",
1940            "internalType": "uint256"
1941          },
1942          {
1943            "name": "y",
1944            "type": "uint256",
1945            "internalType": "uint256"
1946          }
1947        ]
1948      },
1949      {
1950        "name": "commission",
1951        "type": "uint16",
1952        "indexed": false,
1953        "internalType": "uint16"
1954      }
1955    ],
1956    "anonymous": false
1957  },
1958  {
1959    "type": "event",
1960    "name": "Withdrawal",
1961    "inputs": [
1962      {
1963        "name": "account",
1964        "type": "address",
1965        "indexed": true,
1966        "internalType": "address"
1967      },
1968      {
1969        "name": "amount",
1970        "type": "uint256",
1971        "indexed": false,
1972        "internalType": "uint256"
1973      }
1974    ],
1975    "anonymous": false
1976  },
1977  {
1978    "type": "error",
1979    "name": "AddressEmptyCode",
1980    "inputs": [
1981      {
1982        "name": "target",
1983        "type": "address",
1984        "internalType": "address"
1985      }
1986    ]
1987  },
1988  {
1989    "type": "error",
1990    "name": "BLSSigVerificationFailed",
1991    "inputs": []
1992  },
1993  {
1994    "type": "error",
1995    "name": "BlsKeyAlreadyUsed",
1996    "inputs": []
1997  },
1998  {
1999    "type": "error",
2000    "name": "ERC1967InvalidImplementation",
2001    "inputs": [
2002      {
2003        "name": "implementation",
2004        "type": "address",
2005        "internalType": "address"
2006      }
2007    ]
2008  },
2009  {
2010    "type": "error",
2011    "name": "ERC1967NonPayable",
2012    "inputs": []
2013  },
2014  {
2015    "type": "error",
2016    "name": "ExitEscrowPeriodInvalid",
2017    "inputs": []
2018  },
2019  {
2020    "type": "error",
2021    "name": "FailedInnerCall",
2022    "inputs": []
2023  },
2024  {
2025    "type": "error",
2026    "name": "InsufficientAllowance",
2027    "inputs": [
2028      {
2029        "name": "",
2030        "type": "uint256",
2031        "internalType": "uint256"
2032      },
2033      {
2034        "name": "",
2035        "type": "uint256",
2036        "internalType": "uint256"
2037      }
2038    ]
2039  },
2040  {
2041    "type": "error",
2042    "name": "InsufficientBalance",
2043    "inputs": [
2044      {
2045        "name": "",
2046        "type": "uint256",
2047        "internalType": "uint256"
2048      }
2049    ]
2050  },
2051  {
2052    "type": "error",
2053    "name": "InvalidCommission",
2054    "inputs": []
2055  },
2056  {
2057    "type": "error",
2058    "name": "InvalidInitialization",
2059    "inputs": []
2060  },
2061  {
2062    "type": "error",
2063    "name": "InvalidSchnorrVK",
2064    "inputs": []
2065  },
2066  {
2067    "type": "error",
2068    "name": "NotInitializing",
2069    "inputs": []
2070  },
2071  {
2072    "type": "error",
2073    "name": "NothingToWithdraw",
2074    "inputs": []
2075  },
2076  {
2077    "type": "error",
2078    "name": "OwnableInvalidOwner",
2079    "inputs": [
2080      {
2081        "name": "owner",
2082        "type": "address",
2083        "internalType": "address"
2084      }
2085    ]
2086  },
2087  {
2088    "type": "error",
2089    "name": "OwnableUnauthorizedAccount",
2090    "inputs": [
2091      {
2092        "name": "account",
2093        "type": "address",
2094        "internalType": "address"
2095      }
2096    ]
2097  },
2098  {
2099    "type": "error",
2100    "name": "PrematureWithdrawal",
2101    "inputs": []
2102  },
2103  {
2104    "type": "error",
2105    "name": "UUPSUnauthorizedCallContext",
2106    "inputs": []
2107  },
2108  {
2109    "type": "error",
2110    "name": "UUPSUnsupportedProxiableUUID",
2111    "inputs": [
2112      {
2113        "name": "slot",
2114        "type": "bytes32",
2115        "internalType": "bytes32"
2116      }
2117    ]
2118  },
2119  {
2120    "type": "error",
2121    "name": "UndelegationAlreadyExists",
2122    "inputs": []
2123  },
2124  {
2125    "type": "error",
2126    "name": "ValidatorAlreadyExited",
2127    "inputs": []
2128  },
2129  {
2130    "type": "error",
2131    "name": "ValidatorAlreadyRegistered",
2132    "inputs": []
2133  },
2134  {
2135    "type": "error",
2136    "name": "ValidatorInactive",
2137    "inputs": []
2138  },
2139  {
2140    "type": "error",
2141    "name": "ValidatorNotExited",
2142    "inputs": []
2143  },
2144  {
2145    "type": "error",
2146    "name": "ZeroAddress",
2147    "inputs": []
2148  },
2149  {
2150    "type": "error",
2151    "name": "ZeroAmount",
2152    "inputs": []
2153  }
2154]
2155```*/
2156#[allow(
2157    non_camel_case_types,
2158    non_snake_case,
2159    clippy::pub_underscore_fields,
2160    clippy::style,
2161    clippy::empty_structs_with_brackets
2162)]
2163pub mod StakeTable {
2164    use super::*;
2165    use alloy::sol_types as alloy_sol_types;
2166    /// The creation / init bytecode of the contract.
2167    ///
2168    /// ```text
2169    ///0x60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612ac36101015f395f81816112cb015281816112f401526114380152612ac35ff3fe608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f3660046123c1565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d03660046124e7565b6106d6565b3480156101e0575f5ffd5b506101846101ef366004612545565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b506101846102303660046123c1565b61098a565b61018461024336600461255e565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612603565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d366004612647565b610ce0565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b50610364610341366004612661565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b50610184610393366004612545565b610d3a565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612692565b3480156103e0575f5ffd5b506104036103ef3660046126c7565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c366004612545565b60056020525f908152604090205481565b348015610468575f5ffd5b506101846104773660046126de565b610e4a565b348015610487575f5ffd5b50610208610496366004612661565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc366004612545565b610f76565b3480156104dc575f5ffd5b506105066104eb366004612545565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad92919061273c565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fb3565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d0919061276c565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611034565b6001600160a01b0384165f9081526003602052604081208054859290610641908490612797565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c908490612797565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110d8565b6106e984611125565b6106f285611160565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061072481858861119c565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610ce0565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a0612728565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e6612728565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461094191168483611231565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fb3565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a779084906127aa565b92505081905550604051806040016040528084815260200160085442610a9d9190612797565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af09084906127aa565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112c0565b610b4d82611364565b610b57828261136c565b5050565b5f610b6461142d565b505f516020612a975f395f51905f5290565b33610b8081610fb3565b610b8983611125565b610b9284611160565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc481848761119c565b600160045f610bd288610ce0565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c309291906127bd565b60405180910390a25050505050565b33610c4981610fb3565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b9042612797565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611476565b610cde5f6114d1565b565b5f815f0151826020015183604001518460600151604051602001610d1d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d7f57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dc757604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e0291168383611231565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e3d91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e8f5750825b90505f8267ffffffffffffffff166001148015610eab5750303b155b905081158015610eb9575080155b15610ed75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0157845460ff60401b1916600160401b1785555b610f0a86611541565b610f12611552565b610f1a61155a565b610f25898989611660565b8315610f6b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7e611476565b6001600160a01b038116610fa757604051631e4fbdf760e01b81525f60048201526024016105f9565b610fb0816114d1565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610fe457610fe4612728565b036110025760405163508a793f60e01b815260040160405180910390fd5b600281600281111561101657611016612728565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561108d5750833b153d17155b806110d15760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561110757611107612728565b14610fb05760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526111428282611709565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61116c83610ce0565b815260208101919091526040015f205460ff1615610fb05760405162da8a5760e11b815260040160405180910390fd5b6111a58261172c565b5f604051806060016040528060248152602001612a536024913990505f84826040516020016111d592919061280e565b60405160208183030381529060405290505f6111f0826117c2565b905061120d8185611200886118af565b611208611926565b6119f3565b6112295760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561127b5750823b153d17155b806112ba5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061134657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661133a5f516020612a975f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cde5760405163703e46dd60e11b815260040160405180910390fd5b610fb0611476565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c6575060408051601f3d908101601f191682019092526113c39181019061276c565b60015b6113ee57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a975f395f51905f52811461141e57604051632a87526960e21b8152600481018290526024016105f9565b6114288383611ad1565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cde5760405163703e46dd60e11b815260040160405180910390fd5b336114a87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cde5760405163118cdaa760e01b81523360048201526024016105f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611549611b26565b610fb081611b6f565b610cde611b26565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561159f5750825b90505f8267ffffffffffffffff1660011480156115bb5750303b155b9050811580156115c9575080155b156115e75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561161157845460ff60401b1916600160401b1785555b435f5583156110d157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166116ae5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156117015760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b805182515f91148015611723575081602001518360200151145b90505b92915050565b805160208201515f915f516020612a775f395f51905f5291159015161561175257505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114285760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e7400000000000000000060448201526064016105f9565b604080518082019091525f80825260208201525f6117df83611b77565b90505f516020612a775f395f51905f5260035f82848509905082806118065761180661282a565b848209905082806118195761181961282a565b82820890505f5f61182983611d80565b925090505b806118925784806118415761184161282a565b60018708955084806118555761185561282a565b868709925084806118685761186861282a565b8684099250848061187b5761187b61282a565b848408925061188983611d80565b9250905061182e565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118d6575090565b6040518060400160405280835f015181526020015f516020612a775f395f51905f528460200151611907919061283e565b61191e905f516020612a775f395f51905f526127aa565b905292915050565b61194d60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611ac55760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c6564210000000060448201526064016105f9565b50151595945050505050565b611ada82611e77565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b1e576114288282611eda565b610b57611f4c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610cde57604051631afcd79f60e31b815260040160405180910390fd5b610f7e611b26565b5f5f611b8283611f6b565b805190915060308114611b9757611b9761285d565b5f8167ffffffffffffffff811115611bb157611bb16123e9565b6040519080825280601f01601f191660200182016040528015611bdb576020820181803683370190505b5090505f5b82811015611c4a57836001611bf583866127aa565b611bff91906127aa565b81518110611c0f57611c0f612871565b602001015160f81c60f81b828281518110611c2c57611c2c612871565b60200101906001600160f81b03191690815f1a905350600101611be0565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611cda578381611c8685886127aa565b611c909190612797565b81518110611ca057611ca0612871565b602001015160f81c60f81b60f81c828281518110611cc057611cc0612871565b60ff90921660209283029190910190910152600101611c72565b505f611ce5826122b7565b90506101005f516020612a775f395f51905f525f611d0386896127aa565b90505f5b81811015611d70575f886001611d1d84866127aa565b611d2791906127aa565b81518110611d3757611d37612871565b016020015160f81c90508380611d4f57611d4f61282a565b85870995508380611d6257611d6261282a565b818708955050600101611d07565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020612a775f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611e3d5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c656421000000000060448201526064016105f9565b80600184901b1115611e5657611e5383826127aa565b92505b8080611e6457611e6461282a565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611eac57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a975f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611ef69190612885565b5f60405180830381855af49150503d805f8114611f2e576040519150601f19603f3d011682016040523d82523d5f602084013e611f33565b606091505b5091509150611f4385838361231e565b95945050505050565b3415610cde5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611fab92919061280e565b6040516020818303038152906040529050808460f81b604051602001611fd2929190612890565b604051602081830303815290604052905080604051602001611ff491906128ba565b60408051601f1981840301815290829052915061010160f01b9061201e90839083906020016128d2565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff81111561208e5761208e6123e9565b6040519080825280601f01601f1916602001820160405280156120b8576020820181803683370190505b5090505f826040516020016120cf91815260200190565b60408051601f1981840301815291905290505f5b8151811015612139578181815181106120fe576120fe612871565b602001015160f81c60f81b83828151811061211b5761211b612871565b60200101906001600160f81b03191690815f1a9053506001016120e3565b505f8460405160200161214e91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156121e0575f83828151811061218757612187612871565b602001015160f81c60f81b8383815181106121a4576121a4612871565b602001015160f81c60f81b18905088816040516020016121c59291906128f6565b60408051601f1981840301815291905298505060010161216c565b508688876040516020016121f69392919061291a565b6040516020818303038152906040529650868051906020012093508360405160200161222491815260200190565b60408051601f1981840301815291905291505f5b6122458a60ff8d166127aa565b8110156122a65782818151811061225e5761225e612871565b01602001516001600160f81b03191684612278838d612797565b8151811061228857612288612871565b60200101906001600160f81b03191690815f1a905350600101612238565b50919b9a5050505050505050505050565b5f80805b8351811015612317578381815181106122d6576122d6612871565b602002602001015160ff168160086122ee919061294d565b6122f9906002612a47565b612303919061294d565b61230d9083612797565b91506001016122bb565b5092915050565b6060826123335761232e8261237d565b612376565b815115801561234a57506001600160a01b0384163b155b1561237357604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b80511561238d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146123bc575f5ffd5b919050565b5f5f604083850312156123d2575f5ffd5b6123db836123a6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715612420576124206123e9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561244f5761244f6123e9565b604052919050565b5f60808284031215612467575f5ffd5b6040516080810167ffffffffffffffff8111828210171561248a5761248a6123e9565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156124c8575f5ffd5b6124d06123fd565b823581526020928301359281019290925250919050565b5f5f5f5f61012085870312156124fb575f5ffd5b6125058686612457565b935061251486608087016124b8565b92506125238660c087016124b8565b915061010085013561ffff8116811461253a575f5ffd5b939692955090935050565b5f60208284031215612555575f5ffd5b611723826123a6565b5f5f6040838503121561256f575f5ffd5b612578836123a6565b9150602083013567ffffffffffffffff811115612593575f5ffd5b8301601f810185136125a3575f5ffd5b803567ffffffffffffffff8111156125bd576125bd6123e9565b6125d0601f8201601f1916602001612426565b8181528660208385010111156125e4575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612616575f5ffd5b6126208585612457565b925061262f85608086016124b8565b915061263e8560c086016124b8565b90509250925092565b5f60808284031215612657575f5ffd5b6117238383612457565b5f5f60408385031215612672575f5ffd5b61267b836123a6565b9150612689602084016123a6565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156126d7575f5ffd5b5035919050565b5f5f5f5f608085870312156126f1575f5ffd5b6126fa856123a6565b9350612708602086016123a6565b92506040850135915061271d606086016123a6565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061275f57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6020828403121561277c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561172657611726612783565b8181038181111561172657611726612783565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c08101612376565b5f81518060208401855e5f93019283525090919050565b5f61282261281c83866127f7565b846127f7565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261285857634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f61172382846127f7565b5f61289b82856127f7565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6128c582846127f7565b5f81526001019392505050565b5f6128dd82856127f7565b6001600160f01b03199390931683525050600201919050565b5f61290182856127f7565b6001600160f81b03199390931683525050600101919050565b5f61292582866127f7565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761172657611726612783565b6001815b600184111561299f5780850481111561298357612983612783565b600184161561299157908102905b60019390931c928002612968565b935093915050565b5f826129b557506001611726565b816129c157505f611726565b81600181146129d757600281146129e1576129fd565b6001915050611726565b60ff8411156129f2576129f2612783565b50506001821b611726565b5060208310610133831016604e8410600b8410161715612a20575081810a611726565b612a2c5f198484612964565b805f1904821115612a3f57612a3f612783565b029392505050565b5f61172383836129a756fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2170    /// ```
2171    #[rustfmt::skip]
2172    #[allow(clippy::all)]
2173    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2174        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0)V[a\0$a\0)V[a\0\xDBV[\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\0yW`@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\xD8W\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[`\x80Qa*\xC3a\x01\x01_9_\x81\x81a\x12\xCB\x01R\x81\x81a\x12\xF4\x01Ra\x148\x01Ra*\xC3_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#\xC1V[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$\xE7V[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a%EV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#\xC1V[a\t\x8AV[a\x01\x84a\x02C6`\x04a%^V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a&\x03V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\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\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a&GV[a\x0C\xE0V[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a&aV[`\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\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a%EV[a\r:V[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x92V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&\xC7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a%EV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&\xDEV[a\x0EJV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a&aV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a%EV[a\x0FvV[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a%EV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a'<V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xB3V[3_\x82\x90\x03a\x05^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\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a'lV[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x104V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x97V[\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\x06|\x90\x84\x90a'\x97V[\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\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xD8V[a\x06\xE9\x84a\x11%V[a\x06\xF2\x85a\x11`V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\x9CV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xE0V[\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\x07\xA0Wa\x07\xA0a'(V[\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\x07\xE6Wa\x07\xE6a'(V[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@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\t\x0CW`@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\tA\x91\x16\x84\x83a\x121V[\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\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xB3V[3_\x82\x90\x03a\t\xB5W`@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\t\xF8W`@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\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\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\nw\x90\x84\x90a'\xAAV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x97V[\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\n\xF0\x90\x84\x90a'\xAAV[\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\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xC0V[a\x0BM\x82a\x13dV[a\x0BW\x82\x82a\x13lV[PPV[_a\x0Bda\x14-V[P_Q` a*\x97_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xB3V[a\x0B\x89\x83a\x11%V[a\x0B\x92\x84a\x11`V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\x9CV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xE0V[\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\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'\xBDV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xB3V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x97V[`\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[a\x0C\xD5a\x14vV[a\x0C\xDE_a\x14\xD1V[V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r\x1D\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[`\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\r\x7FW`@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\r\xC7W`@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\x0E\x02\x91\x16\x83\x83a\x121V[\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\x0E=\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x8FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xABWP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB9WP\x80\x15[\x15a\x0E\xD7W`@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\x0F\x01W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\n\x86a\x15AV[a\x0F\x12a\x15RV[a\x0F\x1Aa\x15ZV[a\x0F%\x89\x89\x89a\x16`V[\x83\x15a\x0FkW\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~a\x14vV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xA7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xB0\x81a\x14\xD1V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xE4Wa\x0F\xE4a'(V[\x03a\x10\x02W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10\x16Wa\x10\x16a'(V[\x03a\x0BWW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@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\x10\x8DWP\x83;\x15=\x17\x15[\x80a\x10\xD1W`@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\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x07Wa\x11\x07a'(V[\x14a\x0F\xB0W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11B\x82\x82a\x17\tV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11l\x83a\x0C\xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xB0W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x82a\x17,V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a*S`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xD5\x92\x91\x90a(\x0EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xF0\x82a\x17\xC2V[\x90Pa\x12\r\x81\x85a\x12\0\x88a\x18\xAFV[a\x12\x08a\x19&V[a\x19\xF3V[a\x12)W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@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\x12{WP\x82;\x15=\x17\x15[\x80a\x12\xBAW`@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\x05\xF9V[PPPPV[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\x13FWP\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\x13:_Q` a*\x97_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xB0a\x14vV[\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\x13\xC6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xC3\x91\x81\x01\x90a'lV[`\x01[a\x13\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x97_9_Q\x90_R\x81\x14a\x14\x1EW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x14(\x83\x83a\x1A\xD1V[PPPV[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\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xA8\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\xDEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[\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\x15Ia\x1B&V[a\x0F\xB0\x81a\x1BoV[a\x0C\xDEa\x1B&V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15\x9FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15\xBBWP0;\x15[\x90P\x81\x15\x80\x15a\x15\xC9WP\x80\x15[\x15a\x15\xE7W`@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\x16\x11W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xD1W\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\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\x87W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16\xAEW`@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\x17\x01W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x17#WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a*w_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17RWPPPV[\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\x14(W`@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\x05\xF9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xDF\x83a\x1BwV[\x90P_Q` a*w_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x18\x06Wa\x18\x06a(*V[\x84\x82\t\x90P\x82\x80a\x18\x19Wa\x18\x19a(*V[\x82\x82\x08\x90P__a\x18)\x83a\x1D\x80V[\x92P\x90P[\x80a\x18\x92W\x84\x80a\x18AWa\x18Aa(*V[`\x01\x87\x08\x95P\x84\x80a\x18UWa\x18Ua(*V[\x86\x87\t\x92P\x84\x80a\x18hWa\x18ha(*V[\x86\x84\t\x92P\x84\x80a\x18{Wa\x18{a(*V[\x84\x84\x08\x92Pa\x18\x89\x83a\x1D\x80V[\x92P\x90Pa\x18.V[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\x18\xD6WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a*w_9_Q\x90_R\x84` \x01Qa\x19\x07\x91\x90a(>V[a\x19\x1E\x90_Q` a*w_9_Q\x90_Ra'\xAAV[\x90R\x92\x91PPV[a\x19M`@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\x1A\xC5W`@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\x05\xF9V[P\x15\x15\x95\x94PPPPPV[a\x1A\xDA\x82a\x1EwV[`@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\x1B\x1EWa\x14(\x82\x82a\x1E\xDAV[a\x0BWa\x1FLV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xDEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F~a\x1B&V[__a\x1B\x82\x83a\x1FkV[\x80Q\x90\x91P`0\x81\x14a\x1B\x97Wa\x1B\x97a(]V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\xB1Wa\x1B\xB1a#\xE9V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\xDBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1CJW\x83`\x01a\x1B\xF5\x83\x86a'\xAAV[a\x1B\xFF\x91\x90a'\xAAV[\x81Q\x81\x10a\x1C\x0FWa\x1C\x0Fa(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1C,Wa\x1C,a(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\xE0V[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\x1C\xDAW\x83\x81a\x1C\x86\x85\x88a'\xAAV[a\x1C\x90\x91\x90a'\x97V[\x81Q\x81\x10a\x1C\xA0Wa\x1C\xA0a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1C\xC0Wa\x1C\xC0a(qV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1CrV[P_a\x1C\xE5\x82a\"\xB7V[\x90Pa\x01\0_Q` a*w_9_Q\x90_R_a\x1D\x03\x86\x89a'\xAAV[\x90P_[\x81\x81\x10\x15a\x1DpW_\x88`\x01a\x1D\x1D\x84\x86a'\xAAV[a\x1D'\x91\x90a'\xAAV[\x81Q\x81\x10a\x1D7Wa\x1D7a(qV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1DOWa\x1DOa(*V[\x85\x87\t\x95P\x83\x80a\x1DbWa\x1Dba(*V[\x81\x87\x08\x95PP`\x01\x01a\x1D\x07V[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` a*w_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\x1E=W`@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\x05\xF9V[\x80`\x01\x84\x90\x1B\x11\x15a\x1EVWa\x1ES\x83\x82a'\xAAV[\x92P[\x80\x80a\x1EdWa\x1Eda(*V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\xACW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x97_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\x1E\xF6\x91\x90a(\x85V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1F.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1F3V[``\x91P[P\x91P\x91Pa\x1FC\x85\x83\x83a#\x1EV[\x95\x94PPPPPV[4\x15a\x0C\xDEW`@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\x1F\xAB\x92\x91\x90a(\x0EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1F\xD2\x92\x91\x90a(\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1F\xF4\x91\x90a(\xBAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a \x1E\x90\x83\x90\x83\x90` \x01a(\xD2V[`@\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\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x8EWa \x8Ea#\xE9V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \xB8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a \xCF\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a!9W\x81\x81\x81Q\x81\x10a \xFEWa \xFEa(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a!\x1BWa!\x1Ba(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a \xE3V[P_\x84`@Q` \x01a!N\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!\xE0W_\x83\x82\x81Q\x81\x10a!\x87Wa!\x87a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\xA4Wa!\xA4a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!\xC5\x92\x91\x90a(\xF6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a!lV[P\x86\x88\x87`@Q` \x01a!\xF6\x93\x92\x91\x90a)\x1AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a\"$\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a\"E\x8A`\xFF\x8D\x16a'\xAAV[\x81\x10\x15a\"\xA6W\x82\x81\x81Q\x81\x10a\"^Wa\"^a(qV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a\"x\x83\x8Da'\x97V[\x81Q\x81\x10a\"\x88Wa\"\x88a(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\"8V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a#\x17W\x83\x81\x81Q\x81\x10a\"\xD6Wa\"\xD6a(qV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"\xEE\x91\x90a)MV[a\"\xF9\x90`\x02a*GV[a#\x03\x91\x90a)MV[a#\r\x90\x83a'\x97V[\x91P`\x01\x01a\"\xBBV[P\x92\x91PPV[``\x82a#3Wa#.\x82a#}V[a#vV[\x81Q\x15\x80\x15a#JWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a#sW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x8DW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#\xBCW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#\xD2W__\xFD[a#\xDB\x83a#\xA6V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$ Wa$ a#\xE9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$OWa$Oa#\xE9V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a$gW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x8AWa$\x8Aa#\xE9V[`@\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$\xC8W__\xFD[a$\xD0a#\xFDV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\xFBW__\xFD[a%\x05\x86\x86a$WV[\x93Pa%\x14\x86`\x80\x87\x01a$\xB8V[\x92Pa%#\x86`\xC0\x87\x01a$\xB8V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a%:W__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a%UW__\xFD[a\x17#\x82a#\xA6V[__`@\x83\x85\x03\x12\x15a%oW__\xFD[a%x\x83a#\xA6V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x93W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\xA3W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBDWa%\xBDa#\xE9V[a%\xD0`\x1F\x82\x01`\x1F\x19\x16` \x01a$&V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\xE4W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a&\x16W__\xFD[a& \x85\x85a$WV[\x92Pa&/\x85`\x80\x86\x01a$\xB8V[\x91Pa&>\x85`\xC0\x86\x01a$\xB8V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a&WW__\xFD[a\x17#\x83\x83a$WV[__`@\x83\x85\x03\x12\x15a&rW__\xFD[a&{\x83a#\xA6V[\x91Pa&\x89` \x84\x01a#\xA6V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\xD7W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&\xF1W__\xFD[a&\xFA\x85a#\xA6V[\x93Pa'\x08` \x86\x01a#\xA6V[\x92P`@\x85\x015\x91Pa'\x1D``\x86\x01a#\xA6V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a'_WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'|W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x17&Wa\x17&a'\x83V[\x81\x81\x03\x81\x81\x11\x15a\x17&Wa\x17&a'\x83V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a#vV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a(\"a(\x1C\x83\x86a'\xF7V[\x84a'\xF7V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a(XWcNH{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\x17#\x82\x84a'\xF7V[_a(\x9B\x82\x85a'\xF7V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(\xC5\x82\x84a'\xF7V[_\x81R`\x01\x01\x93\x92PPPV[_a(\xDD\x82\x85a'\xF7V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a)\x01\x82\x85a'\xF7V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a)%\x82\x86a'\xF7V[`\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\x17&Wa\x17&a'\x83V[`\x01\x81[`\x01\x84\x11\x15a)\x9FW\x80\x85\x04\x81\x11\x15a)\x83Wa)\x83a'\x83V[`\x01\x84\x16\x15a)\x91W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a)hV[\x93P\x93\x91PPV[_\x82a)\xB5WP`\x01a\x17&V[\x81a)\xC1WP_a\x17&V[\x81`\x01\x81\x14a)\xD7W`\x02\x81\x14a)\xE1Wa)\xFDV[`\x01\x91PPa\x17&V[`\xFF\x84\x11\x15a)\xF2Wa)\xF2a'\x83V[PP`\x01\x82\x1Ba\x17&V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a* WP\x81\x81\na\x17&V[a*,_\x19\x84\x84a)dV[\x80_\x19\x04\x82\x11\x15a*?Wa*?a'\x83V[\x02\x93\x92PPPV[_a\x17#\x83\x83a)\xA7V\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+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2175    );
2176    /// The runtime bytecode of the contract, as deployed on the network.
2177    ///
2178    /// ```text
2179    ///0x608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f3660046123c1565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d03660046124e7565b6106d6565b3480156101e0575f5ffd5b506101846101ef366004612545565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b506101846102303660046123c1565b61098a565b61018461024336600461255e565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612603565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d366004612647565b610ce0565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b50610364610341366004612661565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b50610184610393366004612545565b610d3a565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612692565b3480156103e0575f5ffd5b506104036103ef3660046126c7565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c366004612545565b60056020525f908152604090205481565b348015610468575f5ffd5b506101846104773660046126de565b610e4a565b348015610487575f5ffd5b50610208610496366004612661565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc366004612545565b610f76565b3480156104dc575f5ffd5b506105066104eb366004612545565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad92919061273c565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fb3565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d0919061276c565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611034565b6001600160a01b0384165f9081526003602052604081208054859290610641908490612797565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c908490612797565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110d8565b6106e984611125565b6106f285611160565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061072481858861119c565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610ce0565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a0612728565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e6612728565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461094191168483611231565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fb3565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a779084906127aa565b92505081905550604051806040016040528084815260200160085442610a9d9190612797565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af09084906127aa565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112c0565b610b4d82611364565b610b57828261136c565b5050565b5f610b6461142d565b505f516020612a975f395f51905f5290565b33610b8081610fb3565b610b8983611125565b610b9284611160565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc481848761119c565b600160045f610bd288610ce0565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c309291906127bd565b60405180910390a25050505050565b33610c4981610fb3565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b9042612797565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611476565b610cde5f6114d1565b565b5f815f0151826020015183604001518460600151604051602001610d1d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d7f57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dc757604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e0291168383611231565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e3d91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e8f5750825b90505f8267ffffffffffffffff166001148015610eab5750303b155b905081158015610eb9575080155b15610ed75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0157845460ff60401b1916600160401b1785555b610f0a86611541565b610f12611552565b610f1a61155a565b610f25898989611660565b8315610f6b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7e611476565b6001600160a01b038116610fa757604051631e4fbdf760e01b81525f60048201526024016105f9565b610fb0816114d1565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610fe457610fe4612728565b036110025760405163508a793f60e01b815260040160405180910390fd5b600281600281111561101657611016612728565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561108d5750833b153d17155b806110d15760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561110757611107612728565b14610fb05760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526111428282611709565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61116c83610ce0565b815260208101919091526040015f205460ff1615610fb05760405162da8a5760e11b815260040160405180910390fd5b6111a58261172c565b5f604051806060016040528060248152602001612a536024913990505f84826040516020016111d592919061280e565b60405160208183030381529060405290505f6111f0826117c2565b905061120d8185611200886118af565b611208611926565b6119f3565b6112295760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561127b5750823b153d17155b806112ba5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061134657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661133a5f516020612a975f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cde5760405163703e46dd60e11b815260040160405180910390fd5b610fb0611476565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c6575060408051601f3d908101601f191682019092526113c39181019061276c565b60015b6113ee57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a975f395f51905f52811461141e57604051632a87526960e21b8152600481018290526024016105f9565b6114288383611ad1565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cde5760405163703e46dd60e11b815260040160405180910390fd5b336114a87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cde5760405163118cdaa760e01b81523360048201526024016105f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611549611b26565b610fb081611b6f565b610cde611b26565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561159f5750825b90505f8267ffffffffffffffff1660011480156115bb5750303b155b9050811580156115c9575080155b156115e75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561161157845460ff60401b1916600160401b1785555b435f5583156110d157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166116ae5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156117015760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b805182515f91148015611723575081602001518360200151145b90505b92915050565b805160208201515f915f516020612a775f395f51905f5291159015161561175257505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114285760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e7400000000000000000060448201526064016105f9565b604080518082019091525f80825260208201525f6117df83611b77565b90505f516020612a775f395f51905f5260035f82848509905082806118065761180661282a565b848209905082806118195761181961282a565b82820890505f5f61182983611d80565b925090505b806118925784806118415761184161282a565b60018708955084806118555761185561282a565b868709925084806118685761186861282a565b8684099250848061187b5761187b61282a565b848408925061188983611d80565b9250905061182e565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118d6575090565b6040518060400160405280835f015181526020015f516020612a775f395f51905f528460200151611907919061283e565b61191e905f516020612a775f395f51905f526127aa565b905292915050565b61194d60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611ac55760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c6564210000000060448201526064016105f9565b50151595945050505050565b611ada82611e77565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b1e576114288282611eda565b610b57611f4c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610cde57604051631afcd79f60e31b815260040160405180910390fd5b610f7e611b26565b5f5f611b8283611f6b565b805190915060308114611b9757611b9761285d565b5f8167ffffffffffffffff811115611bb157611bb16123e9565b6040519080825280601f01601f191660200182016040528015611bdb576020820181803683370190505b5090505f5b82811015611c4a57836001611bf583866127aa565b611bff91906127aa565b81518110611c0f57611c0f612871565b602001015160f81c60f81b828281518110611c2c57611c2c612871565b60200101906001600160f81b03191690815f1a905350600101611be0565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611cda578381611c8685886127aa565b611c909190612797565b81518110611ca057611ca0612871565b602001015160f81c60f81b60f81c828281518110611cc057611cc0612871565b60ff90921660209283029190910190910152600101611c72565b505f611ce5826122b7565b90506101005f516020612a775f395f51905f525f611d0386896127aa565b90505f5b81811015611d70575f886001611d1d84866127aa565b611d2791906127aa565b81518110611d3757611d37612871565b016020015160f81c90508380611d4f57611d4f61282a565b85870995508380611d6257611d6261282a565b818708955050600101611d07565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020612a775f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611e3d5760405162461bcd60e51b815260206004820152601b60248201527f706f7720707265636f6d70696c652063616c6c206661696c656421000000000060448201526064016105f9565b80600184901b1115611e5657611e5383826127aa565b92505b8080611e6457611e6461282a565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611eac57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a975f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611ef69190612885565b5f60405180830381855af49150503d805f8114611f2e576040519150601f19603f3d011682016040523d82523d5f602084013e611f33565b606091505b5091509150611f4385838361231e565b95945050505050565b3415610cde5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611fab92919061280e565b6040516020818303038152906040529050808460f81b604051602001611fd2929190612890565b604051602081830303815290604052905080604051602001611ff491906128ba565b60408051601f1981840301815290829052915061010160f01b9061201e90839083906020016128d2565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff81111561208e5761208e6123e9565b6040519080825280601f01601f1916602001820160405280156120b8576020820181803683370190505b5090505f826040516020016120cf91815260200190565b60408051601f1981840301815291905290505f5b8151811015612139578181815181106120fe576120fe612871565b602001015160f81c60f81b83828151811061211b5761211b612871565b60200101906001600160f81b03191690815f1a9053506001016120e3565b505f8460405160200161214e91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156121e0575f83828151811061218757612187612871565b602001015160f81c60f81b8383815181106121a4576121a4612871565b602001015160f81c60f81b18905088816040516020016121c59291906128f6565b60408051601f1981840301815291905298505060010161216c565b508688876040516020016121f69392919061291a565b6040516020818303038152906040529650868051906020012093508360405160200161222491815260200190565b60408051601f1981840301815291905291505f5b6122458a60ff8d166127aa565b8110156122a65782818151811061225e5761225e612871565b01602001516001600160f81b03191684612278838d612797565b8151811061228857612288612871565b60200101906001600160f81b03191690815f1a905350600101612238565b50919b9a5050505050505050505050565b5f80805b8351811015612317578381815181106122d6576122d6612871565b602002602001015160ff168160086122ee919061294d565b6122f9906002612a47565b612303919061294d565b61230d9083612797565b91506001016122bb565b5092915050565b6060826123335761232e8261237d565b612376565b815115801561234a57506001600160a01b0384163b155b1561237357604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b80511561238d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146123bc575f5ffd5b919050565b5f5f604083850312156123d2575f5ffd5b6123db836123a6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715612420576124206123e9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561244f5761244f6123e9565b604052919050565b5f60808284031215612467575f5ffd5b6040516080810167ffffffffffffffff8111828210171561248a5761248a6123e9565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156124c8575f5ffd5b6124d06123fd565b823581526020928301359281019290925250919050565b5f5f5f5f61012085870312156124fb575f5ffd5b6125058686612457565b935061251486608087016124b8565b92506125238660c087016124b8565b915061010085013561ffff8116811461253a575f5ffd5b939692955090935050565b5f60208284031215612555575f5ffd5b611723826123a6565b5f5f6040838503121561256f575f5ffd5b612578836123a6565b9150602083013567ffffffffffffffff811115612593575f5ffd5b8301601f810185136125a3575f5ffd5b803567ffffffffffffffff8111156125bd576125bd6123e9565b6125d0601f8201601f1916602001612426565b8181528660208385010111156125e4575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612616575f5ffd5b6126208585612457565b925061262f85608086016124b8565b915061263e8560c086016124b8565b90509250925092565b5f60808284031215612657575f5ffd5b6117238383612457565b5f5f60408385031215612672575f5ffd5b61267b836123a6565b9150612689602084016123a6565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156126d7575f5ffd5b5035919050565b5f5f5f5f608085870312156126f1575f5ffd5b6126fa856123a6565b9350612708602086016123a6565b92506040850135915061271d606086016123a6565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061275f57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6020828403121561277c575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561172657611726612783565b8181038181111561172657611726612783565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c08101612376565b5f81518060208401855e5f93019283525090919050565b5f61282261281c83866127f7565b846127f7565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261285857634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f61172382846127f7565b5f61289b82856127f7565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6128c582846127f7565b5f81526001019392505050565b5f6128dd82856127f7565b6001600160f01b03199390931683525050600201919050565b5f61290182856127f7565b6001600160f81b03199390931683525050600101919050565b5f61292582866127f7565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761172657611726612783565b6001815b600184111561299f5780850481111561298357612983612783565b600184161561299157908102905b60019390931c928002612968565b935093915050565b5f826129b557506001611726565b816129c157505f611726565b81600181146129d757600281146129e1576129fd565b6001915050611726565b60ff8411156129f2576129f2612783565b50506001821b611726565b5060208310610133831016604e8410600b8410161715612a20575081810a611726565b612a2c5f198484612964565b805f1904821115612a3f57612a3f612783565b029392505050565b5f61172383836129a756fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2180    /// ```
2181    #[rustfmt::skip]
2182    #[allow(clippy::all)]
2183    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2184        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#\xC1V[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$\xE7V[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a%EV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#\xC1V[a\t\x8AV[a\x01\x84a\x02C6`\x04a%^V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a&\x03V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\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\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a&GV[a\x0C\xE0V[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a&aV[`\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\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a%EV[a\r:V[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x92V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&\xC7V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a%EV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&\xDEV[a\x0EJV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a&aV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a%EV[a\x0FvV[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a%EV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a'<V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xB3V[3_\x82\x90\x03a\x05^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\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a'lV[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x104V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x97V[\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\x06|\x90\x84\x90a'\x97V[\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\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xD8V[a\x06\xE9\x84a\x11%V[a\x06\xF2\x85a\x11`V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\x9CV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xE0V[\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\x07\xA0Wa\x07\xA0a'(V[\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\x07\xE6Wa\x07\xE6a'(V[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@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\t\x0CW`@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\tA\x91\x16\x84\x83a\x121V[\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\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xB3V[3_\x82\x90\x03a\t\xB5W`@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\t\xF8W`@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\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\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\nw\x90\x84\x90a'\xAAV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x97V[\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\n\xF0\x90\x84\x90a'\xAAV[\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\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xC0V[a\x0BM\x82a\x13dV[a\x0BW\x82\x82a\x13lV[PPV[_a\x0Bda\x14-V[P_Q` a*\x97_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xB3V[a\x0B\x89\x83a\x11%V[a\x0B\x92\x84a\x11`V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\x9CV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xE0V[\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\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'\xBDV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xB3V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x97V[`\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[a\x0C\xD5a\x14vV[a\x0C\xDE_a\x14\xD1V[V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r\x1D\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[`\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\r\x7FW`@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\r\xC7W`@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\x0E\x02\x91\x16\x83\x83a\x121V[\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\x0E=\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x8FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xABWP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB9WP\x80\x15[\x15a\x0E\xD7W`@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\x0F\x01W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\n\x86a\x15AV[a\x0F\x12a\x15RV[a\x0F\x1Aa\x15ZV[a\x0F%\x89\x89\x89a\x16`V[\x83\x15a\x0FkW\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~a\x14vV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xA7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xB0\x81a\x14\xD1V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xE4Wa\x0F\xE4a'(V[\x03a\x10\x02W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10\x16Wa\x10\x16a'(V[\x03a\x0BWW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@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\x10\x8DWP\x83;\x15=\x17\x15[\x80a\x10\xD1W`@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\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x07Wa\x11\x07a'(V[\x14a\x0F\xB0W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11B\x82\x82a\x17\tV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11l\x83a\x0C\xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xB0W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x82a\x17,V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a*S`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xD5\x92\x91\x90a(\x0EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xF0\x82a\x17\xC2V[\x90Pa\x12\r\x81\x85a\x12\0\x88a\x18\xAFV[a\x12\x08a\x19&V[a\x19\xF3V[a\x12)W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@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\x12{WP\x82;\x15=\x17\x15[\x80a\x12\xBAW`@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\x05\xF9V[PPPPV[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\x13FWP\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\x13:_Q` a*\x97_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xB0a\x14vV[\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\x13\xC6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xC3\x91\x81\x01\x90a'lV[`\x01[a\x13\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x97_9_Q\x90_R\x81\x14a\x14\x1EW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x14(\x83\x83a\x1A\xD1V[PPPV[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\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xA8\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\xDEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[\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\x15Ia\x1B&V[a\x0F\xB0\x81a\x1BoV[a\x0C\xDEa\x1B&V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15\x9FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15\xBBWP0;\x15[\x90P\x81\x15\x80\x15a\x15\xC9WP\x80\x15[\x15a\x15\xE7W`@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\x16\x11W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xD1W\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\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16\x87W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16\xAEW`@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\x17\x01W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x17#WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a*w_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17RWPPPV[\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\x14(W`@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\x05\xF9V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xDF\x83a\x1BwV[\x90P_Q` a*w_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x18\x06Wa\x18\x06a(*V[\x84\x82\t\x90P\x82\x80a\x18\x19Wa\x18\x19a(*V[\x82\x82\x08\x90P__a\x18)\x83a\x1D\x80V[\x92P\x90P[\x80a\x18\x92W\x84\x80a\x18AWa\x18Aa(*V[`\x01\x87\x08\x95P\x84\x80a\x18UWa\x18Ua(*V[\x86\x87\t\x92P\x84\x80a\x18hWa\x18ha(*V[\x86\x84\t\x92P\x84\x80a\x18{Wa\x18{a(*V[\x84\x84\x08\x92Pa\x18\x89\x83a\x1D\x80V[\x92P\x90Pa\x18.V[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\x18\xD6WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a*w_9_Q\x90_R\x84` \x01Qa\x19\x07\x91\x90a(>V[a\x19\x1E\x90_Q` a*w_9_Q\x90_Ra'\xAAV[\x90R\x92\x91PPV[a\x19M`@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\x1A\xC5W`@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\x05\xF9V[P\x15\x15\x95\x94PPPPPV[a\x1A\xDA\x82a\x1EwV[`@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\x1B\x1EWa\x14(\x82\x82a\x1E\xDAV[a\x0BWa\x1FLV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xDEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F~a\x1B&V[__a\x1B\x82\x83a\x1FkV[\x80Q\x90\x91P`0\x81\x14a\x1B\x97Wa\x1B\x97a(]V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\xB1Wa\x1B\xB1a#\xE9V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\xDBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1CJW\x83`\x01a\x1B\xF5\x83\x86a'\xAAV[a\x1B\xFF\x91\x90a'\xAAV[\x81Q\x81\x10a\x1C\x0FWa\x1C\x0Fa(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1C,Wa\x1C,a(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\xE0V[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\x1C\xDAW\x83\x81a\x1C\x86\x85\x88a'\xAAV[a\x1C\x90\x91\x90a'\x97V[\x81Q\x81\x10a\x1C\xA0Wa\x1C\xA0a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1C\xC0Wa\x1C\xC0a(qV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1CrV[P_a\x1C\xE5\x82a\"\xB7V[\x90Pa\x01\0_Q` a*w_9_Q\x90_R_a\x1D\x03\x86\x89a'\xAAV[\x90P_[\x81\x81\x10\x15a\x1DpW_\x88`\x01a\x1D\x1D\x84\x86a'\xAAV[a\x1D'\x91\x90a'\xAAV[\x81Q\x81\x10a\x1D7Wa\x1D7a(qV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1DOWa\x1DOa(*V[\x85\x87\t\x95P\x83\x80a\x1DbWa\x1Dba(*V[\x81\x87\x08\x95PP`\x01\x01a\x1D\x07V[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` a*w_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\x1E=W`@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\x05\xF9V[\x80`\x01\x84\x90\x1B\x11\x15a\x1EVWa\x1ES\x83\x82a'\xAAV[\x92P[\x80\x80a\x1EdWa\x1Eda(*V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\xACW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x97_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\x1E\xF6\x91\x90a(\x85V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1F.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1F3V[``\x91P[P\x91P\x91Pa\x1FC\x85\x83\x83a#\x1EV[\x95\x94PPPPPV[4\x15a\x0C\xDEW`@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\x1F\xAB\x92\x91\x90a(\x0EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1F\xD2\x92\x91\x90a(\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1F\xF4\x91\x90a(\xBAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a \x1E\x90\x83\x90\x83\x90` \x01a(\xD2V[`@\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\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x8EWa \x8Ea#\xE9V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \xB8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a \xCF\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a!9W\x81\x81\x81Q\x81\x10a \xFEWa \xFEa(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a!\x1BWa!\x1Ba(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a \xE3V[P_\x84`@Q` \x01a!N\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!\xE0W_\x83\x82\x81Q\x81\x10a!\x87Wa!\x87a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\xA4Wa!\xA4a(qV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!\xC5\x92\x91\x90a(\xF6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a!lV[P\x86\x88\x87`@Q` \x01a!\xF6\x93\x92\x91\x90a)\x1AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a\"$\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a\"E\x8A`\xFF\x8D\x16a'\xAAV[\x81\x10\x15a\"\xA6W\x82\x81\x81Q\x81\x10a\"^Wa\"^a(qV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a\"x\x83\x8Da'\x97V[\x81Q\x81\x10a\"\x88Wa\"\x88a(qV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\"8V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a#\x17W\x83\x81\x81Q\x81\x10a\"\xD6Wa\"\xD6a(qV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"\xEE\x91\x90a)MV[a\"\xF9\x90`\x02a*GV[a#\x03\x91\x90a)MV[a#\r\x90\x83a'\x97V[\x91P`\x01\x01a\"\xBBV[P\x92\x91PPV[``\x82a#3Wa#.\x82a#}V[a#vV[\x81Q\x15\x80\x15a#JWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a#sW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x8DW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#\xBCW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#\xD2W__\xFD[a#\xDB\x83a#\xA6V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$ Wa$ a#\xE9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$OWa$Oa#\xE9V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a$gW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x8AWa$\x8Aa#\xE9V[`@\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$\xC8W__\xFD[a$\xD0a#\xFDV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\xFBW__\xFD[a%\x05\x86\x86a$WV[\x93Pa%\x14\x86`\x80\x87\x01a$\xB8V[\x92Pa%#\x86`\xC0\x87\x01a$\xB8V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a%:W__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a%UW__\xFD[a\x17#\x82a#\xA6V[__`@\x83\x85\x03\x12\x15a%oW__\xFD[a%x\x83a#\xA6V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x93W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\xA3W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBDWa%\xBDa#\xE9V[a%\xD0`\x1F\x82\x01`\x1F\x19\x16` \x01a$&V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\xE4W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a&\x16W__\xFD[a& \x85\x85a$WV[\x92Pa&/\x85`\x80\x86\x01a$\xB8V[\x91Pa&>\x85`\xC0\x86\x01a$\xB8V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a&WW__\xFD[a\x17#\x83\x83a$WV[__`@\x83\x85\x03\x12\x15a&rW__\xFD[a&{\x83a#\xA6V[\x91Pa&\x89` \x84\x01a#\xA6V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\xD7W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&\xF1W__\xFD[a&\xFA\x85a#\xA6V[\x93Pa'\x08` \x86\x01a#\xA6V[\x92P`@\x85\x015\x91Pa'\x1D``\x86\x01a#\xA6V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a'_WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'|W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x17&Wa\x17&a'\x83V[\x81\x81\x03\x81\x81\x11\x15a\x17&Wa\x17&a'\x83V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a#vV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a(\"a(\x1C\x83\x86a'\xF7V[\x84a'\xF7V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a(XWcNH{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\x17#\x82\x84a'\xF7V[_a(\x9B\x82\x85a'\xF7V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(\xC5\x82\x84a'\xF7V[_\x81R`\x01\x01\x93\x92PPPV[_a(\xDD\x82\x85a'\xF7V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a)\x01\x82\x85a'\xF7V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a)%\x82\x86a'\xF7V[`\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\x17&Wa\x17&a'\x83V[`\x01\x81[`\x01\x84\x11\x15a)\x9FW\x80\x85\x04\x81\x11\x15a)\x83Wa)\x83a'\x83V[`\x01\x84\x16\x15a)\x91W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a)hV[\x93P\x93\x91PPV[_\x82a)\xB5WP`\x01a\x17&V[\x81a)\xC1WP_a\x17&V[\x81`\x01\x81\x14a)\xD7W`\x02\x81\x14a)\xE1Wa)\xFDV[`\x01\x91PPa\x17&V[`\xFF\x84\x11\x15a)\xF2Wa)\xF2a'\x83V[PP`\x01\x82\x1Ba\x17&V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a* WP\x81\x81\na\x17&V[a*,_\x19\x84\x84a)dV[\x80_\x19\x04\x82\x11\x15a*?Wa*?a'\x83V[\x02\x93\x92PPPV[_a\x17#\x83\x83a)\xA7V\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+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2185    );
2186    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2187    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2188    #[derive(Clone)]
2189    pub struct ValidatorStatus(u8);
2190    const _: () = {
2191        use alloy::sol_types as alloy_sol_types;
2192        #[automatically_derived]
2193        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
2194            #[inline]
2195            fn stv_to_tokens(
2196                &self,
2197            ) -> <alloy::sol_types::sol_data::Uint<
2198                8,
2199            > as alloy_sol_types::SolType>::Token<'_> {
2200                alloy_sol_types::private::SolTypeValue::<
2201                    alloy::sol_types::sol_data::Uint<8>,
2202                >::stv_to_tokens(self)
2203            }
2204            #[inline]
2205            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2206                <alloy::sol_types::sol_data::Uint<
2207                    8,
2208                > as alloy_sol_types::SolType>::tokenize(self)
2209                    .0
2210            }
2211            #[inline]
2212            fn stv_abi_encode_packed_to(
2213                &self,
2214                out: &mut alloy_sol_types::private::Vec<u8>,
2215            ) {
2216                <alloy::sol_types::sol_data::Uint<
2217                    8,
2218                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
2219            }
2220            #[inline]
2221            fn stv_abi_packed_encoded_size(&self) -> usize {
2222                <alloy::sol_types::sol_data::Uint<
2223                    8,
2224                > as alloy_sol_types::SolType>::abi_encoded_size(self)
2225            }
2226        }
2227        #[automatically_derived]
2228        impl ValidatorStatus {
2229            /// The Solidity type name.
2230            pub const NAME: &'static str = stringify!(@ name);
2231            /// Convert from the underlying value type.
2232            #[inline]
2233            pub const fn from(value: u8) -> Self {
2234                Self(value)
2235            }
2236            /// Return the underlying value.
2237            #[inline]
2238            pub const fn into(self) -> u8 {
2239                self.0
2240            }
2241            /// Return the single encoding of this value, delegating to the
2242            /// underlying type.
2243            #[inline]
2244            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
2245                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
2246            }
2247            /// Return the packed encoding of this value, delegating to the
2248            /// underlying type.
2249            #[inline]
2250            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
2251                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
2252            }
2253        }
2254        #[automatically_derived]
2255        impl alloy_sol_types::SolType for ValidatorStatus {
2256            type RustType = u8;
2257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
2258                8,
2259            > as alloy_sol_types::SolType>::Token<'a>;
2260            const SOL_NAME: &'static str = Self::NAME;
2261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2262                8,
2263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2265                8,
2266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2267            #[inline]
2268            fn valid_token(token: &Self::Token<'_>) -> bool {
2269                Self::type_check(token).is_ok()
2270            }
2271            #[inline]
2272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
2273                <alloy::sol_types::sol_data::Uint<
2274                    8,
2275                > as alloy_sol_types::SolType>::type_check(token)
2276            }
2277            #[inline]
2278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2279                <alloy::sol_types::sol_data::Uint<
2280                    8,
2281                > as alloy_sol_types::SolType>::detokenize(token)
2282            }
2283        }
2284        #[automatically_derived]
2285        impl alloy_sol_types::EventTopic for ValidatorStatus {
2286            #[inline]
2287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2288                <alloy::sol_types::sol_data::Uint<
2289                    8,
2290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
2291            }
2292            #[inline]
2293            fn encode_topic_preimage(
2294                rust: &Self::RustType,
2295                out: &mut alloy_sol_types::private::Vec<u8>,
2296            ) {
2297                <alloy::sol_types::sol_data::Uint<
2298                    8,
2299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
2300            }
2301            #[inline]
2302            fn encode_topic(
2303                rust: &Self::RustType,
2304            ) -> alloy_sol_types::abi::token::WordToken {
2305                <alloy::sol_types::sol_data::Uint<
2306                    8,
2307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
2308            }
2309        }
2310    };
2311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2312    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
2313```solidity
2314error AddressEmptyCode(address target);
2315```*/
2316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2317    #[derive(Clone)]
2318    pub struct AddressEmptyCode {
2319        #[allow(missing_docs)]
2320        pub target: alloy::sol_types::private::Address,
2321    }
2322    #[allow(
2323        non_camel_case_types,
2324        non_snake_case,
2325        clippy::pub_underscore_fields,
2326        clippy::style
2327    )]
2328    const _: () = {
2329        use alloy::sol_types as alloy_sol_types;
2330        #[doc(hidden)]
2331        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2332        #[doc(hidden)]
2333        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2334        #[cfg(test)]
2335        #[allow(dead_code, unreachable_patterns)]
2336        fn _type_assertion(
2337            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2338        ) {
2339            match _t {
2340                alloy_sol_types::private::AssertTypeEq::<
2341                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2342                >(_) => {}
2343            }
2344        }
2345        #[automatically_derived]
2346        #[doc(hidden)]
2347        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
2348            fn from(value: AddressEmptyCode) -> Self {
2349                (value.target,)
2350            }
2351        }
2352        #[automatically_derived]
2353        #[doc(hidden)]
2354        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
2355            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2356                Self { target: tuple.0 }
2357            }
2358        }
2359        #[automatically_derived]
2360        impl alloy_sol_types::SolError for AddressEmptyCode {
2361            type Parameters<'a> = UnderlyingSolTuple<'a>;
2362            type Token<'a> = <Self::Parameters<
2363                'a,
2364            > as alloy_sol_types::SolType>::Token<'a>;
2365            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
2366            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
2367            #[inline]
2368            fn new<'a>(
2369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2370            ) -> Self {
2371                tuple.into()
2372            }
2373            #[inline]
2374            fn tokenize(&self) -> Self::Token<'_> {
2375                (
2376                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2377                        &self.target,
2378                    ),
2379                )
2380            }
2381        }
2382    };
2383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2384    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
2385```solidity
2386error BLSSigVerificationFailed();
2387```*/
2388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2389    #[derive(Clone)]
2390    pub struct BLSSigVerificationFailed {}
2391    #[allow(
2392        non_camel_case_types,
2393        non_snake_case,
2394        clippy::pub_underscore_fields,
2395        clippy::style
2396    )]
2397    const _: () = {
2398        use alloy::sol_types as alloy_sol_types;
2399        #[doc(hidden)]
2400        type UnderlyingSolTuple<'a> = ();
2401        #[doc(hidden)]
2402        type UnderlyingRustTuple<'a> = ();
2403        #[cfg(test)]
2404        #[allow(dead_code, unreachable_patterns)]
2405        fn _type_assertion(
2406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2407        ) {
2408            match _t {
2409                alloy_sol_types::private::AssertTypeEq::<
2410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2411                >(_) => {}
2412            }
2413        }
2414        #[automatically_derived]
2415        #[doc(hidden)]
2416        impl ::core::convert::From<BLSSigVerificationFailed>
2417        for UnderlyingRustTuple<'_> {
2418            fn from(value: BLSSigVerificationFailed) -> Self {
2419                ()
2420            }
2421        }
2422        #[automatically_derived]
2423        #[doc(hidden)]
2424        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2425        for BLSSigVerificationFailed {
2426            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2427                Self {}
2428            }
2429        }
2430        #[automatically_derived]
2431        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
2432            type Parameters<'a> = UnderlyingSolTuple<'a>;
2433            type Token<'a> = <Self::Parameters<
2434                'a,
2435            > as alloy_sol_types::SolType>::Token<'a>;
2436            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
2437            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
2438            #[inline]
2439            fn new<'a>(
2440                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2441            ) -> Self {
2442                tuple.into()
2443            }
2444            #[inline]
2445            fn tokenize(&self) -> Self::Token<'_> {
2446                ()
2447            }
2448        }
2449    };
2450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2451    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
2452```solidity
2453error BlsKeyAlreadyUsed();
2454```*/
2455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2456    #[derive(Clone)]
2457    pub struct BlsKeyAlreadyUsed {}
2458    #[allow(
2459        non_camel_case_types,
2460        non_snake_case,
2461        clippy::pub_underscore_fields,
2462        clippy::style
2463    )]
2464    const _: () = {
2465        use alloy::sol_types as alloy_sol_types;
2466        #[doc(hidden)]
2467        type UnderlyingSolTuple<'a> = ();
2468        #[doc(hidden)]
2469        type UnderlyingRustTuple<'a> = ();
2470        #[cfg(test)]
2471        #[allow(dead_code, unreachable_patterns)]
2472        fn _type_assertion(
2473            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2474        ) {
2475            match _t {
2476                alloy_sol_types::private::AssertTypeEq::<
2477                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2478                >(_) => {}
2479            }
2480        }
2481        #[automatically_derived]
2482        #[doc(hidden)]
2483        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
2484            fn from(value: BlsKeyAlreadyUsed) -> Self {
2485                ()
2486            }
2487        }
2488        #[automatically_derived]
2489        #[doc(hidden)]
2490        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
2491            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2492                Self {}
2493            }
2494        }
2495        #[automatically_derived]
2496        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
2497            type Parameters<'a> = UnderlyingSolTuple<'a>;
2498            type Token<'a> = <Self::Parameters<
2499                'a,
2500            > as alloy_sol_types::SolType>::Token<'a>;
2501            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
2502            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
2503            #[inline]
2504            fn new<'a>(
2505                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2506            ) -> Self {
2507                tuple.into()
2508            }
2509            #[inline]
2510            fn tokenize(&self) -> Self::Token<'_> {
2511                ()
2512            }
2513        }
2514    };
2515    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2516    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
2517```solidity
2518error ERC1967InvalidImplementation(address implementation);
2519```*/
2520    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2521    #[derive(Clone)]
2522    pub struct ERC1967InvalidImplementation {
2523        #[allow(missing_docs)]
2524        pub implementation: alloy::sol_types::private::Address,
2525    }
2526    #[allow(
2527        non_camel_case_types,
2528        non_snake_case,
2529        clippy::pub_underscore_fields,
2530        clippy::style
2531    )]
2532    const _: () = {
2533        use alloy::sol_types as alloy_sol_types;
2534        #[doc(hidden)]
2535        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2536        #[doc(hidden)]
2537        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2538        #[cfg(test)]
2539        #[allow(dead_code, unreachable_patterns)]
2540        fn _type_assertion(
2541            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2542        ) {
2543            match _t {
2544                alloy_sol_types::private::AssertTypeEq::<
2545                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2546                >(_) => {}
2547            }
2548        }
2549        #[automatically_derived]
2550        #[doc(hidden)]
2551        impl ::core::convert::From<ERC1967InvalidImplementation>
2552        for UnderlyingRustTuple<'_> {
2553            fn from(value: ERC1967InvalidImplementation) -> Self {
2554                (value.implementation,)
2555            }
2556        }
2557        #[automatically_derived]
2558        #[doc(hidden)]
2559        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2560        for ERC1967InvalidImplementation {
2561            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2562                Self { implementation: tuple.0 }
2563            }
2564        }
2565        #[automatically_derived]
2566        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
2567            type Parameters<'a> = UnderlyingSolTuple<'a>;
2568            type Token<'a> = <Self::Parameters<
2569                'a,
2570            > as alloy_sol_types::SolType>::Token<'a>;
2571            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
2572            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
2573            #[inline]
2574            fn new<'a>(
2575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2576            ) -> Self {
2577                tuple.into()
2578            }
2579            #[inline]
2580            fn tokenize(&self) -> Self::Token<'_> {
2581                (
2582                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2583                        &self.implementation,
2584                    ),
2585                )
2586            }
2587        }
2588    };
2589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2590    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
2591```solidity
2592error ERC1967NonPayable();
2593```*/
2594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2595    #[derive(Clone)]
2596    pub struct ERC1967NonPayable {}
2597    #[allow(
2598        non_camel_case_types,
2599        non_snake_case,
2600        clippy::pub_underscore_fields,
2601        clippy::style
2602    )]
2603    const _: () = {
2604        use alloy::sol_types as alloy_sol_types;
2605        #[doc(hidden)]
2606        type UnderlyingSolTuple<'a> = ();
2607        #[doc(hidden)]
2608        type UnderlyingRustTuple<'a> = ();
2609        #[cfg(test)]
2610        #[allow(dead_code, unreachable_patterns)]
2611        fn _type_assertion(
2612            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2613        ) {
2614            match _t {
2615                alloy_sol_types::private::AssertTypeEq::<
2616                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2617                >(_) => {}
2618            }
2619        }
2620        #[automatically_derived]
2621        #[doc(hidden)]
2622        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
2623            fn from(value: ERC1967NonPayable) -> Self {
2624                ()
2625            }
2626        }
2627        #[automatically_derived]
2628        #[doc(hidden)]
2629        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
2630            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2631                Self {}
2632            }
2633        }
2634        #[automatically_derived]
2635        impl alloy_sol_types::SolError for ERC1967NonPayable {
2636            type Parameters<'a> = UnderlyingSolTuple<'a>;
2637            type Token<'a> = <Self::Parameters<
2638                'a,
2639            > as alloy_sol_types::SolType>::Token<'a>;
2640            const SIGNATURE: &'static str = "ERC1967NonPayable()";
2641            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
2642            #[inline]
2643            fn new<'a>(
2644                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2645            ) -> Self {
2646                tuple.into()
2647            }
2648            #[inline]
2649            fn tokenize(&self) -> Self::Token<'_> {
2650                ()
2651            }
2652        }
2653    };
2654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2655    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
2656```solidity
2657error ExitEscrowPeriodInvalid();
2658```*/
2659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2660    #[derive(Clone)]
2661    pub struct ExitEscrowPeriodInvalid {}
2662    #[allow(
2663        non_camel_case_types,
2664        non_snake_case,
2665        clippy::pub_underscore_fields,
2666        clippy::style
2667    )]
2668    const _: () = {
2669        use alloy::sol_types as alloy_sol_types;
2670        #[doc(hidden)]
2671        type UnderlyingSolTuple<'a> = ();
2672        #[doc(hidden)]
2673        type UnderlyingRustTuple<'a> = ();
2674        #[cfg(test)]
2675        #[allow(dead_code, unreachable_patterns)]
2676        fn _type_assertion(
2677            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2678        ) {
2679            match _t {
2680                alloy_sol_types::private::AssertTypeEq::<
2681                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2682                >(_) => {}
2683            }
2684        }
2685        #[automatically_derived]
2686        #[doc(hidden)]
2687        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
2688            fn from(value: ExitEscrowPeriodInvalid) -> Self {
2689                ()
2690            }
2691        }
2692        #[automatically_derived]
2693        #[doc(hidden)]
2694        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
2695            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2696                Self {}
2697            }
2698        }
2699        #[automatically_derived]
2700        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
2701            type Parameters<'a> = UnderlyingSolTuple<'a>;
2702            type Token<'a> = <Self::Parameters<
2703                'a,
2704            > as alloy_sol_types::SolType>::Token<'a>;
2705            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
2706            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
2707            #[inline]
2708            fn new<'a>(
2709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2710            ) -> Self {
2711                tuple.into()
2712            }
2713            #[inline]
2714            fn tokenize(&self) -> Self::Token<'_> {
2715                ()
2716            }
2717        }
2718    };
2719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2720    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
2721```solidity
2722error FailedInnerCall();
2723```*/
2724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2725    #[derive(Clone)]
2726    pub struct FailedInnerCall {}
2727    #[allow(
2728        non_camel_case_types,
2729        non_snake_case,
2730        clippy::pub_underscore_fields,
2731        clippy::style
2732    )]
2733    const _: () = {
2734        use alloy::sol_types as alloy_sol_types;
2735        #[doc(hidden)]
2736        type UnderlyingSolTuple<'a> = ();
2737        #[doc(hidden)]
2738        type UnderlyingRustTuple<'a> = ();
2739        #[cfg(test)]
2740        #[allow(dead_code, unreachable_patterns)]
2741        fn _type_assertion(
2742            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2743        ) {
2744            match _t {
2745                alloy_sol_types::private::AssertTypeEq::<
2746                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2747                >(_) => {}
2748            }
2749        }
2750        #[automatically_derived]
2751        #[doc(hidden)]
2752        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
2753            fn from(value: FailedInnerCall) -> Self {
2754                ()
2755            }
2756        }
2757        #[automatically_derived]
2758        #[doc(hidden)]
2759        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
2760            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2761                Self {}
2762            }
2763        }
2764        #[automatically_derived]
2765        impl alloy_sol_types::SolError for FailedInnerCall {
2766            type Parameters<'a> = UnderlyingSolTuple<'a>;
2767            type Token<'a> = <Self::Parameters<
2768                'a,
2769            > as alloy_sol_types::SolType>::Token<'a>;
2770            const SIGNATURE: &'static str = "FailedInnerCall()";
2771            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
2772            #[inline]
2773            fn new<'a>(
2774                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2775            ) -> Self {
2776                tuple.into()
2777            }
2778            #[inline]
2779            fn tokenize(&self) -> Self::Token<'_> {
2780                ()
2781            }
2782        }
2783    };
2784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2785    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
2786```solidity
2787error InsufficientAllowance(uint256, uint256);
2788```*/
2789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2790    #[derive(Clone)]
2791    pub struct InsufficientAllowance {
2792        #[allow(missing_docs)]
2793        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2794        #[allow(missing_docs)]
2795        pub _1: alloy::sol_types::private::primitives::aliases::U256,
2796    }
2797    #[allow(
2798        non_camel_case_types,
2799        non_snake_case,
2800        clippy::pub_underscore_fields,
2801        clippy::style
2802    )]
2803    const _: () = {
2804        use alloy::sol_types as alloy_sol_types;
2805        #[doc(hidden)]
2806        type UnderlyingSolTuple<'a> = (
2807            alloy::sol_types::sol_data::Uint<256>,
2808            alloy::sol_types::sol_data::Uint<256>,
2809        );
2810        #[doc(hidden)]
2811        type UnderlyingRustTuple<'a> = (
2812            alloy::sol_types::private::primitives::aliases::U256,
2813            alloy::sol_types::private::primitives::aliases::U256,
2814        );
2815        #[cfg(test)]
2816        #[allow(dead_code, unreachable_patterns)]
2817        fn _type_assertion(
2818            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2819        ) {
2820            match _t {
2821                alloy_sol_types::private::AssertTypeEq::<
2822                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2823                >(_) => {}
2824            }
2825        }
2826        #[automatically_derived]
2827        #[doc(hidden)]
2828        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
2829            fn from(value: InsufficientAllowance) -> Self {
2830                (value._0, value._1)
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self { _0: tuple.0, _1: tuple.1 }
2838            }
2839        }
2840        #[automatically_derived]
2841        impl alloy_sol_types::SolError for InsufficientAllowance {
2842            type Parameters<'a> = UnderlyingSolTuple<'a>;
2843            type Token<'a> = <Self::Parameters<
2844                'a,
2845            > as alloy_sol_types::SolType>::Token<'a>;
2846            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
2847            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
2848            #[inline]
2849            fn new<'a>(
2850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2851            ) -> Self {
2852                tuple.into()
2853            }
2854            #[inline]
2855            fn tokenize(&self) -> Self::Token<'_> {
2856                (
2857                    <alloy::sol_types::sol_data::Uint<
2858                        256,
2859                    > as alloy_sol_types::SolType>::tokenize(&self._0),
2860                    <alloy::sol_types::sol_data::Uint<
2861                        256,
2862                    > as alloy_sol_types::SolType>::tokenize(&self._1),
2863                )
2864            }
2865        }
2866    };
2867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2868    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
2869```solidity
2870error InsufficientBalance(uint256);
2871```*/
2872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2873    #[derive(Clone)]
2874    pub struct InsufficientBalance {
2875        #[allow(missing_docs)]
2876        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2877    }
2878    #[allow(
2879        non_camel_case_types,
2880        non_snake_case,
2881        clippy::pub_underscore_fields,
2882        clippy::style
2883    )]
2884    const _: () = {
2885        use alloy::sol_types as alloy_sol_types;
2886        #[doc(hidden)]
2887        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
2888        #[doc(hidden)]
2889        type UnderlyingRustTuple<'a> = (
2890            alloy::sol_types::private::primitives::aliases::U256,
2891        );
2892        #[cfg(test)]
2893        #[allow(dead_code, unreachable_patterns)]
2894        fn _type_assertion(
2895            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2896        ) {
2897            match _t {
2898                alloy_sol_types::private::AssertTypeEq::<
2899                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2900                >(_) => {}
2901            }
2902        }
2903        #[automatically_derived]
2904        #[doc(hidden)]
2905        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
2906            fn from(value: InsufficientBalance) -> Self {
2907                (value._0,)
2908            }
2909        }
2910        #[automatically_derived]
2911        #[doc(hidden)]
2912        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
2913            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2914                Self { _0: tuple.0 }
2915            }
2916        }
2917        #[automatically_derived]
2918        impl alloy_sol_types::SolError for InsufficientBalance {
2919            type Parameters<'a> = UnderlyingSolTuple<'a>;
2920            type Token<'a> = <Self::Parameters<
2921                'a,
2922            > as alloy_sol_types::SolType>::Token<'a>;
2923            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
2924            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
2925            #[inline]
2926            fn new<'a>(
2927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2928            ) -> Self {
2929                tuple.into()
2930            }
2931            #[inline]
2932            fn tokenize(&self) -> Self::Token<'_> {
2933                (
2934                    <alloy::sol_types::sol_data::Uint<
2935                        256,
2936                    > as alloy_sol_types::SolType>::tokenize(&self._0),
2937                )
2938            }
2939        }
2940    };
2941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2942    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
2943```solidity
2944error InvalidCommission();
2945```*/
2946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2947    #[derive(Clone)]
2948    pub struct InvalidCommission {}
2949    #[allow(
2950        non_camel_case_types,
2951        non_snake_case,
2952        clippy::pub_underscore_fields,
2953        clippy::style
2954    )]
2955    const _: () = {
2956        use alloy::sol_types as alloy_sol_types;
2957        #[doc(hidden)]
2958        type UnderlyingSolTuple<'a> = ();
2959        #[doc(hidden)]
2960        type UnderlyingRustTuple<'a> = ();
2961        #[cfg(test)]
2962        #[allow(dead_code, unreachable_patterns)]
2963        fn _type_assertion(
2964            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2965        ) {
2966            match _t {
2967                alloy_sol_types::private::AssertTypeEq::<
2968                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2969                >(_) => {}
2970            }
2971        }
2972        #[automatically_derived]
2973        #[doc(hidden)]
2974        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
2975            fn from(value: InvalidCommission) -> Self {
2976                ()
2977            }
2978        }
2979        #[automatically_derived]
2980        #[doc(hidden)]
2981        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
2982            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2983                Self {}
2984            }
2985        }
2986        #[automatically_derived]
2987        impl alloy_sol_types::SolError for InvalidCommission {
2988            type Parameters<'a> = UnderlyingSolTuple<'a>;
2989            type Token<'a> = <Self::Parameters<
2990                'a,
2991            > as alloy_sol_types::SolType>::Token<'a>;
2992            const SIGNATURE: &'static str = "InvalidCommission()";
2993            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
2994            #[inline]
2995            fn new<'a>(
2996                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2997            ) -> Self {
2998                tuple.into()
2999            }
3000            #[inline]
3001            fn tokenize(&self) -> Self::Token<'_> {
3002                ()
3003            }
3004        }
3005    };
3006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3007    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
3008```solidity
3009error InvalidInitialization();
3010```*/
3011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3012    #[derive(Clone)]
3013    pub struct InvalidInitialization {}
3014    #[allow(
3015        non_camel_case_types,
3016        non_snake_case,
3017        clippy::pub_underscore_fields,
3018        clippy::style
3019    )]
3020    const _: () = {
3021        use alloy::sol_types as alloy_sol_types;
3022        #[doc(hidden)]
3023        type UnderlyingSolTuple<'a> = ();
3024        #[doc(hidden)]
3025        type UnderlyingRustTuple<'a> = ();
3026        #[cfg(test)]
3027        #[allow(dead_code, unreachable_patterns)]
3028        fn _type_assertion(
3029            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3030        ) {
3031            match _t {
3032                alloy_sol_types::private::AssertTypeEq::<
3033                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3034                >(_) => {}
3035            }
3036        }
3037        #[automatically_derived]
3038        #[doc(hidden)]
3039        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
3040            fn from(value: InvalidInitialization) -> Self {
3041                ()
3042            }
3043        }
3044        #[automatically_derived]
3045        #[doc(hidden)]
3046        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
3047            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3048                Self {}
3049            }
3050        }
3051        #[automatically_derived]
3052        impl alloy_sol_types::SolError for InvalidInitialization {
3053            type Parameters<'a> = UnderlyingSolTuple<'a>;
3054            type Token<'a> = <Self::Parameters<
3055                'a,
3056            > as alloy_sol_types::SolType>::Token<'a>;
3057            const SIGNATURE: &'static str = "InvalidInitialization()";
3058            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
3059            #[inline]
3060            fn new<'a>(
3061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3062            ) -> Self {
3063                tuple.into()
3064            }
3065            #[inline]
3066            fn tokenize(&self) -> Self::Token<'_> {
3067                ()
3068            }
3069        }
3070    };
3071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3072    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
3073```solidity
3074error InvalidSchnorrVK();
3075```*/
3076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3077    #[derive(Clone)]
3078    pub struct InvalidSchnorrVK {}
3079    #[allow(
3080        non_camel_case_types,
3081        non_snake_case,
3082        clippy::pub_underscore_fields,
3083        clippy::style
3084    )]
3085    const _: () = {
3086        use alloy::sol_types as alloy_sol_types;
3087        #[doc(hidden)]
3088        type UnderlyingSolTuple<'a> = ();
3089        #[doc(hidden)]
3090        type UnderlyingRustTuple<'a> = ();
3091        #[cfg(test)]
3092        #[allow(dead_code, unreachable_patterns)]
3093        fn _type_assertion(
3094            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3095        ) {
3096            match _t {
3097                alloy_sol_types::private::AssertTypeEq::<
3098                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3099                >(_) => {}
3100            }
3101        }
3102        #[automatically_derived]
3103        #[doc(hidden)]
3104        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
3105            fn from(value: InvalidSchnorrVK) -> Self {
3106                ()
3107            }
3108        }
3109        #[automatically_derived]
3110        #[doc(hidden)]
3111        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
3112            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3113                Self {}
3114            }
3115        }
3116        #[automatically_derived]
3117        impl alloy_sol_types::SolError for InvalidSchnorrVK {
3118            type Parameters<'a> = UnderlyingSolTuple<'a>;
3119            type Token<'a> = <Self::Parameters<
3120                'a,
3121            > as alloy_sol_types::SolType>::Token<'a>;
3122            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
3123            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
3124            #[inline]
3125            fn new<'a>(
3126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3127            ) -> Self {
3128                tuple.into()
3129            }
3130            #[inline]
3131            fn tokenize(&self) -> Self::Token<'_> {
3132                ()
3133            }
3134        }
3135    };
3136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3137    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
3138```solidity
3139error NotInitializing();
3140```*/
3141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3142    #[derive(Clone)]
3143    pub struct NotInitializing {}
3144    #[allow(
3145        non_camel_case_types,
3146        non_snake_case,
3147        clippy::pub_underscore_fields,
3148        clippy::style
3149    )]
3150    const _: () = {
3151        use alloy::sol_types as alloy_sol_types;
3152        #[doc(hidden)]
3153        type UnderlyingSolTuple<'a> = ();
3154        #[doc(hidden)]
3155        type UnderlyingRustTuple<'a> = ();
3156        #[cfg(test)]
3157        #[allow(dead_code, unreachable_patterns)]
3158        fn _type_assertion(
3159            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3160        ) {
3161            match _t {
3162                alloy_sol_types::private::AssertTypeEq::<
3163                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3164                >(_) => {}
3165            }
3166        }
3167        #[automatically_derived]
3168        #[doc(hidden)]
3169        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
3170            fn from(value: NotInitializing) -> Self {
3171                ()
3172            }
3173        }
3174        #[automatically_derived]
3175        #[doc(hidden)]
3176        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
3177            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3178                Self {}
3179            }
3180        }
3181        #[automatically_derived]
3182        impl alloy_sol_types::SolError for NotInitializing {
3183            type Parameters<'a> = UnderlyingSolTuple<'a>;
3184            type Token<'a> = <Self::Parameters<
3185                'a,
3186            > as alloy_sol_types::SolType>::Token<'a>;
3187            const SIGNATURE: &'static str = "NotInitializing()";
3188            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
3189            #[inline]
3190            fn new<'a>(
3191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3192            ) -> Self {
3193                tuple.into()
3194            }
3195            #[inline]
3196            fn tokenize(&self) -> Self::Token<'_> {
3197                ()
3198            }
3199        }
3200    };
3201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3202    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
3203```solidity
3204error NothingToWithdraw();
3205```*/
3206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3207    #[derive(Clone)]
3208    pub struct NothingToWithdraw {}
3209    #[allow(
3210        non_camel_case_types,
3211        non_snake_case,
3212        clippy::pub_underscore_fields,
3213        clippy::style
3214    )]
3215    const _: () = {
3216        use alloy::sol_types as alloy_sol_types;
3217        #[doc(hidden)]
3218        type UnderlyingSolTuple<'a> = ();
3219        #[doc(hidden)]
3220        type UnderlyingRustTuple<'a> = ();
3221        #[cfg(test)]
3222        #[allow(dead_code, unreachable_patterns)]
3223        fn _type_assertion(
3224            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3225        ) {
3226            match _t {
3227                alloy_sol_types::private::AssertTypeEq::<
3228                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3229                >(_) => {}
3230            }
3231        }
3232        #[automatically_derived]
3233        #[doc(hidden)]
3234        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
3235            fn from(value: NothingToWithdraw) -> Self {
3236                ()
3237            }
3238        }
3239        #[automatically_derived]
3240        #[doc(hidden)]
3241        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
3242            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3243                Self {}
3244            }
3245        }
3246        #[automatically_derived]
3247        impl alloy_sol_types::SolError for NothingToWithdraw {
3248            type Parameters<'a> = UnderlyingSolTuple<'a>;
3249            type Token<'a> = <Self::Parameters<
3250                'a,
3251            > as alloy_sol_types::SolType>::Token<'a>;
3252            const SIGNATURE: &'static str = "NothingToWithdraw()";
3253            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
3254            #[inline]
3255            fn new<'a>(
3256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3257            ) -> Self {
3258                tuple.into()
3259            }
3260            #[inline]
3261            fn tokenize(&self) -> Self::Token<'_> {
3262                ()
3263            }
3264        }
3265    };
3266    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3267    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
3268```solidity
3269error OwnableInvalidOwner(address owner);
3270```*/
3271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3272    #[derive(Clone)]
3273    pub struct OwnableInvalidOwner {
3274        #[allow(missing_docs)]
3275        pub owner: alloy::sol_types::private::Address,
3276    }
3277    #[allow(
3278        non_camel_case_types,
3279        non_snake_case,
3280        clippy::pub_underscore_fields,
3281        clippy::style
3282    )]
3283    const _: () = {
3284        use alloy::sol_types as alloy_sol_types;
3285        #[doc(hidden)]
3286        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3287        #[doc(hidden)]
3288        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3289        #[cfg(test)]
3290        #[allow(dead_code, unreachable_patterns)]
3291        fn _type_assertion(
3292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3293        ) {
3294            match _t {
3295                alloy_sol_types::private::AssertTypeEq::<
3296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3297                >(_) => {}
3298            }
3299        }
3300        #[automatically_derived]
3301        #[doc(hidden)]
3302        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
3303            fn from(value: OwnableInvalidOwner) -> Self {
3304                (value.owner,)
3305            }
3306        }
3307        #[automatically_derived]
3308        #[doc(hidden)]
3309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
3310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3311                Self { owner: tuple.0 }
3312            }
3313        }
3314        #[automatically_derived]
3315        impl alloy_sol_types::SolError for OwnableInvalidOwner {
3316            type Parameters<'a> = UnderlyingSolTuple<'a>;
3317            type Token<'a> = <Self::Parameters<
3318                'a,
3319            > as alloy_sol_types::SolType>::Token<'a>;
3320            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
3321            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
3322            #[inline]
3323            fn new<'a>(
3324                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3325            ) -> Self {
3326                tuple.into()
3327            }
3328            #[inline]
3329            fn tokenize(&self) -> Self::Token<'_> {
3330                (
3331                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3332                        &self.owner,
3333                    ),
3334                )
3335            }
3336        }
3337    };
3338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3339    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
3340```solidity
3341error OwnableUnauthorizedAccount(address account);
3342```*/
3343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3344    #[derive(Clone)]
3345    pub struct OwnableUnauthorizedAccount {
3346        #[allow(missing_docs)]
3347        pub account: alloy::sol_types::private::Address,
3348    }
3349    #[allow(
3350        non_camel_case_types,
3351        non_snake_case,
3352        clippy::pub_underscore_fields,
3353        clippy::style
3354    )]
3355    const _: () = {
3356        use alloy::sol_types as alloy_sol_types;
3357        #[doc(hidden)]
3358        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3359        #[doc(hidden)]
3360        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3361        #[cfg(test)]
3362        #[allow(dead_code, unreachable_patterns)]
3363        fn _type_assertion(
3364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3365        ) {
3366            match _t {
3367                alloy_sol_types::private::AssertTypeEq::<
3368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3369                >(_) => {}
3370            }
3371        }
3372        #[automatically_derived]
3373        #[doc(hidden)]
3374        impl ::core::convert::From<OwnableUnauthorizedAccount>
3375        for UnderlyingRustTuple<'_> {
3376            fn from(value: OwnableUnauthorizedAccount) -> Self {
3377                (value.account,)
3378            }
3379        }
3380        #[automatically_derived]
3381        #[doc(hidden)]
3382        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3383        for OwnableUnauthorizedAccount {
3384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3385                Self { account: tuple.0 }
3386            }
3387        }
3388        #[automatically_derived]
3389        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
3390            type Parameters<'a> = UnderlyingSolTuple<'a>;
3391            type Token<'a> = <Self::Parameters<
3392                'a,
3393            > as alloy_sol_types::SolType>::Token<'a>;
3394            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
3395            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
3396            #[inline]
3397            fn new<'a>(
3398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3399            ) -> Self {
3400                tuple.into()
3401            }
3402            #[inline]
3403            fn tokenize(&self) -> Self::Token<'_> {
3404                (
3405                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3406                        &self.account,
3407                    ),
3408                )
3409            }
3410        }
3411    };
3412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3413    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
3414```solidity
3415error PrematureWithdrawal();
3416```*/
3417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3418    #[derive(Clone)]
3419    pub struct PrematureWithdrawal {}
3420    #[allow(
3421        non_camel_case_types,
3422        non_snake_case,
3423        clippy::pub_underscore_fields,
3424        clippy::style
3425    )]
3426    const _: () = {
3427        use alloy::sol_types as alloy_sol_types;
3428        #[doc(hidden)]
3429        type UnderlyingSolTuple<'a> = ();
3430        #[doc(hidden)]
3431        type UnderlyingRustTuple<'a> = ();
3432        #[cfg(test)]
3433        #[allow(dead_code, unreachable_patterns)]
3434        fn _type_assertion(
3435            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3436        ) {
3437            match _t {
3438                alloy_sol_types::private::AssertTypeEq::<
3439                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3440                >(_) => {}
3441            }
3442        }
3443        #[automatically_derived]
3444        #[doc(hidden)]
3445        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
3446            fn from(value: PrematureWithdrawal) -> Self {
3447                ()
3448            }
3449        }
3450        #[automatically_derived]
3451        #[doc(hidden)]
3452        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
3453            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3454                Self {}
3455            }
3456        }
3457        #[automatically_derived]
3458        impl alloy_sol_types::SolError for PrematureWithdrawal {
3459            type Parameters<'a> = UnderlyingSolTuple<'a>;
3460            type Token<'a> = <Self::Parameters<
3461                'a,
3462            > as alloy_sol_types::SolType>::Token<'a>;
3463            const SIGNATURE: &'static str = "PrematureWithdrawal()";
3464            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
3465            #[inline]
3466            fn new<'a>(
3467                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3468            ) -> Self {
3469                tuple.into()
3470            }
3471            #[inline]
3472            fn tokenize(&self) -> Self::Token<'_> {
3473                ()
3474            }
3475        }
3476    };
3477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3478    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
3479```solidity
3480error UUPSUnauthorizedCallContext();
3481```*/
3482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3483    #[derive(Clone)]
3484    pub struct UUPSUnauthorizedCallContext {}
3485    #[allow(
3486        non_camel_case_types,
3487        non_snake_case,
3488        clippy::pub_underscore_fields,
3489        clippy::style
3490    )]
3491    const _: () = {
3492        use alloy::sol_types as alloy_sol_types;
3493        #[doc(hidden)]
3494        type UnderlyingSolTuple<'a> = ();
3495        #[doc(hidden)]
3496        type UnderlyingRustTuple<'a> = ();
3497        #[cfg(test)]
3498        #[allow(dead_code, unreachable_patterns)]
3499        fn _type_assertion(
3500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3501        ) {
3502            match _t {
3503                alloy_sol_types::private::AssertTypeEq::<
3504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3505                >(_) => {}
3506            }
3507        }
3508        #[automatically_derived]
3509        #[doc(hidden)]
3510        impl ::core::convert::From<UUPSUnauthorizedCallContext>
3511        for UnderlyingRustTuple<'_> {
3512            fn from(value: UUPSUnauthorizedCallContext) -> Self {
3513                ()
3514            }
3515        }
3516        #[automatically_derived]
3517        #[doc(hidden)]
3518        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3519        for UUPSUnauthorizedCallContext {
3520            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3521                Self {}
3522            }
3523        }
3524        #[automatically_derived]
3525        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
3526            type Parameters<'a> = UnderlyingSolTuple<'a>;
3527            type Token<'a> = <Self::Parameters<
3528                'a,
3529            > as alloy_sol_types::SolType>::Token<'a>;
3530            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
3531            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
3532            #[inline]
3533            fn new<'a>(
3534                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3535            ) -> Self {
3536                tuple.into()
3537            }
3538            #[inline]
3539            fn tokenize(&self) -> Self::Token<'_> {
3540                ()
3541            }
3542        }
3543    };
3544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3545    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
3546```solidity
3547error UUPSUnsupportedProxiableUUID(bytes32 slot);
3548```*/
3549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3550    #[derive(Clone)]
3551    pub struct UUPSUnsupportedProxiableUUID {
3552        #[allow(missing_docs)]
3553        pub slot: alloy::sol_types::private::FixedBytes<32>,
3554    }
3555    #[allow(
3556        non_camel_case_types,
3557        non_snake_case,
3558        clippy::pub_underscore_fields,
3559        clippy::style
3560    )]
3561    const _: () = {
3562        use alloy::sol_types as alloy_sol_types;
3563        #[doc(hidden)]
3564        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3565        #[doc(hidden)]
3566        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3567        #[cfg(test)]
3568        #[allow(dead_code, unreachable_patterns)]
3569        fn _type_assertion(
3570            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3571        ) {
3572            match _t {
3573                alloy_sol_types::private::AssertTypeEq::<
3574                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3575                >(_) => {}
3576            }
3577        }
3578        #[automatically_derived]
3579        #[doc(hidden)]
3580        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
3581        for UnderlyingRustTuple<'_> {
3582            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
3583                (value.slot,)
3584            }
3585        }
3586        #[automatically_derived]
3587        #[doc(hidden)]
3588        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3589        for UUPSUnsupportedProxiableUUID {
3590            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3591                Self { slot: tuple.0 }
3592            }
3593        }
3594        #[automatically_derived]
3595        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
3596            type Parameters<'a> = UnderlyingSolTuple<'a>;
3597            type Token<'a> = <Self::Parameters<
3598                'a,
3599            > as alloy_sol_types::SolType>::Token<'a>;
3600            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
3601            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
3602            #[inline]
3603            fn new<'a>(
3604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3605            ) -> Self {
3606                tuple.into()
3607            }
3608            #[inline]
3609            fn tokenize(&self) -> Self::Token<'_> {
3610                (
3611                    <alloy::sol_types::sol_data::FixedBytes<
3612                        32,
3613                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
3614                )
3615            }
3616        }
3617    };
3618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3619    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
3620```solidity
3621error UndelegationAlreadyExists();
3622```*/
3623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3624    #[derive(Clone)]
3625    pub struct UndelegationAlreadyExists {}
3626    #[allow(
3627        non_camel_case_types,
3628        non_snake_case,
3629        clippy::pub_underscore_fields,
3630        clippy::style
3631    )]
3632    const _: () = {
3633        use alloy::sol_types as alloy_sol_types;
3634        #[doc(hidden)]
3635        type UnderlyingSolTuple<'a> = ();
3636        #[doc(hidden)]
3637        type UnderlyingRustTuple<'a> = ();
3638        #[cfg(test)]
3639        #[allow(dead_code, unreachable_patterns)]
3640        fn _type_assertion(
3641            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3642        ) {
3643            match _t {
3644                alloy_sol_types::private::AssertTypeEq::<
3645                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3646                >(_) => {}
3647            }
3648        }
3649        #[automatically_derived]
3650        #[doc(hidden)]
3651        impl ::core::convert::From<UndelegationAlreadyExists>
3652        for UnderlyingRustTuple<'_> {
3653            fn from(value: UndelegationAlreadyExists) -> Self {
3654                ()
3655            }
3656        }
3657        #[automatically_derived]
3658        #[doc(hidden)]
3659        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3660        for UndelegationAlreadyExists {
3661            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3662                Self {}
3663            }
3664        }
3665        #[automatically_derived]
3666        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
3667            type Parameters<'a> = UnderlyingSolTuple<'a>;
3668            type Token<'a> = <Self::Parameters<
3669                'a,
3670            > as alloy_sol_types::SolType>::Token<'a>;
3671            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
3672            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
3673            #[inline]
3674            fn new<'a>(
3675                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3676            ) -> Self {
3677                tuple.into()
3678            }
3679            #[inline]
3680            fn tokenize(&self) -> Self::Token<'_> {
3681                ()
3682            }
3683        }
3684    };
3685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3686    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
3687```solidity
3688error ValidatorAlreadyExited();
3689```*/
3690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3691    #[derive(Clone)]
3692    pub struct ValidatorAlreadyExited {}
3693    #[allow(
3694        non_camel_case_types,
3695        non_snake_case,
3696        clippy::pub_underscore_fields,
3697        clippy::style
3698    )]
3699    const _: () = {
3700        use alloy::sol_types as alloy_sol_types;
3701        #[doc(hidden)]
3702        type UnderlyingSolTuple<'a> = ();
3703        #[doc(hidden)]
3704        type UnderlyingRustTuple<'a> = ();
3705        #[cfg(test)]
3706        #[allow(dead_code, unreachable_patterns)]
3707        fn _type_assertion(
3708            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3709        ) {
3710            match _t {
3711                alloy_sol_types::private::AssertTypeEq::<
3712                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3713                >(_) => {}
3714            }
3715        }
3716        #[automatically_derived]
3717        #[doc(hidden)]
3718        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
3719            fn from(value: ValidatorAlreadyExited) -> Self {
3720                ()
3721            }
3722        }
3723        #[automatically_derived]
3724        #[doc(hidden)]
3725        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
3726            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3727                Self {}
3728            }
3729        }
3730        #[automatically_derived]
3731        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
3732            type Parameters<'a> = UnderlyingSolTuple<'a>;
3733            type Token<'a> = <Self::Parameters<
3734                'a,
3735            > as alloy_sol_types::SolType>::Token<'a>;
3736            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
3737            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
3738            #[inline]
3739            fn new<'a>(
3740                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3741            ) -> Self {
3742                tuple.into()
3743            }
3744            #[inline]
3745            fn tokenize(&self) -> Self::Token<'_> {
3746                ()
3747            }
3748        }
3749    };
3750    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3751    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
3752```solidity
3753error ValidatorAlreadyRegistered();
3754```*/
3755    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3756    #[derive(Clone)]
3757    pub struct ValidatorAlreadyRegistered {}
3758    #[allow(
3759        non_camel_case_types,
3760        non_snake_case,
3761        clippy::pub_underscore_fields,
3762        clippy::style
3763    )]
3764    const _: () = {
3765        use alloy::sol_types as alloy_sol_types;
3766        #[doc(hidden)]
3767        type UnderlyingSolTuple<'a> = ();
3768        #[doc(hidden)]
3769        type UnderlyingRustTuple<'a> = ();
3770        #[cfg(test)]
3771        #[allow(dead_code, unreachable_patterns)]
3772        fn _type_assertion(
3773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3774        ) {
3775            match _t {
3776                alloy_sol_types::private::AssertTypeEq::<
3777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3778                >(_) => {}
3779            }
3780        }
3781        #[automatically_derived]
3782        #[doc(hidden)]
3783        impl ::core::convert::From<ValidatorAlreadyRegistered>
3784        for UnderlyingRustTuple<'_> {
3785            fn from(value: ValidatorAlreadyRegistered) -> Self {
3786                ()
3787            }
3788        }
3789        #[automatically_derived]
3790        #[doc(hidden)]
3791        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3792        for ValidatorAlreadyRegistered {
3793            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3794                Self {}
3795            }
3796        }
3797        #[automatically_derived]
3798        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
3799            type Parameters<'a> = UnderlyingSolTuple<'a>;
3800            type Token<'a> = <Self::Parameters<
3801                'a,
3802            > as alloy_sol_types::SolType>::Token<'a>;
3803            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
3804            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
3805            #[inline]
3806            fn new<'a>(
3807                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3808            ) -> Self {
3809                tuple.into()
3810            }
3811            #[inline]
3812            fn tokenize(&self) -> Self::Token<'_> {
3813                ()
3814            }
3815        }
3816    };
3817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3818    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
3819```solidity
3820error ValidatorInactive();
3821```*/
3822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3823    #[derive(Clone)]
3824    pub struct ValidatorInactive {}
3825    #[allow(
3826        non_camel_case_types,
3827        non_snake_case,
3828        clippy::pub_underscore_fields,
3829        clippy::style
3830    )]
3831    const _: () = {
3832        use alloy::sol_types as alloy_sol_types;
3833        #[doc(hidden)]
3834        type UnderlyingSolTuple<'a> = ();
3835        #[doc(hidden)]
3836        type UnderlyingRustTuple<'a> = ();
3837        #[cfg(test)]
3838        #[allow(dead_code, unreachable_patterns)]
3839        fn _type_assertion(
3840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3841        ) {
3842            match _t {
3843                alloy_sol_types::private::AssertTypeEq::<
3844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3845                >(_) => {}
3846            }
3847        }
3848        #[automatically_derived]
3849        #[doc(hidden)]
3850        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
3851            fn from(value: ValidatorInactive) -> Self {
3852                ()
3853            }
3854        }
3855        #[automatically_derived]
3856        #[doc(hidden)]
3857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
3858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3859                Self {}
3860            }
3861        }
3862        #[automatically_derived]
3863        impl alloy_sol_types::SolError for ValidatorInactive {
3864            type Parameters<'a> = UnderlyingSolTuple<'a>;
3865            type Token<'a> = <Self::Parameters<
3866                'a,
3867            > as alloy_sol_types::SolType>::Token<'a>;
3868            const SIGNATURE: &'static str = "ValidatorInactive()";
3869            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
3870            #[inline]
3871            fn new<'a>(
3872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3873            ) -> Self {
3874                tuple.into()
3875            }
3876            #[inline]
3877            fn tokenize(&self) -> Self::Token<'_> {
3878                ()
3879            }
3880        }
3881    };
3882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3883    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
3884```solidity
3885error ValidatorNotExited();
3886```*/
3887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3888    #[derive(Clone)]
3889    pub struct ValidatorNotExited {}
3890    #[allow(
3891        non_camel_case_types,
3892        non_snake_case,
3893        clippy::pub_underscore_fields,
3894        clippy::style
3895    )]
3896    const _: () = {
3897        use alloy::sol_types as alloy_sol_types;
3898        #[doc(hidden)]
3899        type UnderlyingSolTuple<'a> = ();
3900        #[doc(hidden)]
3901        type UnderlyingRustTuple<'a> = ();
3902        #[cfg(test)]
3903        #[allow(dead_code, unreachable_patterns)]
3904        fn _type_assertion(
3905            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3906        ) {
3907            match _t {
3908                alloy_sol_types::private::AssertTypeEq::<
3909                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3910                >(_) => {}
3911            }
3912        }
3913        #[automatically_derived]
3914        #[doc(hidden)]
3915        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
3916            fn from(value: ValidatorNotExited) -> Self {
3917                ()
3918            }
3919        }
3920        #[automatically_derived]
3921        #[doc(hidden)]
3922        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
3923            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3924                Self {}
3925            }
3926        }
3927        #[automatically_derived]
3928        impl alloy_sol_types::SolError for ValidatorNotExited {
3929            type Parameters<'a> = UnderlyingSolTuple<'a>;
3930            type Token<'a> = <Self::Parameters<
3931                'a,
3932            > as alloy_sol_types::SolType>::Token<'a>;
3933            const SIGNATURE: &'static str = "ValidatorNotExited()";
3934            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
3935            #[inline]
3936            fn new<'a>(
3937                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3938            ) -> Self {
3939                tuple.into()
3940            }
3941            #[inline]
3942            fn tokenize(&self) -> Self::Token<'_> {
3943                ()
3944            }
3945        }
3946    };
3947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3948    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
3949```solidity
3950error ZeroAddress();
3951```*/
3952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3953    #[derive(Clone)]
3954    pub struct ZeroAddress {}
3955    #[allow(
3956        non_camel_case_types,
3957        non_snake_case,
3958        clippy::pub_underscore_fields,
3959        clippy::style
3960    )]
3961    const _: () = {
3962        use alloy::sol_types as alloy_sol_types;
3963        #[doc(hidden)]
3964        type UnderlyingSolTuple<'a> = ();
3965        #[doc(hidden)]
3966        type UnderlyingRustTuple<'a> = ();
3967        #[cfg(test)]
3968        #[allow(dead_code, unreachable_patterns)]
3969        fn _type_assertion(
3970            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3971        ) {
3972            match _t {
3973                alloy_sol_types::private::AssertTypeEq::<
3974                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3975                >(_) => {}
3976            }
3977        }
3978        #[automatically_derived]
3979        #[doc(hidden)]
3980        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
3981            fn from(value: ZeroAddress) -> Self {
3982                ()
3983            }
3984        }
3985        #[automatically_derived]
3986        #[doc(hidden)]
3987        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
3988            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3989                Self {}
3990            }
3991        }
3992        #[automatically_derived]
3993        impl alloy_sol_types::SolError for ZeroAddress {
3994            type Parameters<'a> = UnderlyingSolTuple<'a>;
3995            type Token<'a> = <Self::Parameters<
3996                'a,
3997            > as alloy_sol_types::SolType>::Token<'a>;
3998            const SIGNATURE: &'static str = "ZeroAddress()";
3999            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4000            #[inline]
4001            fn new<'a>(
4002                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4003            ) -> Self {
4004                tuple.into()
4005            }
4006            #[inline]
4007            fn tokenize(&self) -> Self::Token<'_> {
4008                ()
4009            }
4010        }
4011    };
4012    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4013    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
4014```solidity
4015error ZeroAmount();
4016```*/
4017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4018    #[derive(Clone)]
4019    pub struct ZeroAmount {}
4020    #[allow(
4021        non_camel_case_types,
4022        non_snake_case,
4023        clippy::pub_underscore_fields,
4024        clippy::style
4025    )]
4026    const _: () = {
4027        use alloy::sol_types as alloy_sol_types;
4028        #[doc(hidden)]
4029        type UnderlyingSolTuple<'a> = ();
4030        #[doc(hidden)]
4031        type UnderlyingRustTuple<'a> = ();
4032        #[cfg(test)]
4033        #[allow(dead_code, unreachable_patterns)]
4034        fn _type_assertion(
4035            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4036        ) {
4037            match _t {
4038                alloy_sol_types::private::AssertTypeEq::<
4039                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4040                >(_) => {}
4041            }
4042        }
4043        #[automatically_derived]
4044        #[doc(hidden)]
4045        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
4046            fn from(value: ZeroAmount) -> Self {
4047                ()
4048            }
4049        }
4050        #[automatically_derived]
4051        #[doc(hidden)]
4052        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
4053            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4054                Self {}
4055            }
4056        }
4057        #[automatically_derived]
4058        impl alloy_sol_types::SolError for ZeroAmount {
4059            type Parameters<'a> = UnderlyingSolTuple<'a>;
4060            type Token<'a> = <Self::Parameters<
4061                'a,
4062            > as alloy_sol_types::SolType>::Token<'a>;
4063            const SIGNATURE: &'static str = "ZeroAmount()";
4064            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
4065            #[inline]
4066            fn new<'a>(
4067                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4068            ) -> Self {
4069                tuple.into()
4070            }
4071            #[inline]
4072            fn tokenize(&self) -> Self::Token<'_> {
4073                ()
4074            }
4075        }
4076    };
4077    #[derive()]
4078    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
4079```solidity
4080event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
4081```*/
4082    #[allow(
4083        non_camel_case_types,
4084        non_snake_case,
4085        clippy::pub_underscore_fields,
4086        clippy::style
4087    )]
4088    #[derive(Clone)]
4089    pub struct ConsensusKeysUpdated {
4090        #[allow(missing_docs)]
4091        pub account: alloy::sol_types::private::Address,
4092        #[allow(missing_docs)]
4093        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4094        #[allow(missing_docs)]
4095        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4096    }
4097    #[allow(
4098        non_camel_case_types,
4099        non_snake_case,
4100        clippy::pub_underscore_fields,
4101        clippy::style
4102    )]
4103    const _: () = {
4104        use alloy::sol_types as alloy_sol_types;
4105        #[automatically_derived]
4106        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
4107            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
4108            type DataToken<'a> = <Self::DataTuple<
4109                'a,
4110            > as alloy_sol_types::SolType>::Token<'a>;
4111            type TopicList = (
4112                alloy_sol_types::sol_data::FixedBytes<32>,
4113                alloy::sol_types::sol_data::Address,
4114            );
4115            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
4116            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4117                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
4118                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
4119                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
4120            ]);
4121            const ANONYMOUS: bool = false;
4122            #[allow(unused_variables)]
4123            #[inline]
4124            fn new(
4125                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4126                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4127            ) -> Self {
4128                Self {
4129                    account: topics.1,
4130                    blsVK: data.0,
4131                    schnorrVK: data.1,
4132                }
4133            }
4134            #[inline]
4135            fn check_signature(
4136                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4137            ) -> alloy_sol_types::Result<()> {
4138                if topics.0 != Self::SIGNATURE_HASH {
4139                    return Err(
4140                        alloy_sol_types::Error::invalid_event_signature_hash(
4141                            Self::SIGNATURE,
4142                            topics.0,
4143                            Self::SIGNATURE_HASH,
4144                        ),
4145                    );
4146                }
4147                Ok(())
4148            }
4149            #[inline]
4150            fn tokenize_body(&self) -> Self::DataToken<'_> {
4151                (
4152                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
4153                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4154                        &self.schnorrVK,
4155                    ),
4156                )
4157            }
4158            #[inline]
4159            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4160                (Self::SIGNATURE_HASH.into(), self.account.clone())
4161            }
4162            #[inline]
4163            fn encode_topics_raw(
4164                &self,
4165                out: &mut [alloy_sol_types::abi::token::WordToken],
4166            ) -> alloy_sol_types::Result<()> {
4167                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4168                    return Err(alloy_sol_types::Error::Overrun);
4169                }
4170                out[0usize] = alloy_sol_types::abi::token::WordToken(
4171                    Self::SIGNATURE_HASH,
4172                );
4173                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4174                    &self.account,
4175                );
4176                Ok(())
4177            }
4178        }
4179        #[automatically_derived]
4180        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
4181            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4182                From::from(self)
4183            }
4184            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4185                From::from(&self)
4186            }
4187        }
4188        #[automatically_derived]
4189        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
4190            #[inline]
4191            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
4192                alloy_sol_types::SolEvent::encode_log_data(this)
4193            }
4194        }
4195    };
4196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4197    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
4198```solidity
4199event Delegated(address indexed delegator, address indexed validator, uint256 amount);
4200```*/
4201    #[allow(
4202        non_camel_case_types,
4203        non_snake_case,
4204        clippy::pub_underscore_fields,
4205        clippy::style
4206    )]
4207    #[derive(Clone)]
4208    pub struct Delegated {
4209        #[allow(missing_docs)]
4210        pub delegator: alloy::sol_types::private::Address,
4211        #[allow(missing_docs)]
4212        pub validator: alloy::sol_types::private::Address,
4213        #[allow(missing_docs)]
4214        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4215    }
4216    #[allow(
4217        non_camel_case_types,
4218        non_snake_case,
4219        clippy::pub_underscore_fields,
4220        clippy::style
4221    )]
4222    const _: () = {
4223        use alloy::sol_types as alloy_sol_types;
4224        #[automatically_derived]
4225        impl alloy_sol_types::SolEvent for Delegated {
4226            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4227            type DataToken<'a> = <Self::DataTuple<
4228                'a,
4229            > as alloy_sol_types::SolType>::Token<'a>;
4230            type TopicList = (
4231                alloy_sol_types::sol_data::FixedBytes<32>,
4232                alloy::sol_types::sol_data::Address,
4233                alloy::sol_types::sol_data::Address,
4234            );
4235            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
4236            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4237                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
4238                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
4239                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
4240            ]);
4241            const ANONYMOUS: bool = false;
4242            #[allow(unused_variables)]
4243            #[inline]
4244            fn new(
4245                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4246                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4247            ) -> Self {
4248                Self {
4249                    delegator: topics.1,
4250                    validator: topics.2,
4251                    amount: data.0,
4252                }
4253            }
4254            #[inline]
4255            fn check_signature(
4256                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4257            ) -> alloy_sol_types::Result<()> {
4258                if topics.0 != Self::SIGNATURE_HASH {
4259                    return Err(
4260                        alloy_sol_types::Error::invalid_event_signature_hash(
4261                            Self::SIGNATURE,
4262                            topics.0,
4263                            Self::SIGNATURE_HASH,
4264                        ),
4265                    );
4266                }
4267                Ok(())
4268            }
4269            #[inline]
4270            fn tokenize_body(&self) -> Self::DataToken<'_> {
4271                (
4272                    <alloy::sol_types::sol_data::Uint<
4273                        256,
4274                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4275                )
4276            }
4277            #[inline]
4278            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4279                (
4280                    Self::SIGNATURE_HASH.into(),
4281                    self.delegator.clone(),
4282                    self.validator.clone(),
4283                )
4284            }
4285            #[inline]
4286            fn encode_topics_raw(
4287                &self,
4288                out: &mut [alloy_sol_types::abi::token::WordToken],
4289            ) -> alloy_sol_types::Result<()> {
4290                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4291                    return Err(alloy_sol_types::Error::Overrun);
4292                }
4293                out[0usize] = alloy_sol_types::abi::token::WordToken(
4294                    Self::SIGNATURE_HASH,
4295                );
4296                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4297                    &self.delegator,
4298                );
4299                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4300                    &self.validator,
4301                );
4302                Ok(())
4303            }
4304        }
4305        #[automatically_derived]
4306        impl alloy_sol_types::private::IntoLogData for Delegated {
4307            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4308                From::from(self)
4309            }
4310            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4311                From::from(&self)
4312            }
4313        }
4314        #[automatically_derived]
4315        impl From<&Delegated> for alloy_sol_types::private::LogData {
4316            #[inline]
4317            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
4318                alloy_sol_types::SolEvent::encode_log_data(this)
4319            }
4320        }
4321    };
4322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4323    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
4324```solidity
4325event Initialized(uint64 version);
4326```*/
4327    #[allow(
4328        non_camel_case_types,
4329        non_snake_case,
4330        clippy::pub_underscore_fields,
4331        clippy::style
4332    )]
4333    #[derive(Clone)]
4334    pub struct Initialized {
4335        #[allow(missing_docs)]
4336        pub version: u64,
4337    }
4338    #[allow(
4339        non_camel_case_types,
4340        non_snake_case,
4341        clippy::pub_underscore_fields,
4342        clippy::style
4343    )]
4344    const _: () = {
4345        use alloy::sol_types as alloy_sol_types;
4346        #[automatically_derived]
4347        impl alloy_sol_types::SolEvent for Initialized {
4348            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
4349            type DataToken<'a> = <Self::DataTuple<
4350                'a,
4351            > as alloy_sol_types::SolType>::Token<'a>;
4352            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4353            const SIGNATURE: &'static str = "Initialized(uint64)";
4354            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4355                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
4356                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
4357                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
4358            ]);
4359            const ANONYMOUS: bool = false;
4360            #[allow(unused_variables)]
4361            #[inline]
4362            fn new(
4363                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4364                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4365            ) -> Self {
4366                Self { version: data.0 }
4367            }
4368            #[inline]
4369            fn check_signature(
4370                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4371            ) -> alloy_sol_types::Result<()> {
4372                if topics.0 != Self::SIGNATURE_HASH {
4373                    return Err(
4374                        alloy_sol_types::Error::invalid_event_signature_hash(
4375                            Self::SIGNATURE,
4376                            topics.0,
4377                            Self::SIGNATURE_HASH,
4378                        ),
4379                    );
4380                }
4381                Ok(())
4382            }
4383            #[inline]
4384            fn tokenize_body(&self) -> Self::DataToken<'_> {
4385                (
4386                    <alloy::sol_types::sol_data::Uint<
4387                        64,
4388                    > as alloy_sol_types::SolType>::tokenize(&self.version),
4389                )
4390            }
4391            #[inline]
4392            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4393                (Self::SIGNATURE_HASH.into(),)
4394            }
4395            #[inline]
4396            fn encode_topics_raw(
4397                &self,
4398                out: &mut [alloy_sol_types::abi::token::WordToken],
4399            ) -> alloy_sol_types::Result<()> {
4400                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4401                    return Err(alloy_sol_types::Error::Overrun);
4402                }
4403                out[0usize] = alloy_sol_types::abi::token::WordToken(
4404                    Self::SIGNATURE_HASH,
4405                );
4406                Ok(())
4407            }
4408        }
4409        #[automatically_derived]
4410        impl alloy_sol_types::private::IntoLogData for Initialized {
4411            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4412                From::from(self)
4413            }
4414            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4415                From::from(&self)
4416            }
4417        }
4418        #[automatically_derived]
4419        impl From<&Initialized> for alloy_sol_types::private::LogData {
4420            #[inline]
4421            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
4422                alloy_sol_types::SolEvent::encode_log_data(this)
4423            }
4424        }
4425    };
4426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4427    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
4428```solidity
4429event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
4430```*/
4431    #[allow(
4432        non_camel_case_types,
4433        non_snake_case,
4434        clippy::pub_underscore_fields,
4435        clippy::style
4436    )]
4437    #[derive(Clone)]
4438    pub struct OwnershipTransferred {
4439        #[allow(missing_docs)]
4440        pub previousOwner: alloy::sol_types::private::Address,
4441        #[allow(missing_docs)]
4442        pub newOwner: alloy::sol_types::private::Address,
4443    }
4444    #[allow(
4445        non_camel_case_types,
4446        non_snake_case,
4447        clippy::pub_underscore_fields,
4448        clippy::style
4449    )]
4450    const _: () = {
4451        use alloy::sol_types as alloy_sol_types;
4452        #[automatically_derived]
4453        impl alloy_sol_types::SolEvent for OwnershipTransferred {
4454            type DataTuple<'a> = ();
4455            type DataToken<'a> = <Self::DataTuple<
4456                'a,
4457            > as alloy_sol_types::SolType>::Token<'a>;
4458            type TopicList = (
4459                alloy_sol_types::sol_data::FixedBytes<32>,
4460                alloy::sol_types::sol_data::Address,
4461                alloy::sol_types::sol_data::Address,
4462            );
4463            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
4464            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4465                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
4466                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
4467                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
4468            ]);
4469            const ANONYMOUS: bool = false;
4470            #[allow(unused_variables)]
4471            #[inline]
4472            fn new(
4473                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4474                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4475            ) -> Self {
4476                Self {
4477                    previousOwner: topics.1,
4478                    newOwner: topics.2,
4479                }
4480            }
4481            #[inline]
4482            fn check_signature(
4483                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4484            ) -> alloy_sol_types::Result<()> {
4485                if topics.0 != Self::SIGNATURE_HASH {
4486                    return Err(
4487                        alloy_sol_types::Error::invalid_event_signature_hash(
4488                            Self::SIGNATURE,
4489                            topics.0,
4490                            Self::SIGNATURE_HASH,
4491                        ),
4492                    );
4493                }
4494                Ok(())
4495            }
4496            #[inline]
4497            fn tokenize_body(&self) -> Self::DataToken<'_> {
4498                ()
4499            }
4500            #[inline]
4501            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4502                (
4503                    Self::SIGNATURE_HASH.into(),
4504                    self.previousOwner.clone(),
4505                    self.newOwner.clone(),
4506                )
4507            }
4508            #[inline]
4509            fn encode_topics_raw(
4510                &self,
4511                out: &mut [alloy_sol_types::abi::token::WordToken],
4512            ) -> alloy_sol_types::Result<()> {
4513                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4514                    return Err(alloy_sol_types::Error::Overrun);
4515                }
4516                out[0usize] = alloy_sol_types::abi::token::WordToken(
4517                    Self::SIGNATURE_HASH,
4518                );
4519                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4520                    &self.previousOwner,
4521                );
4522                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4523                    &self.newOwner,
4524                );
4525                Ok(())
4526            }
4527        }
4528        #[automatically_derived]
4529        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
4530            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4531                From::from(self)
4532            }
4533            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4534                From::from(&self)
4535            }
4536        }
4537        #[automatically_derived]
4538        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
4539            #[inline]
4540            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
4541                alloy_sol_types::SolEvent::encode_log_data(this)
4542            }
4543        }
4544    };
4545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4546    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
4547```solidity
4548event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
4549```*/
4550    #[allow(
4551        non_camel_case_types,
4552        non_snake_case,
4553        clippy::pub_underscore_fields,
4554        clippy::style
4555    )]
4556    #[derive(Clone)]
4557    pub struct Undelegated {
4558        #[allow(missing_docs)]
4559        pub delegator: alloy::sol_types::private::Address,
4560        #[allow(missing_docs)]
4561        pub validator: alloy::sol_types::private::Address,
4562        #[allow(missing_docs)]
4563        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4564    }
4565    #[allow(
4566        non_camel_case_types,
4567        non_snake_case,
4568        clippy::pub_underscore_fields,
4569        clippy::style
4570    )]
4571    const _: () = {
4572        use alloy::sol_types as alloy_sol_types;
4573        #[automatically_derived]
4574        impl alloy_sol_types::SolEvent for Undelegated {
4575            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4576            type DataToken<'a> = <Self::DataTuple<
4577                'a,
4578            > as alloy_sol_types::SolType>::Token<'a>;
4579            type TopicList = (
4580                alloy_sol_types::sol_data::FixedBytes<32>,
4581                alloy::sol_types::sol_data::Address,
4582                alloy::sol_types::sol_data::Address,
4583            );
4584            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
4585            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4586                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
4587                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
4588                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
4589            ]);
4590            const ANONYMOUS: bool = false;
4591            #[allow(unused_variables)]
4592            #[inline]
4593            fn new(
4594                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4595                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4596            ) -> Self {
4597                Self {
4598                    delegator: topics.1,
4599                    validator: topics.2,
4600                    amount: data.0,
4601                }
4602            }
4603            #[inline]
4604            fn check_signature(
4605                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4606            ) -> alloy_sol_types::Result<()> {
4607                if topics.0 != Self::SIGNATURE_HASH {
4608                    return Err(
4609                        alloy_sol_types::Error::invalid_event_signature_hash(
4610                            Self::SIGNATURE,
4611                            topics.0,
4612                            Self::SIGNATURE_HASH,
4613                        ),
4614                    );
4615                }
4616                Ok(())
4617            }
4618            #[inline]
4619            fn tokenize_body(&self) -> Self::DataToken<'_> {
4620                (
4621                    <alloy::sol_types::sol_data::Uint<
4622                        256,
4623                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4624                )
4625            }
4626            #[inline]
4627            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4628                (
4629                    Self::SIGNATURE_HASH.into(),
4630                    self.delegator.clone(),
4631                    self.validator.clone(),
4632                )
4633            }
4634            #[inline]
4635            fn encode_topics_raw(
4636                &self,
4637                out: &mut [alloy_sol_types::abi::token::WordToken],
4638            ) -> alloy_sol_types::Result<()> {
4639                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4640                    return Err(alloy_sol_types::Error::Overrun);
4641                }
4642                out[0usize] = alloy_sol_types::abi::token::WordToken(
4643                    Self::SIGNATURE_HASH,
4644                );
4645                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4646                    &self.delegator,
4647                );
4648                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4649                    &self.validator,
4650                );
4651                Ok(())
4652            }
4653        }
4654        #[automatically_derived]
4655        impl alloy_sol_types::private::IntoLogData for Undelegated {
4656            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4657                From::from(self)
4658            }
4659            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4660                From::from(&self)
4661            }
4662        }
4663        #[automatically_derived]
4664        impl From<&Undelegated> for alloy_sol_types::private::LogData {
4665            #[inline]
4666            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
4667                alloy_sol_types::SolEvent::encode_log_data(this)
4668            }
4669        }
4670    };
4671    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4672    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
4673```solidity
4674event Upgraded(address indexed implementation);
4675```*/
4676    #[allow(
4677        non_camel_case_types,
4678        non_snake_case,
4679        clippy::pub_underscore_fields,
4680        clippy::style
4681    )]
4682    #[derive(Clone)]
4683    pub struct Upgraded {
4684        #[allow(missing_docs)]
4685        pub implementation: alloy::sol_types::private::Address,
4686    }
4687    #[allow(
4688        non_camel_case_types,
4689        non_snake_case,
4690        clippy::pub_underscore_fields,
4691        clippy::style
4692    )]
4693    const _: () = {
4694        use alloy::sol_types as alloy_sol_types;
4695        #[automatically_derived]
4696        impl alloy_sol_types::SolEvent for Upgraded {
4697            type DataTuple<'a> = ();
4698            type DataToken<'a> = <Self::DataTuple<
4699                'a,
4700            > as alloy_sol_types::SolType>::Token<'a>;
4701            type TopicList = (
4702                alloy_sol_types::sol_data::FixedBytes<32>,
4703                alloy::sol_types::sol_data::Address,
4704            );
4705            const SIGNATURE: &'static str = "Upgraded(address)";
4706            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4707                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
4708                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
4709                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
4710            ]);
4711            const ANONYMOUS: bool = false;
4712            #[allow(unused_variables)]
4713            #[inline]
4714            fn new(
4715                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4716                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4717            ) -> Self {
4718                Self { implementation: topics.1 }
4719            }
4720            #[inline]
4721            fn check_signature(
4722                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4723            ) -> alloy_sol_types::Result<()> {
4724                if topics.0 != Self::SIGNATURE_HASH {
4725                    return Err(
4726                        alloy_sol_types::Error::invalid_event_signature_hash(
4727                            Self::SIGNATURE,
4728                            topics.0,
4729                            Self::SIGNATURE_HASH,
4730                        ),
4731                    );
4732                }
4733                Ok(())
4734            }
4735            #[inline]
4736            fn tokenize_body(&self) -> Self::DataToken<'_> {
4737                ()
4738            }
4739            #[inline]
4740            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4741                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
4742            }
4743            #[inline]
4744            fn encode_topics_raw(
4745                &self,
4746                out: &mut [alloy_sol_types::abi::token::WordToken],
4747            ) -> alloy_sol_types::Result<()> {
4748                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4749                    return Err(alloy_sol_types::Error::Overrun);
4750                }
4751                out[0usize] = alloy_sol_types::abi::token::WordToken(
4752                    Self::SIGNATURE_HASH,
4753                );
4754                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4755                    &self.implementation,
4756                );
4757                Ok(())
4758            }
4759        }
4760        #[automatically_derived]
4761        impl alloy_sol_types::private::IntoLogData for Upgraded {
4762            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4763                From::from(self)
4764            }
4765            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4766                From::from(&self)
4767            }
4768        }
4769        #[automatically_derived]
4770        impl From<&Upgraded> for alloy_sol_types::private::LogData {
4771            #[inline]
4772            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
4773                alloy_sol_types::SolEvent::encode_log_data(this)
4774            }
4775        }
4776    };
4777    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4778    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
4779```solidity
4780event ValidatorExit(address indexed validator);
4781```*/
4782    #[allow(
4783        non_camel_case_types,
4784        non_snake_case,
4785        clippy::pub_underscore_fields,
4786        clippy::style
4787    )]
4788    #[derive(Clone)]
4789    pub struct ValidatorExit {
4790        #[allow(missing_docs)]
4791        pub validator: alloy::sol_types::private::Address,
4792    }
4793    #[allow(
4794        non_camel_case_types,
4795        non_snake_case,
4796        clippy::pub_underscore_fields,
4797        clippy::style
4798    )]
4799    const _: () = {
4800        use alloy::sol_types as alloy_sol_types;
4801        #[automatically_derived]
4802        impl alloy_sol_types::SolEvent for ValidatorExit {
4803            type DataTuple<'a> = ();
4804            type DataToken<'a> = <Self::DataTuple<
4805                'a,
4806            > as alloy_sol_types::SolType>::Token<'a>;
4807            type TopicList = (
4808                alloy_sol_types::sol_data::FixedBytes<32>,
4809                alloy::sol_types::sol_data::Address,
4810            );
4811            const SIGNATURE: &'static str = "ValidatorExit(address)";
4812            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4813                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
4814                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
4815                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
4816            ]);
4817            const ANONYMOUS: bool = false;
4818            #[allow(unused_variables)]
4819            #[inline]
4820            fn new(
4821                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4822                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4823            ) -> Self {
4824                Self { validator: topics.1 }
4825            }
4826            #[inline]
4827            fn check_signature(
4828                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4829            ) -> alloy_sol_types::Result<()> {
4830                if topics.0 != Self::SIGNATURE_HASH {
4831                    return Err(
4832                        alloy_sol_types::Error::invalid_event_signature_hash(
4833                            Self::SIGNATURE,
4834                            topics.0,
4835                            Self::SIGNATURE_HASH,
4836                        ),
4837                    );
4838                }
4839                Ok(())
4840            }
4841            #[inline]
4842            fn tokenize_body(&self) -> Self::DataToken<'_> {
4843                ()
4844            }
4845            #[inline]
4846            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4847                (Self::SIGNATURE_HASH.into(), self.validator.clone())
4848            }
4849            #[inline]
4850            fn encode_topics_raw(
4851                &self,
4852                out: &mut [alloy_sol_types::abi::token::WordToken],
4853            ) -> alloy_sol_types::Result<()> {
4854                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4855                    return Err(alloy_sol_types::Error::Overrun);
4856                }
4857                out[0usize] = alloy_sol_types::abi::token::WordToken(
4858                    Self::SIGNATURE_HASH,
4859                );
4860                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4861                    &self.validator,
4862                );
4863                Ok(())
4864            }
4865        }
4866        #[automatically_derived]
4867        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
4868            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4869                From::from(self)
4870            }
4871            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4872                From::from(&self)
4873            }
4874        }
4875        #[automatically_derived]
4876        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
4877            #[inline]
4878            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
4879                alloy_sol_types::SolEvent::encode_log_data(this)
4880            }
4881        }
4882    };
4883    #[derive()]
4884    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
4885```solidity
4886event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
4887```*/
4888    #[allow(
4889        non_camel_case_types,
4890        non_snake_case,
4891        clippy::pub_underscore_fields,
4892        clippy::style
4893    )]
4894    #[derive(Clone)]
4895    pub struct ValidatorRegistered {
4896        #[allow(missing_docs)]
4897        pub account: alloy::sol_types::private::Address,
4898        #[allow(missing_docs)]
4899        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4900        #[allow(missing_docs)]
4901        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4902        #[allow(missing_docs)]
4903        pub commission: u16,
4904    }
4905    #[allow(
4906        non_camel_case_types,
4907        non_snake_case,
4908        clippy::pub_underscore_fields,
4909        clippy::style
4910    )]
4911    const _: () = {
4912        use alloy::sol_types as alloy_sol_types;
4913        #[automatically_derived]
4914        impl alloy_sol_types::SolEvent for ValidatorRegistered {
4915            type DataTuple<'a> = (
4916                BN254::G2Point,
4917                EdOnBN254::EdOnBN254Point,
4918                alloy::sol_types::sol_data::Uint<16>,
4919            );
4920            type DataToken<'a> = <Self::DataTuple<
4921                'a,
4922            > as alloy_sol_types::SolType>::Token<'a>;
4923            type TopicList = (
4924                alloy_sol_types::sol_data::FixedBytes<32>,
4925                alloy::sol_types::sol_data::Address,
4926            );
4927            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
4928            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4929                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
4930                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
4931                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
4932            ]);
4933            const ANONYMOUS: bool = false;
4934            #[allow(unused_variables)]
4935            #[inline]
4936            fn new(
4937                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4938                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4939            ) -> Self {
4940                Self {
4941                    account: topics.1,
4942                    blsVk: data.0,
4943                    schnorrVk: data.1,
4944                    commission: data.2,
4945                }
4946            }
4947            #[inline]
4948            fn check_signature(
4949                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4950            ) -> alloy_sol_types::Result<()> {
4951                if topics.0 != Self::SIGNATURE_HASH {
4952                    return Err(
4953                        alloy_sol_types::Error::invalid_event_signature_hash(
4954                            Self::SIGNATURE,
4955                            topics.0,
4956                            Self::SIGNATURE_HASH,
4957                        ),
4958                    );
4959                }
4960                Ok(())
4961            }
4962            #[inline]
4963            fn tokenize_body(&self) -> Self::DataToken<'_> {
4964                (
4965                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
4966                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4967                        &self.schnorrVk,
4968                    ),
4969                    <alloy::sol_types::sol_data::Uint<
4970                        16,
4971                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
4972                )
4973            }
4974            #[inline]
4975            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4976                (Self::SIGNATURE_HASH.into(), self.account.clone())
4977            }
4978            #[inline]
4979            fn encode_topics_raw(
4980                &self,
4981                out: &mut [alloy_sol_types::abi::token::WordToken],
4982            ) -> alloy_sol_types::Result<()> {
4983                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4984                    return Err(alloy_sol_types::Error::Overrun);
4985                }
4986                out[0usize] = alloy_sol_types::abi::token::WordToken(
4987                    Self::SIGNATURE_HASH,
4988                );
4989                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4990                    &self.account,
4991                );
4992                Ok(())
4993            }
4994        }
4995        #[automatically_derived]
4996        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
4997            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4998                From::from(self)
4999            }
5000            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5001                From::from(&self)
5002            }
5003        }
5004        #[automatically_derived]
5005        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
5006            #[inline]
5007            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
5008                alloy_sol_types::SolEvent::encode_log_data(this)
5009            }
5010        }
5011    };
5012    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5013    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
5014```solidity
5015event Withdrawal(address indexed account, uint256 amount);
5016```*/
5017    #[allow(
5018        non_camel_case_types,
5019        non_snake_case,
5020        clippy::pub_underscore_fields,
5021        clippy::style
5022    )]
5023    #[derive(Clone)]
5024    pub struct Withdrawal {
5025        #[allow(missing_docs)]
5026        pub account: alloy::sol_types::private::Address,
5027        #[allow(missing_docs)]
5028        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5029    }
5030    #[allow(
5031        non_camel_case_types,
5032        non_snake_case,
5033        clippy::pub_underscore_fields,
5034        clippy::style
5035    )]
5036    const _: () = {
5037        use alloy::sol_types as alloy_sol_types;
5038        #[automatically_derived]
5039        impl alloy_sol_types::SolEvent for Withdrawal {
5040            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5041            type DataToken<'a> = <Self::DataTuple<
5042                'a,
5043            > as alloy_sol_types::SolType>::Token<'a>;
5044            type TopicList = (
5045                alloy_sol_types::sol_data::FixedBytes<32>,
5046                alloy::sol_types::sol_data::Address,
5047            );
5048            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
5049            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5050                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
5051                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
5052                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
5053            ]);
5054            const ANONYMOUS: bool = false;
5055            #[allow(unused_variables)]
5056            #[inline]
5057            fn new(
5058                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5059                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5060            ) -> Self {
5061                Self {
5062                    account: topics.1,
5063                    amount: data.0,
5064                }
5065            }
5066            #[inline]
5067            fn check_signature(
5068                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5069            ) -> alloy_sol_types::Result<()> {
5070                if topics.0 != Self::SIGNATURE_HASH {
5071                    return Err(
5072                        alloy_sol_types::Error::invalid_event_signature_hash(
5073                            Self::SIGNATURE,
5074                            topics.0,
5075                            Self::SIGNATURE_HASH,
5076                        ),
5077                    );
5078                }
5079                Ok(())
5080            }
5081            #[inline]
5082            fn tokenize_body(&self) -> Self::DataToken<'_> {
5083                (
5084                    <alloy::sol_types::sol_data::Uint<
5085                        256,
5086                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5087                )
5088            }
5089            #[inline]
5090            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5091                (Self::SIGNATURE_HASH.into(), self.account.clone())
5092            }
5093            #[inline]
5094            fn encode_topics_raw(
5095                &self,
5096                out: &mut [alloy_sol_types::abi::token::WordToken],
5097            ) -> alloy_sol_types::Result<()> {
5098                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5099                    return Err(alloy_sol_types::Error::Overrun);
5100                }
5101                out[0usize] = alloy_sol_types::abi::token::WordToken(
5102                    Self::SIGNATURE_HASH,
5103                );
5104                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5105                    &self.account,
5106                );
5107                Ok(())
5108            }
5109        }
5110        #[automatically_derived]
5111        impl alloy_sol_types::private::IntoLogData for Withdrawal {
5112            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5113                From::from(self)
5114            }
5115            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5116                From::from(&self)
5117            }
5118        }
5119        #[automatically_derived]
5120        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
5121            #[inline]
5122            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
5123                alloy_sol_types::SolEvent::encode_log_data(this)
5124            }
5125        }
5126    };
5127    /**Constructor`.
5128```solidity
5129constructor();
5130```*/
5131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5132    #[derive(Clone)]
5133    pub struct constructorCall {}
5134    const _: () = {
5135        use alloy::sol_types as alloy_sol_types;
5136        {
5137            #[doc(hidden)]
5138            type UnderlyingSolTuple<'a> = ();
5139            #[doc(hidden)]
5140            type UnderlyingRustTuple<'a> = ();
5141            #[cfg(test)]
5142            #[allow(dead_code, unreachable_patterns)]
5143            fn _type_assertion(
5144                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5145            ) {
5146                match _t {
5147                    alloy_sol_types::private::AssertTypeEq::<
5148                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5149                    >(_) => {}
5150                }
5151            }
5152            #[automatically_derived]
5153            #[doc(hidden)]
5154            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5155                fn from(value: constructorCall) -> Self {
5156                    ()
5157                }
5158            }
5159            #[automatically_derived]
5160            #[doc(hidden)]
5161            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5163                    Self {}
5164                }
5165            }
5166        }
5167        #[automatically_derived]
5168        impl alloy_sol_types::SolConstructor for constructorCall {
5169            type Parameters<'a> = ();
5170            type Token<'a> = <Self::Parameters<
5171                'a,
5172            > as alloy_sol_types::SolType>::Token<'a>;
5173            #[inline]
5174            fn new<'a>(
5175                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5176            ) -> Self {
5177                tuple.into()
5178            }
5179            #[inline]
5180            fn tokenize(&self) -> Self::Token<'_> {
5181                ()
5182            }
5183        }
5184    };
5185    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5186    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5187```solidity
5188function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5189```*/
5190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5191    #[derive(Clone)]
5192    pub struct UPGRADE_INTERFACE_VERSIONCall {}
5193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5194    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5196    #[derive(Clone)]
5197    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5198        #[allow(missing_docs)]
5199        pub _0: alloy::sol_types::private::String,
5200    }
5201    #[allow(
5202        non_camel_case_types,
5203        non_snake_case,
5204        clippy::pub_underscore_fields,
5205        clippy::style
5206    )]
5207    const _: () = {
5208        use alloy::sol_types as alloy_sol_types;
5209        {
5210            #[doc(hidden)]
5211            type UnderlyingSolTuple<'a> = ();
5212            #[doc(hidden)]
5213            type UnderlyingRustTuple<'a> = ();
5214            #[cfg(test)]
5215            #[allow(dead_code, unreachable_patterns)]
5216            fn _type_assertion(
5217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5218            ) {
5219                match _t {
5220                    alloy_sol_types::private::AssertTypeEq::<
5221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5222                    >(_) => {}
5223                }
5224            }
5225            #[automatically_derived]
5226            #[doc(hidden)]
5227            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
5228            for UnderlyingRustTuple<'_> {
5229                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5230                    ()
5231                }
5232            }
5233            #[automatically_derived]
5234            #[doc(hidden)]
5235            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5236            for UPGRADE_INTERFACE_VERSIONCall {
5237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5238                    Self {}
5239                }
5240            }
5241        }
5242        {
5243            #[doc(hidden)]
5244            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5245            #[doc(hidden)]
5246            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5247            #[cfg(test)]
5248            #[allow(dead_code, unreachable_patterns)]
5249            fn _type_assertion(
5250                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5251            ) {
5252                match _t {
5253                    alloy_sol_types::private::AssertTypeEq::<
5254                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5255                    >(_) => {}
5256                }
5257            }
5258            #[automatically_derived]
5259            #[doc(hidden)]
5260            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
5261            for UnderlyingRustTuple<'_> {
5262                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
5263                    (value._0,)
5264                }
5265            }
5266            #[automatically_derived]
5267            #[doc(hidden)]
5268            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5269            for UPGRADE_INTERFACE_VERSIONReturn {
5270                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5271                    Self { _0: tuple.0 }
5272                }
5273            }
5274        }
5275        #[automatically_derived]
5276        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
5277            type Parameters<'a> = ();
5278            type Token<'a> = <Self::Parameters<
5279                'a,
5280            > as alloy_sol_types::SolType>::Token<'a>;
5281            type Return = UPGRADE_INTERFACE_VERSIONReturn;
5282            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
5283            type ReturnToken<'a> = <Self::ReturnTuple<
5284                'a,
5285            > as alloy_sol_types::SolType>::Token<'a>;
5286            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
5287            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
5288            #[inline]
5289            fn new<'a>(
5290                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5291            ) -> Self {
5292                tuple.into()
5293            }
5294            #[inline]
5295            fn tokenize(&self) -> Self::Token<'_> {
5296                ()
5297            }
5298            #[inline]
5299            fn abi_decode_returns(
5300                data: &[u8],
5301                validate: bool,
5302            ) -> alloy_sol_types::Result<Self::Return> {
5303                <Self::ReturnTuple<
5304                    '_,
5305                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5306                    .map(Into::into)
5307            }
5308        }
5309    };
5310    #[derive()]
5311    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
5312```solidity
5313function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
5314```*/
5315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5316    #[derive(Clone)]
5317    pub struct _hashBlsKeyCall {
5318        #[allow(missing_docs)]
5319        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5320    }
5321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5322    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
5323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5324    #[derive(Clone)]
5325    pub struct _hashBlsKeyReturn {
5326        #[allow(missing_docs)]
5327        pub _0: alloy::sol_types::private::FixedBytes<32>,
5328    }
5329    #[allow(
5330        non_camel_case_types,
5331        non_snake_case,
5332        clippy::pub_underscore_fields,
5333        clippy::style
5334    )]
5335    const _: () = {
5336        use alloy::sol_types as alloy_sol_types;
5337        {
5338            #[doc(hidden)]
5339            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
5340            #[doc(hidden)]
5341            type UnderlyingRustTuple<'a> = (
5342                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5343            );
5344            #[cfg(test)]
5345            #[allow(dead_code, unreachable_patterns)]
5346            fn _type_assertion(
5347                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5348            ) {
5349                match _t {
5350                    alloy_sol_types::private::AssertTypeEq::<
5351                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5352                    >(_) => {}
5353                }
5354            }
5355            #[automatically_derived]
5356            #[doc(hidden)]
5357            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
5358                fn from(value: _hashBlsKeyCall) -> Self {
5359                    (value.blsVK,)
5360                }
5361            }
5362            #[automatically_derived]
5363            #[doc(hidden)]
5364            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
5365                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5366                    Self { blsVK: tuple.0 }
5367                }
5368            }
5369        }
5370        {
5371            #[doc(hidden)]
5372            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5373            #[doc(hidden)]
5374            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5375            #[cfg(test)]
5376            #[allow(dead_code, unreachable_patterns)]
5377            fn _type_assertion(
5378                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5379            ) {
5380                match _t {
5381                    alloy_sol_types::private::AssertTypeEq::<
5382                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5383                    >(_) => {}
5384                }
5385            }
5386            #[automatically_derived]
5387            #[doc(hidden)]
5388            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
5389                fn from(value: _hashBlsKeyReturn) -> Self {
5390                    (value._0,)
5391                }
5392            }
5393            #[automatically_derived]
5394            #[doc(hidden)]
5395            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
5396                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5397                    Self { _0: tuple.0 }
5398                }
5399            }
5400        }
5401        #[automatically_derived]
5402        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
5403            type Parameters<'a> = (BN254::G2Point,);
5404            type Token<'a> = <Self::Parameters<
5405                'a,
5406            > as alloy_sol_types::SolType>::Token<'a>;
5407            type Return = _hashBlsKeyReturn;
5408            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5409            type ReturnToken<'a> = <Self::ReturnTuple<
5410                'a,
5411            > as alloy_sol_types::SolType>::Token<'a>;
5412            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
5413            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
5414            #[inline]
5415            fn new<'a>(
5416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5417            ) -> Self {
5418                tuple.into()
5419            }
5420            #[inline]
5421            fn tokenize(&self) -> Self::Token<'_> {
5422                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
5423            }
5424            #[inline]
5425            fn abi_decode_returns(
5426                data: &[u8],
5427                validate: bool,
5428            ) -> alloy_sol_types::Result<Self::Return> {
5429                <Self::ReturnTuple<
5430                    '_,
5431                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5432                    .map(Into::into)
5433            }
5434        }
5435    };
5436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5437    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
5438```solidity
5439function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
5440```*/
5441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5442    #[derive(Clone)]
5443    pub struct blsKeysCall {
5444        #[allow(missing_docs)]
5445        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
5446    }
5447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5448    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
5449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5450    #[derive(Clone)]
5451    pub struct blsKeysReturn {
5452        #[allow(missing_docs)]
5453        pub used: bool,
5454    }
5455    #[allow(
5456        non_camel_case_types,
5457        non_snake_case,
5458        clippy::pub_underscore_fields,
5459        clippy::style
5460    )]
5461    const _: () = {
5462        use alloy::sol_types as alloy_sol_types;
5463        {
5464            #[doc(hidden)]
5465            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5466            #[doc(hidden)]
5467            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5468            #[cfg(test)]
5469            #[allow(dead_code, unreachable_patterns)]
5470            fn _type_assertion(
5471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5472            ) {
5473                match _t {
5474                    alloy_sol_types::private::AssertTypeEq::<
5475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5476                    >(_) => {}
5477                }
5478            }
5479            #[automatically_derived]
5480            #[doc(hidden)]
5481            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
5482                fn from(value: blsKeysCall) -> Self {
5483                    (value.blsKeyHash,)
5484                }
5485            }
5486            #[automatically_derived]
5487            #[doc(hidden)]
5488            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
5489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5490                    Self { blsKeyHash: tuple.0 }
5491                }
5492            }
5493        }
5494        {
5495            #[doc(hidden)]
5496            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5497            #[doc(hidden)]
5498            type UnderlyingRustTuple<'a> = (bool,);
5499            #[cfg(test)]
5500            #[allow(dead_code, unreachable_patterns)]
5501            fn _type_assertion(
5502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5503            ) {
5504                match _t {
5505                    alloy_sol_types::private::AssertTypeEq::<
5506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5507                    >(_) => {}
5508                }
5509            }
5510            #[automatically_derived]
5511            #[doc(hidden)]
5512            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
5513                fn from(value: blsKeysReturn) -> Self {
5514                    (value.used,)
5515                }
5516            }
5517            #[automatically_derived]
5518            #[doc(hidden)]
5519            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
5520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5521                    Self { used: tuple.0 }
5522                }
5523            }
5524        }
5525        #[automatically_derived]
5526        impl alloy_sol_types::SolCall for blsKeysCall {
5527            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5528            type Token<'a> = <Self::Parameters<
5529                'a,
5530            > as alloy_sol_types::SolType>::Token<'a>;
5531            type Return = blsKeysReturn;
5532            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5533            type ReturnToken<'a> = <Self::ReturnTuple<
5534                'a,
5535            > as alloy_sol_types::SolType>::Token<'a>;
5536            const SIGNATURE: &'static str = "blsKeys(bytes32)";
5537            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
5538            #[inline]
5539            fn new<'a>(
5540                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5541            ) -> Self {
5542                tuple.into()
5543            }
5544            #[inline]
5545            fn tokenize(&self) -> Self::Token<'_> {
5546                (
5547                    <alloy::sol_types::sol_data::FixedBytes<
5548                        32,
5549                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
5550                )
5551            }
5552            #[inline]
5553            fn abi_decode_returns(
5554                data: &[u8],
5555                validate: bool,
5556            ) -> alloy_sol_types::Result<Self::Return> {
5557                <Self::ReturnTuple<
5558                    '_,
5559                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5560                    .map(Into::into)
5561            }
5562        }
5563    };
5564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5565    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
5566```solidity
5567function claimValidatorExit(address validator) external;
5568```*/
5569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5570    #[derive(Clone)]
5571    pub struct claimValidatorExitCall {
5572        #[allow(missing_docs)]
5573        pub validator: alloy::sol_types::private::Address,
5574    }
5575    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
5576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5577    #[derive(Clone)]
5578    pub struct claimValidatorExitReturn {}
5579    #[allow(
5580        non_camel_case_types,
5581        non_snake_case,
5582        clippy::pub_underscore_fields,
5583        clippy::style
5584    )]
5585    const _: () = {
5586        use alloy::sol_types as alloy_sol_types;
5587        {
5588            #[doc(hidden)]
5589            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5590            #[doc(hidden)]
5591            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5592            #[cfg(test)]
5593            #[allow(dead_code, unreachable_patterns)]
5594            fn _type_assertion(
5595                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5596            ) {
5597                match _t {
5598                    alloy_sol_types::private::AssertTypeEq::<
5599                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5600                    >(_) => {}
5601                }
5602            }
5603            #[automatically_derived]
5604            #[doc(hidden)]
5605            impl ::core::convert::From<claimValidatorExitCall>
5606            for UnderlyingRustTuple<'_> {
5607                fn from(value: claimValidatorExitCall) -> Self {
5608                    (value.validator,)
5609                }
5610            }
5611            #[automatically_derived]
5612            #[doc(hidden)]
5613            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5614            for claimValidatorExitCall {
5615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5616                    Self { validator: tuple.0 }
5617                }
5618            }
5619        }
5620        {
5621            #[doc(hidden)]
5622            type UnderlyingSolTuple<'a> = ();
5623            #[doc(hidden)]
5624            type UnderlyingRustTuple<'a> = ();
5625            #[cfg(test)]
5626            #[allow(dead_code, unreachable_patterns)]
5627            fn _type_assertion(
5628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5629            ) {
5630                match _t {
5631                    alloy_sol_types::private::AssertTypeEq::<
5632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5633                    >(_) => {}
5634                }
5635            }
5636            #[automatically_derived]
5637            #[doc(hidden)]
5638            impl ::core::convert::From<claimValidatorExitReturn>
5639            for UnderlyingRustTuple<'_> {
5640                fn from(value: claimValidatorExitReturn) -> Self {
5641                    ()
5642                }
5643            }
5644            #[automatically_derived]
5645            #[doc(hidden)]
5646            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5647            for claimValidatorExitReturn {
5648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5649                    Self {}
5650                }
5651            }
5652        }
5653        #[automatically_derived]
5654        impl alloy_sol_types::SolCall for claimValidatorExitCall {
5655            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5656            type Token<'a> = <Self::Parameters<
5657                'a,
5658            > as alloy_sol_types::SolType>::Token<'a>;
5659            type Return = claimValidatorExitReturn;
5660            type ReturnTuple<'a> = ();
5661            type ReturnToken<'a> = <Self::ReturnTuple<
5662                'a,
5663            > as alloy_sol_types::SolType>::Token<'a>;
5664            const SIGNATURE: &'static str = "claimValidatorExit(address)";
5665            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
5666            #[inline]
5667            fn new<'a>(
5668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5669            ) -> Self {
5670                tuple.into()
5671            }
5672            #[inline]
5673            fn tokenize(&self) -> Self::Token<'_> {
5674                (
5675                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5676                        &self.validator,
5677                    ),
5678                )
5679            }
5680            #[inline]
5681            fn abi_decode_returns(
5682                data: &[u8],
5683                validate: bool,
5684            ) -> alloy_sol_types::Result<Self::Return> {
5685                <Self::ReturnTuple<
5686                    '_,
5687                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5688                    .map(Into::into)
5689            }
5690        }
5691    };
5692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5693    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
5694```solidity
5695function claimWithdrawal(address validator) external;
5696```*/
5697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5698    #[derive(Clone)]
5699    pub struct claimWithdrawalCall {
5700        #[allow(missing_docs)]
5701        pub validator: alloy::sol_types::private::Address,
5702    }
5703    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
5704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5705    #[derive(Clone)]
5706    pub struct claimWithdrawalReturn {}
5707    #[allow(
5708        non_camel_case_types,
5709        non_snake_case,
5710        clippy::pub_underscore_fields,
5711        clippy::style
5712    )]
5713    const _: () = {
5714        use alloy::sol_types as alloy_sol_types;
5715        {
5716            #[doc(hidden)]
5717            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5718            #[doc(hidden)]
5719            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5720            #[cfg(test)]
5721            #[allow(dead_code, unreachable_patterns)]
5722            fn _type_assertion(
5723                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5724            ) {
5725                match _t {
5726                    alloy_sol_types::private::AssertTypeEq::<
5727                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5728                    >(_) => {}
5729                }
5730            }
5731            #[automatically_derived]
5732            #[doc(hidden)]
5733            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
5734                fn from(value: claimWithdrawalCall) -> Self {
5735                    (value.validator,)
5736                }
5737            }
5738            #[automatically_derived]
5739            #[doc(hidden)]
5740            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
5741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5742                    Self { validator: tuple.0 }
5743                }
5744            }
5745        }
5746        {
5747            #[doc(hidden)]
5748            type UnderlyingSolTuple<'a> = ();
5749            #[doc(hidden)]
5750            type UnderlyingRustTuple<'a> = ();
5751            #[cfg(test)]
5752            #[allow(dead_code, unreachable_patterns)]
5753            fn _type_assertion(
5754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5755            ) {
5756                match _t {
5757                    alloy_sol_types::private::AssertTypeEq::<
5758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5759                    >(_) => {}
5760                }
5761            }
5762            #[automatically_derived]
5763            #[doc(hidden)]
5764            impl ::core::convert::From<claimWithdrawalReturn>
5765            for UnderlyingRustTuple<'_> {
5766                fn from(value: claimWithdrawalReturn) -> Self {
5767                    ()
5768                }
5769            }
5770            #[automatically_derived]
5771            #[doc(hidden)]
5772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5773            for claimWithdrawalReturn {
5774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5775                    Self {}
5776                }
5777            }
5778        }
5779        #[automatically_derived]
5780        impl alloy_sol_types::SolCall for claimWithdrawalCall {
5781            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5782            type Token<'a> = <Self::Parameters<
5783                'a,
5784            > as alloy_sol_types::SolType>::Token<'a>;
5785            type Return = claimWithdrawalReturn;
5786            type ReturnTuple<'a> = ();
5787            type ReturnToken<'a> = <Self::ReturnTuple<
5788                'a,
5789            > as alloy_sol_types::SolType>::Token<'a>;
5790            const SIGNATURE: &'static str = "claimWithdrawal(address)";
5791            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
5792            #[inline]
5793            fn new<'a>(
5794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5795            ) -> Self {
5796                tuple.into()
5797            }
5798            #[inline]
5799            fn tokenize(&self) -> Self::Token<'_> {
5800                (
5801                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5802                        &self.validator,
5803                    ),
5804                )
5805            }
5806            #[inline]
5807            fn abi_decode_returns(
5808                data: &[u8],
5809                validate: bool,
5810            ) -> alloy_sol_types::Result<Self::Return> {
5811                <Self::ReturnTuple<
5812                    '_,
5813                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5814                    .map(Into::into)
5815            }
5816        }
5817    };
5818    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5819    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
5820```solidity
5821function delegate(address validator, uint256 amount) external;
5822```*/
5823    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5824    #[derive(Clone)]
5825    pub struct delegateCall {
5826        #[allow(missing_docs)]
5827        pub validator: alloy::sol_types::private::Address,
5828        #[allow(missing_docs)]
5829        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5830    }
5831    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
5832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5833    #[derive(Clone)]
5834    pub struct delegateReturn {}
5835    #[allow(
5836        non_camel_case_types,
5837        non_snake_case,
5838        clippy::pub_underscore_fields,
5839        clippy::style
5840    )]
5841    const _: () = {
5842        use alloy::sol_types as alloy_sol_types;
5843        {
5844            #[doc(hidden)]
5845            type UnderlyingSolTuple<'a> = (
5846                alloy::sol_types::sol_data::Address,
5847                alloy::sol_types::sol_data::Uint<256>,
5848            );
5849            #[doc(hidden)]
5850            type UnderlyingRustTuple<'a> = (
5851                alloy::sol_types::private::Address,
5852                alloy::sol_types::private::primitives::aliases::U256,
5853            );
5854            #[cfg(test)]
5855            #[allow(dead_code, unreachable_patterns)]
5856            fn _type_assertion(
5857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5858            ) {
5859                match _t {
5860                    alloy_sol_types::private::AssertTypeEq::<
5861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5862                    >(_) => {}
5863                }
5864            }
5865            #[automatically_derived]
5866            #[doc(hidden)]
5867            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
5868                fn from(value: delegateCall) -> Self {
5869                    (value.validator, value.amount)
5870                }
5871            }
5872            #[automatically_derived]
5873            #[doc(hidden)]
5874            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
5875                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5876                    Self {
5877                        validator: tuple.0,
5878                        amount: tuple.1,
5879                    }
5880                }
5881            }
5882        }
5883        {
5884            #[doc(hidden)]
5885            type UnderlyingSolTuple<'a> = ();
5886            #[doc(hidden)]
5887            type UnderlyingRustTuple<'a> = ();
5888            #[cfg(test)]
5889            #[allow(dead_code, unreachable_patterns)]
5890            fn _type_assertion(
5891                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5892            ) {
5893                match _t {
5894                    alloy_sol_types::private::AssertTypeEq::<
5895                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5896                    >(_) => {}
5897                }
5898            }
5899            #[automatically_derived]
5900            #[doc(hidden)]
5901            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
5902                fn from(value: delegateReturn) -> Self {
5903                    ()
5904                }
5905            }
5906            #[automatically_derived]
5907            #[doc(hidden)]
5908            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
5909                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5910                    Self {}
5911                }
5912            }
5913        }
5914        #[automatically_derived]
5915        impl alloy_sol_types::SolCall for delegateCall {
5916            type Parameters<'a> = (
5917                alloy::sol_types::sol_data::Address,
5918                alloy::sol_types::sol_data::Uint<256>,
5919            );
5920            type Token<'a> = <Self::Parameters<
5921                'a,
5922            > as alloy_sol_types::SolType>::Token<'a>;
5923            type Return = delegateReturn;
5924            type ReturnTuple<'a> = ();
5925            type ReturnToken<'a> = <Self::ReturnTuple<
5926                'a,
5927            > as alloy_sol_types::SolType>::Token<'a>;
5928            const SIGNATURE: &'static str = "delegate(address,uint256)";
5929            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
5930            #[inline]
5931            fn new<'a>(
5932                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5933            ) -> Self {
5934                tuple.into()
5935            }
5936            #[inline]
5937            fn tokenize(&self) -> Self::Token<'_> {
5938                (
5939                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5940                        &self.validator,
5941                    ),
5942                    <alloy::sol_types::sol_data::Uint<
5943                        256,
5944                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5945                )
5946            }
5947            #[inline]
5948            fn abi_decode_returns(
5949                data: &[u8],
5950                validate: bool,
5951            ) -> alloy_sol_types::Result<Self::Return> {
5952                <Self::ReturnTuple<
5953                    '_,
5954                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5955                    .map(Into::into)
5956            }
5957        }
5958    };
5959    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5960    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
5961```solidity
5962function delegations(address validator, address delegator) external view returns (uint256 amount);
5963```*/
5964    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5965    #[derive(Clone)]
5966    pub struct delegationsCall {
5967        #[allow(missing_docs)]
5968        pub validator: alloy::sol_types::private::Address,
5969        #[allow(missing_docs)]
5970        pub delegator: alloy::sol_types::private::Address,
5971    }
5972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5973    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
5974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5975    #[derive(Clone)]
5976    pub struct delegationsReturn {
5977        #[allow(missing_docs)]
5978        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5979    }
5980    #[allow(
5981        non_camel_case_types,
5982        non_snake_case,
5983        clippy::pub_underscore_fields,
5984        clippy::style
5985    )]
5986    const _: () = {
5987        use alloy::sol_types as alloy_sol_types;
5988        {
5989            #[doc(hidden)]
5990            type UnderlyingSolTuple<'a> = (
5991                alloy::sol_types::sol_data::Address,
5992                alloy::sol_types::sol_data::Address,
5993            );
5994            #[doc(hidden)]
5995            type UnderlyingRustTuple<'a> = (
5996                alloy::sol_types::private::Address,
5997                alloy::sol_types::private::Address,
5998            );
5999            #[cfg(test)]
6000            #[allow(dead_code, unreachable_patterns)]
6001            fn _type_assertion(
6002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6003            ) {
6004                match _t {
6005                    alloy_sol_types::private::AssertTypeEq::<
6006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6007                    >(_) => {}
6008                }
6009            }
6010            #[automatically_derived]
6011            #[doc(hidden)]
6012            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
6013                fn from(value: delegationsCall) -> Self {
6014                    (value.validator, value.delegator)
6015                }
6016            }
6017            #[automatically_derived]
6018            #[doc(hidden)]
6019            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
6020                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6021                    Self {
6022                        validator: tuple.0,
6023                        delegator: tuple.1,
6024                    }
6025                }
6026            }
6027        }
6028        {
6029            #[doc(hidden)]
6030            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6031            #[doc(hidden)]
6032            type UnderlyingRustTuple<'a> = (
6033                alloy::sol_types::private::primitives::aliases::U256,
6034            );
6035            #[cfg(test)]
6036            #[allow(dead_code, unreachable_patterns)]
6037            fn _type_assertion(
6038                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6039            ) {
6040                match _t {
6041                    alloy_sol_types::private::AssertTypeEq::<
6042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6043                    >(_) => {}
6044                }
6045            }
6046            #[automatically_derived]
6047            #[doc(hidden)]
6048            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
6049                fn from(value: delegationsReturn) -> Self {
6050                    (value.amount,)
6051                }
6052            }
6053            #[automatically_derived]
6054            #[doc(hidden)]
6055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
6056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6057                    Self { amount: tuple.0 }
6058                }
6059            }
6060        }
6061        #[automatically_derived]
6062        impl alloy_sol_types::SolCall for delegationsCall {
6063            type Parameters<'a> = (
6064                alloy::sol_types::sol_data::Address,
6065                alloy::sol_types::sol_data::Address,
6066            );
6067            type Token<'a> = <Self::Parameters<
6068                'a,
6069            > as alloy_sol_types::SolType>::Token<'a>;
6070            type Return = delegationsReturn;
6071            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6072            type ReturnToken<'a> = <Self::ReturnTuple<
6073                'a,
6074            > as alloy_sol_types::SolType>::Token<'a>;
6075            const SIGNATURE: &'static str = "delegations(address,address)";
6076            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
6077            #[inline]
6078            fn new<'a>(
6079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6080            ) -> Self {
6081                tuple.into()
6082            }
6083            #[inline]
6084            fn tokenize(&self) -> Self::Token<'_> {
6085                (
6086                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6087                        &self.validator,
6088                    ),
6089                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6090                        &self.delegator,
6091                    ),
6092                )
6093            }
6094            #[inline]
6095            fn abi_decode_returns(
6096                data: &[u8],
6097                validate: bool,
6098            ) -> alloy_sol_types::Result<Self::Return> {
6099                <Self::ReturnTuple<
6100                    '_,
6101                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6102                    .map(Into::into)
6103            }
6104        }
6105    };
6106    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6107    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
6108```solidity
6109function deregisterValidator() external;
6110```*/
6111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6112    #[derive(Clone)]
6113    pub struct deregisterValidatorCall {}
6114    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
6115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6116    #[derive(Clone)]
6117    pub struct deregisterValidatorReturn {}
6118    #[allow(
6119        non_camel_case_types,
6120        non_snake_case,
6121        clippy::pub_underscore_fields,
6122        clippy::style
6123    )]
6124    const _: () = {
6125        use alloy::sol_types as alloy_sol_types;
6126        {
6127            #[doc(hidden)]
6128            type UnderlyingSolTuple<'a> = ();
6129            #[doc(hidden)]
6130            type UnderlyingRustTuple<'a> = ();
6131            #[cfg(test)]
6132            #[allow(dead_code, unreachable_patterns)]
6133            fn _type_assertion(
6134                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6135            ) {
6136                match _t {
6137                    alloy_sol_types::private::AssertTypeEq::<
6138                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6139                    >(_) => {}
6140                }
6141            }
6142            #[automatically_derived]
6143            #[doc(hidden)]
6144            impl ::core::convert::From<deregisterValidatorCall>
6145            for UnderlyingRustTuple<'_> {
6146                fn from(value: deregisterValidatorCall) -> Self {
6147                    ()
6148                }
6149            }
6150            #[automatically_derived]
6151            #[doc(hidden)]
6152            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6153            for deregisterValidatorCall {
6154                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6155                    Self {}
6156                }
6157            }
6158        }
6159        {
6160            #[doc(hidden)]
6161            type UnderlyingSolTuple<'a> = ();
6162            #[doc(hidden)]
6163            type UnderlyingRustTuple<'a> = ();
6164            #[cfg(test)]
6165            #[allow(dead_code, unreachable_patterns)]
6166            fn _type_assertion(
6167                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6168            ) {
6169                match _t {
6170                    alloy_sol_types::private::AssertTypeEq::<
6171                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6172                    >(_) => {}
6173                }
6174            }
6175            #[automatically_derived]
6176            #[doc(hidden)]
6177            impl ::core::convert::From<deregisterValidatorReturn>
6178            for UnderlyingRustTuple<'_> {
6179                fn from(value: deregisterValidatorReturn) -> Self {
6180                    ()
6181                }
6182            }
6183            #[automatically_derived]
6184            #[doc(hidden)]
6185            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6186            for deregisterValidatorReturn {
6187                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6188                    Self {}
6189                }
6190            }
6191        }
6192        #[automatically_derived]
6193        impl alloy_sol_types::SolCall for deregisterValidatorCall {
6194            type Parameters<'a> = ();
6195            type Token<'a> = <Self::Parameters<
6196                'a,
6197            > as alloy_sol_types::SolType>::Token<'a>;
6198            type Return = deregisterValidatorReturn;
6199            type ReturnTuple<'a> = ();
6200            type ReturnToken<'a> = <Self::ReturnTuple<
6201                'a,
6202            > as alloy_sol_types::SolType>::Token<'a>;
6203            const SIGNATURE: &'static str = "deregisterValidator()";
6204            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
6205            #[inline]
6206            fn new<'a>(
6207                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6208            ) -> Self {
6209                tuple.into()
6210            }
6211            #[inline]
6212            fn tokenize(&self) -> Self::Token<'_> {
6213                ()
6214            }
6215            #[inline]
6216            fn abi_decode_returns(
6217                data: &[u8],
6218                validate: bool,
6219            ) -> alloy_sol_types::Result<Self::Return> {
6220                <Self::ReturnTuple<
6221                    '_,
6222                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6223                    .map(Into::into)
6224            }
6225        }
6226    };
6227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6228    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
6229```solidity
6230function exitEscrowPeriod() external view returns (uint256);
6231```*/
6232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6233    #[derive(Clone)]
6234    pub struct exitEscrowPeriodCall {}
6235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6236    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
6237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6238    #[derive(Clone)]
6239    pub struct exitEscrowPeriodReturn {
6240        #[allow(missing_docs)]
6241        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6242    }
6243    #[allow(
6244        non_camel_case_types,
6245        non_snake_case,
6246        clippy::pub_underscore_fields,
6247        clippy::style
6248    )]
6249    const _: () = {
6250        use alloy::sol_types as alloy_sol_types;
6251        {
6252            #[doc(hidden)]
6253            type UnderlyingSolTuple<'a> = ();
6254            #[doc(hidden)]
6255            type UnderlyingRustTuple<'a> = ();
6256            #[cfg(test)]
6257            #[allow(dead_code, unreachable_patterns)]
6258            fn _type_assertion(
6259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6260            ) {
6261                match _t {
6262                    alloy_sol_types::private::AssertTypeEq::<
6263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6264                    >(_) => {}
6265                }
6266            }
6267            #[automatically_derived]
6268            #[doc(hidden)]
6269            impl ::core::convert::From<exitEscrowPeriodCall>
6270            for UnderlyingRustTuple<'_> {
6271                fn from(value: exitEscrowPeriodCall) -> Self {
6272                    ()
6273                }
6274            }
6275            #[automatically_derived]
6276            #[doc(hidden)]
6277            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6278            for exitEscrowPeriodCall {
6279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6280                    Self {}
6281                }
6282            }
6283        }
6284        {
6285            #[doc(hidden)]
6286            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6287            #[doc(hidden)]
6288            type UnderlyingRustTuple<'a> = (
6289                alloy::sol_types::private::primitives::aliases::U256,
6290            );
6291            #[cfg(test)]
6292            #[allow(dead_code, unreachable_patterns)]
6293            fn _type_assertion(
6294                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6295            ) {
6296                match _t {
6297                    alloy_sol_types::private::AssertTypeEq::<
6298                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6299                    >(_) => {}
6300                }
6301            }
6302            #[automatically_derived]
6303            #[doc(hidden)]
6304            impl ::core::convert::From<exitEscrowPeriodReturn>
6305            for UnderlyingRustTuple<'_> {
6306                fn from(value: exitEscrowPeriodReturn) -> Self {
6307                    (value._0,)
6308                }
6309            }
6310            #[automatically_derived]
6311            #[doc(hidden)]
6312            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6313            for exitEscrowPeriodReturn {
6314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6315                    Self { _0: tuple.0 }
6316                }
6317            }
6318        }
6319        #[automatically_derived]
6320        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
6321            type Parameters<'a> = ();
6322            type Token<'a> = <Self::Parameters<
6323                'a,
6324            > as alloy_sol_types::SolType>::Token<'a>;
6325            type Return = exitEscrowPeriodReturn;
6326            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6327            type ReturnToken<'a> = <Self::ReturnTuple<
6328                'a,
6329            > as alloy_sol_types::SolType>::Token<'a>;
6330            const SIGNATURE: &'static str = "exitEscrowPeriod()";
6331            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
6332            #[inline]
6333            fn new<'a>(
6334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6335            ) -> Self {
6336                tuple.into()
6337            }
6338            #[inline]
6339            fn tokenize(&self) -> Self::Token<'_> {
6340                ()
6341            }
6342            #[inline]
6343            fn abi_decode_returns(
6344                data: &[u8],
6345                validate: bool,
6346            ) -> alloy_sol_types::Result<Self::Return> {
6347                <Self::ReturnTuple<
6348                    '_,
6349                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6350                    .map(Into::into)
6351            }
6352        }
6353    };
6354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6355    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
6356```solidity
6357function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
6358```*/
6359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6360    #[derive(Clone)]
6361    pub struct getVersionCall {}
6362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6363    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
6364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6365    #[derive(Clone)]
6366    pub struct getVersionReturn {
6367        #[allow(missing_docs)]
6368        pub majorVersion: u8,
6369        #[allow(missing_docs)]
6370        pub minorVersion: u8,
6371        #[allow(missing_docs)]
6372        pub patchVersion: u8,
6373    }
6374    #[allow(
6375        non_camel_case_types,
6376        non_snake_case,
6377        clippy::pub_underscore_fields,
6378        clippy::style
6379    )]
6380    const _: () = {
6381        use alloy::sol_types as alloy_sol_types;
6382        {
6383            #[doc(hidden)]
6384            type UnderlyingSolTuple<'a> = ();
6385            #[doc(hidden)]
6386            type UnderlyingRustTuple<'a> = ();
6387            #[cfg(test)]
6388            #[allow(dead_code, unreachable_patterns)]
6389            fn _type_assertion(
6390                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6391            ) {
6392                match _t {
6393                    alloy_sol_types::private::AssertTypeEq::<
6394                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6395                    >(_) => {}
6396                }
6397            }
6398            #[automatically_derived]
6399            #[doc(hidden)]
6400            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
6401                fn from(value: getVersionCall) -> Self {
6402                    ()
6403                }
6404            }
6405            #[automatically_derived]
6406            #[doc(hidden)]
6407            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
6408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6409                    Self {}
6410                }
6411            }
6412        }
6413        {
6414            #[doc(hidden)]
6415            type UnderlyingSolTuple<'a> = (
6416                alloy::sol_types::sol_data::Uint<8>,
6417                alloy::sol_types::sol_data::Uint<8>,
6418                alloy::sol_types::sol_data::Uint<8>,
6419            );
6420            #[doc(hidden)]
6421            type UnderlyingRustTuple<'a> = (u8, u8, u8);
6422            #[cfg(test)]
6423            #[allow(dead_code, unreachable_patterns)]
6424            fn _type_assertion(
6425                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6426            ) {
6427                match _t {
6428                    alloy_sol_types::private::AssertTypeEq::<
6429                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6430                    >(_) => {}
6431                }
6432            }
6433            #[automatically_derived]
6434            #[doc(hidden)]
6435            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
6436                fn from(value: getVersionReturn) -> Self {
6437                    (value.majorVersion, value.minorVersion, value.patchVersion)
6438                }
6439            }
6440            #[automatically_derived]
6441            #[doc(hidden)]
6442            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
6443                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6444                    Self {
6445                        majorVersion: tuple.0,
6446                        minorVersion: tuple.1,
6447                        patchVersion: tuple.2,
6448                    }
6449                }
6450            }
6451        }
6452        #[automatically_derived]
6453        impl alloy_sol_types::SolCall for getVersionCall {
6454            type Parameters<'a> = ();
6455            type Token<'a> = <Self::Parameters<
6456                'a,
6457            > as alloy_sol_types::SolType>::Token<'a>;
6458            type Return = getVersionReturn;
6459            type ReturnTuple<'a> = (
6460                alloy::sol_types::sol_data::Uint<8>,
6461                alloy::sol_types::sol_data::Uint<8>,
6462                alloy::sol_types::sol_data::Uint<8>,
6463            );
6464            type ReturnToken<'a> = <Self::ReturnTuple<
6465                'a,
6466            > as alloy_sol_types::SolType>::Token<'a>;
6467            const SIGNATURE: &'static str = "getVersion()";
6468            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
6469            #[inline]
6470            fn new<'a>(
6471                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6472            ) -> Self {
6473                tuple.into()
6474            }
6475            #[inline]
6476            fn tokenize(&self) -> Self::Token<'_> {
6477                ()
6478            }
6479            #[inline]
6480            fn abi_decode_returns(
6481                data: &[u8],
6482                validate: bool,
6483            ) -> alloy_sol_types::Result<Self::Return> {
6484                <Self::ReturnTuple<
6485                    '_,
6486                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6487                    .map(Into::into)
6488            }
6489        }
6490    };
6491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6492    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
6493```solidity
6494function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
6495```*/
6496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6497    #[derive(Clone)]
6498    pub struct initializeCall {
6499        #[allow(missing_docs)]
6500        pub _tokenAddress: alloy::sol_types::private::Address,
6501        #[allow(missing_docs)]
6502        pub _lightClientAddress: alloy::sol_types::private::Address,
6503        #[allow(missing_docs)]
6504        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
6505        #[allow(missing_docs)]
6506        pub _timelock: alloy::sol_types::private::Address,
6507    }
6508    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
6509    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6510    #[derive(Clone)]
6511    pub struct initializeReturn {}
6512    #[allow(
6513        non_camel_case_types,
6514        non_snake_case,
6515        clippy::pub_underscore_fields,
6516        clippy::style
6517    )]
6518    const _: () = {
6519        use alloy::sol_types as alloy_sol_types;
6520        {
6521            #[doc(hidden)]
6522            type UnderlyingSolTuple<'a> = (
6523                alloy::sol_types::sol_data::Address,
6524                alloy::sol_types::sol_data::Address,
6525                alloy::sol_types::sol_data::Uint<256>,
6526                alloy::sol_types::sol_data::Address,
6527            );
6528            #[doc(hidden)]
6529            type UnderlyingRustTuple<'a> = (
6530                alloy::sol_types::private::Address,
6531                alloy::sol_types::private::Address,
6532                alloy::sol_types::private::primitives::aliases::U256,
6533                alloy::sol_types::private::Address,
6534            );
6535            #[cfg(test)]
6536            #[allow(dead_code, unreachable_patterns)]
6537            fn _type_assertion(
6538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6539            ) {
6540                match _t {
6541                    alloy_sol_types::private::AssertTypeEq::<
6542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6543                    >(_) => {}
6544                }
6545            }
6546            #[automatically_derived]
6547            #[doc(hidden)]
6548            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
6549                fn from(value: initializeCall) -> Self {
6550                    (
6551                        value._tokenAddress,
6552                        value._lightClientAddress,
6553                        value._exitEscrowPeriod,
6554                        value._timelock,
6555                    )
6556                }
6557            }
6558            #[automatically_derived]
6559            #[doc(hidden)]
6560            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
6561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6562                    Self {
6563                        _tokenAddress: tuple.0,
6564                        _lightClientAddress: tuple.1,
6565                        _exitEscrowPeriod: tuple.2,
6566                        _timelock: tuple.3,
6567                    }
6568                }
6569            }
6570        }
6571        {
6572            #[doc(hidden)]
6573            type UnderlyingSolTuple<'a> = ();
6574            #[doc(hidden)]
6575            type UnderlyingRustTuple<'a> = ();
6576            #[cfg(test)]
6577            #[allow(dead_code, unreachable_patterns)]
6578            fn _type_assertion(
6579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6580            ) {
6581                match _t {
6582                    alloy_sol_types::private::AssertTypeEq::<
6583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6584                    >(_) => {}
6585                }
6586            }
6587            #[automatically_derived]
6588            #[doc(hidden)]
6589            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
6590                fn from(value: initializeReturn) -> Self {
6591                    ()
6592                }
6593            }
6594            #[automatically_derived]
6595            #[doc(hidden)]
6596            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
6597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6598                    Self {}
6599                }
6600            }
6601        }
6602        #[automatically_derived]
6603        impl alloy_sol_types::SolCall for initializeCall {
6604            type Parameters<'a> = (
6605                alloy::sol_types::sol_data::Address,
6606                alloy::sol_types::sol_data::Address,
6607                alloy::sol_types::sol_data::Uint<256>,
6608                alloy::sol_types::sol_data::Address,
6609            );
6610            type Token<'a> = <Self::Parameters<
6611                'a,
6612            > as alloy_sol_types::SolType>::Token<'a>;
6613            type Return = initializeReturn;
6614            type ReturnTuple<'a> = ();
6615            type ReturnToken<'a> = <Self::ReturnTuple<
6616                'a,
6617            > as alloy_sol_types::SolType>::Token<'a>;
6618            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
6619            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
6620            #[inline]
6621            fn new<'a>(
6622                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6623            ) -> Self {
6624                tuple.into()
6625            }
6626            #[inline]
6627            fn tokenize(&self) -> Self::Token<'_> {
6628                (
6629                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6630                        &self._tokenAddress,
6631                    ),
6632                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6633                        &self._lightClientAddress,
6634                    ),
6635                    <alloy::sol_types::sol_data::Uint<
6636                        256,
6637                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
6638                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6639                        &self._timelock,
6640                    ),
6641                )
6642            }
6643            #[inline]
6644            fn abi_decode_returns(
6645                data: &[u8],
6646                validate: bool,
6647            ) -> alloy_sol_types::Result<Self::Return> {
6648                <Self::ReturnTuple<
6649                    '_,
6650                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6651                    .map(Into::into)
6652            }
6653        }
6654    };
6655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6656    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
6657```solidity
6658function initializedAtBlock() external view returns (uint256);
6659```*/
6660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6661    #[derive(Clone)]
6662    pub struct initializedAtBlockCall {}
6663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6664    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
6665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6666    #[derive(Clone)]
6667    pub struct initializedAtBlockReturn {
6668        #[allow(missing_docs)]
6669        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6670    }
6671    #[allow(
6672        non_camel_case_types,
6673        non_snake_case,
6674        clippy::pub_underscore_fields,
6675        clippy::style
6676    )]
6677    const _: () = {
6678        use alloy::sol_types as alloy_sol_types;
6679        {
6680            #[doc(hidden)]
6681            type UnderlyingSolTuple<'a> = ();
6682            #[doc(hidden)]
6683            type UnderlyingRustTuple<'a> = ();
6684            #[cfg(test)]
6685            #[allow(dead_code, unreachable_patterns)]
6686            fn _type_assertion(
6687                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6688            ) {
6689                match _t {
6690                    alloy_sol_types::private::AssertTypeEq::<
6691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6692                    >(_) => {}
6693                }
6694            }
6695            #[automatically_derived]
6696            #[doc(hidden)]
6697            impl ::core::convert::From<initializedAtBlockCall>
6698            for UnderlyingRustTuple<'_> {
6699                fn from(value: initializedAtBlockCall) -> Self {
6700                    ()
6701                }
6702            }
6703            #[automatically_derived]
6704            #[doc(hidden)]
6705            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6706            for initializedAtBlockCall {
6707                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6708                    Self {}
6709                }
6710            }
6711        }
6712        {
6713            #[doc(hidden)]
6714            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6715            #[doc(hidden)]
6716            type UnderlyingRustTuple<'a> = (
6717                alloy::sol_types::private::primitives::aliases::U256,
6718            );
6719            #[cfg(test)]
6720            #[allow(dead_code, unreachable_patterns)]
6721            fn _type_assertion(
6722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6723            ) {
6724                match _t {
6725                    alloy_sol_types::private::AssertTypeEq::<
6726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6727                    >(_) => {}
6728                }
6729            }
6730            #[automatically_derived]
6731            #[doc(hidden)]
6732            impl ::core::convert::From<initializedAtBlockReturn>
6733            for UnderlyingRustTuple<'_> {
6734                fn from(value: initializedAtBlockReturn) -> Self {
6735                    (value._0,)
6736                }
6737            }
6738            #[automatically_derived]
6739            #[doc(hidden)]
6740            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6741            for initializedAtBlockReturn {
6742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6743                    Self { _0: tuple.0 }
6744                }
6745            }
6746        }
6747        #[automatically_derived]
6748        impl alloy_sol_types::SolCall for initializedAtBlockCall {
6749            type Parameters<'a> = ();
6750            type Token<'a> = <Self::Parameters<
6751                'a,
6752            > as alloy_sol_types::SolType>::Token<'a>;
6753            type Return = initializedAtBlockReturn;
6754            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6755            type ReturnToken<'a> = <Self::ReturnTuple<
6756                'a,
6757            > as alloy_sol_types::SolType>::Token<'a>;
6758            const SIGNATURE: &'static str = "initializedAtBlock()";
6759            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
6760            #[inline]
6761            fn new<'a>(
6762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6763            ) -> Self {
6764                tuple.into()
6765            }
6766            #[inline]
6767            fn tokenize(&self) -> Self::Token<'_> {
6768                ()
6769            }
6770            #[inline]
6771            fn abi_decode_returns(
6772                data: &[u8],
6773                validate: bool,
6774            ) -> alloy_sol_types::Result<Self::Return> {
6775                <Self::ReturnTuple<
6776                    '_,
6777                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6778                    .map(Into::into)
6779            }
6780        }
6781    };
6782    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6783    /**Function with signature `lightClient()` and selector `0xb5700e68`.
6784```solidity
6785function lightClient() external view returns (address);
6786```*/
6787    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6788    #[derive(Clone)]
6789    pub struct lightClientCall {}
6790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6791    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
6792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6793    #[derive(Clone)]
6794    pub struct lightClientReturn {
6795        #[allow(missing_docs)]
6796        pub _0: alloy::sol_types::private::Address,
6797    }
6798    #[allow(
6799        non_camel_case_types,
6800        non_snake_case,
6801        clippy::pub_underscore_fields,
6802        clippy::style
6803    )]
6804    const _: () = {
6805        use alloy::sol_types as alloy_sol_types;
6806        {
6807            #[doc(hidden)]
6808            type UnderlyingSolTuple<'a> = ();
6809            #[doc(hidden)]
6810            type UnderlyingRustTuple<'a> = ();
6811            #[cfg(test)]
6812            #[allow(dead_code, unreachable_patterns)]
6813            fn _type_assertion(
6814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6815            ) {
6816                match _t {
6817                    alloy_sol_types::private::AssertTypeEq::<
6818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6819                    >(_) => {}
6820                }
6821            }
6822            #[automatically_derived]
6823            #[doc(hidden)]
6824            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
6825                fn from(value: lightClientCall) -> Self {
6826                    ()
6827                }
6828            }
6829            #[automatically_derived]
6830            #[doc(hidden)]
6831            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
6832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6833                    Self {}
6834                }
6835            }
6836        }
6837        {
6838            #[doc(hidden)]
6839            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6840            #[doc(hidden)]
6841            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6842            #[cfg(test)]
6843            #[allow(dead_code, unreachable_patterns)]
6844            fn _type_assertion(
6845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6846            ) {
6847                match _t {
6848                    alloy_sol_types::private::AssertTypeEq::<
6849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6850                    >(_) => {}
6851                }
6852            }
6853            #[automatically_derived]
6854            #[doc(hidden)]
6855            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
6856                fn from(value: lightClientReturn) -> Self {
6857                    (value._0,)
6858                }
6859            }
6860            #[automatically_derived]
6861            #[doc(hidden)]
6862            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
6863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6864                    Self { _0: tuple.0 }
6865                }
6866            }
6867        }
6868        #[automatically_derived]
6869        impl alloy_sol_types::SolCall for lightClientCall {
6870            type Parameters<'a> = ();
6871            type Token<'a> = <Self::Parameters<
6872                'a,
6873            > as alloy_sol_types::SolType>::Token<'a>;
6874            type Return = lightClientReturn;
6875            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6876            type ReturnToken<'a> = <Self::ReturnTuple<
6877                'a,
6878            > as alloy_sol_types::SolType>::Token<'a>;
6879            const SIGNATURE: &'static str = "lightClient()";
6880            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
6881            #[inline]
6882            fn new<'a>(
6883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6884            ) -> Self {
6885                tuple.into()
6886            }
6887            #[inline]
6888            fn tokenize(&self) -> Self::Token<'_> {
6889                ()
6890            }
6891            #[inline]
6892            fn abi_decode_returns(
6893                data: &[u8],
6894                validate: bool,
6895            ) -> alloy_sol_types::Result<Self::Return> {
6896                <Self::ReturnTuple<
6897                    '_,
6898                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6899                    .map(Into::into)
6900            }
6901        }
6902    };
6903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6904    /**Function with signature `owner()` and selector `0x8da5cb5b`.
6905```solidity
6906function owner() external view returns (address);
6907```*/
6908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6909    #[derive(Clone)]
6910    pub struct ownerCall {}
6911    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6912    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
6913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6914    #[derive(Clone)]
6915    pub struct ownerReturn {
6916        #[allow(missing_docs)]
6917        pub _0: alloy::sol_types::private::Address,
6918    }
6919    #[allow(
6920        non_camel_case_types,
6921        non_snake_case,
6922        clippy::pub_underscore_fields,
6923        clippy::style
6924    )]
6925    const _: () = {
6926        use alloy::sol_types as alloy_sol_types;
6927        {
6928            #[doc(hidden)]
6929            type UnderlyingSolTuple<'a> = ();
6930            #[doc(hidden)]
6931            type UnderlyingRustTuple<'a> = ();
6932            #[cfg(test)]
6933            #[allow(dead_code, unreachable_patterns)]
6934            fn _type_assertion(
6935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6936            ) {
6937                match _t {
6938                    alloy_sol_types::private::AssertTypeEq::<
6939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6940                    >(_) => {}
6941                }
6942            }
6943            #[automatically_derived]
6944            #[doc(hidden)]
6945            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
6946                fn from(value: ownerCall) -> Self {
6947                    ()
6948                }
6949            }
6950            #[automatically_derived]
6951            #[doc(hidden)]
6952            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
6953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6954                    Self {}
6955                }
6956            }
6957        }
6958        {
6959            #[doc(hidden)]
6960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6961            #[doc(hidden)]
6962            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6963            #[cfg(test)]
6964            #[allow(dead_code, unreachable_patterns)]
6965            fn _type_assertion(
6966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6967            ) {
6968                match _t {
6969                    alloy_sol_types::private::AssertTypeEq::<
6970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6971                    >(_) => {}
6972                }
6973            }
6974            #[automatically_derived]
6975            #[doc(hidden)]
6976            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
6977                fn from(value: ownerReturn) -> Self {
6978                    (value._0,)
6979                }
6980            }
6981            #[automatically_derived]
6982            #[doc(hidden)]
6983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
6984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6985                    Self { _0: tuple.0 }
6986                }
6987            }
6988        }
6989        #[automatically_derived]
6990        impl alloy_sol_types::SolCall for ownerCall {
6991            type Parameters<'a> = ();
6992            type Token<'a> = <Self::Parameters<
6993                'a,
6994            > as alloy_sol_types::SolType>::Token<'a>;
6995            type Return = ownerReturn;
6996            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6997            type ReturnToken<'a> = <Self::ReturnTuple<
6998                'a,
6999            > as alloy_sol_types::SolType>::Token<'a>;
7000            const SIGNATURE: &'static str = "owner()";
7001            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7002            #[inline]
7003            fn new<'a>(
7004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7005            ) -> Self {
7006                tuple.into()
7007            }
7008            #[inline]
7009            fn tokenize(&self) -> Self::Token<'_> {
7010                ()
7011            }
7012            #[inline]
7013            fn abi_decode_returns(
7014                data: &[u8],
7015                validate: bool,
7016            ) -> alloy_sol_types::Result<Self::Return> {
7017                <Self::ReturnTuple<
7018                    '_,
7019                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7020                    .map(Into::into)
7021            }
7022        }
7023    };
7024    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7025    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7026```solidity
7027function proxiableUUID() external view returns (bytes32);
7028```*/
7029    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7030    #[derive(Clone)]
7031    pub struct proxiableUUIDCall {}
7032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7033    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7035    #[derive(Clone)]
7036    pub struct proxiableUUIDReturn {
7037        #[allow(missing_docs)]
7038        pub _0: alloy::sol_types::private::FixedBytes<32>,
7039    }
7040    #[allow(
7041        non_camel_case_types,
7042        non_snake_case,
7043        clippy::pub_underscore_fields,
7044        clippy::style
7045    )]
7046    const _: () = {
7047        use alloy::sol_types as alloy_sol_types;
7048        {
7049            #[doc(hidden)]
7050            type UnderlyingSolTuple<'a> = ();
7051            #[doc(hidden)]
7052            type UnderlyingRustTuple<'a> = ();
7053            #[cfg(test)]
7054            #[allow(dead_code, unreachable_patterns)]
7055            fn _type_assertion(
7056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7057            ) {
7058                match _t {
7059                    alloy_sol_types::private::AssertTypeEq::<
7060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7061                    >(_) => {}
7062                }
7063            }
7064            #[automatically_derived]
7065            #[doc(hidden)]
7066            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7067                fn from(value: proxiableUUIDCall) -> Self {
7068                    ()
7069                }
7070            }
7071            #[automatically_derived]
7072            #[doc(hidden)]
7073            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
7074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7075                    Self {}
7076                }
7077            }
7078        }
7079        {
7080            #[doc(hidden)]
7081            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7082            #[doc(hidden)]
7083            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7084            #[cfg(test)]
7085            #[allow(dead_code, unreachable_patterns)]
7086            fn _type_assertion(
7087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7088            ) {
7089                match _t {
7090                    alloy_sol_types::private::AssertTypeEq::<
7091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7092                    >(_) => {}
7093                }
7094            }
7095            #[automatically_derived]
7096            #[doc(hidden)]
7097            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
7098                fn from(value: proxiableUUIDReturn) -> Self {
7099                    (value._0,)
7100                }
7101            }
7102            #[automatically_derived]
7103            #[doc(hidden)]
7104            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
7105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7106                    Self { _0: tuple.0 }
7107                }
7108            }
7109        }
7110        #[automatically_derived]
7111        impl alloy_sol_types::SolCall for proxiableUUIDCall {
7112            type Parameters<'a> = ();
7113            type Token<'a> = <Self::Parameters<
7114                'a,
7115            > as alloy_sol_types::SolType>::Token<'a>;
7116            type Return = proxiableUUIDReturn;
7117            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7118            type ReturnToken<'a> = <Self::ReturnTuple<
7119                'a,
7120            > as alloy_sol_types::SolType>::Token<'a>;
7121            const SIGNATURE: &'static str = "proxiableUUID()";
7122            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
7123            #[inline]
7124            fn new<'a>(
7125                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7126            ) -> Self {
7127                tuple.into()
7128            }
7129            #[inline]
7130            fn tokenize(&self) -> Self::Token<'_> {
7131                ()
7132            }
7133            #[inline]
7134            fn abi_decode_returns(
7135                data: &[u8],
7136                validate: bool,
7137            ) -> alloy_sol_types::Result<Self::Return> {
7138                <Self::ReturnTuple<
7139                    '_,
7140                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7141                    .map(Into::into)
7142            }
7143        }
7144    };
7145    #[derive()]
7146    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
7147```solidity
7148function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
7149```*/
7150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7151    #[derive(Clone)]
7152    pub struct registerValidatorCall {
7153        #[allow(missing_docs)]
7154        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7155        #[allow(missing_docs)]
7156        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7157        #[allow(missing_docs)]
7158        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
7159        #[allow(missing_docs)]
7160        pub commission: u16,
7161    }
7162    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
7163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7164    #[derive(Clone)]
7165    pub struct registerValidatorReturn {}
7166    #[allow(
7167        non_camel_case_types,
7168        non_snake_case,
7169        clippy::pub_underscore_fields,
7170        clippy::style
7171    )]
7172    const _: () = {
7173        use alloy::sol_types as alloy_sol_types;
7174        {
7175            #[doc(hidden)]
7176            type UnderlyingSolTuple<'a> = (
7177                BN254::G2Point,
7178                EdOnBN254::EdOnBN254Point,
7179                BN254::G1Point,
7180                alloy::sol_types::sol_data::Uint<16>,
7181            );
7182            #[doc(hidden)]
7183            type UnderlyingRustTuple<'a> = (
7184                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7185                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7186                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
7187                u16,
7188            );
7189            #[cfg(test)]
7190            #[allow(dead_code, unreachable_patterns)]
7191            fn _type_assertion(
7192                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7193            ) {
7194                match _t {
7195                    alloy_sol_types::private::AssertTypeEq::<
7196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7197                    >(_) => {}
7198                }
7199            }
7200            #[automatically_derived]
7201            #[doc(hidden)]
7202            impl ::core::convert::From<registerValidatorCall>
7203            for UnderlyingRustTuple<'_> {
7204                fn from(value: registerValidatorCall) -> Self {
7205                    (value.blsVK, value.schnorrVK, value.blsSig, value.commission)
7206                }
7207            }
7208            #[automatically_derived]
7209            #[doc(hidden)]
7210            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7211            for registerValidatorCall {
7212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7213                    Self {
7214                        blsVK: tuple.0,
7215                        schnorrVK: tuple.1,
7216                        blsSig: tuple.2,
7217                        commission: tuple.3,
7218                    }
7219                }
7220            }
7221        }
7222        {
7223            #[doc(hidden)]
7224            type UnderlyingSolTuple<'a> = ();
7225            #[doc(hidden)]
7226            type UnderlyingRustTuple<'a> = ();
7227            #[cfg(test)]
7228            #[allow(dead_code, unreachable_patterns)]
7229            fn _type_assertion(
7230                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7231            ) {
7232                match _t {
7233                    alloy_sol_types::private::AssertTypeEq::<
7234                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7235                    >(_) => {}
7236                }
7237            }
7238            #[automatically_derived]
7239            #[doc(hidden)]
7240            impl ::core::convert::From<registerValidatorReturn>
7241            for UnderlyingRustTuple<'_> {
7242                fn from(value: registerValidatorReturn) -> Self {
7243                    ()
7244                }
7245            }
7246            #[automatically_derived]
7247            #[doc(hidden)]
7248            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7249            for registerValidatorReturn {
7250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7251                    Self {}
7252                }
7253            }
7254        }
7255        #[automatically_derived]
7256        impl alloy_sol_types::SolCall for registerValidatorCall {
7257            type Parameters<'a> = (
7258                BN254::G2Point,
7259                EdOnBN254::EdOnBN254Point,
7260                BN254::G1Point,
7261                alloy::sol_types::sol_data::Uint<16>,
7262            );
7263            type Token<'a> = <Self::Parameters<
7264                'a,
7265            > as alloy_sol_types::SolType>::Token<'a>;
7266            type Return = registerValidatorReturn;
7267            type ReturnTuple<'a> = ();
7268            type ReturnToken<'a> = <Self::ReturnTuple<
7269                'a,
7270            > as alloy_sol_types::SolType>::Token<'a>;
7271            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
7272            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
7273            #[inline]
7274            fn new<'a>(
7275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7276            ) -> Self {
7277                tuple.into()
7278            }
7279            #[inline]
7280            fn tokenize(&self) -> Self::Token<'_> {
7281                (
7282                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7283                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7284                        &self.schnorrVK,
7285                    ),
7286                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
7287                    <alloy::sol_types::sol_data::Uint<
7288                        16,
7289                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
7290                )
7291            }
7292            #[inline]
7293            fn abi_decode_returns(
7294                data: &[u8],
7295                validate: bool,
7296            ) -> alloy_sol_types::Result<Self::Return> {
7297                <Self::ReturnTuple<
7298                    '_,
7299                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7300                    .map(Into::into)
7301            }
7302        }
7303    };
7304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7305    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7306```solidity
7307function renounceOwnership() external;
7308```*/
7309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7310    #[derive(Clone)]
7311    pub struct renounceOwnershipCall {}
7312    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
7313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7314    #[derive(Clone)]
7315    pub struct renounceOwnershipReturn {}
7316    #[allow(
7317        non_camel_case_types,
7318        non_snake_case,
7319        clippy::pub_underscore_fields,
7320        clippy::style
7321    )]
7322    const _: () = {
7323        use alloy::sol_types as alloy_sol_types;
7324        {
7325            #[doc(hidden)]
7326            type UnderlyingSolTuple<'a> = ();
7327            #[doc(hidden)]
7328            type UnderlyingRustTuple<'a> = ();
7329            #[cfg(test)]
7330            #[allow(dead_code, unreachable_patterns)]
7331            fn _type_assertion(
7332                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7333            ) {
7334                match _t {
7335                    alloy_sol_types::private::AssertTypeEq::<
7336                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7337                    >(_) => {}
7338                }
7339            }
7340            #[automatically_derived]
7341            #[doc(hidden)]
7342            impl ::core::convert::From<renounceOwnershipCall>
7343            for UnderlyingRustTuple<'_> {
7344                fn from(value: renounceOwnershipCall) -> Self {
7345                    ()
7346                }
7347            }
7348            #[automatically_derived]
7349            #[doc(hidden)]
7350            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7351            for renounceOwnershipCall {
7352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7353                    Self {}
7354                }
7355            }
7356        }
7357        {
7358            #[doc(hidden)]
7359            type UnderlyingSolTuple<'a> = ();
7360            #[doc(hidden)]
7361            type UnderlyingRustTuple<'a> = ();
7362            #[cfg(test)]
7363            #[allow(dead_code, unreachable_patterns)]
7364            fn _type_assertion(
7365                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7366            ) {
7367                match _t {
7368                    alloy_sol_types::private::AssertTypeEq::<
7369                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7370                    >(_) => {}
7371                }
7372            }
7373            #[automatically_derived]
7374            #[doc(hidden)]
7375            impl ::core::convert::From<renounceOwnershipReturn>
7376            for UnderlyingRustTuple<'_> {
7377                fn from(value: renounceOwnershipReturn) -> Self {
7378                    ()
7379                }
7380            }
7381            #[automatically_derived]
7382            #[doc(hidden)]
7383            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7384            for renounceOwnershipReturn {
7385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7386                    Self {}
7387                }
7388            }
7389        }
7390        #[automatically_derived]
7391        impl alloy_sol_types::SolCall for renounceOwnershipCall {
7392            type Parameters<'a> = ();
7393            type Token<'a> = <Self::Parameters<
7394                'a,
7395            > as alloy_sol_types::SolType>::Token<'a>;
7396            type Return = renounceOwnershipReturn;
7397            type ReturnTuple<'a> = ();
7398            type ReturnToken<'a> = <Self::ReturnTuple<
7399                'a,
7400            > as alloy_sol_types::SolType>::Token<'a>;
7401            const SIGNATURE: &'static str = "renounceOwnership()";
7402            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
7403            #[inline]
7404            fn new<'a>(
7405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7406            ) -> Self {
7407                tuple.into()
7408            }
7409            #[inline]
7410            fn tokenize(&self) -> Self::Token<'_> {
7411                ()
7412            }
7413            #[inline]
7414            fn abi_decode_returns(
7415                data: &[u8],
7416                validate: bool,
7417            ) -> alloy_sol_types::Result<Self::Return> {
7418                <Self::ReturnTuple<
7419                    '_,
7420                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7421                    .map(Into::into)
7422            }
7423        }
7424    };
7425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7426    /**Function with signature `token()` and selector `0xfc0c546a`.
7427```solidity
7428function token() external view returns (address);
7429```*/
7430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7431    #[derive(Clone)]
7432    pub struct tokenCall {}
7433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7434    ///Container type for the return parameters of the [`token()`](tokenCall) function.
7435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7436    #[derive(Clone)]
7437    pub struct tokenReturn {
7438        #[allow(missing_docs)]
7439        pub _0: alloy::sol_types::private::Address,
7440    }
7441    #[allow(
7442        non_camel_case_types,
7443        non_snake_case,
7444        clippy::pub_underscore_fields,
7445        clippy::style
7446    )]
7447    const _: () = {
7448        use alloy::sol_types as alloy_sol_types;
7449        {
7450            #[doc(hidden)]
7451            type UnderlyingSolTuple<'a> = ();
7452            #[doc(hidden)]
7453            type UnderlyingRustTuple<'a> = ();
7454            #[cfg(test)]
7455            #[allow(dead_code, unreachable_patterns)]
7456            fn _type_assertion(
7457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7458            ) {
7459                match _t {
7460                    alloy_sol_types::private::AssertTypeEq::<
7461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7462                    >(_) => {}
7463                }
7464            }
7465            #[automatically_derived]
7466            #[doc(hidden)]
7467            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
7468                fn from(value: tokenCall) -> Self {
7469                    ()
7470                }
7471            }
7472            #[automatically_derived]
7473            #[doc(hidden)]
7474            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
7475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7476                    Self {}
7477                }
7478            }
7479        }
7480        {
7481            #[doc(hidden)]
7482            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7483            #[doc(hidden)]
7484            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7485            #[cfg(test)]
7486            #[allow(dead_code, unreachable_patterns)]
7487            fn _type_assertion(
7488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7489            ) {
7490                match _t {
7491                    alloy_sol_types::private::AssertTypeEq::<
7492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7493                    >(_) => {}
7494                }
7495            }
7496            #[automatically_derived]
7497            #[doc(hidden)]
7498            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
7499                fn from(value: tokenReturn) -> Self {
7500                    (value._0,)
7501                }
7502            }
7503            #[automatically_derived]
7504            #[doc(hidden)]
7505            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
7506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7507                    Self { _0: tuple.0 }
7508                }
7509            }
7510        }
7511        #[automatically_derived]
7512        impl alloy_sol_types::SolCall for tokenCall {
7513            type Parameters<'a> = ();
7514            type Token<'a> = <Self::Parameters<
7515                'a,
7516            > as alloy_sol_types::SolType>::Token<'a>;
7517            type Return = tokenReturn;
7518            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7519            type ReturnToken<'a> = <Self::ReturnTuple<
7520                'a,
7521            > as alloy_sol_types::SolType>::Token<'a>;
7522            const SIGNATURE: &'static str = "token()";
7523            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
7524            #[inline]
7525            fn new<'a>(
7526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7527            ) -> Self {
7528                tuple.into()
7529            }
7530            #[inline]
7531            fn tokenize(&self) -> Self::Token<'_> {
7532                ()
7533            }
7534            #[inline]
7535            fn abi_decode_returns(
7536                data: &[u8],
7537                validate: bool,
7538            ) -> alloy_sol_types::Result<Self::Return> {
7539                <Self::ReturnTuple<
7540                    '_,
7541                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7542                    .map(Into::into)
7543            }
7544        }
7545    };
7546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7547    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
7548```solidity
7549function transferOwnership(address newOwner) external;
7550```*/
7551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7552    #[derive(Clone)]
7553    pub struct transferOwnershipCall {
7554        #[allow(missing_docs)]
7555        pub newOwner: alloy::sol_types::private::Address,
7556    }
7557    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
7558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7559    #[derive(Clone)]
7560    pub struct transferOwnershipReturn {}
7561    #[allow(
7562        non_camel_case_types,
7563        non_snake_case,
7564        clippy::pub_underscore_fields,
7565        clippy::style
7566    )]
7567    const _: () = {
7568        use alloy::sol_types as alloy_sol_types;
7569        {
7570            #[doc(hidden)]
7571            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7572            #[doc(hidden)]
7573            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7574            #[cfg(test)]
7575            #[allow(dead_code, unreachable_patterns)]
7576            fn _type_assertion(
7577                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7578            ) {
7579                match _t {
7580                    alloy_sol_types::private::AssertTypeEq::<
7581                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7582                    >(_) => {}
7583                }
7584            }
7585            #[automatically_derived]
7586            #[doc(hidden)]
7587            impl ::core::convert::From<transferOwnershipCall>
7588            for UnderlyingRustTuple<'_> {
7589                fn from(value: transferOwnershipCall) -> Self {
7590                    (value.newOwner,)
7591                }
7592            }
7593            #[automatically_derived]
7594            #[doc(hidden)]
7595            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7596            for transferOwnershipCall {
7597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7598                    Self { newOwner: tuple.0 }
7599                }
7600            }
7601        }
7602        {
7603            #[doc(hidden)]
7604            type UnderlyingSolTuple<'a> = ();
7605            #[doc(hidden)]
7606            type UnderlyingRustTuple<'a> = ();
7607            #[cfg(test)]
7608            #[allow(dead_code, unreachable_patterns)]
7609            fn _type_assertion(
7610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7611            ) {
7612                match _t {
7613                    alloy_sol_types::private::AssertTypeEq::<
7614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7615                    >(_) => {}
7616                }
7617            }
7618            #[automatically_derived]
7619            #[doc(hidden)]
7620            impl ::core::convert::From<transferOwnershipReturn>
7621            for UnderlyingRustTuple<'_> {
7622                fn from(value: transferOwnershipReturn) -> Self {
7623                    ()
7624                }
7625            }
7626            #[automatically_derived]
7627            #[doc(hidden)]
7628            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7629            for transferOwnershipReturn {
7630                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7631                    Self {}
7632                }
7633            }
7634        }
7635        #[automatically_derived]
7636        impl alloy_sol_types::SolCall for transferOwnershipCall {
7637            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7638            type Token<'a> = <Self::Parameters<
7639                'a,
7640            > as alloy_sol_types::SolType>::Token<'a>;
7641            type Return = transferOwnershipReturn;
7642            type ReturnTuple<'a> = ();
7643            type ReturnToken<'a> = <Self::ReturnTuple<
7644                'a,
7645            > as alloy_sol_types::SolType>::Token<'a>;
7646            const SIGNATURE: &'static str = "transferOwnership(address)";
7647            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
7648            #[inline]
7649            fn new<'a>(
7650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7651            ) -> Self {
7652                tuple.into()
7653            }
7654            #[inline]
7655            fn tokenize(&self) -> Self::Token<'_> {
7656                (
7657                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7658                        &self.newOwner,
7659                    ),
7660                )
7661            }
7662            #[inline]
7663            fn abi_decode_returns(
7664                data: &[u8],
7665                validate: bool,
7666            ) -> alloy_sol_types::Result<Self::Return> {
7667                <Self::ReturnTuple<
7668                    '_,
7669                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7670                    .map(Into::into)
7671            }
7672        }
7673    };
7674    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7675    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
7676```solidity
7677function undelegate(address validator, uint256 amount) external;
7678```*/
7679    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7680    #[derive(Clone)]
7681    pub struct undelegateCall {
7682        #[allow(missing_docs)]
7683        pub validator: alloy::sol_types::private::Address,
7684        #[allow(missing_docs)]
7685        pub amount: alloy::sol_types::private::primitives::aliases::U256,
7686    }
7687    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
7688    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7689    #[derive(Clone)]
7690    pub struct undelegateReturn {}
7691    #[allow(
7692        non_camel_case_types,
7693        non_snake_case,
7694        clippy::pub_underscore_fields,
7695        clippy::style
7696    )]
7697    const _: () = {
7698        use alloy::sol_types as alloy_sol_types;
7699        {
7700            #[doc(hidden)]
7701            type UnderlyingSolTuple<'a> = (
7702                alloy::sol_types::sol_data::Address,
7703                alloy::sol_types::sol_data::Uint<256>,
7704            );
7705            #[doc(hidden)]
7706            type UnderlyingRustTuple<'a> = (
7707                alloy::sol_types::private::Address,
7708                alloy::sol_types::private::primitives::aliases::U256,
7709            );
7710            #[cfg(test)]
7711            #[allow(dead_code, unreachable_patterns)]
7712            fn _type_assertion(
7713                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7714            ) {
7715                match _t {
7716                    alloy_sol_types::private::AssertTypeEq::<
7717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7718                    >(_) => {}
7719                }
7720            }
7721            #[automatically_derived]
7722            #[doc(hidden)]
7723            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
7724                fn from(value: undelegateCall) -> Self {
7725                    (value.validator, value.amount)
7726                }
7727            }
7728            #[automatically_derived]
7729            #[doc(hidden)]
7730            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
7731                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7732                    Self {
7733                        validator: tuple.0,
7734                        amount: tuple.1,
7735                    }
7736                }
7737            }
7738        }
7739        {
7740            #[doc(hidden)]
7741            type UnderlyingSolTuple<'a> = ();
7742            #[doc(hidden)]
7743            type UnderlyingRustTuple<'a> = ();
7744            #[cfg(test)]
7745            #[allow(dead_code, unreachable_patterns)]
7746            fn _type_assertion(
7747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7748            ) {
7749                match _t {
7750                    alloy_sol_types::private::AssertTypeEq::<
7751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7752                    >(_) => {}
7753                }
7754            }
7755            #[automatically_derived]
7756            #[doc(hidden)]
7757            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
7758                fn from(value: undelegateReturn) -> Self {
7759                    ()
7760                }
7761            }
7762            #[automatically_derived]
7763            #[doc(hidden)]
7764            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
7765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7766                    Self {}
7767                }
7768            }
7769        }
7770        #[automatically_derived]
7771        impl alloy_sol_types::SolCall for undelegateCall {
7772            type Parameters<'a> = (
7773                alloy::sol_types::sol_data::Address,
7774                alloy::sol_types::sol_data::Uint<256>,
7775            );
7776            type Token<'a> = <Self::Parameters<
7777                'a,
7778            > as alloy_sol_types::SolType>::Token<'a>;
7779            type Return = undelegateReturn;
7780            type ReturnTuple<'a> = ();
7781            type ReturnToken<'a> = <Self::ReturnTuple<
7782                'a,
7783            > as alloy_sol_types::SolType>::Token<'a>;
7784            const SIGNATURE: &'static str = "undelegate(address,uint256)";
7785            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
7786            #[inline]
7787            fn new<'a>(
7788                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7789            ) -> Self {
7790                tuple.into()
7791            }
7792            #[inline]
7793            fn tokenize(&self) -> Self::Token<'_> {
7794                (
7795                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7796                        &self.validator,
7797                    ),
7798                    <alloy::sol_types::sol_data::Uint<
7799                        256,
7800                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
7801                )
7802            }
7803            #[inline]
7804            fn abi_decode_returns(
7805                data: &[u8],
7806                validate: bool,
7807            ) -> alloy_sol_types::Result<Self::Return> {
7808                <Self::ReturnTuple<
7809                    '_,
7810                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7811                    .map(Into::into)
7812            }
7813        }
7814    };
7815    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7816    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
7817```solidity
7818function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
7819```*/
7820    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7821    #[derive(Clone)]
7822    pub struct undelegationsCall {
7823        #[allow(missing_docs)]
7824        pub validator: alloy::sol_types::private::Address,
7825        #[allow(missing_docs)]
7826        pub delegator: alloy::sol_types::private::Address,
7827    }
7828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7829    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
7830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7831    #[derive(Clone)]
7832    pub struct undelegationsReturn {
7833        #[allow(missing_docs)]
7834        pub amount: alloy::sol_types::private::primitives::aliases::U256,
7835        #[allow(missing_docs)]
7836        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
7837    }
7838    #[allow(
7839        non_camel_case_types,
7840        non_snake_case,
7841        clippy::pub_underscore_fields,
7842        clippy::style
7843    )]
7844    const _: () = {
7845        use alloy::sol_types as alloy_sol_types;
7846        {
7847            #[doc(hidden)]
7848            type UnderlyingSolTuple<'a> = (
7849                alloy::sol_types::sol_data::Address,
7850                alloy::sol_types::sol_data::Address,
7851            );
7852            #[doc(hidden)]
7853            type UnderlyingRustTuple<'a> = (
7854                alloy::sol_types::private::Address,
7855                alloy::sol_types::private::Address,
7856            );
7857            #[cfg(test)]
7858            #[allow(dead_code, unreachable_patterns)]
7859            fn _type_assertion(
7860                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7861            ) {
7862                match _t {
7863                    alloy_sol_types::private::AssertTypeEq::<
7864                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7865                    >(_) => {}
7866                }
7867            }
7868            #[automatically_derived]
7869            #[doc(hidden)]
7870            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
7871                fn from(value: undelegationsCall) -> Self {
7872                    (value.validator, value.delegator)
7873                }
7874            }
7875            #[automatically_derived]
7876            #[doc(hidden)]
7877            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
7878                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7879                    Self {
7880                        validator: tuple.0,
7881                        delegator: tuple.1,
7882                    }
7883                }
7884            }
7885        }
7886        {
7887            #[doc(hidden)]
7888            type UnderlyingSolTuple<'a> = (
7889                alloy::sol_types::sol_data::Uint<256>,
7890                alloy::sol_types::sol_data::Uint<256>,
7891            );
7892            #[doc(hidden)]
7893            type UnderlyingRustTuple<'a> = (
7894                alloy::sol_types::private::primitives::aliases::U256,
7895                alloy::sol_types::private::primitives::aliases::U256,
7896            );
7897            #[cfg(test)]
7898            #[allow(dead_code, unreachable_patterns)]
7899            fn _type_assertion(
7900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7901            ) {
7902                match _t {
7903                    alloy_sol_types::private::AssertTypeEq::<
7904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7905                    >(_) => {}
7906                }
7907            }
7908            #[automatically_derived]
7909            #[doc(hidden)]
7910            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
7911                fn from(value: undelegationsReturn) -> Self {
7912                    (value.amount, value.unlocksAt)
7913                }
7914            }
7915            #[automatically_derived]
7916            #[doc(hidden)]
7917            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
7918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7919                    Self {
7920                        amount: tuple.0,
7921                        unlocksAt: tuple.1,
7922                    }
7923                }
7924            }
7925        }
7926        #[automatically_derived]
7927        impl alloy_sol_types::SolCall for undelegationsCall {
7928            type Parameters<'a> = (
7929                alloy::sol_types::sol_data::Address,
7930                alloy::sol_types::sol_data::Address,
7931            );
7932            type Token<'a> = <Self::Parameters<
7933                'a,
7934            > as alloy_sol_types::SolType>::Token<'a>;
7935            type Return = undelegationsReturn;
7936            type ReturnTuple<'a> = (
7937                alloy::sol_types::sol_data::Uint<256>,
7938                alloy::sol_types::sol_data::Uint<256>,
7939            );
7940            type ReturnToken<'a> = <Self::ReturnTuple<
7941                'a,
7942            > as alloy_sol_types::SolType>::Token<'a>;
7943            const SIGNATURE: &'static str = "undelegations(address,address)";
7944            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
7945            #[inline]
7946            fn new<'a>(
7947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7948            ) -> Self {
7949                tuple.into()
7950            }
7951            #[inline]
7952            fn tokenize(&self) -> Self::Token<'_> {
7953                (
7954                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7955                        &self.validator,
7956                    ),
7957                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7958                        &self.delegator,
7959                    ),
7960                )
7961            }
7962            #[inline]
7963            fn abi_decode_returns(
7964                data: &[u8],
7965                validate: bool,
7966            ) -> alloy_sol_types::Result<Self::Return> {
7967                <Self::ReturnTuple<
7968                    '_,
7969                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7970                    .map(Into::into)
7971            }
7972        }
7973    };
7974    #[derive()]
7975    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
7976```solidity
7977function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
7978```*/
7979    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7980    #[derive(Clone)]
7981    pub struct updateConsensusKeysCall {
7982        #[allow(missing_docs)]
7983        pub newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7984        #[allow(missing_docs)]
7985        pub newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7986        #[allow(missing_docs)]
7987        pub newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
7988    }
7989    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
7990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7991    #[derive(Clone)]
7992    pub struct updateConsensusKeysReturn {}
7993    #[allow(
7994        non_camel_case_types,
7995        non_snake_case,
7996        clippy::pub_underscore_fields,
7997        clippy::style
7998    )]
7999    const _: () = {
8000        use alloy::sol_types as alloy_sol_types;
8001        {
8002            #[doc(hidden)]
8003            type UnderlyingSolTuple<'a> = (
8004                BN254::G2Point,
8005                EdOnBN254::EdOnBN254Point,
8006                BN254::G1Point,
8007            );
8008            #[doc(hidden)]
8009            type UnderlyingRustTuple<'a> = (
8010                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8011                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8012                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8013            );
8014            #[cfg(test)]
8015            #[allow(dead_code, unreachable_patterns)]
8016            fn _type_assertion(
8017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8018            ) {
8019                match _t {
8020                    alloy_sol_types::private::AssertTypeEq::<
8021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8022                    >(_) => {}
8023                }
8024            }
8025            #[automatically_derived]
8026            #[doc(hidden)]
8027            impl ::core::convert::From<updateConsensusKeysCall>
8028            for UnderlyingRustTuple<'_> {
8029                fn from(value: updateConsensusKeysCall) -> Self {
8030                    (value.newBlsVK, value.newSchnorrVK, value.newBlsSig)
8031                }
8032            }
8033            #[automatically_derived]
8034            #[doc(hidden)]
8035            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8036            for updateConsensusKeysCall {
8037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8038                    Self {
8039                        newBlsVK: tuple.0,
8040                        newSchnorrVK: tuple.1,
8041                        newBlsSig: tuple.2,
8042                    }
8043                }
8044            }
8045        }
8046        {
8047            #[doc(hidden)]
8048            type UnderlyingSolTuple<'a> = ();
8049            #[doc(hidden)]
8050            type UnderlyingRustTuple<'a> = ();
8051            #[cfg(test)]
8052            #[allow(dead_code, unreachable_patterns)]
8053            fn _type_assertion(
8054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8055            ) {
8056                match _t {
8057                    alloy_sol_types::private::AssertTypeEq::<
8058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8059                    >(_) => {}
8060                }
8061            }
8062            #[automatically_derived]
8063            #[doc(hidden)]
8064            impl ::core::convert::From<updateConsensusKeysReturn>
8065            for UnderlyingRustTuple<'_> {
8066                fn from(value: updateConsensusKeysReturn) -> Self {
8067                    ()
8068                }
8069            }
8070            #[automatically_derived]
8071            #[doc(hidden)]
8072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8073            for updateConsensusKeysReturn {
8074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8075                    Self {}
8076                }
8077            }
8078        }
8079        #[automatically_derived]
8080        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
8081            type Parameters<'a> = (
8082                BN254::G2Point,
8083                EdOnBN254::EdOnBN254Point,
8084                BN254::G1Point,
8085            );
8086            type Token<'a> = <Self::Parameters<
8087                'a,
8088            > as alloy_sol_types::SolType>::Token<'a>;
8089            type Return = updateConsensusKeysReturn;
8090            type ReturnTuple<'a> = ();
8091            type ReturnToken<'a> = <Self::ReturnTuple<
8092                'a,
8093            > as alloy_sol_types::SolType>::Token<'a>;
8094            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
8095            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
8096            #[inline]
8097            fn new<'a>(
8098                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8099            ) -> Self {
8100                tuple.into()
8101            }
8102            #[inline]
8103            fn tokenize(&self) -> Self::Token<'_> {
8104                (
8105                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(
8106                        &self.newBlsVK,
8107                    ),
8108                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8109                        &self.newSchnorrVK,
8110                    ),
8111                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
8112                        &self.newBlsSig,
8113                    ),
8114                )
8115            }
8116            #[inline]
8117            fn abi_decode_returns(
8118                data: &[u8],
8119                validate: bool,
8120            ) -> alloy_sol_types::Result<Self::Return> {
8121                <Self::ReturnTuple<
8122                    '_,
8123                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8124                    .map(Into::into)
8125            }
8126        }
8127    };
8128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8129    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
8130```solidity
8131function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
8132```*/
8133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8134    #[derive(Clone)]
8135    pub struct upgradeToAndCallCall {
8136        #[allow(missing_docs)]
8137        pub newImplementation: alloy::sol_types::private::Address,
8138        #[allow(missing_docs)]
8139        pub data: alloy::sol_types::private::Bytes,
8140    }
8141    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
8142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8143    #[derive(Clone)]
8144    pub struct upgradeToAndCallReturn {}
8145    #[allow(
8146        non_camel_case_types,
8147        non_snake_case,
8148        clippy::pub_underscore_fields,
8149        clippy::style
8150    )]
8151    const _: () = {
8152        use alloy::sol_types as alloy_sol_types;
8153        {
8154            #[doc(hidden)]
8155            type UnderlyingSolTuple<'a> = (
8156                alloy::sol_types::sol_data::Address,
8157                alloy::sol_types::sol_data::Bytes,
8158            );
8159            #[doc(hidden)]
8160            type UnderlyingRustTuple<'a> = (
8161                alloy::sol_types::private::Address,
8162                alloy::sol_types::private::Bytes,
8163            );
8164            #[cfg(test)]
8165            #[allow(dead_code, unreachable_patterns)]
8166            fn _type_assertion(
8167                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8168            ) {
8169                match _t {
8170                    alloy_sol_types::private::AssertTypeEq::<
8171                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8172                    >(_) => {}
8173                }
8174            }
8175            #[automatically_derived]
8176            #[doc(hidden)]
8177            impl ::core::convert::From<upgradeToAndCallCall>
8178            for UnderlyingRustTuple<'_> {
8179                fn from(value: upgradeToAndCallCall) -> Self {
8180                    (value.newImplementation, value.data)
8181                }
8182            }
8183            #[automatically_derived]
8184            #[doc(hidden)]
8185            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8186            for upgradeToAndCallCall {
8187                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8188                    Self {
8189                        newImplementation: tuple.0,
8190                        data: tuple.1,
8191                    }
8192                }
8193            }
8194        }
8195        {
8196            #[doc(hidden)]
8197            type UnderlyingSolTuple<'a> = ();
8198            #[doc(hidden)]
8199            type UnderlyingRustTuple<'a> = ();
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<upgradeToAndCallReturn>
8214            for UnderlyingRustTuple<'_> {
8215                fn from(value: upgradeToAndCallReturn) -> Self {
8216                    ()
8217                }
8218            }
8219            #[automatically_derived]
8220            #[doc(hidden)]
8221            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8222            for upgradeToAndCallReturn {
8223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8224                    Self {}
8225                }
8226            }
8227        }
8228        #[automatically_derived]
8229        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
8230            type Parameters<'a> = (
8231                alloy::sol_types::sol_data::Address,
8232                alloy::sol_types::sol_data::Bytes,
8233            );
8234            type Token<'a> = <Self::Parameters<
8235                'a,
8236            > as alloy_sol_types::SolType>::Token<'a>;
8237            type Return = upgradeToAndCallReturn;
8238            type ReturnTuple<'a> = ();
8239            type ReturnToken<'a> = <Self::ReturnTuple<
8240                'a,
8241            > as alloy_sol_types::SolType>::Token<'a>;
8242            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
8243            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
8244            #[inline]
8245            fn new<'a>(
8246                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8247            ) -> Self {
8248                tuple.into()
8249            }
8250            #[inline]
8251            fn tokenize(&self) -> Self::Token<'_> {
8252                (
8253                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8254                        &self.newImplementation,
8255                    ),
8256                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8257                        &self.data,
8258                    ),
8259                )
8260            }
8261            #[inline]
8262            fn abi_decode_returns(
8263                data: &[u8],
8264                validate: bool,
8265            ) -> alloy_sol_types::Result<Self::Return> {
8266                <Self::ReturnTuple<
8267                    '_,
8268                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8269                    .map(Into::into)
8270            }
8271        }
8272    };
8273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8274    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
8275```solidity
8276function validatorExits(address validator) external view returns (uint256 unlocksAt);
8277```*/
8278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8279    #[derive(Clone)]
8280    pub struct validatorExitsCall {
8281        #[allow(missing_docs)]
8282        pub validator: alloy::sol_types::private::Address,
8283    }
8284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8285    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
8286    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8287    #[derive(Clone)]
8288    pub struct validatorExitsReturn {
8289        #[allow(missing_docs)]
8290        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
8291    }
8292    #[allow(
8293        non_camel_case_types,
8294        non_snake_case,
8295        clippy::pub_underscore_fields,
8296        clippy::style
8297    )]
8298    const _: () = {
8299        use alloy::sol_types as alloy_sol_types;
8300        {
8301            #[doc(hidden)]
8302            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8303            #[doc(hidden)]
8304            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8305            #[cfg(test)]
8306            #[allow(dead_code, unreachable_patterns)]
8307            fn _type_assertion(
8308                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8309            ) {
8310                match _t {
8311                    alloy_sol_types::private::AssertTypeEq::<
8312                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8313                    >(_) => {}
8314                }
8315            }
8316            #[automatically_derived]
8317            #[doc(hidden)]
8318            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
8319                fn from(value: validatorExitsCall) -> Self {
8320                    (value.validator,)
8321                }
8322            }
8323            #[automatically_derived]
8324            #[doc(hidden)]
8325            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
8326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8327                    Self { validator: tuple.0 }
8328                }
8329            }
8330        }
8331        {
8332            #[doc(hidden)]
8333            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8334            #[doc(hidden)]
8335            type UnderlyingRustTuple<'a> = (
8336                alloy::sol_types::private::primitives::aliases::U256,
8337            );
8338            #[cfg(test)]
8339            #[allow(dead_code, unreachable_patterns)]
8340            fn _type_assertion(
8341                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8342            ) {
8343                match _t {
8344                    alloy_sol_types::private::AssertTypeEq::<
8345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8346                    >(_) => {}
8347                }
8348            }
8349            #[automatically_derived]
8350            #[doc(hidden)]
8351            impl ::core::convert::From<validatorExitsReturn>
8352            for UnderlyingRustTuple<'_> {
8353                fn from(value: validatorExitsReturn) -> Self {
8354                    (value.unlocksAt,)
8355                }
8356            }
8357            #[automatically_derived]
8358            #[doc(hidden)]
8359            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8360            for validatorExitsReturn {
8361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8362                    Self { unlocksAt: tuple.0 }
8363                }
8364            }
8365        }
8366        #[automatically_derived]
8367        impl alloy_sol_types::SolCall for validatorExitsCall {
8368            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8369            type Token<'a> = <Self::Parameters<
8370                'a,
8371            > as alloy_sol_types::SolType>::Token<'a>;
8372            type Return = validatorExitsReturn;
8373            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8374            type ReturnToken<'a> = <Self::ReturnTuple<
8375                'a,
8376            > as alloy_sol_types::SolType>::Token<'a>;
8377            const SIGNATURE: &'static str = "validatorExits(address)";
8378            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
8379            #[inline]
8380            fn new<'a>(
8381                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8382            ) -> Self {
8383                tuple.into()
8384            }
8385            #[inline]
8386            fn tokenize(&self) -> Self::Token<'_> {
8387                (
8388                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8389                        &self.validator,
8390                    ),
8391                )
8392            }
8393            #[inline]
8394            fn abi_decode_returns(
8395                data: &[u8],
8396                validate: bool,
8397            ) -> alloy_sol_types::Result<Self::Return> {
8398                <Self::ReturnTuple<
8399                    '_,
8400                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8401                    .map(Into::into)
8402            }
8403        }
8404    };
8405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8406    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
8407```solidity
8408function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
8409```*/
8410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8411    #[derive(Clone)]
8412    pub struct validatorsCall {
8413        #[allow(missing_docs)]
8414        pub account: alloy::sol_types::private::Address,
8415    }
8416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8417    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
8418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8419    #[derive(Clone)]
8420    pub struct validatorsReturn {
8421        #[allow(missing_docs)]
8422        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
8423        #[allow(missing_docs)]
8424        pub status: <ValidatorStatus as alloy::sol_types::SolType>::RustType,
8425    }
8426    #[allow(
8427        non_camel_case_types,
8428        non_snake_case,
8429        clippy::pub_underscore_fields,
8430        clippy::style
8431    )]
8432    const _: () = {
8433        use alloy::sol_types as alloy_sol_types;
8434        {
8435            #[doc(hidden)]
8436            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8437            #[doc(hidden)]
8438            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8439            #[cfg(test)]
8440            #[allow(dead_code, unreachable_patterns)]
8441            fn _type_assertion(
8442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8443            ) {
8444                match _t {
8445                    alloy_sol_types::private::AssertTypeEq::<
8446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8447                    >(_) => {}
8448                }
8449            }
8450            #[automatically_derived]
8451            #[doc(hidden)]
8452            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
8453                fn from(value: validatorsCall) -> Self {
8454                    (value.account,)
8455                }
8456            }
8457            #[automatically_derived]
8458            #[doc(hidden)]
8459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
8460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8461                    Self { account: tuple.0 }
8462                }
8463            }
8464        }
8465        {
8466            #[doc(hidden)]
8467            type UnderlyingSolTuple<'a> = (
8468                alloy::sol_types::sol_data::Uint<256>,
8469                ValidatorStatus,
8470            );
8471            #[doc(hidden)]
8472            type UnderlyingRustTuple<'a> = (
8473                alloy::sol_types::private::primitives::aliases::U256,
8474                <ValidatorStatus as alloy::sol_types::SolType>::RustType,
8475            );
8476            #[cfg(test)]
8477            #[allow(dead_code, unreachable_patterns)]
8478            fn _type_assertion(
8479                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8480            ) {
8481                match _t {
8482                    alloy_sol_types::private::AssertTypeEq::<
8483                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8484                    >(_) => {}
8485                }
8486            }
8487            #[automatically_derived]
8488            #[doc(hidden)]
8489            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
8490                fn from(value: validatorsReturn) -> Self {
8491                    (value.delegatedAmount, value.status)
8492                }
8493            }
8494            #[automatically_derived]
8495            #[doc(hidden)]
8496            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
8497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8498                    Self {
8499                        delegatedAmount: tuple.0,
8500                        status: tuple.1,
8501                    }
8502                }
8503            }
8504        }
8505        #[automatically_derived]
8506        impl alloy_sol_types::SolCall for validatorsCall {
8507            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8508            type Token<'a> = <Self::Parameters<
8509                'a,
8510            > as alloy_sol_types::SolType>::Token<'a>;
8511            type Return = validatorsReturn;
8512            type ReturnTuple<'a> = (
8513                alloy::sol_types::sol_data::Uint<256>,
8514                ValidatorStatus,
8515            );
8516            type ReturnToken<'a> = <Self::ReturnTuple<
8517                'a,
8518            > as alloy_sol_types::SolType>::Token<'a>;
8519            const SIGNATURE: &'static str = "validators(address)";
8520            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
8521            #[inline]
8522            fn new<'a>(
8523                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8524            ) -> Self {
8525                tuple.into()
8526            }
8527            #[inline]
8528            fn tokenize(&self) -> Self::Token<'_> {
8529                (
8530                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8531                        &self.account,
8532                    ),
8533                )
8534            }
8535            #[inline]
8536            fn abi_decode_returns(
8537                data: &[u8],
8538                validate: bool,
8539            ) -> alloy_sol_types::Result<Self::Return> {
8540                <Self::ReturnTuple<
8541                    '_,
8542                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8543                    .map(Into::into)
8544            }
8545        }
8546    };
8547    ///Container for all the [`StakeTable`](self) function calls.
8548    #[derive()]
8549    pub enum StakeTableCalls {
8550        #[allow(missing_docs)]
8551        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
8552        #[allow(missing_docs)]
8553        _hashBlsKey(_hashBlsKeyCall),
8554        #[allow(missing_docs)]
8555        blsKeys(blsKeysCall),
8556        #[allow(missing_docs)]
8557        claimValidatorExit(claimValidatorExitCall),
8558        #[allow(missing_docs)]
8559        claimWithdrawal(claimWithdrawalCall),
8560        #[allow(missing_docs)]
8561        delegate(delegateCall),
8562        #[allow(missing_docs)]
8563        delegations(delegationsCall),
8564        #[allow(missing_docs)]
8565        deregisterValidator(deregisterValidatorCall),
8566        #[allow(missing_docs)]
8567        exitEscrowPeriod(exitEscrowPeriodCall),
8568        #[allow(missing_docs)]
8569        getVersion(getVersionCall),
8570        #[allow(missing_docs)]
8571        initialize(initializeCall),
8572        #[allow(missing_docs)]
8573        initializedAtBlock(initializedAtBlockCall),
8574        #[allow(missing_docs)]
8575        lightClient(lightClientCall),
8576        #[allow(missing_docs)]
8577        owner(ownerCall),
8578        #[allow(missing_docs)]
8579        proxiableUUID(proxiableUUIDCall),
8580        #[allow(missing_docs)]
8581        registerValidator(registerValidatorCall),
8582        #[allow(missing_docs)]
8583        renounceOwnership(renounceOwnershipCall),
8584        #[allow(missing_docs)]
8585        token(tokenCall),
8586        #[allow(missing_docs)]
8587        transferOwnership(transferOwnershipCall),
8588        #[allow(missing_docs)]
8589        undelegate(undelegateCall),
8590        #[allow(missing_docs)]
8591        undelegations(undelegationsCall),
8592        #[allow(missing_docs)]
8593        updateConsensusKeys(updateConsensusKeysCall),
8594        #[allow(missing_docs)]
8595        upgradeToAndCall(upgradeToAndCallCall),
8596        #[allow(missing_docs)]
8597        validatorExits(validatorExitsCall),
8598        #[allow(missing_docs)]
8599        validators(validatorsCall),
8600    }
8601    #[automatically_derived]
8602    impl StakeTableCalls {
8603        /// All the selectors of this enum.
8604        ///
8605        /// Note that the selectors might not be in the same order as the variants.
8606        /// No guarantees are made about the order of the selectors.
8607        ///
8608        /// Prefer using `SolInterface` methods instead.
8609        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8610            [2u8, 110u8, 64u8, 43u8],
8611            [13u8, 142u8, 110u8, 44u8],
8612            [19u8, 185u8, 5u8, 122u8],
8613            [33u8, 64u8, 254u8, 205u8],
8614            [62u8, 157u8, 249u8, 181u8],
8615            [77u8, 153u8, 221u8, 22u8],
8616            [79u8, 30u8, 242u8, 134u8],
8617            [82u8, 209u8, 144u8, 45u8],
8618            [85u8, 68u8, 194u8, 241u8],
8619            [106u8, 145u8, 28u8, 207u8],
8620            [113u8, 80u8, 24u8, 166u8],
8621            [141u8, 165u8, 203u8, 91u8],
8622            [155u8, 48u8, 165u8, 230u8],
8623            [158u8, 154u8, 143u8, 49u8],
8624            [162u8, 215u8, 141u8, 213u8],
8625            [163u8, 6u8, 106u8, 171u8],
8626            [173u8, 60u8, 177u8, 204u8],
8627            [179u8, 230u8, 235u8, 213u8],
8628            [181u8, 112u8, 14u8, 104u8],
8629            [181u8, 236u8, 179u8, 68u8],
8630            [190u8, 32u8, 48u8, 148u8],
8631            [198u8, 72u8, 20u8, 221u8],
8632            [242u8, 253u8, 227u8, 139u8],
8633            [250u8, 82u8, 199u8, 216u8],
8634            [252u8, 12u8, 84u8, 106u8],
8635        ];
8636    }
8637    #[automatically_derived]
8638    impl alloy_sol_types::SolInterface for StakeTableCalls {
8639        const NAME: &'static str = "StakeTableCalls";
8640        const MIN_DATA_LENGTH: usize = 0usize;
8641        const COUNT: usize = 25usize;
8642        #[inline]
8643        fn selector(&self) -> [u8; 4] {
8644            match self {
8645                Self::UPGRADE_INTERFACE_VERSION(_) => {
8646                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
8647                }
8648                Self::_hashBlsKey(_) => {
8649                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
8650                }
8651                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
8652                Self::claimValidatorExit(_) => {
8653                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
8654                }
8655                Self::claimWithdrawal(_) => {
8656                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
8657                }
8658                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
8659                Self::delegations(_) => {
8660                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
8661                }
8662                Self::deregisterValidator(_) => {
8663                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
8664                }
8665                Self::exitEscrowPeriod(_) => {
8666                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
8667                }
8668                Self::getVersion(_) => {
8669                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
8670                }
8671                Self::initialize(_) => {
8672                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
8673                }
8674                Self::initializedAtBlock(_) => {
8675                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
8676                }
8677                Self::lightClient(_) => {
8678                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
8679                }
8680                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
8681                Self::proxiableUUID(_) => {
8682                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
8683                }
8684                Self::registerValidator(_) => {
8685                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
8686                }
8687                Self::renounceOwnership(_) => {
8688                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8689                }
8690                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
8691                Self::transferOwnership(_) => {
8692                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8693                }
8694                Self::undelegate(_) => {
8695                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
8696                }
8697                Self::undelegations(_) => {
8698                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
8699                }
8700                Self::updateConsensusKeys(_) => {
8701                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
8702                }
8703                Self::upgradeToAndCall(_) => {
8704                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
8705                }
8706                Self::validatorExits(_) => {
8707                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
8708                }
8709                Self::validators(_) => {
8710                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
8711                }
8712            }
8713        }
8714        #[inline]
8715        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8716            Self::SELECTORS.get(i).copied()
8717        }
8718        #[inline]
8719        fn valid_selector(selector: [u8; 4]) -> bool {
8720            Self::SELECTORS.binary_search(&selector).is_ok()
8721        }
8722        #[inline]
8723        #[allow(non_snake_case)]
8724        fn abi_decode_raw(
8725            selector: [u8; 4],
8726            data: &[u8],
8727            validate: bool,
8728        ) -> alloy_sol_types::Result<Self> {
8729            static DECODE_SHIMS: &[fn(
8730                &[u8],
8731                bool,
8732            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
8733                {
8734                    fn delegate(
8735                        data: &[u8],
8736                        validate: bool,
8737                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8738                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
8739                                data,
8740                                validate,
8741                            )
8742                            .map(StakeTableCalls::delegate)
8743                    }
8744                    delegate
8745                },
8746                {
8747                    fn getVersion(
8748                        data: &[u8],
8749                        validate: bool,
8750                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8751                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
8752                                data,
8753                                validate,
8754                            )
8755                            .map(StakeTableCalls::getVersion)
8756                    }
8757                    getVersion
8758                },
8759                {
8760                    fn registerValidator(
8761                        data: &[u8],
8762                        validate: bool,
8763                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8764                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
8765                                data,
8766                                validate,
8767                            )
8768                            .map(StakeTableCalls::registerValidator)
8769                    }
8770                    registerValidator
8771                },
8772                {
8773                    fn claimValidatorExit(
8774                        data: &[u8],
8775                        validate: bool,
8776                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8777                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
8778                                data,
8779                                validate,
8780                            )
8781                            .map(StakeTableCalls::claimValidatorExit)
8782                    }
8783                    claimValidatorExit
8784                },
8785                {
8786                    fn initializedAtBlock(
8787                        data: &[u8],
8788                        validate: bool,
8789                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8790                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
8791                                data,
8792                                validate,
8793                            )
8794                            .map(StakeTableCalls::initializedAtBlock)
8795                    }
8796                    initializedAtBlock
8797                },
8798                {
8799                    fn undelegate(
8800                        data: &[u8],
8801                        validate: bool,
8802                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8803                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
8804                                data,
8805                                validate,
8806                            )
8807                            .map(StakeTableCalls::undelegate)
8808                    }
8809                    undelegate
8810                },
8811                {
8812                    fn upgradeToAndCall(
8813                        data: &[u8],
8814                        validate: bool,
8815                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8816                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
8817                                data,
8818                                validate,
8819                            )
8820                            .map(StakeTableCalls::upgradeToAndCall)
8821                    }
8822                    upgradeToAndCall
8823                },
8824                {
8825                    fn proxiableUUID(
8826                        data: &[u8],
8827                        validate: bool,
8828                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8829                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
8830                                data,
8831                                validate,
8832                            )
8833                            .map(StakeTableCalls::proxiableUUID)
8834                    }
8835                    proxiableUUID
8836                },
8837                {
8838                    fn updateConsensusKeys(
8839                        data: &[u8],
8840                        validate: bool,
8841                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8842                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
8843                                data,
8844                                validate,
8845                            )
8846                            .map(StakeTableCalls::updateConsensusKeys)
8847                    }
8848                    updateConsensusKeys
8849                },
8850                {
8851                    fn deregisterValidator(
8852                        data: &[u8],
8853                        validate: bool,
8854                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8855                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
8856                                data,
8857                                validate,
8858                            )
8859                            .map(StakeTableCalls::deregisterValidator)
8860                    }
8861                    deregisterValidator
8862                },
8863                {
8864                    fn renounceOwnership(
8865                        data: &[u8],
8866                        validate: bool,
8867                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8868                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
8869                                data,
8870                                validate,
8871                            )
8872                            .map(StakeTableCalls::renounceOwnership)
8873                    }
8874                    renounceOwnership
8875                },
8876                {
8877                    fn owner(
8878                        data: &[u8],
8879                        validate: bool,
8880                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8881                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
8882                                data,
8883                                validate,
8884                            )
8885                            .map(StakeTableCalls::owner)
8886                    }
8887                    owner
8888                },
8889                {
8890                    fn _hashBlsKey(
8891                        data: &[u8],
8892                        validate: bool,
8893                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8894                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
8895                                data,
8896                                validate,
8897                            )
8898                            .map(StakeTableCalls::_hashBlsKey)
8899                    }
8900                    _hashBlsKey
8901                },
8902                {
8903                    fn exitEscrowPeriod(
8904                        data: &[u8],
8905                        validate: bool,
8906                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8907                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
8908                                data,
8909                                validate,
8910                            )
8911                            .map(StakeTableCalls::exitEscrowPeriod)
8912                    }
8913                    exitEscrowPeriod
8914                },
8915                {
8916                    fn undelegations(
8917                        data: &[u8],
8918                        validate: bool,
8919                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8920                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8921                                data,
8922                                validate,
8923                            )
8924                            .map(StakeTableCalls::undelegations)
8925                    }
8926                    undelegations
8927                },
8928                {
8929                    fn claimWithdrawal(
8930                        data: &[u8],
8931                        validate: bool,
8932                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8933                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
8934                                data,
8935                                validate,
8936                            )
8937                            .map(StakeTableCalls::claimWithdrawal)
8938                    }
8939                    claimWithdrawal
8940                },
8941                {
8942                    fn UPGRADE_INTERFACE_VERSION(
8943                        data: &[u8],
8944                        validate: bool,
8945                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8946                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
8947                                data,
8948                                validate,
8949                            )
8950                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
8951                    }
8952                    UPGRADE_INTERFACE_VERSION
8953                },
8954                {
8955                    fn blsKeys(
8956                        data: &[u8],
8957                        validate: bool,
8958                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8959                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
8960                                data,
8961                                validate,
8962                            )
8963                            .map(StakeTableCalls::blsKeys)
8964                    }
8965                    blsKeys
8966                },
8967                {
8968                    fn lightClient(
8969                        data: &[u8],
8970                        validate: bool,
8971                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8972                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
8973                                data,
8974                                validate,
8975                            )
8976                            .map(StakeTableCalls::lightClient)
8977                    }
8978                    lightClient
8979                },
8980                {
8981                    fn validatorExits(
8982                        data: &[u8],
8983                        validate: bool,
8984                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8985                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8986                                data,
8987                                validate,
8988                            )
8989                            .map(StakeTableCalls::validatorExits)
8990                    }
8991                    validatorExits
8992                },
8993                {
8994                    fn initialize(
8995                        data: &[u8],
8996                        validate: bool,
8997                    ) -> alloy_sol_types::Result<StakeTableCalls> {
8998                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
8999                                data,
9000                                validate,
9001                            )
9002                            .map(StakeTableCalls::initialize)
9003                    }
9004                    initialize
9005                },
9006                {
9007                    fn delegations(
9008                        data: &[u8],
9009                        validate: bool,
9010                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9011                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9012                                data,
9013                                validate,
9014                            )
9015                            .map(StakeTableCalls::delegations)
9016                    }
9017                    delegations
9018                },
9019                {
9020                    fn transferOwnership(
9021                        data: &[u8],
9022                        validate: bool,
9023                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9024                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9025                                data,
9026                                validate,
9027                            )
9028                            .map(StakeTableCalls::transferOwnership)
9029                    }
9030                    transferOwnership
9031                },
9032                {
9033                    fn validators(
9034                        data: &[u8],
9035                        validate: bool,
9036                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9037                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9038                                data,
9039                                validate,
9040                            )
9041                            .map(StakeTableCalls::validators)
9042                    }
9043                    validators
9044                },
9045                {
9046                    fn token(
9047                        data: &[u8],
9048                        validate: bool,
9049                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9050                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(
9051                                data,
9052                                validate,
9053                            )
9054                            .map(StakeTableCalls::token)
9055                    }
9056                    token
9057                },
9058            ];
9059            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9060                return Err(
9061                    alloy_sol_types::Error::unknown_selector(
9062                        <Self as alloy_sol_types::SolInterface>::NAME,
9063                        selector,
9064                    ),
9065                );
9066            };
9067            DECODE_SHIMS[idx](data, validate)
9068        }
9069        #[inline]
9070        fn abi_encoded_size(&self) -> usize {
9071            match self {
9072                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9073                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
9074                        inner,
9075                    )
9076                }
9077                Self::_hashBlsKey(inner) => {
9078                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
9079                        inner,
9080                    )
9081                }
9082                Self::blsKeys(inner) => {
9083                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9084                }
9085                Self::claimValidatorExit(inner) => {
9086                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
9087                        inner,
9088                    )
9089                }
9090                Self::claimWithdrawal(inner) => {
9091                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
9092                        inner,
9093                    )
9094                }
9095                Self::delegate(inner) => {
9096                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9097                }
9098                Self::delegations(inner) => {
9099                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9100                        inner,
9101                    )
9102                }
9103                Self::deregisterValidator(inner) => {
9104                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9105                        inner,
9106                    )
9107                }
9108                Self::exitEscrowPeriod(inner) => {
9109                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
9110                        inner,
9111                    )
9112                }
9113                Self::getVersion(inner) => {
9114                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9115                }
9116                Self::initialize(inner) => {
9117                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9118                }
9119                Self::initializedAtBlock(inner) => {
9120                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
9121                        inner,
9122                    )
9123                }
9124                Self::lightClient(inner) => {
9125                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
9126                        inner,
9127                    )
9128                }
9129                Self::owner(inner) => {
9130                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9131                }
9132                Self::proxiableUUID(inner) => {
9133                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
9134                        inner,
9135                    )
9136                }
9137                Self::registerValidator(inner) => {
9138                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9139                        inner,
9140                    )
9141                }
9142                Self::renounceOwnership(inner) => {
9143                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9144                        inner,
9145                    )
9146                }
9147                Self::token(inner) => {
9148                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9149                }
9150                Self::transferOwnership(inner) => {
9151                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9152                        inner,
9153                    )
9154                }
9155                Self::undelegate(inner) => {
9156                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9157                }
9158                Self::undelegations(inner) => {
9159                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9160                        inner,
9161                    )
9162                }
9163                Self::updateConsensusKeys(inner) => {
9164                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
9165                        inner,
9166                    )
9167                }
9168                Self::upgradeToAndCall(inner) => {
9169                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
9170                        inner,
9171                    )
9172                }
9173                Self::validatorExits(inner) => {
9174                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9175                        inner,
9176                    )
9177                }
9178                Self::validators(inner) => {
9179                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9180                }
9181            }
9182        }
9183        #[inline]
9184        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9185            match self {
9186                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9187                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
9188                        inner,
9189                        out,
9190                    )
9191                }
9192                Self::_hashBlsKey(inner) => {
9193                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
9194                        inner,
9195                        out,
9196                    )
9197                }
9198                Self::blsKeys(inner) => {
9199                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9200                }
9201                Self::claimValidatorExit(inner) => {
9202                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
9203                        inner,
9204                        out,
9205                    )
9206                }
9207                Self::claimWithdrawal(inner) => {
9208                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
9209                        inner,
9210                        out,
9211                    )
9212                }
9213                Self::delegate(inner) => {
9214                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9215                        inner,
9216                        out,
9217                    )
9218                }
9219                Self::delegations(inner) => {
9220                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9221                        inner,
9222                        out,
9223                    )
9224                }
9225                Self::deregisterValidator(inner) => {
9226                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9227                        inner,
9228                        out,
9229                    )
9230                }
9231                Self::exitEscrowPeriod(inner) => {
9232                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
9233                        inner,
9234                        out,
9235                    )
9236                }
9237                Self::getVersion(inner) => {
9238                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
9239                        inner,
9240                        out,
9241                    )
9242                }
9243                Self::initialize(inner) => {
9244                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9245                        inner,
9246                        out,
9247                    )
9248                }
9249                Self::initializedAtBlock(inner) => {
9250                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
9251                        inner,
9252                        out,
9253                    )
9254                }
9255                Self::lightClient(inner) => {
9256                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
9257                        inner,
9258                        out,
9259                    )
9260                }
9261                Self::owner(inner) => {
9262                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9263                }
9264                Self::proxiableUUID(inner) => {
9265                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
9266                        inner,
9267                        out,
9268                    )
9269                }
9270                Self::registerValidator(inner) => {
9271                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9272                        inner,
9273                        out,
9274                    )
9275                }
9276                Self::renounceOwnership(inner) => {
9277                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9278                        inner,
9279                        out,
9280                    )
9281                }
9282                Self::token(inner) => {
9283                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9284                }
9285                Self::transferOwnership(inner) => {
9286                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9287                        inner,
9288                        out,
9289                    )
9290                }
9291                Self::undelegate(inner) => {
9292                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9293                        inner,
9294                        out,
9295                    )
9296                }
9297                Self::undelegations(inner) => {
9298                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9299                        inner,
9300                        out,
9301                    )
9302                }
9303                Self::updateConsensusKeys(inner) => {
9304                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
9305                        inner,
9306                        out,
9307                    )
9308                }
9309                Self::upgradeToAndCall(inner) => {
9310                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
9311                        inner,
9312                        out,
9313                    )
9314                }
9315                Self::validatorExits(inner) => {
9316                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9317                        inner,
9318                        out,
9319                    )
9320                }
9321                Self::validators(inner) => {
9322                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9323                        inner,
9324                        out,
9325                    )
9326                }
9327            }
9328        }
9329    }
9330    ///Container for all the [`StakeTable`](self) custom errors.
9331    #[derive(Debug, PartialEq, Eq, Hash)]
9332    pub enum StakeTableErrors {
9333        #[allow(missing_docs)]
9334        AddressEmptyCode(AddressEmptyCode),
9335        #[allow(missing_docs)]
9336        BLSSigVerificationFailed(BLSSigVerificationFailed),
9337        #[allow(missing_docs)]
9338        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
9339        #[allow(missing_docs)]
9340        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
9341        #[allow(missing_docs)]
9342        ERC1967NonPayable(ERC1967NonPayable),
9343        #[allow(missing_docs)]
9344        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
9345        #[allow(missing_docs)]
9346        FailedInnerCall(FailedInnerCall),
9347        #[allow(missing_docs)]
9348        InsufficientAllowance(InsufficientAllowance),
9349        #[allow(missing_docs)]
9350        InsufficientBalance(InsufficientBalance),
9351        #[allow(missing_docs)]
9352        InvalidCommission(InvalidCommission),
9353        #[allow(missing_docs)]
9354        InvalidInitialization(InvalidInitialization),
9355        #[allow(missing_docs)]
9356        InvalidSchnorrVK(InvalidSchnorrVK),
9357        #[allow(missing_docs)]
9358        NotInitializing(NotInitializing),
9359        #[allow(missing_docs)]
9360        NothingToWithdraw(NothingToWithdraw),
9361        #[allow(missing_docs)]
9362        OwnableInvalidOwner(OwnableInvalidOwner),
9363        #[allow(missing_docs)]
9364        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
9365        #[allow(missing_docs)]
9366        PrematureWithdrawal(PrematureWithdrawal),
9367        #[allow(missing_docs)]
9368        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
9369        #[allow(missing_docs)]
9370        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
9371        #[allow(missing_docs)]
9372        UndelegationAlreadyExists(UndelegationAlreadyExists),
9373        #[allow(missing_docs)]
9374        ValidatorAlreadyExited(ValidatorAlreadyExited),
9375        #[allow(missing_docs)]
9376        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
9377        #[allow(missing_docs)]
9378        ValidatorInactive(ValidatorInactive),
9379        #[allow(missing_docs)]
9380        ValidatorNotExited(ValidatorNotExited),
9381        #[allow(missing_docs)]
9382        ZeroAddress(ZeroAddress),
9383        #[allow(missing_docs)]
9384        ZeroAmount(ZeroAmount),
9385    }
9386    #[automatically_derived]
9387    impl StakeTableErrors {
9388        /// All the selectors of this enum.
9389        ///
9390        /// Note that the selectors might not be in the same order as the variants.
9391        /// No guarantees are made about the order of the selectors.
9392        ///
9393        /// Prefer using `SolInterface` methods instead.
9394        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9395            [1u8, 181u8, 20u8, 174u8],
9396            [6u8, 207u8, 67u8, 143u8],
9397            [12u8, 237u8, 62u8, 80u8],
9398            [17u8, 140u8, 218u8, 167u8],
9399            [20u8, 37u8, 234u8, 66u8],
9400            [30u8, 79u8, 189u8, 247u8],
9401            [31u8, 42u8, 32u8, 5u8],
9402            [42u8, 27u8, 45u8, 216u8],
9403            [76u8, 156u8, 140u8, 227u8],
9404            [80u8, 138u8, 121u8, 63u8],
9405            [90u8, 119u8, 67u8, 87u8],
9406            [146u8, 102u8, 83u8, 81u8],
9407            [153u8, 115u8, 247u8, 216u8],
9408            [153u8, 150u8, 179u8, 21u8],
9409            [170u8, 29u8, 73u8, 164u8],
9410            [179u8, 152u8, 151u8, 159u8],
9411            [181u8, 126u8, 33u8, 223u8],
9412            [208u8, 208u8, 79u8, 96u8],
9413            [212u8, 35u8, 164u8, 241u8],
9414            [215u8, 230u8, 188u8, 248u8],
9415            [217u8, 46u8, 35u8, 61u8],
9416            [220u8, 129u8, 219u8, 133u8],
9417            [224u8, 124u8, 141u8, 186u8],
9418            [234u8, 180u8, 169u8, 99u8],
9419            [242u8, 83u8, 20u8, 166u8],
9420            [249u8, 46u8, 232u8, 169u8],
9421        ];
9422    }
9423    #[automatically_derived]
9424    impl alloy_sol_types::SolInterface for StakeTableErrors {
9425        const NAME: &'static str = "StakeTableErrors";
9426        const MIN_DATA_LENGTH: usize = 0usize;
9427        const COUNT: usize = 26usize;
9428        #[inline]
9429        fn selector(&self) -> [u8; 4] {
9430            match self {
9431                Self::AddressEmptyCode(_) => {
9432                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
9433                }
9434                Self::BLSSigVerificationFailed(_) => {
9435                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
9436                }
9437                Self::BlsKeyAlreadyUsed(_) => {
9438                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
9439                }
9440                Self::ERC1967InvalidImplementation(_) => {
9441                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
9442                }
9443                Self::ERC1967NonPayable(_) => {
9444                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
9445                }
9446                Self::ExitEscrowPeriodInvalid(_) => {
9447                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
9448                }
9449                Self::FailedInnerCall(_) => {
9450                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9451                }
9452                Self::InsufficientAllowance(_) => {
9453                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
9454                }
9455                Self::InsufficientBalance(_) => {
9456                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
9457                }
9458                Self::InvalidCommission(_) => {
9459                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
9460                }
9461                Self::InvalidInitialization(_) => {
9462                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
9463                }
9464                Self::InvalidSchnorrVK(_) => {
9465                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
9466                }
9467                Self::NotInitializing(_) => {
9468                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
9469                }
9470                Self::NothingToWithdraw(_) => {
9471                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
9472                }
9473                Self::OwnableInvalidOwner(_) => {
9474                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
9475                }
9476                Self::OwnableUnauthorizedAccount(_) => {
9477                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9478                }
9479                Self::PrematureWithdrawal(_) => {
9480                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
9481                }
9482                Self::UUPSUnauthorizedCallContext(_) => {
9483                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
9484                }
9485                Self::UUPSUnsupportedProxiableUUID(_) => {
9486                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
9487                }
9488                Self::UndelegationAlreadyExists(_) => {
9489                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
9490                }
9491                Self::ValidatorAlreadyExited(_) => {
9492                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
9493                }
9494                Self::ValidatorAlreadyRegistered(_) => {
9495                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
9496                }
9497                Self::ValidatorInactive(_) => {
9498                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
9499                }
9500                Self::ValidatorNotExited(_) => {
9501                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
9502                }
9503                Self::ZeroAddress(_) => {
9504                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
9505                }
9506                Self::ZeroAmount(_) => {
9507                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
9508                }
9509            }
9510        }
9511        #[inline]
9512        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9513            Self::SELECTORS.get(i).copied()
9514        }
9515        #[inline]
9516        fn valid_selector(selector: [u8; 4]) -> bool {
9517            Self::SELECTORS.binary_search(&selector).is_ok()
9518        }
9519        #[inline]
9520        #[allow(non_snake_case)]
9521        fn abi_decode_raw(
9522            selector: [u8; 4],
9523            data: &[u8],
9524            validate: bool,
9525        ) -> alloy_sol_types::Result<Self> {
9526            static DECODE_SHIMS: &[fn(
9527                &[u8],
9528                bool,
9529            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
9530                {
9531                    fn BlsKeyAlreadyUsed(
9532                        data: &[u8],
9533                        validate: bool,
9534                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9535                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
9536                                data,
9537                                validate,
9538                            )
9539                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
9540                    }
9541                    BlsKeyAlreadyUsed
9542                },
9543                {
9544                    fn InvalidSchnorrVK(
9545                        data: &[u8],
9546                        validate: bool,
9547                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9548                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
9549                                data,
9550                                validate,
9551                            )
9552                            .map(StakeTableErrors::InvalidSchnorrVK)
9553                    }
9554                    InvalidSchnorrVK
9555                },
9556                {
9557                    fn BLSSigVerificationFailed(
9558                        data: &[u8],
9559                        validate: bool,
9560                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9561                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
9562                                data,
9563                                validate,
9564                            )
9565                            .map(StakeTableErrors::BLSSigVerificationFailed)
9566                    }
9567                    BLSSigVerificationFailed
9568                },
9569                {
9570                    fn OwnableUnauthorizedAccount(
9571                        data: &[u8],
9572                        validate: bool,
9573                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9574                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9575                                data,
9576                                validate,
9577                            )
9578                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
9579                    }
9580                    OwnableUnauthorizedAccount
9581                },
9582                {
9583                    fn FailedInnerCall(
9584                        data: &[u8],
9585                        validate: bool,
9586                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9587                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9588                                data,
9589                                validate,
9590                            )
9591                            .map(StakeTableErrors::FailedInnerCall)
9592                    }
9593                    FailedInnerCall
9594                },
9595                {
9596                    fn OwnableInvalidOwner(
9597                        data: &[u8],
9598                        validate: bool,
9599                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9600                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
9601                                data,
9602                                validate,
9603                            )
9604                            .map(StakeTableErrors::OwnableInvalidOwner)
9605                    }
9606                    OwnableInvalidOwner
9607                },
9608                {
9609                    fn ZeroAmount(
9610                        data: &[u8],
9611                        validate: bool,
9612                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9613                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(
9614                                data,
9615                                validate,
9616                            )
9617                            .map(StakeTableErrors::ZeroAmount)
9618                    }
9619                    ZeroAmount
9620                },
9621                {
9622                    fn InsufficientAllowance(
9623                        data: &[u8],
9624                        validate: bool,
9625                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9626                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
9627                                data,
9628                                validate,
9629                            )
9630                            .map(StakeTableErrors::InsufficientAllowance)
9631                    }
9632                    InsufficientAllowance
9633                },
9634                {
9635                    fn ERC1967InvalidImplementation(
9636                        data: &[u8],
9637                        validate: bool,
9638                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9639                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
9640                                data,
9641                                validate,
9642                            )
9643                            .map(StakeTableErrors::ERC1967InvalidImplementation)
9644                    }
9645                    ERC1967InvalidImplementation
9646                },
9647                {
9648                    fn ValidatorInactive(
9649                        data: &[u8],
9650                        validate: bool,
9651                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9652                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
9653                                data,
9654                                validate,
9655                            )
9656                            .map(StakeTableErrors::ValidatorInactive)
9657                    }
9658                    ValidatorInactive
9659                },
9660                {
9661                    fn PrematureWithdrawal(
9662                        data: &[u8],
9663                        validate: bool,
9664                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9665                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
9666                                data,
9667                                validate,
9668                            )
9669                            .map(StakeTableErrors::PrematureWithdrawal)
9670                    }
9671                    PrematureWithdrawal
9672                },
9673                {
9674                    fn InsufficientBalance(
9675                        data: &[u8],
9676                        validate: bool,
9677                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9678                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
9679                                data,
9680                                validate,
9681                            )
9682                            .map(StakeTableErrors::InsufficientBalance)
9683                    }
9684                    InsufficientBalance
9685                },
9686                {
9687                    fn ValidatorAlreadyRegistered(
9688                        data: &[u8],
9689                        validate: bool,
9690                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9691                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
9692                                data,
9693                                validate,
9694                            )
9695                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
9696                    }
9697                    ValidatorAlreadyRegistered
9698                },
9699                {
9700                    fn AddressEmptyCode(
9701                        data: &[u8],
9702                        validate: bool,
9703                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9704                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
9705                                data,
9706                                validate,
9707                            )
9708                            .map(StakeTableErrors::AddressEmptyCode)
9709                    }
9710                    AddressEmptyCode
9711                },
9712                {
9713                    fn UUPSUnsupportedProxiableUUID(
9714                        data: &[u8],
9715                        validate: bool,
9716                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9717                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
9718                                data,
9719                                validate,
9720                            )
9721                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
9722                    }
9723                    UUPSUnsupportedProxiableUUID
9724                },
9725                {
9726                    fn ERC1967NonPayable(
9727                        data: &[u8],
9728                        validate: bool,
9729                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9730                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
9731                                data,
9732                                validate,
9733                            )
9734                            .map(StakeTableErrors::ERC1967NonPayable)
9735                    }
9736                    ERC1967NonPayable
9737                },
9738                {
9739                    fn ExitEscrowPeriodInvalid(
9740                        data: &[u8],
9741                        validate: bool,
9742                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9743                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
9744                                data,
9745                                validate,
9746                            )
9747                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
9748                    }
9749                    ExitEscrowPeriodInvalid
9750                },
9751                {
9752                    fn NothingToWithdraw(
9753                        data: &[u8],
9754                        validate: bool,
9755                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9756                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
9757                                data,
9758                                validate,
9759                            )
9760                            .map(StakeTableErrors::NothingToWithdraw)
9761                    }
9762                    NothingToWithdraw
9763                },
9764                {
9765                    fn UndelegationAlreadyExists(
9766                        data: &[u8],
9767                        validate: bool,
9768                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9769                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
9770                                data,
9771                                validate,
9772                            )
9773                            .map(StakeTableErrors::UndelegationAlreadyExists)
9774                    }
9775                    UndelegationAlreadyExists
9776                },
9777                {
9778                    fn NotInitializing(
9779                        data: &[u8],
9780                        validate: bool,
9781                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9782                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
9783                                data,
9784                                validate,
9785                            )
9786                            .map(StakeTableErrors::NotInitializing)
9787                    }
9788                    NotInitializing
9789                },
9790                {
9791                    fn ZeroAddress(
9792                        data: &[u8],
9793                        validate: bool,
9794                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9795                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(
9796                                data,
9797                                validate,
9798                            )
9799                            .map(StakeTableErrors::ZeroAddress)
9800                    }
9801                    ZeroAddress
9802                },
9803                {
9804                    fn InvalidCommission(
9805                        data: &[u8],
9806                        validate: bool,
9807                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9808                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
9809                                data,
9810                                validate,
9811                            )
9812                            .map(StakeTableErrors::InvalidCommission)
9813                    }
9814                    InvalidCommission
9815                },
9816                {
9817                    fn UUPSUnauthorizedCallContext(
9818                        data: &[u8],
9819                        validate: bool,
9820                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9821                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
9822                                data,
9823                                validate,
9824                            )
9825                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
9826                    }
9827                    UUPSUnauthorizedCallContext
9828                },
9829                {
9830                    fn ValidatorAlreadyExited(
9831                        data: &[u8],
9832                        validate: bool,
9833                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9834                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
9835                                data,
9836                                validate,
9837                            )
9838                            .map(StakeTableErrors::ValidatorAlreadyExited)
9839                    }
9840                    ValidatorAlreadyExited
9841                },
9842                {
9843                    fn ValidatorNotExited(
9844                        data: &[u8],
9845                        validate: bool,
9846                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9847                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
9848                                data,
9849                                validate,
9850                            )
9851                            .map(StakeTableErrors::ValidatorNotExited)
9852                    }
9853                    ValidatorNotExited
9854                },
9855                {
9856                    fn InvalidInitialization(
9857                        data: &[u8],
9858                        validate: bool,
9859                    ) -> alloy_sol_types::Result<StakeTableErrors> {
9860                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
9861                                data,
9862                                validate,
9863                            )
9864                            .map(StakeTableErrors::InvalidInitialization)
9865                    }
9866                    InvalidInitialization
9867                },
9868            ];
9869            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9870                return Err(
9871                    alloy_sol_types::Error::unknown_selector(
9872                        <Self as alloy_sol_types::SolInterface>::NAME,
9873                        selector,
9874                    ),
9875                );
9876            };
9877            DECODE_SHIMS[idx](data, validate)
9878        }
9879        #[inline]
9880        fn abi_encoded_size(&self) -> usize {
9881            match self {
9882                Self::AddressEmptyCode(inner) => {
9883                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
9884                        inner,
9885                    )
9886                }
9887                Self::BLSSigVerificationFailed(inner) => {
9888                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
9889                        inner,
9890                    )
9891                }
9892                Self::BlsKeyAlreadyUsed(inner) => {
9893                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
9894                        inner,
9895                    )
9896                }
9897                Self::ERC1967InvalidImplementation(inner) => {
9898                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
9899                        inner,
9900                    )
9901                }
9902                Self::ERC1967NonPayable(inner) => {
9903                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
9904                        inner,
9905                    )
9906                }
9907                Self::ExitEscrowPeriodInvalid(inner) => {
9908                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
9909                        inner,
9910                    )
9911                }
9912                Self::FailedInnerCall(inner) => {
9913                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9914                        inner,
9915                    )
9916                }
9917                Self::InsufficientAllowance(inner) => {
9918                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
9919                        inner,
9920                    )
9921                }
9922                Self::InsufficientBalance(inner) => {
9923                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
9924                        inner,
9925                    )
9926                }
9927                Self::InvalidCommission(inner) => {
9928                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
9929                        inner,
9930                    )
9931                }
9932                Self::InvalidInitialization(inner) => {
9933                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
9934                        inner,
9935                    )
9936                }
9937                Self::InvalidSchnorrVK(inner) => {
9938                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
9939                        inner,
9940                    )
9941                }
9942                Self::NotInitializing(inner) => {
9943                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
9944                        inner,
9945                    )
9946                }
9947                Self::NothingToWithdraw(inner) => {
9948                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
9949                        inner,
9950                    )
9951                }
9952                Self::OwnableInvalidOwner(inner) => {
9953                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
9954                        inner,
9955                    )
9956                }
9957                Self::OwnableUnauthorizedAccount(inner) => {
9958                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9959                        inner,
9960                    )
9961                }
9962                Self::PrematureWithdrawal(inner) => {
9963                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
9964                        inner,
9965                    )
9966                }
9967                Self::UUPSUnauthorizedCallContext(inner) => {
9968                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
9969                        inner,
9970                    )
9971                }
9972                Self::UUPSUnsupportedProxiableUUID(inner) => {
9973                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
9974                        inner,
9975                    )
9976                }
9977                Self::UndelegationAlreadyExists(inner) => {
9978                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
9979                        inner,
9980                    )
9981                }
9982                Self::ValidatorAlreadyExited(inner) => {
9983                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
9984                        inner,
9985                    )
9986                }
9987                Self::ValidatorAlreadyRegistered(inner) => {
9988                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
9989                        inner,
9990                    )
9991                }
9992                Self::ValidatorInactive(inner) => {
9993                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
9994                        inner,
9995                    )
9996                }
9997                Self::ValidatorNotExited(inner) => {
9998                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
9999                        inner,
10000                    )
10001                }
10002                Self::ZeroAddress(inner) => {
10003                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
10004                }
10005                Self::ZeroAmount(inner) => {
10006                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
10007                }
10008            }
10009        }
10010        #[inline]
10011        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10012            match self {
10013                Self::AddressEmptyCode(inner) => {
10014                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
10015                        inner,
10016                        out,
10017                    )
10018                }
10019                Self::BLSSigVerificationFailed(inner) => {
10020                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
10021                        inner,
10022                        out,
10023                    )
10024                }
10025                Self::BlsKeyAlreadyUsed(inner) => {
10026                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
10027                        inner,
10028                        out,
10029                    )
10030                }
10031                Self::ERC1967InvalidImplementation(inner) => {
10032                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
10033                        inner,
10034                        out,
10035                    )
10036                }
10037                Self::ERC1967NonPayable(inner) => {
10038                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
10039                        inner,
10040                        out,
10041                    )
10042                }
10043                Self::ExitEscrowPeriodInvalid(inner) => {
10044                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
10045                        inner,
10046                        out,
10047                    )
10048                }
10049                Self::FailedInnerCall(inner) => {
10050                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
10051                        inner,
10052                        out,
10053                    )
10054                }
10055                Self::InsufficientAllowance(inner) => {
10056                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
10057                        inner,
10058                        out,
10059                    )
10060                }
10061                Self::InsufficientBalance(inner) => {
10062                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
10063                        inner,
10064                        out,
10065                    )
10066                }
10067                Self::InvalidCommission(inner) => {
10068                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
10069                        inner,
10070                        out,
10071                    )
10072                }
10073                Self::InvalidInitialization(inner) => {
10074                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
10075                        inner,
10076                        out,
10077                    )
10078                }
10079                Self::InvalidSchnorrVK(inner) => {
10080                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
10081                        inner,
10082                        out,
10083                    )
10084                }
10085                Self::NotInitializing(inner) => {
10086                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
10087                        inner,
10088                        out,
10089                    )
10090                }
10091                Self::NothingToWithdraw(inner) => {
10092                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
10093                        inner,
10094                        out,
10095                    )
10096                }
10097                Self::OwnableInvalidOwner(inner) => {
10098                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
10099                        inner,
10100                        out,
10101                    )
10102                }
10103                Self::OwnableUnauthorizedAccount(inner) => {
10104                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
10105                        inner,
10106                        out,
10107                    )
10108                }
10109                Self::PrematureWithdrawal(inner) => {
10110                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
10111                        inner,
10112                        out,
10113                    )
10114                }
10115                Self::UUPSUnauthorizedCallContext(inner) => {
10116                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
10117                        inner,
10118                        out,
10119                    )
10120                }
10121                Self::UUPSUnsupportedProxiableUUID(inner) => {
10122                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
10123                        inner,
10124                        out,
10125                    )
10126                }
10127                Self::UndelegationAlreadyExists(inner) => {
10128                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
10129                        inner,
10130                        out,
10131                    )
10132                }
10133                Self::ValidatorAlreadyExited(inner) => {
10134                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
10135                        inner,
10136                        out,
10137                    )
10138                }
10139                Self::ValidatorAlreadyRegistered(inner) => {
10140                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
10141                        inner,
10142                        out,
10143                    )
10144                }
10145                Self::ValidatorInactive(inner) => {
10146                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
10147                        inner,
10148                        out,
10149                    )
10150                }
10151                Self::ValidatorNotExited(inner) => {
10152                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
10153                        inner,
10154                        out,
10155                    )
10156                }
10157                Self::ZeroAddress(inner) => {
10158                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
10159                        inner,
10160                        out,
10161                    )
10162                }
10163                Self::ZeroAmount(inner) => {
10164                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10165                }
10166            }
10167        }
10168    }
10169    ///Container for all the [`StakeTable`](self) events.
10170    #[derive()]
10171    pub enum StakeTableEvents {
10172        #[allow(missing_docs)]
10173        ConsensusKeysUpdated(ConsensusKeysUpdated),
10174        #[allow(missing_docs)]
10175        Delegated(Delegated),
10176        #[allow(missing_docs)]
10177        Initialized(Initialized),
10178        #[allow(missing_docs)]
10179        OwnershipTransferred(OwnershipTransferred),
10180        #[allow(missing_docs)]
10181        Undelegated(Undelegated),
10182        #[allow(missing_docs)]
10183        Upgraded(Upgraded),
10184        #[allow(missing_docs)]
10185        ValidatorExit(ValidatorExit),
10186        #[allow(missing_docs)]
10187        ValidatorRegistered(ValidatorRegistered),
10188        #[allow(missing_docs)]
10189        Withdrawal(Withdrawal),
10190    }
10191    #[automatically_derived]
10192    impl StakeTableEvents {
10193        /// All the selectors of this enum.
10194        ///
10195        /// Note that the selectors might not be in the same order as the variants.
10196        /// No guarantees are made about the order of the selectors.
10197        ///
10198        /// Prefer using `SolInterface` methods instead.
10199        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10200            [
10201                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
10202                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
10203                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
10204            ],
10205            [
10206                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
10207                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
10208                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
10209            ],
10210            [
10211                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
10212                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
10213                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
10214            ],
10215            [
10216                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
10217                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
10218                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10219            ],
10220            [
10221                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10222                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10223                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10224            ],
10225            [
10226                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
10227                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
10228                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
10229            ],
10230            [
10231                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
10232                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
10233                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
10234            ],
10235            [
10236                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
10237                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
10238                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
10239            ],
10240            [
10241                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10242                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10243                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10244            ],
10245        ];
10246    }
10247    #[automatically_derived]
10248    impl alloy_sol_types::SolEventInterface for StakeTableEvents {
10249        const NAME: &'static str = "StakeTableEvents";
10250        const COUNT: usize = 9usize;
10251        fn decode_raw_log(
10252            topics: &[alloy_sol_types::Word],
10253            data: &[u8],
10254            validate: bool,
10255        ) -> alloy_sol_types::Result<Self> {
10256            match topics.first().copied() {
10257                Some(
10258                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10259                ) => {
10260                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10261                            topics,
10262                            data,
10263                            validate,
10264                        )
10265                        .map(Self::ConsensusKeysUpdated)
10266                }
10267                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10268                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
10269                            topics,
10270                            data,
10271                            validate,
10272                        )
10273                        .map(Self::Delegated)
10274                }
10275                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10276                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10277                            topics,
10278                            data,
10279                            validate,
10280                        )
10281                        .map(Self::Initialized)
10282                }
10283                Some(
10284                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10285                ) => {
10286                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10287                            topics,
10288                            data,
10289                            validate,
10290                        )
10291                        .map(Self::OwnershipTransferred)
10292                }
10293                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10294                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
10295                            topics,
10296                            data,
10297                            validate,
10298                        )
10299                        .map(Self::Undelegated)
10300                }
10301                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10302                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
10303                            topics,
10304                            data,
10305                            validate,
10306                        )
10307                        .map(Self::Upgraded)
10308                }
10309                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10310                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
10311                            topics,
10312                            data,
10313                            validate,
10314                        )
10315                        .map(Self::ValidatorExit)
10316                }
10317                Some(
10318                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10319                ) => {
10320                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
10321                            topics,
10322                            data,
10323                            validate,
10324                        )
10325                        .map(Self::ValidatorRegistered)
10326                }
10327                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10328                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
10329                            topics,
10330                            data,
10331                            validate,
10332                        )
10333                        .map(Self::Withdrawal)
10334                }
10335                _ => {
10336                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10337                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10338                        log: alloy_sol_types::private::Box::new(
10339                            alloy_sol_types::private::LogData::new_unchecked(
10340                                topics.to_vec(),
10341                                data.to_vec().into(),
10342                            ),
10343                        ),
10344                    })
10345                }
10346            }
10347        }
10348    }
10349    #[automatically_derived]
10350    impl alloy_sol_types::private::IntoLogData for StakeTableEvents {
10351        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10352            match self {
10353                Self::ConsensusKeysUpdated(inner) => {
10354                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10355                }
10356                Self::Delegated(inner) => {
10357                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10358                }
10359                Self::Initialized(inner) => {
10360                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10361                }
10362                Self::OwnershipTransferred(inner) => {
10363                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10364                }
10365                Self::Undelegated(inner) => {
10366                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10367                }
10368                Self::Upgraded(inner) => {
10369                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10370                }
10371                Self::ValidatorExit(inner) => {
10372                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10373                }
10374                Self::ValidatorRegistered(inner) => {
10375                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10376                }
10377                Self::Withdrawal(inner) => {
10378                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10379                }
10380            }
10381        }
10382        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10383            match self {
10384                Self::ConsensusKeysUpdated(inner) => {
10385                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10386                }
10387                Self::Delegated(inner) => {
10388                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10389                }
10390                Self::Initialized(inner) => {
10391                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10392                }
10393                Self::OwnershipTransferred(inner) => {
10394                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10395                }
10396                Self::Undelegated(inner) => {
10397                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10398                }
10399                Self::Upgraded(inner) => {
10400                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10401                }
10402                Self::ValidatorExit(inner) => {
10403                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10404                }
10405                Self::ValidatorRegistered(inner) => {
10406                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10407                }
10408                Self::Withdrawal(inner) => {
10409                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10410                }
10411            }
10412        }
10413    }
10414    use alloy::contract as alloy_contract;
10415    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
10416
10417See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
10418    #[inline]
10419    pub const fn new<
10420        T: alloy_contract::private::Transport + ::core::clone::Clone,
10421        P: alloy_contract::private::Provider<T, N>,
10422        N: alloy_contract::private::Network,
10423    >(
10424        address: alloy_sol_types::private::Address,
10425        provider: P,
10426    ) -> StakeTableInstance<T, P, N> {
10427        StakeTableInstance::<T, P, N>::new(address, provider)
10428    }
10429    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10430
10431Returns a new instance of the contract, if the deployment was successful.
10432
10433For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10434    #[inline]
10435    pub fn deploy<
10436        T: alloy_contract::private::Transport + ::core::clone::Clone,
10437        P: alloy_contract::private::Provider<T, N>,
10438        N: alloy_contract::private::Network,
10439    >(
10440        provider: P,
10441    ) -> impl ::core::future::Future<
10442        Output = alloy_contract::Result<StakeTableInstance<T, P, N>>,
10443    > {
10444        StakeTableInstance::<T, P, N>::deploy(provider)
10445    }
10446    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10447and constructor arguments, if any.
10448
10449This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10450the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10451    #[inline]
10452    pub fn deploy_builder<
10453        T: alloy_contract::private::Transport + ::core::clone::Clone,
10454        P: alloy_contract::private::Provider<T, N>,
10455        N: alloy_contract::private::Network,
10456    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
10457        StakeTableInstance::<T, P, N>::deploy_builder(provider)
10458    }
10459    /**A [`StakeTable`](self) instance.
10460
10461Contains type-safe methods for interacting with an on-chain instance of the
10462[`StakeTable`](self) contract located at a given `address`, using a given
10463provider `P`.
10464
10465If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10466documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10467be used to deploy a new instance of the contract.
10468
10469See the [module-level documentation](self) for all the available methods.*/
10470    #[derive(Clone)]
10471    pub struct StakeTableInstance<T, P, N = alloy_contract::private::Ethereum> {
10472        address: alloy_sol_types::private::Address,
10473        provider: P,
10474        _network_transport: ::core::marker::PhantomData<(N, T)>,
10475    }
10476    #[automatically_derived]
10477    impl<T, P, N> ::core::fmt::Debug for StakeTableInstance<T, P, N> {
10478        #[inline]
10479        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10480            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
10481        }
10482    }
10483    /// Instantiation and getters/setters.
10484    #[automatically_derived]
10485    impl<
10486        T: alloy_contract::private::Transport + ::core::clone::Clone,
10487        P: alloy_contract::private::Provider<T, N>,
10488        N: alloy_contract::private::Network,
10489    > StakeTableInstance<T, P, N> {
10490        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
10491
10492See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
10493        #[inline]
10494        pub const fn new(
10495            address: alloy_sol_types::private::Address,
10496            provider: P,
10497        ) -> Self {
10498            Self {
10499                address,
10500                provider,
10501                _network_transport: ::core::marker::PhantomData,
10502            }
10503        }
10504        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10505
10506Returns a new instance of the contract, if the deployment was successful.
10507
10508For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10509        #[inline]
10510        pub async fn deploy(
10511            provider: P,
10512        ) -> alloy_contract::Result<StakeTableInstance<T, P, N>> {
10513            let call_builder = Self::deploy_builder(provider);
10514            let contract_address = call_builder.deploy().await?;
10515            Ok(Self::new(contract_address, call_builder.provider))
10516        }
10517        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10518and constructor arguments, if any.
10519
10520This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10521the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10522        #[inline]
10523        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
10524            alloy_contract::RawCallBuilder::new_raw_deploy(
10525                provider,
10526                ::core::clone::Clone::clone(&BYTECODE),
10527            )
10528        }
10529        /// Returns a reference to the address.
10530        #[inline]
10531        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10532            &self.address
10533        }
10534        /// Sets the address.
10535        #[inline]
10536        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10537            self.address = address;
10538        }
10539        /// Sets the address and returns `self`.
10540        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10541            self.set_address(address);
10542            self
10543        }
10544        /// Returns a reference to the provider.
10545        #[inline]
10546        pub const fn provider(&self) -> &P {
10547            &self.provider
10548        }
10549    }
10550    impl<T, P: ::core::clone::Clone, N> StakeTableInstance<T, &P, N> {
10551        /// Clones the provider and returns a new instance with the cloned provider.
10552        #[inline]
10553        pub fn with_cloned_provider(self) -> StakeTableInstance<T, P, N> {
10554            StakeTableInstance {
10555                address: self.address,
10556                provider: ::core::clone::Clone::clone(&self.provider),
10557                _network_transport: ::core::marker::PhantomData,
10558            }
10559        }
10560    }
10561    /// Function calls.
10562    #[automatically_derived]
10563    impl<
10564        T: alloy_contract::private::Transport + ::core::clone::Clone,
10565        P: alloy_contract::private::Provider<T, N>,
10566        N: alloy_contract::private::Network,
10567    > StakeTableInstance<T, P, N> {
10568        /// Creates a new call builder using this contract instance's provider and address.
10569        ///
10570        /// Note that the call can be any function call, not just those defined in this
10571        /// contract. Prefer using the other methods for building type-safe contract calls.
10572        pub fn call_builder<C: alloy_sol_types::SolCall>(
10573            &self,
10574            call: &C,
10575        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
10576            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10577        }
10578        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
10579        pub fn UPGRADE_INTERFACE_VERSION(
10580            &self,
10581        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
10582            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
10583        }
10584        ///Creates a new call builder for the [`_hashBlsKey`] function.
10585        pub fn _hashBlsKey(
10586            &self,
10587            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10588        ) -> alloy_contract::SolCallBuilder<T, &P, _hashBlsKeyCall, N> {
10589            self.call_builder(&_hashBlsKeyCall { blsVK })
10590        }
10591        ///Creates a new call builder for the [`blsKeys`] function.
10592        pub fn blsKeys(
10593            &self,
10594            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
10595        ) -> alloy_contract::SolCallBuilder<T, &P, blsKeysCall, N> {
10596            self.call_builder(&blsKeysCall { blsKeyHash })
10597        }
10598        ///Creates a new call builder for the [`claimValidatorExit`] function.
10599        pub fn claimValidatorExit(
10600            &self,
10601            validator: alloy::sol_types::private::Address,
10602        ) -> alloy_contract::SolCallBuilder<T, &P, claimValidatorExitCall, N> {
10603            self.call_builder(
10604                &claimValidatorExitCall {
10605                    validator,
10606                },
10607            )
10608        }
10609        ///Creates a new call builder for the [`claimWithdrawal`] function.
10610        pub fn claimWithdrawal(
10611            &self,
10612            validator: alloy::sol_types::private::Address,
10613        ) -> alloy_contract::SolCallBuilder<T, &P, claimWithdrawalCall, N> {
10614            self.call_builder(&claimWithdrawalCall { validator })
10615        }
10616        ///Creates a new call builder for the [`delegate`] function.
10617        pub fn delegate(
10618            &self,
10619            validator: alloy::sol_types::private::Address,
10620            amount: alloy::sol_types::private::primitives::aliases::U256,
10621        ) -> alloy_contract::SolCallBuilder<T, &P, delegateCall, N> {
10622            self.call_builder(&delegateCall { validator, amount })
10623        }
10624        ///Creates a new call builder for the [`delegations`] function.
10625        pub fn delegations(
10626            &self,
10627            validator: alloy::sol_types::private::Address,
10628            delegator: alloy::sol_types::private::Address,
10629        ) -> alloy_contract::SolCallBuilder<T, &P, delegationsCall, N> {
10630            self.call_builder(
10631                &delegationsCall {
10632                    validator,
10633                    delegator,
10634                },
10635            )
10636        }
10637        ///Creates a new call builder for the [`deregisterValidator`] function.
10638        pub fn deregisterValidator(
10639            &self,
10640        ) -> alloy_contract::SolCallBuilder<T, &P, deregisterValidatorCall, N> {
10641            self.call_builder(&deregisterValidatorCall {})
10642        }
10643        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
10644        pub fn exitEscrowPeriod(
10645            &self,
10646        ) -> alloy_contract::SolCallBuilder<T, &P, exitEscrowPeriodCall, N> {
10647            self.call_builder(&exitEscrowPeriodCall {})
10648        }
10649        ///Creates a new call builder for the [`getVersion`] function.
10650        pub fn getVersion(
10651            &self,
10652        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
10653            self.call_builder(&getVersionCall {})
10654        }
10655        ///Creates a new call builder for the [`initialize`] function.
10656        pub fn initialize(
10657            &self,
10658            _tokenAddress: alloy::sol_types::private::Address,
10659            _lightClientAddress: alloy::sol_types::private::Address,
10660            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
10661            _timelock: alloy::sol_types::private::Address,
10662        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
10663            self.call_builder(
10664                &initializeCall {
10665                    _tokenAddress,
10666                    _lightClientAddress,
10667                    _exitEscrowPeriod,
10668                    _timelock,
10669                },
10670            )
10671        }
10672        ///Creates a new call builder for the [`initializedAtBlock`] function.
10673        pub fn initializedAtBlock(
10674            &self,
10675        ) -> alloy_contract::SolCallBuilder<T, &P, initializedAtBlockCall, N> {
10676            self.call_builder(&initializedAtBlockCall {})
10677        }
10678        ///Creates a new call builder for the [`lightClient`] function.
10679        pub fn lightClient(
10680            &self,
10681        ) -> alloy_contract::SolCallBuilder<T, &P, lightClientCall, N> {
10682            self.call_builder(&lightClientCall {})
10683        }
10684        ///Creates a new call builder for the [`owner`] function.
10685        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
10686            self.call_builder(&ownerCall {})
10687        }
10688        ///Creates a new call builder for the [`proxiableUUID`] function.
10689        pub fn proxiableUUID(
10690            &self,
10691        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
10692            self.call_builder(&proxiableUUIDCall {})
10693        }
10694        ///Creates a new call builder for the [`registerValidator`] function.
10695        pub fn registerValidator(
10696            &self,
10697            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10698            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10699            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10700            commission: u16,
10701        ) -> alloy_contract::SolCallBuilder<T, &P, registerValidatorCall, N> {
10702            self.call_builder(
10703                &registerValidatorCall {
10704                    blsVK,
10705                    schnorrVK,
10706                    blsSig,
10707                    commission,
10708                },
10709            )
10710        }
10711        ///Creates a new call builder for the [`renounceOwnership`] function.
10712        pub fn renounceOwnership(
10713            &self,
10714        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
10715            self.call_builder(&renounceOwnershipCall {})
10716        }
10717        ///Creates a new call builder for the [`token`] function.
10718        pub fn token(&self) -> alloy_contract::SolCallBuilder<T, &P, tokenCall, N> {
10719            self.call_builder(&tokenCall {})
10720        }
10721        ///Creates a new call builder for the [`transferOwnership`] function.
10722        pub fn transferOwnership(
10723            &self,
10724            newOwner: alloy::sol_types::private::Address,
10725        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
10726            self.call_builder(&transferOwnershipCall { newOwner })
10727        }
10728        ///Creates a new call builder for the [`undelegate`] function.
10729        pub fn undelegate(
10730            &self,
10731            validator: alloy::sol_types::private::Address,
10732            amount: alloy::sol_types::private::primitives::aliases::U256,
10733        ) -> alloy_contract::SolCallBuilder<T, &P, undelegateCall, N> {
10734            self.call_builder(
10735                &undelegateCall {
10736                    validator,
10737                    amount,
10738                },
10739            )
10740        }
10741        ///Creates a new call builder for the [`undelegations`] function.
10742        pub fn undelegations(
10743            &self,
10744            validator: alloy::sol_types::private::Address,
10745            delegator: alloy::sol_types::private::Address,
10746        ) -> alloy_contract::SolCallBuilder<T, &P, undelegationsCall, N> {
10747            self.call_builder(
10748                &undelegationsCall {
10749                    validator,
10750                    delegator,
10751                },
10752            )
10753        }
10754        ///Creates a new call builder for the [`updateConsensusKeys`] function.
10755        pub fn updateConsensusKeys(
10756            &self,
10757            newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10758            newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10759            newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10760        ) -> alloy_contract::SolCallBuilder<T, &P, updateConsensusKeysCall, N> {
10761            self.call_builder(
10762                &updateConsensusKeysCall {
10763                    newBlsVK,
10764                    newSchnorrVK,
10765                    newBlsSig,
10766                },
10767            )
10768        }
10769        ///Creates a new call builder for the [`upgradeToAndCall`] function.
10770        pub fn upgradeToAndCall(
10771            &self,
10772            newImplementation: alloy::sol_types::private::Address,
10773            data: alloy::sol_types::private::Bytes,
10774        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
10775            self.call_builder(
10776                &upgradeToAndCallCall {
10777                    newImplementation,
10778                    data,
10779                },
10780            )
10781        }
10782        ///Creates a new call builder for the [`validatorExits`] function.
10783        pub fn validatorExits(
10784            &self,
10785            validator: alloy::sol_types::private::Address,
10786        ) -> alloy_contract::SolCallBuilder<T, &P, validatorExitsCall, N> {
10787            self.call_builder(&validatorExitsCall { validator })
10788        }
10789        ///Creates a new call builder for the [`validators`] function.
10790        pub fn validators(
10791            &self,
10792            account: alloy::sol_types::private::Address,
10793        ) -> alloy_contract::SolCallBuilder<T, &P, validatorsCall, N> {
10794            self.call_builder(&validatorsCall { account })
10795        }
10796    }
10797    /// Event filters.
10798    #[automatically_derived]
10799    impl<
10800        T: alloy_contract::private::Transport + ::core::clone::Clone,
10801        P: alloy_contract::private::Provider<T, N>,
10802        N: alloy_contract::private::Network,
10803    > StakeTableInstance<T, P, N> {
10804        /// Creates a new event filter using this contract instance's provider and address.
10805        ///
10806        /// Note that the type can be any event, not just those defined in this contract.
10807        /// Prefer using the other methods for building type-safe event filters.
10808        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10809            &self,
10810        ) -> alloy_contract::Event<T, &P, E, N> {
10811            alloy_contract::Event::new_sol(&self.provider, &self.address)
10812        }
10813        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
10814        pub fn ConsensusKeysUpdated_filter(
10815            &self,
10816        ) -> alloy_contract::Event<T, &P, ConsensusKeysUpdated, N> {
10817            self.event_filter::<ConsensusKeysUpdated>()
10818        }
10819        ///Creates a new event filter for the [`Delegated`] event.
10820        pub fn Delegated_filter(&self) -> alloy_contract::Event<T, &P, Delegated, N> {
10821            self.event_filter::<Delegated>()
10822        }
10823        ///Creates a new event filter for the [`Initialized`] event.
10824        pub fn Initialized_filter(
10825            &self,
10826        ) -> alloy_contract::Event<T, &P, Initialized, N> {
10827            self.event_filter::<Initialized>()
10828        }
10829        ///Creates a new event filter for the [`OwnershipTransferred`] event.
10830        pub fn OwnershipTransferred_filter(
10831            &self,
10832        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
10833            self.event_filter::<OwnershipTransferred>()
10834        }
10835        ///Creates a new event filter for the [`Undelegated`] event.
10836        pub fn Undelegated_filter(
10837            &self,
10838        ) -> alloy_contract::Event<T, &P, Undelegated, N> {
10839            self.event_filter::<Undelegated>()
10840        }
10841        ///Creates a new event filter for the [`Upgraded`] event.
10842        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
10843            self.event_filter::<Upgraded>()
10844        }
10845        ///Creates a new event filter for the [`ValidatorExit`] event.
10846        pub fn ValidatorExit_filter(
10847            &self,
10848        ) -> alloy_contract::Event<T, &P, ValidatorExit, N> {
10849            self.event_filter::<ValidatorExit>()
10850        }
10851        ///Creates a new event filter for the [`ValidatorRegistered`] event.
10852        pub fn ValidatorRegistered_filter(
10853            &self,
10854        ) -> alloy_contract::Event<T, &P, ValidatorRegistered, N> {
10855            self.event_filter::<ValidatorRegistered>()
10856        }
10857        ///Creates a new event filter for the [`Withdrawal`] event.
10858        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<T, &P, Withdrawal, N> {
10859            self.event_filter::<Withdrawal>()
10860        }
10861    }
10862}