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