Skip to main content

hotshot_contract_adapter/bindings/
stake_table.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(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
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_underlying(
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 From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    /**```solidity
168struct G1Point { BaseField x; BaseField y; }
169```*/
170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
171    #[derive(Clone)]
172    pub struct G1Point {
173        #[allow(missing_docs)]
174        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
175        #[allow(missing_docs)]
176        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[doc(hidden)]
187        #[allow(dead_code)]
188        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
189        #[doc(hidden)]
190        type UnderlyingRustTuple<'a> = (
191            <BaseField as alloy::sol_types::SolType>::RustType,
192            <BaseField as alloy::sol_types::SolType>::RustType,
193        );
194        #[cfg(test)]
195        #[allow(dead_code, unreachable_patterns)]
196        fn _type_assertion(
197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
198        ) {
199            match _t {
200                alloy_sol_types::private::AssertTypeEq::<
201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
202                >(_) => {}
203            }
204        }
205        #[automatically_derived]
206        #[doc(hidden)]
207        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
208            fn from(value: G1Point) -> Self {
209                (value.x, value.y)
210            }
211        }
212        #[automatically_derived]
213        #[doc(hidden)]
214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
216                Self { x: tuple.0, y: tuple.1 }
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolValue for G1Point {
221            type SolType = Self;
222        }
223        #[automatically_derived]
224        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
225            #[inline]
226            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
227                (
228                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
230                )
231            }
232            #[inline]
233            fn stv_abi_encoded_size(&self) -> usize {
234                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
235                    return size;
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_encoded_size(&tuple)
243            }
244            #[inline]
245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
246                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
247            }
248            #[inline]
249            fn stv_abi_encode_packed_to(
250                &self,
251                out: &mut alloy_sol_types::private::Vec<u8>,
252            ) {
253                let tuple = <UnderlyingRustTuple<
254                    '_,
255                > as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<
257                    '_,
258                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
259            }
260            #[inline]
261            fn stv_abi_packed_encoded_size(&self) -> usize {
262                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
263                    return size;
264                }
265                let tuple = <UnderlyingRustTuple<
266                    '_,
267                > as ::core::convert::From<Self>>::from(self.clone());
268                <UnderlyingSolTuple<
269                    '_,
270                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
271            }
272        }
273        #[automatically_derived]
274        impl alloy_sol_types::SolType for G1Point {
275            type RustType = Self;
276            type Token<'a> = <UnderlyingSolTuple<
277                'a,
278            > as alloy_sol_types::SolType>::Token<'a>;
279            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
280            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
281                '_,
282            > as alloy_sol_types::SolType>::ENCODED_SIZE;
283            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
284                '_,
285            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
286            #[inline]
287            fn valid_token(token: &Self::Token<'_>) -> bool {
288                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
289            }
290            #[inline]
291            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
292                let tuple = <UnderlyingSolTuple<
293                    '_,
294                > as alloy_sol_types::SolType>::detokenize(token);
295                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolStruct for G1Point {
300            const NAME: &'static str = "G1Point";
301            #[inline]
302            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
303                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
304            }
305            #[inline]
306            fn eip712_components() -> alloy_sol_types::private::Vec<
307                alloy_sol_types::private::Cow<'static, str>,
308            > {
309                alloy_sol_types::private::Vec::new()
310            }
311            #[inline]
312            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
313                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
314            }
315            #[inline]
316            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
317                [
318                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
320                ]
321                    .concat()
322            }
323        }
324        #[automatically_derived]
325        impl alloy_sol_types::EventTopic for G1Point {
326            #[inline]
327            fn topic_preimage_length(rust: &Self::RustType) -> usize {
328                0usize
329                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.x,
331                    )
332                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
333                        &rust.y,
334                    )
335            }
336            #[inline]
337            fn encode_topic_preimage(
338                rust: &Self::RustType,
339                out: &mut alloy_sol_types::private::Vec<u8>,
340            ) {
341                out.reserve(
342                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
343                );
344                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
345                    &rust.x,
346                    out,
347                );
348                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
349                    &rust.y,
350                    out,
351                );
352            }
353            #[inline]
354            fn encode_topic(
355                rust: &Self::RustType,
356            ) -> alloy_sol_types::abi::token::WordToken {
357                let mut out = alloy_sol_types::private::Vec::new();
358                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
359                    rust,
360                    &mut out,
361                );
362                alloy_sol_types::abi::token::WordToken(
363                    alloy_sol_types::private::keccak256(out),
364                )
365            }
366        }
367    };
368    #[derive(serde::Serialize, serde::Deserialize)]
369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
370    /**```solidity
371struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
372```*/
373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
374    #[derive(Clone)]
375    pub struct G2Point {
376        #[allow(missing_docs)]
377        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
378        #[allow(missing_docs)]
379        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
380        #[allow(missing_docs)]
381        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
382        #[allow(missing_docs)]
383        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
384    }
385    #[allow(
386        non_camel_case_types,
387        non_snake_case,
388        clippy::pub_underscore_fields,
389        clippy::style
390    )]
391    const _: () = {
392        use alloy::sol_types as alloy_sol_types;
393        #[doc(hidden)]
394        #[allow(dead_code)]
395        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
396        #[doc(hidden)]
397        type UnderlyingRustTuple<'a> = (
398            <BaseField as alloy::sol_types::SolType>::RustType,
399            <BaseField as alloy::sol_types::SolType>::RustType,
400            <BaseField as alloy::sol_types::SolType>::RustType,
401            <BaseField as alloy::sol_types::SolType>::RustType,
402        );
403        #[cfg(test)]
404        #[allow(dead_code, unreachable_patterns)]
405        fn _type_assertion(
406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407        ) {
408            match _t {
409                alloy_sol_types::private::AssertTypeEq::<
410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                >(_) => {}
412            }
413        }
414        #[automatically_derived]
415        #[doc(hidden)]
416        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
417            fn from(value: G2Point) -> Self {
418                (value.x0, value.x1, value.y0, value.y1)
419            }
420        }
421        #[automatically_derived]
422        #[doc(hidden)]
423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                Self {
426                    x0: tuple.0,
427                    x1: tuple.1,
428                    y0: tuple.2,
429                    y1: tuple.3,
430                }
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolValue for G2Point {
435            type SolType = Self;
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
439            #[inline]
440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
441                (
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
446                )
447            }
448            #[inline]
449            fn stv_abi_encoded_size(&self) -> usize {
450                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
451                    return size;
452                }
453                let tuple = <UnderlyingRustTuple<
454                    '_,
455                > as ::core::convert::From<Self>>::from(self.clone());
456                <UnderlyingSolTuple<
457                    '_,
458                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
459            }
460            #[inline]
461            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
462                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
463            }
464            #[inline]
465            fn stv_abi_encode_packed_to(
466                &self,
467                out: &mut alloy_sol_types::private::Vec<u8>,
468            ) {
469                let tuple = <UnderlyingRustTuple<
470                    '_,
471                > as ::core::convert::From<Self>>::from(self.clone());
472                <UnderlyingSolTuple<
473                    '_,
474                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
475            }
476            #[inline]
477            fn stv_abi_packed_encoded_size(&self) -> usize {
478                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
479                    return size;
480                }
481                let tuple = <UnderlyingRustTuple<
482                    '_,
483                > as ::core::convert::From<Self>>::from(self.clone());
484                <UnderlyingSolTuple<
485                    '_,
486                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
487            }
488        }
489        #[automatically_derived]
490        impl alloy_sol_types::SolType for G2Point {
491            type RustType = Self;
492            type Token<'a> = <UnderlyingSolTuple<
493                'a,
494            > as alloy_sol_types::SolType>::Token<'a>;
495            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
496            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
497                '_,
498            > as alloy_sol_types::SolType>::ENCODED_SIZE;
499            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
500                '_,
501            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
502            #[inline]
503            fn valid_token(token: &Self::Token<'_>) -> bool {
504                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
505            }
506            #[inline]
507            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
508                let tuple = <UnderlyingSolTuple<
509                    '_,
510                > as alloy_sol_types::SolType>::detokenize(token);
511                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
512            }
513        }
514        #[automatically_derived]
515        impl alloy_sol_types::SolStruct for G2Point {
516            const NAME: &'static str = "G2Point";
517            #[inline]
518            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
519                alloy_sol_types::private::Cow::Borrowed(
520                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
521                )
522            }
523            #[inline]
524            fn eip712_components() -> alloy_sol_types::private::Vec<
525                alloy_sol_types::private::Cow<'static, str>,
526            > {
527                alloy_sol_types::private::Vec::new()
528            }
529            #[inline]
530            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
531                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
532            }
533            #[inline]
534            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
535                [
536                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
537                        .0,
538                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
539                        .0,
540                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
541                        .0,
542                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
543                ]
544                    .concat()
545            }
546        }
547        #[automatically_derived]
548        impl alloy_sol_types::EventTopic for G2Point {
549            #[inline]
550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
551                0usize
552                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
553                        &rust.x0,
554                    )
555                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.x1,
557                    )
558                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
559                        &rust.y0,
560                    )
561                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
562                        &rust.y1,
563                    )
564            }
565            #[inline]
566            fn encode_topic_preimage(
567                rust: &Self::RustType,
568                out: &mut alloy_sol_types::private::Vec<u8>,
569            ) {
570                out.reserve(
571                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
572                );
573                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.x0,
575                    out,
576                );
577                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    &rust.x1,
579                    out,
580                );
581                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.y0,
583                    out,
584                );
585                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.y1,
587                    out,
588                );
589            }
590            #[inline]
591            fn encode_topic(
592                rust: &Self::RustType,
593            ) -> alloy_sol_types::abi::token::WordToken {
594                let mut out = alloy_sol_types::private::Vec::new();
595                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
596                    rust,
597                    &mut out,
598                );
599                alloy_sol_types::abi::token::WordToken(
600                    alloy_sol_types::private::keccak256(out),
601                )
602            }
603        }
604    };
605    use alloy::contract as alloy_contract;
606    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
607
608See the [wrapper's documentation](`BN254Instance`) for more details.*/
609    #[inline]
610    pub const fn new<
611        P: alloy_contract::private::Provider<N>,
612        N: alloy_contract::private::Network,
613    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
614        BN254Instance::<P, N>::new(address, __provider)
615    }
616    /**A [`BN254`](self) instance.
617
618Contains type-safe methods for interacting with an on-chain instance of the
619[`BN254`](self) contract located at a given `address`, using a given
620provider `P`.
621
622If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
623documentation on how to provide it), the `deploy` and `deploy_builder` methods can
624be used to deploy a new instance of the contract.
625
626See the [module-level documentation](self) for all the available methods.*/
627    #[derive(Clone)]
628    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
629        address: alloy_sol_types::private::Address,
630        provider: P,
631        _network: ::core::marker::PhantomData<N>,
632    }
633    #[automatically_derived]
634    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
635        #[inline]
636        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
637            f.debug_tuple("BN254Instance").field(&self.address).finish()
638        }
639    }
640    /// Instantiation and getters/setters.
641    impl<
642        P: alloy_contract::private::Provider<N>,
643        N: alloy_contract::private::Network,
644    > BN254Instance<P, N> {
645        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
646
647See the [wrapper's documentation](`BN254Instance`) for more details.*/
648        #[inline]
649        pub const fn new(
650            address: alloy_sol_types::private::Address,
651            __provider: P,
652        ) -> Self {
653            Self {
654                address,
655                provider: __provider,
656                _network: ::core::marker::PhantomData,
657            }
658        }
659        /// Returns a reference to the address.
660        #[inline]
661        pub const fn address(&self) -> &alloy_sol_types::private::Address {
662            &self.address
663        }
664        /// Sets the address.
665        #[inline]
666        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
667            self.address = address;
668        }
669        /// Sets the address and returns `self`.
670        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
671            self.set_address(address);
672            self
673        }
674        /// Returns a reference to the provider.
675        #[inline]
676        pub const fn provider(&self) -> &P {
677            &self.provider
678        }
679    }
680    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
681        /// Clones the provider and returns a new instance with the cloned provider.
682        #[inline]
683        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
684            BN254Instance {
685                address: self.address,
686                provider: ::core::clone::Clone::clone(&self.provider),
687                _network: ::core::marker::PhantomData,
688            }
689        }
690    }
691    /// Function calls.
692    impl<
693        P: alloy_contract::private::Provider<N>,
694        N: alloy_contract::private::Network,
695    > BN254Instance<P, N> {
696        /// Creates a new call builder using this contract instance's provider and address.
697        ///
698        /// Note that the call can be any function call, not just those defined in this
699        /// contract. Prefer using the other methods for building type-safe contract calls.
700        pub fn call_builder<C: alloy_sol_types::SolCall>(
701            &self,
702            call: &C,
703        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
704            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
705        }
706    }
707    /// Event filters.
708    impl<
709        P: alloy_contract::private::Provider<N>,
710        N: alloy_contract::private::Network,
711    > BN254Instance<P, N> {
712        /// Creates a new event filter using this contract instance's provider and address.
713        ///
714        /// Note that the type can be any event, not just those defined in this contract.
715        /// Prefer using the other methods for building type-safe event filters.
716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
717            &self,
718        ) -> alloy_contract::Event<&P, E, N> {
719            alloy_contract::Event::new_sol(&self.provider, &self.address)
720        }
721    }
722}
723///Module containing a contract's types and functions.
724/**
725
726```solidity
727library EdOnBN254 {
728    struct EdOnBN254Point { uint256 x; uint256 y; }
729}
730```*/
731#[allow(
732    non_camel_case_types,
733    non_snake_case,
734    clippy::pub_underscore_fields,
735    clippy::style,
736    clippy::empty_structs_with_brackets
737)]
738pub mod EdOnBN254 {
739    use super::*;
740    use alloy::sol_types as alloy_sol_types;
741    #[derive(serde::Serialize, serde::Deserialize)]
742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
743    /**```solidity
744struct EdOnBN254Point { uint256 x; uint256 y; }
745```*/
746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
747    #[derive(Clone)]
748    pub struct EdOnBN254Point {
749        #[allow(missing_docs)]
750        pub x: alloy::sol_types::private::primitives::aliases::U256,
751        #[allow(missing_docs)]
752        pub y: alloy::sol_types::private::primitives::aliases::U256,
753    }
754    #[allow(
755        non_camel_case_types,
756        non_snake_case,
757        clippy::pub_underscore_fields,
758        clippy::style
759    )]
760    const _: () = {
761        use alloy::sol_types as alloy_sol_types;
762        #[doc(hidden)]
763        #[allow(dead_code)]
764        type UnderlyingSolTuple<'a> = (
765            alloy::sol_types::sol_data::Uint<256>,
766            alloy::sol_types::sol_data::Uint<256>,
767        );
768        #[doc(hidden)]
769        type UnderlyingRustTuple<'a> = (
770            alloy::sol_types::private::primitives::aliases::U256,
771            alloy::sol_types::private::primitives::aliases::U256,
772        );
773        #[cfg(test)]
774        #[allow(dead_code, unreachable_patterns)]
775        fn _type_assertion(
776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
777        ) {
778            match _t {
779                alloy_sol_types::private::AssertTypeEq::<
780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
781                >(_) => {}
782            }
783        }
784        #[automatically_derived]
785        #[doc(hidden)]
786        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
787            fn from(value: EdOnBN254Point) -> Self {
788                (value.x, value.y)
789            }
790        }
791        #[automatically_derived]
792        #[doc(hidden)]
793        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
794            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
795                Self { x: tuple.0, y: tuple.1 }
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolValue for EdOnBN254Point {
800            type SolType = Self;
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
804            #[inline]
805            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
806                (
807                    <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::SolType>::tokenize(&self.x),
810                    <alloy::sol_types::sol_data::Uint<
811                        256,
812                    > as alloy_sol_types::SolType>::tokenize(&self.y),
813                )
814            }
815            #[inline]
816            fn stv_abi_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
818                    return size;
819                }
820                let tuple = <UnderlyingRustTuple<
821                    '_,
822                > as ::core::convert::From<Self>>::from(self.clone());
823                <UnderlyingSolTuple<
824                    '_,
825                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
826            }
827            #[inline]
828            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
829                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
830            }
831            #[inline]
832            fn stv_abi_encode_packed_to(
833                &self,
834                out: &mut alloy_sol_types::private::Vec<u8>,
835            ) {
836                let tuple = <UnderlyingRustTuple<
837                    '_,
838                > as ::core::convert::From<Self>>::from(self.clone());
839                <UnderlyingSolTuple<
840                    '_,
841                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
842            }
843            #[inline]
844            fn stv_abi_packed_encoded_size(&self) -> usize {
845                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
846                    return size;
847                }
848                let tuple = <UnderlyingRustTuple<
849                    '_,
850                > as ::core::convert::From<Self>>::from(self.clone());
851                <UnderlyingSolTuple<
852                    '_,
853                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
854            }
855        }
856        #[automatically_derived]
857        impl alloy_sol_types::SolType for EdOnBN254Point {
858            type RustType = Self;
859            type Token<'a> = <UnderlyingSolTuple<
860                'a,
861            > as alloy_sol_types::SolType>::Token<'a>;
862            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
863            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
864                '_,
865            > as alloy_sol_types::SolType>::ENCODED_SIZE;
866            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
867                '_,
868            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
869            #[inline]
870            fn valid_token(token: &Self::Token<'_>) -> bool {
871                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
872            }
873            #[inline]
874            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
875                let tuple = <UnderlyingSolTuple<
876                    '_,
877                > as alloy_sol_types::SolType>::detokenize(token);
878                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
879            }
880        }
881        #[automatically_derived]
882        impl alloy_sol_types::SolStruct for EdOnBN254Point {
883            const NAME: &'static str = "EdOnBN254Point";
884            #[inline]
885            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
886                alloy_sol_types::private::Cow::Borrowed(
887                    "EdOnBN254Point(uint256 x,uint256 y)",
888                )
889            }
890            #[inline]
891            fn eip712_components() -> alloy_sol_types::private::Vec<
892                alloy_sol_types::private::Cow<'static, str>,
893            > {
894                alloy_sol_types::private::Vec::new()
895            }
896            #[inline]
897            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
898                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
899            }
900            #[inline]
901            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
902                [
903                    <alloy::sol_types::sol_data::Uint<
904                        256,
905                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
906                        .0,
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
910                        .0,
911                ]
912                    .concat()
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::EventTopic for EdOnBN254Point {
917            #[inline]
918            fn topic_preimage_length(rust: &Self::RustType) -> usize {
919                0usize
920                    + <alloy::sol_types::sol_data::Uint<
921                        256,
922                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
923                    + <alloy::sol_types::sol_data::Uint<
924                        256,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
926            }
927            #[inline]
928            fn encode_topic_preimage(
929                rust: &Self::RustType,
930                out: &mut alloy_sol_types::private::Vec<u8>,
931            ) {
932                out.reserve(
933                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
934                );
935                <alloy::sol_types::sol_data::Uint<
936                    256,
937                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
938                <alloy::sol_types::sol_data::Uint<
939                    256,
940                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
941            }
942            #[inline]
943            fn encode_topic(
944                rust: &Self::RustType,
945            ) -> alloy_sol_types::abi::token::WordToken {
946                let mut out = alloy_sol_types::private::Vec::new();
947                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
948                    rust,
949                    &mut out,
950                );
951                alloy_sol_types::abi::token::WordToken(
952                    alloy_sol_types::private::keccak256(out),
953                )
954            }
955        }
956    };
957    use alloy::contract as alloy_contract;
958    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
959
960See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
961    #[inline]
962    pub const fn new<
963        P: alloy_contract::private::Provider<N>,
964        N: alloy_contract::private::Network,
965    >(
966        address: alloy_sol_types::private::Address,
967        __provider: P,
968    ) -> EdOnBN254Instance<P, N> {
969        EdOnBN254Instance::<P, N>::new(address, __provider)
970    }
971    /**A [`EdOnBN254`](self) instance.
972
973Contains type-safe methods for interacting with an on-chain instance of the
974[`EdOnBN254`](self) contract located at a given `address`, using a given
975provider `P`.
976
977If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
978documentation on how to provide it), the `deploy` and `deploy_builder` methods can
979be used to deploy a new instance of the contract.
980
981See the [module-level documentation](self) for all the available methods.*/
982    #[derive(Clone)]
983    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
984        address: alloy_sol_types::private::Address,
985        provider: P,
986        _network: ::core::marker::PhantomData<N>,
987    }
988    #[automatically_derived]
989    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
990        #[inline]
991        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
992            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
993        }
994    }
995    /// Instantiation and getters/setters.
996    impl<
997        P: alloy_contract::private::Provider<N>,
998        N: alloy_contract::private::Network,
999    > EdOnBN254Instance<P, N> {
1000        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1001
1002See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1003        #[inline]
1004        pub const fn new(
1005            address: alloy_sol_types::private::Address,
1006            __provider: P,
1007        ) -> Self {
1008            Self {
1009                address,
1010                provider: __provider,
1011                _network: ::core::marker::PhantomData,
1012            }
1013        }
1014        /// Returns a reference to the address.
1015        #[inline]
1016        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1017            &self.address
1018        }
1019        /// Sets the address.
1020        #[inline]
1021        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1022            self.address = address;
1023        }
1024        /// Sets the address and returns `self`.
1025        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1026            self.set_address(address);
1027            self
1028        }
1029        /// Returns a reference to the provider.
1030        #[inline]
1031        pub const fn provider(&self) -> &P {
1032            &self.provider
1033        }
1034    }
1035    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1036        /// Clones the provider and returns a new instance with the cloned provider.
1037        #[inline]
1038        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1039            EdOnBN254Instance {
1040                address: self.address,
1041                provider: ::core::clone::Clone::clone(&self.provider),
1042                _network: ::core::marker::PhantomData,
1043            }
1044        }
1045    }
1046    /// Function calls.
1047    impl<
1048        P: alloy_contract::private::Provider<N>,
1049        N: alloy_contract::private::Network,
1050    > EdOnBN254Instance<P, N> {
1051        /// Creates a new call builder using this contract instance's provider and address.
1052        ///
1053        /// Note that the call can be any function call, not just those defined in this
1054        /// contract. Prefer using the other methods for building type-safe contract calls.
1055        pub fn call_builder<C: alloy_sol_types::SolCall>(
1056            &self,
1057            call: &C,
1058        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1059            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1060        }
1061    }
1062    /// Event filters.
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > EdOnBN254Instance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078/**
1079
1080Generated by the following Solidity interface...
1081```solidity
1082library BN254 {
1083    type BaseField is uint256;
1084    struct G1Point {
1085        BaseField x;
1086        BaseField y;
1087    }
1088    struct G2Point {
1089        BaseField x0;
1090        BaseField x1;
1091        BaseField y0;
1092        BaseField y1;
1093    }
1094}
1095
1096library EdOnBN254 {
1097    struct EdOnBN254Point {
1098        uint256 x;
1099        uint256 y;
1100    }
1101}
1102
1103interface StakeTable {
1104    type ValidatorStatus is uint8;
1105
1106    error AddressEmptyCode(address target);
1107    error BLSSigIsInfinity();
1108    error BLSSigVerificationFailed();
1109    error BLSVKIsInfinity();
1110    error BN254PairingProdFailed();
1111    error BlsKeyAlreadyUsed();
1112    error ERC1967InvalidImplementation(address implementation);
1113    error ERC1967NonPayable();
1114    error ExitEscrowPeriodInvalid();
1115    error FailedInnerCall();
1116    error InsufficientAllowance(uint256, uint256);
1117    error InsufficientBalance(uint256);
1118    error InvalidCommission();
1119    error InvalidG1();
1120    error InvalidInitialization();
1121    error InvalidSchnorrVK();
1122    error NotInitializing();
1123    error NothingToWithdraw();
1124    error OwnableInvalidOwner(address owner);
1125    error OwnableUnauthorizedAccount(address account);
1126    error OwnershipCannotBeRenounced();
1127    error PowPrecompileFailed();
1128    error PrematureWithdrawal();
1129    error UUPSUnauthorizedCallContext();
1130    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1131    error UndelegationAlreadyExists();
1132    error ValidatorAlreadyExited();
1133    error ValidatorAlreadyRegistered();
1134    error ValidatorInactive();
1135    error ValidatorNotExited();
1136    error ZeroAddress();
1137    error ZeroAmount();
1138
1139    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1140    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1141    event Initialized(uint64 version);
1142    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1143    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1144    event Upgraded(address indexed implementation);
1145    event ValidatorExit(address indexed validator);
1146    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1147    event Withdrawal(address indexed account, uint256 amount);
1148
1149    constructor();
1150
1151    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1152    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1153    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1154    function claimValidatorExit(address validator) external;
1155    function claimWithdrawal(address validator) external;
1156    function delegate(address validator, uint256 amount) external;
1157    function delegations(address validator, address delegator) external view returns (uint256 amount);
1158    function deregisterValidator() external;
1159    function exitEscrowPeriod() external view returns (uint256);
1160    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1161    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1162    function initializedAtBlock() external view returns (uint256);
1163    function lightClient() external view returns (address);
1164    function owner() external view returns (address);
1165    function proxiableUUID() external view returns (bytes32);
1166    function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
1167    function renounceOwnership() external;
1168    function token() external view returns (address);
1169    function transferOwnership(address newOwner) external;
1170    function undelegate(address validator, uint256 amount) external;
1171    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1172    function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
1173    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1174    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1175    function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
1176}
1177```
1178
1179...which was generated by the following JSON ABI:
1180```json
1181[
1182  {
1183    "type": "constructor",
1184    "inputs": [],
1185    "stateMutability": "nonpayable"
1186  },
1187  {
1188    "type": "function",
1189    "name": "UPGRADE_INTERFACE_VERSION",
1190    "inputs": [],
1191    "outputs": [
1192      {
1193        "name": "",
1194        "type": "string",
1195        "internalType": "string"
1196      }
1197    ],
1198    "stateMutability": "view"
1199  },
1200  {
1201    "type": "function",
1202    "name": "_hashBlsKey",
1203    "inputs": [
1204      {
1205        "name": "blsVK",
1206        "type": "tuple",
1207        "internalType": "struct BN254.G2Point",
1208        "components": [
1209          {
1210            "name": "x0",
1211            "type": "uint256",
1212            "internalType": "BN254.BaseField"
1213          },
1214          {
1215            "name": "x1",
1216            "type": "uint256",
1217            "internalType": "BN254.BaseField"
1218          },
1219          {
1220            "name": "y0",
1221            "type": "uint256",
1222            "internalType": "BN254.BaseField"
1223          },
1224          {
1225            "name": "y1",
1226            "type": "uint256",
1227            "internalType": "BN254.BaseField"
1228          }
1229        ]
1230      }
1231    ],
1232    "outputs": [
1233      {
1234        "name": "",
1235        "type": "bytes32",
1236        "internalType": "bytes32"
1237      }
1238    ],
1239    "stateMutability": "pure"
1240  },
1241  {
1242    "type": "function",
1243    "name": "blsKeys",
1244    "inputs": [
1245      {
1246        "name": "blsKeyHash",
1247        "type": "bytes32",
1248        "internalType": "bytes32"
1249      }
1250    ],
1251    "outputs": [
1252      {
1253        "name": "used",
1254        "type": "bool",
1255        "internalType": "bool"
1256      }
1257    ],
1258    "stateMutability": "view"
1259  },
1260  {
1261    "type": "function",
1262    "name": "claimValidatorExit",
1263    "inputs": [
1264      {
1265        "name": "validator",
1266        "type": "address",
1267        "internalType": "address"
1268      }
1269    ],
1270    "outputs": [],
1271    "stateMutability": "nonpayable"
1272  },
1273  {
1274    "type": "function",
1275    "name": "claimWithdrawal",
1276    "inputs": [
1277      {
1278        "name": "validator",
1279        "type": "address",
1280        "internalType": "address"
1281      }
1282    ],
1283    "outputs": [],
1284    "stateMutability": "nonpayable"
1285  },
1286  {
1287    "type": "function",
1288    "name": "delegate",
1289    "inputs": [
1290      {
1291        "name": "validator",
1292        "type": "address",
1293        "internalType": "address"
1294      },
1295      {
1296        "name": "amount",
1297        "type": "uint256",
1298        "internalType": "uint256"
1299      }
1300    ],
1301    "outputs": [],
1302    "stateMutability": "nonpayable"
1303  },
1304  {
1305    "type": "function",
1306    "name": "delegations",
1307    "inputs": [
1308      {
1309        "name": "validator",
1310        "type": "address",
1311        "internalType": "address"
1312      },
1313      {
1314        "name": "delegator",
1315        "type": "address",
1316        "internalType": "address"
1317      }
1318    ],
1319    "outputs": [
1320      {
1321        "name": "amount",
1322        "type": "uint256",
1323        "internalType": "uint256"
1324      }
1325    ],
1326    "stateMutability": "view"
1327  },
1328  {
1329    "type": "function",
1330    "name": "deregisterValidator",
1331    "inputs": [],
1332    "outputs": [],
1333    "stateMutability": "nonpayable"
1334  },
1335  {
1336    "type": "function",
1337    "name": "exitEscrowPeriod",
1338    "inputs": [],
1339    "outputs": [
1340      {
1341        "name": "",
1342        "type": "uint256",
1343        "internalType": "uint256"
1344      }
1345    ],
1346    "stateMutability": "view"
1347  },
1348  {
1349    "type": "function",
1350    "name": "getVersion",
1351    "inputs": [],
1352    "outputs": [
1353      {
1354        "name": "majorVersion",
1355        "type": "uint8",
1356        "internalType": "uint8"
1357      },
1358      {
1359        "name": "minorVersion",
1360        "type": "uint8",
1361        "internalType": "uint8"
1362      },
1363      {
1364        "name": "patchVersion",
1365        "type": "uint8",
1366        "internalType": "uint8"
1367      }
1368    ],
1369    "stateMutability": "pure"
1370  },
1371  {
1372    "type": "function",
1373    "name": "initialize",
1374    "inputs": [
1375      {
1376        "name": "_tokenAddress",
1377        "type": "address",
1378        "internalType": "address"
1379      },
1380      {
1381        "name": "_lightClientAddress",
1382        "type": "address",
1383        "internalType": "address"
1384      },
1385      {
1386        "name": "_exitEscrowPeriod",
1387        "type": "uint256",
1388        "internalType": "uint256"
1389      },
1390      {
1391        "name": "_timelock",
1392        "type": "address",
1393        "internalType": "address"
1394      }
1395    ],
1396    "outputs": [],
1397    "stateMutability": "nonpayable"
1398  },
1399  {
1400    "type": "function",
1401    "name": "initializedAtBlock",
1402    "inputs": [],
1403    "outputs": [
1404      {
1405        "name": "",
1406        "type": "uint256",
1407        "internalType": "uint256"
1408      }
1409    ],
1410    "stateMutability": "view"
1411  },
1412  {
1413    "type": "function",
1414    "name": "lightClient",
1415    "inputs": [],
1416    "outputs": [
1417      {
1418        "name": "",
1419        "type": "address",
1420        "internalType": "contract ILightClient"
1421      }
1422    ],
1423    "stateMutability": "view"
1424  },
1425  {
1426    "type": "function",
1427    "name": "owner",
1428    "inputs": [],
1429    "outputs": [
1430      {
1431        "name": "",
1432        "type": "address",
1433        "internalType": "address"
1434      }
1435    ],
1436    "stateMutability": "view"
1437  },
1438  {
1439    "type": "function",
1440    "name": "proxiableUUID",
1441    "inputs": [],
1442    "outputs": [
1443      {
1444        "name": "",
1445        "type": "bytes32",
1446        "internalType": "bytes32"
1447      }
1448    ],
1449    "stateMutability": "view"
1450  },
1451  {
1452    "type": "function",
1453    "name": "registerValidator",
1454    "inputs": [
1455      {
1456        "name": "blsVK",
1457        "type": "tuple",
1458        "internalType": "struct BN254.G2Point",
1459        "components": [
1460          {
1461            "name": "x0",
1462            "type": "uint256",
1463            "internalType": "BN254.BaseField"
1464          },
1465          {
1466            "name": "x1",
1467            "type": "uint256",
1468            "internalType": "BN254.BaseField"
1469          },
1470          {
1471            "name": "y0",
1472            "type": "uint256",
1473            "internalType": "BN254.BaseField"
1474          },
1475          {
1476            "name": "y1",
1477            "type": "uint256",
1478            "internalType": "BN254.BaseField"
1479          }
1480        ]
1481      },
1482      {
1483        "name": "schnorrVK",
1484        "type": "tuple",
1485        "internalType": "struct EdOnBN254.EdOnBN254Point",
1486        "components": [
1487          {
1488            "name": "x",
1489            "type": "uint256",
1490            "internalType": "uint256"
1491          },
1492          {
1493            "name": "y",
1494            "type": "uint256",
1495            "internalType": "uint256"
1496          }
1497        ]
1498      },
1499      {
1500        "name": "blsSig",
1501        "type": "tuple",
1502        "internalType": "struct BN254.G1Point",
1503        "components": [
1504          {
1505            "name": "x",
1506            "type": "uint256",
1507            "internalType": "BN254.BaseField"
1508          },
1509          {
1510            "name": "y",
1511            "type": "uint256",
1512            "internalType": "BN254.BaseField"
1513          }
1514        ]
1515      },
1516      {
1517        "name": "commission",
1518        "type": "uint16",
1519        "internalType": "uint16"
1520      }
1521    ],
1522    "outputs": [],
1523    "stateMutability": "nonpayable"
1524  },
1525  {
1526    "type": "function",
1527    "name": "renounceOwnership",
1528    "inputs": [],
1529    "outputs": [],
1530    "stateMutability": "nonpayable"
1531  },
1532  {
1533    "type": "function",
1534    "name": "token",
1535    "inputs": [],
1536    "outputs": [
1537      {
1538        "name": "",
1539        "type": "address",
1540        "internalType": "contract ERC20"
1541      }
1542    ],
1543    "stateMutability": "view"
1544  },
1545  {
1546    "type": "function",
1547    "name": "transferOwnership",
1548    "inputs": [
1549      {
1550        "name": "newOwner",
1551        "type": "address",
1552        "internalType": "address"
1553      }
1554    ],
1555    "outputs": [],
1556    "stateMutability": "nonpayable"
1557  },
1558  {
1559    "type": "function",
1560    "name": "undelegate",
1561    "inputs": [
1562      {
1563        "name": "validator",
1564        "type": "address",
1565        "internalType": "address"
1566      },
1567      {
1568        "name": "amount",
1569        "type": "uint256",
1570        "internalType": "uint256"
1571      }
1572    ],
1573    "outputs": [],
1574    "stateMutability": "nonpayable"
1575  },
1576  {
1577    "type": "function",
1578    "name": "undelegations",
1579    "inputs": [
1580      {
1581        "name": "validator",
1582        "type": "address",
1583        "internalType": "address"
1584      },
1585      {
1586        "name": "delegator",
1587        "type": "address",
1588        "internalType": "address"
1589      }
1590    ],
1591    "outputs": [
1592      {
1593        "name": "amount",
1594        "type": "uint256",
1595        "internalType": "uint256"
1596      },
1597      {
1598        "name": "unlocksAt",
1599        "type": "uint256",
1600        "internalType": "uint256"
1601      }
1602    ],
1603    "stateMutability": "view"
1604  },
1605  {
1606    "type": "function",
1607    "name": "updateConsensusKeys",
1608    "inputs": [
1609      {
1610        "name": "newBlsVK",
1611        "type": "tuple",
1612        "internalType": "struct BN254.G2Point",
1613        "components": [
1614          {
1615            "name": "x0",
1616            "type": "uint256",
1617            "internalType": "BN254.BaseField"
1618          },
1619          {
1620            "name": "x1",
1621            "type": "uint256",
1622            "internalType": "BN254.BaseField"
1623          },
1624          {
1625            "name": "y0",
1626            "type": "uint256",
1627            "internalType": "BN254.BaseField"
1628          },
1629          {
1630            "name": "y1",
1631            "type": "uint256",
1632            "internalType": "BN254.BaseField"
1633          }
1634        ]
1635      },
1636      {
1637        "name": "newSchnorrVK",
1638        "type": "tuple",
1639        "internalType": "struct EdOnBN254.EdOnBN254Point",
1640        "components": [
1641          {
1642            "name": "x",
1643            "type": "uint256",
1644            "internalType": "uint256"
1645          },
1646          {
1647            "name": "y",
1648            "type": "uint256",
1649            "internalType": "uint256"
1650          }
1651        ]
1652      },
1653      {
1654        "name": "newBlsSig",
1655        "type": "tuple",
1656        "internalType": "struct BN254.G1Point",
1657        "components": [
1658          {
1659            "name": "x",
1660            "type": "uint256",
1661            "internalType": "BN254.BaseField"
1662          },
1663          {
1664            "name": "y",
1665            "type": "uint256",
1666            "internalType": "BN254.BaseField"
1667          }
1668        ]
1669      }
1670    ],
1671    "outputs": [],
1672    "stateMutability": "nonpayable"
1673  },
1674  {
1675    "type": "function",
1676    "name": "upgradeToAndCall",
1677    "inputs": [
1678      {
1679        "name": "newImplementation",
1680        "type": "address",
1681        "internalType": "address"
1682      },
1683      {
1684        "name": "data",
1685        "type": "bytes",
1686        "internalType": "bytes"
1687      }
1688    ],
1689    "outputs": [],
1690    "stateMutability": "payable"
1691  },
1692  {
1693    "type": "function",
1694    "name": "validatorExits",
1695    "inputs": [
1696      {
1697        "name": "validator",
1698        "type": "address",
1699        "internalType": "address"
1700      }
1701    ],
1702    "outputs": [
1703      {
1704        "name": "unlocksAt",
1705        "type": "uint256",
1706        "internalType": "uint256"
1707      }
1708    ],
1709    "stateMutability": "view"
1710  },
1711  {
1712    "type": "function",
1713    "name": "validators",
1714    "inputs": [
1715      {
1716        "name": "account",
1717        "type": "address",
1718        "internalType": "address"
1719      }
1720    ],
1721    "outputs": [
1722      {
1723        "name": "delegatedAmount",
1724        "type": "uint256",
1725        "internalType": "uint256"
1726      },
1727      {
1728        "name": "status",
1729        "type": "uint8",
1730        "internalType": "enum StakeTable.ValidatorStatus"
1731      }
1732    ],
1733    "stateMutability": "view"
1734  },
1735  {
1736    "type": "event",
1737    "name": "ConsensusKeysUpdated",
1738    "inputs": [
1739      {
1740        "name": "account",
1741        "type": "address",
1742        "indexed": true,
1743        "internalType": "address"
1744      },
1745      {
1746        "name": "blsVK",
1747        "type": "tuple",
1748        "indexed": false,
1749        "internalType": "struct BN254.G2Point",
1750        "components": [
1751          {
1752            "name": "x0",
1753            "type": "uint256",
1754            "internalType": "BN254.BaseField"
1755          },
1756          {
1757            "name": "x1",
1758            "type": "uint256",
1759            "internalType": "BN254.BaseField"
1760          },
1761          {
1762            "name": "y0",
1763            "type": "uint256",
1764            "internalType": "BN254.BaseField"
1765          },
1766          {
1767            "name": "y1",
1768            "type": "uint256",
1769            "internalType": "BN254.BaseField"
1770          }
1771        ]
1772      },
1773      {
1774        "name": "schnorrVK",
1775        "type": "tuple",
1776        "indexed": false,
1777        "internalType": "struct EdOnBN254.EdOnBN254Point",
1778        "components": [
1779          {
1780            "name": "x",
1781            "type": "uint256",
1782            "internalType": "uint256"
1783          },
1784          {
1785            "name": "y",
1786            "type": "uint256",
1787            "internalType": "uint256"
1788          }
1789        ]
1790      }
1791    ],
1792    "anonymous": false
1793  },
1794  {
1795    "type": "event",
1796    "name": "Delegated",
1797    "inputs": [
1798      {
1799        "name": "delegator",
1800        "type": "address",
1801        "indexed": true,
1802        "internalType": "address"
1803      },
1804      {
1805        "name": "validator",
1806        "type": "address",
1807        "indexed": true,
1808        "internalType": "address"
1809      },
1810      {
1811        "name": "amount",
1812        "type": "uint256",
1813        "indexed": false,
1814        "internalType": "uint256"
1815      }
1816    ],
1817    "anonymous": false
1818  },
1819  {
1820    "type": "event",
1821    "name": "Initialized",
1822    "inputs": [
1823      {
1824        "name": "version",
1825        "type": "uint64",
1826        "indexed": false,
1827        "internalType": "uint64"
1828      }
1829    ],
1830    "anonymous": false
1831  },
1832  {
1833    "type": "event",
1834    "name": "OwnershipTransferred",
1835    "inputs": [
1836      {
1837        "name": "previousOwner",
1838        "type": "address",
1839        "indexed": true,
1840        "internalType": "address"
1841      },
1842      {
1843        "name": "newOwner",
1844        "type": "address",
1845        "indexed": true,
1846        "internalType": "address"
1847      }
1848    ],
1849    "anonymous": false
1850  },
1851  {
1852    "type": "event",
1853    "name": "Undelegated",
1854    "inputs": [
1855      {
1856        "name": "delegator",
1857        "type": "address",
1858        "indexed": true,
1859        "internalType": "address"
1860      },
1861      {
1862        "name": "validator",
1863        "type": "address",
1864        "indexed": true,
1865        "internalType": "address"
1866      },
1867      {
1868        "name": "amount",
1869        "type": "uint256",
1870        "indexed": false,
1871        "internalType": "uint256"
1872      }
1873    ],
1874    "anonymous": false
1875  },
1876  {
1877    "type": "event",
1878    "name": "Upgraded",
1879    "inputs": [
1880      {
1881        "name": "implementation",
1882        "type": "address",
1883        "indexed": true,
1884        "internalType": "address"
1885      }
1886    ],
1887    "anonymous": false
1888  },
1889  {
1890    "type": "event",
1891    "name": "ValidatorExit",
1892    "inputs": [
1893      {
1894        "name": "validator",
1895        "type": "address",
1896        "indexed": true,
1897        "internalType": "address"
1898      }
1899    ],
1900    "anonymous": false
1901  },
1902  {
1903    "type": "event",
1904    "name": "ValidatorRegistered",
1905    "inputs": [
1906      {
1907        "name": "account",
1908        "type": "address",
1909        "indexed": true,
1910        "internalType": "address"
1911      },
1912      {
1913        "name": "blsVk",
1914        "type": "tuple",
1915        "indexed": false,
1916        "internalType": "struct BN254.G2Point",
1917        "components": [
1918          {
1919            "name": "x0",
1920            "type": "uint256",
1921            "internalType": "BN254.BaseField"
1922          },
1923          {
1924            "name": "x1",
1925            "type": "uint256",
1926            "internalType": "BN254.BaseField"
1927          },
1928          {
1929            "name": "y0",
1930            "type": "uint256",
1931            "internalType": "BN254.BaseField"
1932          },
1933          {
1934            "name": "y1",
1935            "type": "uint256",
1936            "internalType": "BN254.BaseField"
1937          }
1938        ]
1939      },
1940      {
1941        "name": "schnorrVk",
1942        "type": "tuple",
1943        "indexed": false,
1944        "internalType": "struct EdOnBN254.EdOnBN254Point",
1945        "components": [
1946          {
1947            "name": "x",
1948            "type": "uint256",
1949            "internalType": "uint256"
1950          },
1951          {
1952            "name": "y",
1953            "type": "uint256",
1954            "internalType": "uint256"
1955          }
1956        ]
1957      },
1958      {
1959        "name": "commission",
1960        "type": "uint16",
1961        "indexed": false,
1962        "internalType": "uint16"
1963      }
1964    ],
1965    "anonymous": false
1966  },
1967  {
1968    "type": "event",
1969    "name": "Withdrawal",
1970    "inputs": [
1971      {
1972        "name": "account",
1973        "type": "address",
1974        "indexed": true,
1975        "internalType": "address"
1976      },
1977      {
1978        "name": "amount",
1979        "type": "uint256",
1980        "indexed": false,
1981        "internalType": "uint256"
1982      }
1983    ],
1984    "anonymous": false
1985  },
1986  {
1987    "type": "error",
1988    "name": "AddressEmptyCode",
1989    "inputs": [
1990      {
1991        "name": "target",
1992        "type": "address",
1993        "internalType": "address"
1994      }
1995    ]
1996  },
1997  {
1998    "type": "error",
1999    "name": "BLSSigIsInfinity",
2000    "inputs": []
2001  },
2002  {
2003    "type": "error",
2004    "name": "BLSSigVerificationFailed",
2005    "inputs": []
2006  },
2007  {
2008    "type": "error",
2009    "name": "BLSVKIsInfinity",
2010    "inputs": []
2011  },
2012  {
2013    "type": "error",
2014    "name": "BN254PairingProdFailed",
2015    "inputs": []
2016  },
2017  {
2018    "type": "error",
2019    "name": "BlsKeyAlreadyUsed",
2020    "inputs": []
2021  },
2022  {
2023    "type": "error",
2024    "name": "ERC1967InvalidImplementation",
2025    "inputs": [
2026      {
2027        "name": "implementation",
2028        "type": "address",
2029        "internalType": "address"
2030      }
2031    ]
2032  },
2033  {
2034    "type": "error",
2035    "name": "ERC1967NonPayable",
2036    "inputs": []
2037  },
2038  {
2039    "type": "error",
2040    "name": "ExitEscrowPeriodInvalid",
2041    "inputs": []
2042  },
2043  {
2044    "type": "error",
2045    "name": "FailedInnerCall",
2046    "inputs": []
2047  },
2048  {
2049    "type": "error",
2050    "name": "InsufficientAllowance",
2051    "inputs": [
2052      {
2053        "name": "",
2054        "type": "uint256",
2055        "internalType": "uint256"
2056      },
2057      {
2058        "name": "",
2059        "type": "uint256",
2060        "internalType": "uint256"
2061      }
2062    ]
2063  },
2064  {
2065    "type": "error",
2066    "name": "InsufficientBalance",
2067    "inputs": [
2068      {
2069        "name": "",
2070        "type": "uint256",
2071        "internalType": "uint256"
2072      }
2073    ]
2074  },
2075  {
2076    "type": "error",
2077    "name": "InvalidCommission",
2078    "inputs": []
2079  },
2080  {
2081    "type": "error",
2082    "name": "InvalidG1",
2083    "inputs": []
2084  },
2085  {
2086    "type": "error",
2087    "name": "InvalidInitialization",
2088    "inputs": []
2089  },
2090  {
2091    "type": "error",
2092    "name": "InvalidSchnorrVK",
2093    "inputs": []
2094  },
2095  {
2096    "type": "error",
2097    "name": "NotInitializing",
2098    "inputs": []
2099  },
2100  {
2101    "type": "error",
2102    "name": "NothingToWithdraw",
2103    "inputs": []
2104  },
2105  {
2106    "type": "error",
2107    "name": "OwnableInvalidOwner",
2108    "inputs": [
2109      {
2110        "name": "owner",
2111        "type": "address",
2112        "internalType": "address"
2113      }
2114    ]
2115  },
2116  {
2117    "type": "error",
2118    "name": "OwnableUnauthorizedAccount",
2119    "inputs": [
2120      {
2121        "name": "account",
2122        "type": "address",
2123        "internalType": "address"
2124      }
2125    ]
2126  },
2127  {
2128    "type": "error",
2129    "name": "OwnershipCannotBeRenounced",
2130    "inputs": []
2131  },
2132  {
2133    "type": "error",
2134    "name": "PowPrecompileFailed",
2135    "inputs": []
2136  },
2137  {
2138    "type": "error",
2139    "name": "PrematureWithdrawal",
2140    "inputs": []
2141  },
2142  {
2143    "type": "error",
2144    "name": "UUPSUnauthorizedCallContext",
2145    "inputs": []
2146  },
2147  {
2148    "type": "error",
2149    "name": "UUPSUnsupportedProxiableUUID",
2150    "inputs": [
2151      {
2152        "name": "slot",
2153        "type": "bytes32",
2154        "internalType": "bytes32"
2155      }
2156    ]
2157  },
2158  {
2159    "type": "error",
2160    "name": "UndelegationAlreadyExists",
2161    "inputs": []
2162  },
2163  {
2164    "type": "error",
2165    "name": "ValidatorAlreadyExited",
2166    "inputs": []
2167  },
2168  {
2169    "type": "error",
2170    "name": "ValidatorAlreadyRegistered",
2171    "inputs": []
2172  },
2173  {
2174    "type": "error",
2175    "name": "ValidatorInactive",
2176    "inputs": []
2177  },
2178  {
2179    "type": "error",
2180    "name": "ValidatorNotExited",
2181    "inputs": []
2182  },
2183  {
2184    "type": "error",
2185    "name": "ZeroAddress",
2186    "inputs": []
2187  },
2188  {
2189    "type": "error",
2190    "name": "ZeroAmount",
2191    "inputs": []
2192  }
2193]
2194```*/
2195#[allow(
2196    non_camel_case_types,
2197    non_snake_case,
2198    clippy::pub_underscore_fields,
2199    clippy::style,
2200    clippy::empty_structs_with_brackets
2201)]
2202pub mod StakeTable {
2203    use super::*;
2204    use alloy::sol_types as alloy_sol_types;
2205    /// The creation / init bytecode of the contract.
2206    ///
2207    /// ```text
2208    ///0x60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612af36101015f395f81816113a5015281816113ce01526115140152612af35ff3fe608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f3660046123f1565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d0366004612517565b6106d6565b3480156101e0575f5ffd5b506101846101ef366004612575565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b506101846102303660046123f1565b61098a565b61018461024336600461258e565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612633565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d366004612677565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b50610364610341366004612691565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b50610184610393366004612575565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad91906126c2565b3480156103e0575f5ffd5b506104036103ef3660046126f7565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c366004612575565b60056020525f908152604090205481565b348015610468575f5ffd5b5061018461047736600461270e565b610e58565b348015610487575f5ffd5b50610208610496366004612691565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc366004612575565b610f84565b3480156104dc575f5ffd5b506105066104eb366004612575565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad92919061276c565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d0919061279c565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f90815260036020526040812080548592906106419084906127c7565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c9084906127c7565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f2856111c6565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610724818588611202565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a0612758565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e6612758565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361130b565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a779084906127da565b92505081905550604051806040016040528084815260200160085442610a9d91906127c7565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af09084906127da565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b4461139a565b610b4d82611440565b610b578282611448565b5050565b5f610b64611509565b505f516020612ac75f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b92846111c6565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc4818487611202565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c309291906127ed565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b90426127c7565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611552565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361130b565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866115ad565b610f206115be565b610f286115c6565b610f338989896116cc565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611552565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe81611777565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff2612758565b036110105760405163508a793f60e01b815260040160405180910390fd5b600281600281111561102457611024612758565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561111557611115612758565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000111158061118757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156111a5576040516306cf438f60e01b815260040160405180910390fd5b80515f03610fbe576040516306cf438f60e01b815260040160405180910390fd5b60045f6111d283610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b81516020830151159015161561122b57604051633a13919960e11b815260040160405180910390fd5b805115801561123c57506020810151155b801561124a57506040810151155b801561125857506060810151155b1561127657604051635e4362cd60e11b815260040160405180910390fd5b61127f826117e7565b5f604051806060016040528060248152602001612a836024913990505f84826040516020016112af92919061283e565b60405160208183030381529060405290505f6112ca8261184e565b90506112e781856112da8861193b565b6112e26119b2565b611a7f565b6113035760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156113555750823b153d17155b806113945760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061142057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114145f516020612ac75f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561143e5760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611552565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114a2575060408051601f3d908101601f1916820190925261149f9181019061279c565b60015b6114ca57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612ac75f395f51905f5281146114fa57604051632a87526960e21b8152600481018290526024016105f9565b6115048383611b2e565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143e5760405163703e46dd60e11b815260040160405180910390fd5b336115847f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461143e5760405163118cdaa760e01b81523360048201526024016105f9565b6115b5611b83565b610fbe81611bcc565b61143e611b83565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561160b5750825b90505f8267ffffffffffffffff1660011480156116275750303b155b905081158015611635575080155b156116535760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561167d57845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116f35760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661171a5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a3008082101561176f5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805160208201515f915f516020612aa75f395f51905f5291159015161561180d57505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115045760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61186b83611bd4565b90505f516020612aa75f395f51905f5260035f82848509905082806118925761189261285a565b848209905082806118a5576118a561285a565b82820890505f5f6118b583611ddd565b925090505b8061191e5784806118cd576118cd61285a565b60018708955084806118e1576118e161285a565b868709925084806118f4576118f461285a565b868409925084806119075761190761285a565b848408925061191583611ddd565b925090506118ba565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615611962575090565b6040518060400160405280835f015181526020015f516020612aa75f395f51905f528460200151611993919061286e565b6119aa905f516020612aa75f395f51905f526127da565b905292915050565b6119d960405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611b225760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611b3782611ea5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b7b576115048282611f08565b610b57611f7c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661143e57604051631afcd79f60e31b815260040160405180910390fd5b610f8c611b83565b5f5f611bdf83611f9b565b805190915060308114611bf457611bf461288d565b5f8167ffffffffffffffff811115611c0e57611c0e612419565b6040519080825280601f01601f191660200182016040528015611c38576020820181803683370190505b5090505f5b82811015611ca757836001611c5283866127da565b611c5c91906127da565b81518110611c6c57611c6c6128a1565b602001015160f81c60f81b828281518110611c8957611c896128a1565b60200101906001600160f81b03191690815f1a905350600101611c3d565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611d37578381611ce385886127da565b611ced91906127c7565b81518110611cfd57611cfd6128a1565b602001015160f81c60f81b60f81c828281518110611d1d57611d1d6128a1565b60ff90921660209283029190910190910152600101611ccf565b505f611d42826122e7565b90506101005f516020612aa75f395f51905f525f611d6086896127da565b90505f5b81811015611dcd575f886001611d7a84866127da565b611d8491906127da565b81518110611d9457611d946128a1565b016020015160f81c90508380611dac57611dac61285a565b85870995508380611dbf57611dbf61285a565b818708955050600101611d64565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020612aa75f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611e6b57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611e8457611e8183826127da565b92505b8080611e9257611e9261285a565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611eda57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612ac75f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611f2491906128b5565b5f60405180830381855af49150503d805f8114611f5c576040519150601f19603f3d011682016040523d82523d5f602084013e611f61565b606091505b5091509150611f7185838361234e565b925050505b92915050565b341561143e5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611fdb92919061283e565b6040516020818303038152906040529050808460f81b6040516020016120029291906128c0565b60405160208183030381529060405290508060405160200161202491906128ea565b60408051601f1981840301815290829052915061010160f01b9061204e9083908390602001612902565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120be576120be612419565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090505f826040516020016120ff91815260200190565b60408051601f1981840301815291905290505f5b81518110156121695781818151811061212e5761212e6128a1565b602001015160f81c60f81b83828151811061214b5761214b6128a1565b60200101906001600160f81b03191690815f1a905350600101612113565b505f8460405160200161217e91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612210575f8382815181106121b7576121b76128a1565b602001015160f81c60f81b8383815181106121d4576121d46128a1565b602001015160f81c60f81b18905088816040516020016121f5929190612926565b60408051601f1981840301815291905298505060010161219c565b508688876040516020016122269392919061294a565b6040516020818303038152906040529650868051906020012093508360405160200161225491815260200190565b60408051601f1981840301815291905291505f5b6122758a60ff8d166127da565b8110156122d65782818151811061228e5761228e6128a1565b01602001516001600160f81b031916846122a8838d6127c7565b815181106122b8576122b86128a1565b60200101906001600160f81b03191690815f1a905350600101612268565b50919b9a5050505050505050505050565b5f80805b835181101561234757838181518110612306576123066128a1565b602002602001015160ff1681600861231e919061297d565b612329906002612a77565b612333919061297d565b61233d90836127c7565b91506001016122eb565b5092915050565b6060826123635761235e826123ad565b6123a6565b815115801561237a57506001600160a01b0384163b155b156123a357604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123bd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146123ec575f5ffd5b919050565b5f5f60408385031215612402575f5ffd5b61240b836123d6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561245057612450612419565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561247f5761247f612419565b604052919050565b5f60808284031215612497575f5ffd5b6040516080810167ffffffffffffffff811182821017156124ba576124ba612419565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156124f8575f5ffd5b61250061242d565b823581526020928301359281019290925250919050565b5f5f5f5f610120858703121561252b575f5ffd5b6125358686612487565b935061254486608087016124e8565b92506125538660c087016124e8565b915061010085013561ffff8116811461256a575f5ffd5b939692955090935050565b5f60208284031215612585575f5ffd5b6123a6826123d6565b5f5f6040838503121561259f575f5ffd5b6125a8836123d6565b9150602083013567ffffffffffffffff8111156125c3575f5ffd5b8301601f810185136125d3575f5ffd5b803567ffffffffffffffff8111156125ed576125ed612419565b612600601f8201601f1916602001612456565b818152866020838501011115612614575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612646575f5ffd5b6126508585612487565b925061265f85608086016124e8565b915061266e8560c086016124e8565b90509250925092565b5f60808284031215612687575f5ffd5b6123a68383612487565b5f5f604083850312156126a2575f5ffd5b6126ab836123d6565b91506126b9602084016123d6565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215612707575f5ffd5b5035919050565b5f5f5f5f60808587031215612721575f5ffd5b61272a856123d6565b9350612738602086016123d6565b92506040850135915061274d606086016123d6565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061278f57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156127ac575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611f7657611f766127b3565b81810381811115611f7657611f766127b3565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016123a6565b5f81518060208401855e5f93019283525090919050565b5f61285261284c8386612827565b84612827565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261288857634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6123a68284612827565b5f6128cb8285612827565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6128f58284612827565b5f81526001019392505050565b5f61290d8285612827565b6001600160f01b03199390931683525050600201919050565b5f6129318285612827565b6001600160f81b03199390931683525050600101919050565b5f6129558286612827565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417611f7657611f766127b3565b6001815b60018411156129cf578085048111156129b3576129b36127b3565b60018416156129c157908102905b60019390931c928002612998565b935093915050565b5f826129e557506001611f76565b816129f157505f611f76565b8160018114612a075760028114612a1157612a2d565b6001915050611f76565b60ff841115612a2257612a226127b3565b50506001821b611f76565b5060208310610133831016604e8410600b8410161715612a50575081810a611f76565b612a5c5f198484612994565b805f1904821115612a6f57612a6f6127b3565b029392505050565b5f6123a683836129d756fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
2209    /// ```
2210    #[rustfmt::skip]
2211    #[allow(clippy::all)]
2212    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2213        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*\xF3a\x01\x01_9_\x81\x81a\x13\xA5\x01R\x81\x81a\x13\xCE\x01Ra\x15\x14\x01Ra*\xF3_\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#\xF1V[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%\x17V[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a%uV[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#\xF1V[a\t\x8AV[a\x01\x84a\x02C6`\x04a%\x8EV[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a&3V[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&wV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a&\x91V[`\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%uV[a\rHV[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&\xC2V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&\xF7V[`\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%uV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a'\x0EV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a&\x91V[`\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%uV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a%uV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a'lV[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[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'\x9CV[\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\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\xC7V[\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'\xC7V[\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\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11\xC6V[`@\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\x12\x02V[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\xEEV[\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'XV[\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'XV[\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\x13\x0BV[\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\xC1V[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'\xDAV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\xC7V[\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'\xDAV[\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\x13\x9AV[a\x0BM\x82a\x14@V[a\x0BW\x82\x82a\x14HV[PPV[_a\x0Bda\x15\tV[P_Q` a*\xC7_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11\xC6V[`@\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\x12\x02V[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\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'\xEDV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\xC7V[`\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\x15RV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\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\x8DW`@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\xD5W`@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\x10\x91\x16\x83\x83a\x13\x0BV[\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\x0EK\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\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@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\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x15\xADV[a\x0F a\x15\xBEV[a\x0F(a\x15\xC6V[a\x0F3\x89\x89\x89a\x16\xCCV[\x83\x15a\x0FyW\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\x8Ca\x15RV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x17wV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a'XV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a'XV[\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\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@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\x15Wa\x11\x15a'XV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\x11\x87WP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\x11\xA5W`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x0F\xBEW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11\xD2\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12+W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a\x12<WP` \x81\x01Q\x15[\x80\x15a\x12JWP`@\x81\x01Q\x15[\x80\x15a\x12XWP``\x81\x01Q\x15[\x15a\x12vW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\x7F\x82a\x17\xE7V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a*\x83`$\x919\x90P_\x84\x82`@Q` \x01a\x12\xAF\x92\x91\x90a(>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x12\xCA\x82a\x18NV[\x90Pa\x12\xE7\x81\x85a\x12\xDA\x88a\x19;V[a\x12\xE2a\x19\xB2V[a\x1A\x7FV[a\x13\x03W`@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\x13UWP\x82;\x15=\x17\x15[\x80a\x13\x94W`@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\x14 WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x14\x14_Q` a*\xC7_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x14>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x15RV[\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\xA2WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x14\x9F\x91\x81\x01\x90a'\x9CV[`\x01[a\x14\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\xC7_9_Q\x90_R\x81\x14a\x14\xFAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x15\x04\x83\x83a\x1B.V[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\x14>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x15\x84\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\x14>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x15\xB5a\x1B\x83V[a\x0F\xBE\x81a\x1B\xCCV[a\x14>a\x1B\x83V[\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\x16\x0BWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x16'WP0;\x15[\x90P\x81\x15\x80\x15a\x165WP\x80\x15[\x15a\x16SW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x16}W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\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\xF3W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\x1AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x17oW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\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[\x80Q` \x82\x01Q_\x91_Q` a*\xA7_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x18\rWPPPV[\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\x15\x04W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x18k\x83a\x1B\xD4V[\x90P_Q` a*\xA7_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x18\x92Wa\x18\x92a(ZV[\x84\x82\t\x90P\x82\x80a\x18\xA5Wa\x18\xA5a(ZV[\x82\x82\x08\x90P__a\x18\xB5\x83a\x1D\xDDV[\x92P\x90P[\x80a\x19\x1EW\x84\x80a\x18\xCDWa\x18\xCDa(ZV[`\x01\x87\x08\x95P\x84\x80a\x18\xE1Wa\x18\xE1a(ZV[\x86\x87\t\x92P\x84\x80a\x18\xF4Wa\x18\xF4a(ZV[\x86\x84\t\x92P\x84\x80a\x19\x07Wa\x19\x07a(ZV[\x84\x84\x08\x92Pa\x19\x15\x83a\x1D\xDDV[\x92P\x90Pa\x18\xBAV[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\x19bWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a*\xA7_9_Q\x90_R\x84` \x01Qa\x19\x93\x91\x90a(nV[a\x19\xAA\x90_Q` a*\xA7_9_Q\x90_Ra'\xDAV[\x90R\x92\x91PPV[a\x19\xD9`@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\x1B\"W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1B7\x82a\x1E\xA5V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1B{Wa\x15\x04\x82\x82a\x1F\x08V[a\x0BWa\x1F|V[\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\x14>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1B\x83V[__a\x1B\xDF\x83a\x1F\x9BV[\x80Q\x90\x91P`0\x81\x14a\x1B\xF4Wa\x1B\xF4a(\x8DV[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1C\x0EWa\x1C\x0Ea$\x19V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1C8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1C\xA7W\x83`\x01a\x1CR\x83\x86a'\xDAV[a\x1C\\\x91\x90a'\xDAV[\x81Q\x81\x10a\x1ClWa\x1Cla(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1C\x89Wa\x1C\x89a(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1C=V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a\x1D7W\x83\x81a\x1C\xE3\x85\x88a'\xDAV[a\x1C\xED\x91\x90a'\xC7V[\x81Q\x81\x10a\x1C\xFDWa\x1C\xFDa(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1D\x1DWa\x1D\x1Da(\xA1V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\xCFV[P_a\x1DB\x82a\"\xE7V[\x90Pa\x01\0_Q` a*\xA7_9_Q\x90_R_a\x1D`\x86\x89a'\xDAV[\x90P_[\x81\x81\x10\x15a\x1D\xCDW_\x88`\x01a\x1Dz\x84\x86a'\xDAV[a\x1D\x84\x91\x90a'\xDAV[\x81Q\x81\x10a\x1D\x94Wa\x1D\x94a(\xA1V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\xACWa\x1D\xACa(ZV[\x85\x87\t\x95P\x83\x80a\x1D\xBFWa\x1D\xBFa(ZV[\x81\x87\x08\x95PP`\x01\x01a\x1DdV[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*\xA7_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\x1EkW`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1E\x84Wa\x1E\x81\x83\x82a'\xDAV[\x92P[\x80\x80a\x1E\x92Wa\x1E\x92a(ZV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\xDAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\xC7_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$\x91\x90a(\xB5V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1F\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FaV[``\x91P[P\x91P\x91Pa\x1Fq\x85\x83\x83a#NV[\x92PPP[\x92\x91PPV[4\x15a\x14>W`@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\xDB\x92\x91\x90a(>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a \x02\x92\x91\x90a(\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a $\x91\x90a(\xEAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a N\x90\x83\x90\x83\x90` \x01a)\x02V[`@\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 \xBEWa \xBEa$\x19V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \xE8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a \xFF\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a!iW\x81\x81\x81Q\x81\x10a!.Wa!.a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a!KWa!Ka(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\x13V[P_\x84`@Q` \x01a!~\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\"\x10W_\x83\x82\x81Q\x81\x10a!\xB7Wa!\xB7a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\xD4Wa!\xD4a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!\xF5\x92\x91\x90a)&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a!\x9CV[P\x86\x88\x87`@Q` \x01a\"&\x93\x92\x91\x90a)JV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a\"T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a\"u\x8A`\xFF\x8D\x16a'\xDAV[\x81\x10\x15a\"\xD6W\x82\x81\x81Q\x81\x10a\"\x8EWa\"\x8Ea(\xA1V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a\"\xA8\x83\x8Da'\xC7V[\x81Q\x81\x10a\"\xB8Wa\"\xB8a(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\"hV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a#GW\x83\x81\x81Q\x81\x10a#\x06Wa#\x06a(\xA1V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a#\x1E\x91\x90a)}V[a#)\x90`\x02a*wV[a#3\x91\x90a)}V[a#=\x90\x83a'\xC7V[\x91P`\x01\x01a\"\xEBV[P\x92\x91PPV[``\x82a#cWa#^\x82a#\xADV[a#\xA6V[\x81Q\x15\x80\x15a#zWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a#\xA3W`@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#\xBDW\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#\xECW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a$\x02W__\xFD[a$\x0B\x83a#\xD6V[\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$PWa$Pa$\x19V[`@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$\x7FWa$\x7Fa$\x19V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a$\x97W__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\xBAWa$\xBAa$\x19V[`@\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$\xF8W__\xFD[a%\0a$-V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a%+W__\xFD[a%5\x86\x86a$\x87V[\x93Pa%D\x86`\x80\x87\x01a$\xE8V[\x92Pa%S\x86`\xC0\x87\x01a$\xE8V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a%jW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a%\x85W__\xFD[a#\xA6\x82a#\xD6V[__`@\x83\x85\x03\x12\x15a%\x9FW__\xFD[a%\xA8\x83a#\xD6V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xC3W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\xD3W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xEDWa%\xEDa$\x19V[a&\0`\x1F\x82\x01`\x1F\x19\x16` \x01a$VV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a&\x14W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a&FW__\xFD[a&P\x85\x85a$\x87V[\x92Pa&_\x85`\x80\x86\x01a$\xE8V[\x91Pa&n\x85`\xC0\x86\x01a$\xE8V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a&\x87W__\xFD[a#\xA6\x83\x83a$\x87V[__`@\x83\x85\x03\x12\x15a&\xA2W__\xFD[a&\xAB\x83a#\xD6V[\x91Pa&\xB9` \x84\x01a#\xD6V[\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'\x07W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a'!W__\xFD[a'*\x85a#\xD6V[\x93Pa'8` \x86\x01a#\xD6V[\x92P`@\x85\x015\x91Pa'M``\x86\x01a#\xD6V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a'\x8FWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\xACW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1FvWa\x1Fva'\xB3V[\x81\x81\x03\x81\x81\x11\x15a\x1FvWa\x1Fva'\xB3V[\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#\xA6V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a(Ra(L\x83\x86a('V[\x84a('V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a(\x88WcNH{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#\xA6\x82\x84a('V[_a(\xCB\x82\x85a('V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(\xF5\x82\x84a('V[_\x81R`\x01\x01\x93\x92PPPV[_a)\r\x82\x85a('V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a)1\x82\x85a('V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a)U\x82\x86a('V[`\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\x1FvWa\x1Fva'\xB3V[`\x01\x81[`\x01\x84\x11\x15a)\xCFW\x80\x85\x04\x81\x11\x15a)\xB3Wa)\xB3a'\xB3V[`\x01\x84\x16\x15a)\xC1W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a)\x98V[\x93P\x93\x91PPV[_\x82a)\xE5WP`\x01a\x1FvV[\x81a)\xF1WP_a\x1FvV[\x81`\x01\x81\x14a*\x07W`\x02\x81\x14a*\x11Wa*-V[`\x01\x91PPa\x1FvV[`\xFF\x84\x11\x15a*\"Wa*\"a'\xB3V[PP`\x01\x82\x1Ba\x1FvV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a*PWP\x81\x81\na\x1FvV[a*\\_\x19\x84\x84a)\x94V[\x80_\x19\x04\x82\x11\x15a*oWa*oa'\xB3V[\x02\x93\x92PPPV[_a#\xA6\x83\x83a)\xD7V\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#\0\n",
2214    );
2215    /// The runtime bytecode of the contract, as deployed on the network.
2216    ///
2217    /// ```text
2218    ///0x608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f3660046123f1565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d0366004612517565b6106d6565b3480156101e0575f5ffd5b506101846101ef366004612575565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b506101846102303660046123f1565b61098a565b61018461024336600461258e565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612633565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d366004612677565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b50610364610341366004612691565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b50610184610393366004612575565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad91906126c2565b3480156103e0575f5ffd5b506104036103ef3660046126f7565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c366004612575565b60056020525f908152604090205481565b348015610468575f5ffd5b5061018461047736600461270e565b610e58565b348015610487575f5ffd5b50610208610496366004612691565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc366004612575565b610f84565b3480156104dc575f5ffd5b506105066104eb366004612575565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad92919061276c565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d0919061279c565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f90815260036020526040812080548592906106419084906127c7565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c9084906127c7565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f2856111c6565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610724818588611202565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a0612758565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e6612758565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361130b565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a779084906127da565b92505081905550604051806040016040528084815260200160085442610a9d91906127c7565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af09084906127da565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b4461139a565b610b4d82611440565b610b578282611448565b5050565b5f610b64611509565b505f516020612ac75f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b92846111c6565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc4818487611202565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c309291906127ed565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b90426127c7565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611552565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361130b565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866115ad565b610f206115be565b610f286115c6565b610f338989896116cc565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611552565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe81611777565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff2612758565b036110105760405163508a793f60e01b815260040160405180910390fd5b600281600281111561102457611024612758565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561111557611115612758565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000111158061118757507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156111a5576040516306cf438f60e01b815260040160405180910390fd5b80515f03610fbe576040516306cf438f60e01b815260040160405180910390fd5b60045f6111d283610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b81516020830151159015161561122b57604051633a13919960e11b815260040160405180910390fd5b805115801561123c57506020810151155b801561124a57506040810151155b801561125857506060810151155b1561127657604051635e4362cd60e11b815260040160405180910390fd5b61127f826117e7565b5f604051806060016040528060248152602001612a836024913990505f84826040516020016112af92919061283e565b60405160208183030381529060405290505f6112ca8261184e565b90506112e781856112da8861193b565b6112e26119b2565b611a7f565b6113035760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156113555750823b153d17155b806113945760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061142057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114145f516020612ac75f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561143e5760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611552565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114a2575060408051601f3d908101601f1916820190925261149f9181019061279c565b60015b6114ca57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612ac75f395f51905f5281146114fa57604051632a87526960e21b8152600481018290526024016105f9565b6115048383611b2e565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143e5760405163703e46dd60e11b815260040160405180910390fd5b336115847f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461143e5760405163118cdaa760e01b81523360048201526024016105f9565b6115b5611b83565b610fbe81611bcc565b61143e611b83565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561160b5750825b90505f8267ffffffffffffffff1660011480156116275750303b155b905081158015611635575080155b156116535760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561167d57845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116f35760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661171a5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a3008082101561176f5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805160208201515f915f516020612aa75f395f51905f5291159015161561180d57505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115045760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f61186b83611bd4565b90505f516020612aa75f395f51905f5260035f82848509905082806118925761189261285a565b848209905082806118a5576118a561285a565b82820890505f5f6118b583611ddd565b925090505b8061191e5784806118cd576118cd61285a565b60018708955084806118e1576118e161285a565b868709925084806118f4576118f461285a565b868409925084806119075761190761285a565b848408925061191583611ddd565b925090506118ba565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615611962575090565b6040518060400160405280835f015181526020015f516020612aa75f395f51905f528460200151611993919061286e565b6119aa905f516020612aa75f395f51905f526127da565b905292915050565b6119d960405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611b225760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611b3782611ea5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b7b576115048282611f08565b610b57611f7c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661143e57604051631afcd79f60e31b815260040160405180910390fd5b610f8c611b83565b5f5f611bdf83611f9b565b805190915060308114611bf457611bf461288d565b5f8167ffffffffffffffff811115611c0e57611c0e612419565b6040519080825280601f01601f191660200182016040528015611c38576020820181803683370190505b5090505f5b82811015611ca757836001611c5283866127da565b611c5c91906127da565b81518110611c6c57611c6c6128a1565b602001015160f81c60f81b828281518110611c8957611c896128a1565b60200101906001600160f81b03191690815f1a905350600101611c3d565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611d37578381611ce385886127da565b611ced91906127c7565b81518110611cfd57611cfd6128a1565b602001015160f81c60f81b60f81c828281518110611d1d57611d1d6128a1565b60ff90921660209283029190910190910152600101611ccf565b505f611d42826122e7565b90506101005f516020612aa75f395f51905f525f611d6086896127da565b90505f5b81811015611dcd575f886001611d7a84866127da565b611d8491906127da565b81518110611d9457611d946128a1565b016020015160f81c90508380611dac57611dac61285a565b85870995508380611dbf57611dbf61285a565b818708955050600101611d64565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020612aa75f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611e6b57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611e8457611e8183826127da565b92505b8080611e9257611e9261285a565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611eda57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612ac75f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611f2491906128b5565b5f60405180830381855af49150503d805f8114611f5c576040519150601f19603f3d011682016040523d82523d5f602084013e611f61565b606091505b5091509150611f7185838361234e565b925050505b92915050565b341561143e5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611fdb92919061283e565b6040516020818303038152906040529050808460f81b6040516020016120029291906128c0565b60405160208183030381529060405290508060405160200161202491906128ea565b60408051601f1981840301815290829052915061010160f01b9061204e9083908390602001612902565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120be576120be612419565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090505f826040516020016120ff91815260200190565b60408051601f1981840301815291905290505f5b81518110156121695781818151811061212e5761212e6128a1565b602001015160f81c60f81b83828151811061214b5761214b6128a1565b60200101906001600160f81b03191690815f1a905350600101612113565b505f8460405160200161217e91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612210575f8382815181106121b7576121b76128a1565b602001015160f81c60f81b8383815181106121d4576121d46128a1565b602001015160f81c60f81b18905088816040516020016121f5929190612926565b60408051601f1981840301815291905298505060010161219c565b508688876040516020016122269392919061294a565b6040516020818303038152906040529650868051906020012093508360405160200161225491815260200190565b60408051601f1981840301815291905291505f5b6122758a60ff8d166127da565b8110156122d65782818151811061228e5761228e6128a1565b01602001516001600160f81b031916846122a8838d6127c7565b815181106122b8576122b86128a1565b60200101906001600160f81b03191690815f1a905350600101612268565b50919b9a5050505050505050505050565b5f80805b835181101561234757838181518110612306576123066128a1565b602002602001015160ff1681600861231e919061297d565b612329906002612a77565b612333919061297d565b61233d90836127c7565b91506001016122eb565b5092915050565b6060826123635761235e826123ad565b6123a6565b815115801561237a57506001600160a01b0384163b155b156123a357604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123bd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146123ec575f5ffd5b919050565b5f5f60408385031215612402575f5ffd5b61240b836123d6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561245057612450612419565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561247f5761247f612419565b604052919050565b5f60808284031215612497575f5ffd5b6040516080810167ffffffffffffffff811182821017156124ba576124ba612419565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156124f8575f5ffd5b61250061242d565b823581526020928301359281019290925250919050565b5f5f5f5f610120858703121561252b575f5ffd5b6125358686612487565b935061254486608087016124e8565b92506125538660c087016124e8565b915061010085013561ffff8116811461256a575f5ffd5b939692955090935050565b5f60208284031215612585575f5ffd5b6123a6826123d6565b5f5f6040838503121561259f575f5ffd5b6125a8836123d6565b9150602083013567ffffffffffffffff8111156125c3575f5ffd5b8301601f810185136125d3575f5ffd5b803567ffffffffffffffff8111156125ed576125ed612419565b612600601f8201601f1916602001612456565b818152866020838501011115612614575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612646575f5ffd5b6126508585612487565b925061265f85608086016124e8565b915061266e8560c086016124e8565b90509250925092565b5f60808284031215612687575f5ffd5b6123a68383612487565b5f5f604083850312156126a2575f5ffd5b6126ab836123d6565b91506126b9602084016123d6565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215612707575f5ffd5b5035919050565b5f5f5f5f60808587031215612721575f5ffd5b61272a856123d6565b9350612738602086016123d6565b92506040850135915061274d606086016123d6565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061278f57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156127ac575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611f7657611f766127b3565b81810381811115611f7657611f766127b3565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016123a6565b5f81518060208401855e5f93019283525090919050565b5f61285261284c8386612827565b84612827565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261288857634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6123a68284612827565b5f6128cb8285612827565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6128f58284612827565b5f81526001019392505050565b5f61290d8285612827565b6001600160f01b03199390931683525050600201919050565b5f6129318285612827565b6001600160f81b03199390931683525050600101919050565b5f6129558286612827565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417611f7657611f766127b3565b6001815b60018411156129cf578085048111156129b3576129b36127b3565b60018416156129c157908102905b60019390931c928002612998565b935093915050565b5f826129e557506001611f76565b816129f157505f611f76565b8160018114612a075760028114612a1157612a2d565b6001915050611f76565b60ff841115612a2257612a226127b3565b50506001821b611f76565b5060208310610133831016604e8410600b8410161715612a50575081810a611f76565b612a5c5f198484612994565b805f1904821115612a6f57612a6f6127b3565b029392505050565b5f6123a683836129d756fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
2219    /// ```
2220    #[rustfmt::skip]
2221    #[allow(clippy::all)]
2222    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2223        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#\xF1V[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%\x17V[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a%uV[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#\xF1V[a\t\x8AV[a\x01\x84a\x02C6`\x04a%\x8EV[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a&3V[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&wV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a&\x91V[`\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%uV[a\rHV[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&\xC2V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&\xF7V[`\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%uV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a'\x0EV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a&\x91V[`\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%uV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a%uV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a'lV[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[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'\x9CV[\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\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\xC7V[\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'\xC7V[\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\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11\xC6V[`@\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\x12\x02V[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\xEEV[\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'XV[\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'XV[\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\x13\x0BV[\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\xC1V[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'\xDAV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\xC7V[\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'\xDAV[\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\x13\x9AV[a\x0BM\x82a\x14@V[a\x0BW\x82\x82a\x14HV[PPV[_a\x0Bda\x15\tV[P_Q` a*\xC7_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11\xC6V[`@\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\x12\x02V[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\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'\xEDV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\xC7V[`\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\x15RV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\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\x8DW`@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\xD5W`@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\x10\x91\x16\x83\x83a\x13\x0BV[\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\x0EK\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\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@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\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x15\xADV[a\x0F a\x15\xBEV[a\x0F(a\x15\xC6V[a\x0F3\x89\x89\x89a\x16\xCCV[\x83\x15a\x0FyW\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\x8Ca\x15RV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x17wV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a'XV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a'XV[\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\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@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\x15Wa\x11\x15a'XV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\x11\x87WP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\x11\xA5W`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x0F\xBEW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11\xD2\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12+W`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a\x12<WP` \x81\x01Q\x15[\x80\x15a\x12JWP`@\x81\x01Q\x15[\x80\x15a\x12XWP``\x81\x01Q\x15[\x15a\x12vW`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\x7F\x82a\x17\xE7V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a*\x83`$\x919\x90P_\x84\x82`@Q` \x01a\x12\xAF\x92\x91\x90a(>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x12\xCA\x82a\x18NV[\x90Pa\x12\xE7\x81\x85a\x12\xDA\x88a\x19;V[a\x12\xE2a\x19\xB2V[a\x1A\x7FV[a\x13\x03W`@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\x13UWP\x82;\x15=\x17\x15[\x80a\x13\x94W`@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\x14 WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x14\x14_Q` a*\xC7_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x14>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x15RV[\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\xA2WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x14\x9F\x91\x81\x01\x90a'\x9CV[`\x01[a\x14\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\xC7_9_Q\x90_R\x81\x14a\x14\xFAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x15\x04\x83\x83a\x1B.V[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\x14>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x15\x84\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\x14>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x15\xB5a\x1B\x83V[a\x0F\xBE\x81a\x1B\xCCV[a\x14>a\x1B\x83V[\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\x16\x0BWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x16'WP0;\x15[\x90P\x81\x15\x80\x15a\x165WP\x80\x15[\x15a\x16SW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x16}W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\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\xF3W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x17\x1AW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x17oW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\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[\x80Q` \x82\x01Q_\x91_Q` a*\xA7_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x18\rWPPPV[\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\x15\x04W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x18k\x83a\x1B\xD4V[\x90P_Q` a*\xA7_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x18\x92Wa\x18\x92a(ZV[\x84\x82\t\x90P\x82\x80a\x18\xA5Wa\x18\xA5a(ZV[\x82\x82\x08\x90P__a\x18\xB5\x83a\x1D\xDDV[\x92P\x90P[\x80a\x19\x1EW\x84\x80a\x18\xCDWa\x18\xCDa(ZV[`\x01\x87\x08\x95P\x84\x80a\x18\xE1Wa\x18\xE1a(ZV[\x86\x87\t\x92P\x84\x80a\x18\xF4Wa\x18\xF4a(ZV[\x86\x84\t\x92P\x84\x80a\x19\x07Wa\x19\x07a(ZV[\x84\x84\x08\x92Pa\x19\x15\x83a\x1D\xDDV[\x92P\x90Pa\x18\xBAV[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\x19bWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a*\xA7_9_Q\x90_R\x84` \x01Qa\x19\x93\x91\x90a(nV[a\x19\xAA\x90_Q` a*\xA7_9_Q\x90_Ra'\xDAV[\x90R\x92\x91PPV[a\x19\xD9`@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\x1B\"W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1B7\x82a\x1E\xA5V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1B{Wa\x15\x04\x82\x82a\x1F\x08V[a\x0BWa\x1F|V[\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\x14>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1B\x83V[__a\x1B\xDF\x83a\x1F\x9BV[\x80Q\x90\x91P`0\x81\x14a\x1B\xF4Wa\x1B\xF4a(\x8DV[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1C\x0EWa\x1C\x0Ea$\x19V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1C8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1C\xA7W\x83`\x01a\x1CR\x83\x86a'\xDAV[a\x1C\\\x91\x90a'\xDAV[\x81Q\x81\x10a\x1ClWa\x1Cla(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1C\x89Wa\x1C\x89a(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1C=V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a\x1D7W\x83\x81a\x1C\xE3\x85\x88a'\xDAV[a\x1C\xED\x91\x90a'\xC7V[\x81Q\x81\x10a\x1C\xFDWa\x1C\xFDa(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1D\x1DWa\x1D\x1Da(\xA1V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\xCFV[P_a\x1DB\x82a\"\xE7V[\x90Pa\x01\0_Q` a*\xA7_9_Q\x90_R_a\x1D`\x86\x89a'\xDAV[\x90P_[\x81\x81\x10\x15a\x1D\xCDW_\x88`\x01a\x1Dz\x84\x86a'\xDAV[a\x1D\x84\x91\x90a'\xDAV[\x81Q\x81\x10a\x1D\x94Wa\x1D\x94a(\xA1V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\xACWa\x1D\xACa(ZV[\x85\x87\t\x95P\x83\x80a\x1D\xBFWa\x1D\xBFa(ZV[\x81\x87\x08\x95PP`\x01\x01a\x1DdV[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*\xA7_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\x1EkW`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1E\x84Wa\x1E\x81\x83\x82a'\xDAV[\x92P[\x80\x80a\x1E\x92Wa\x1E\x92a(ZV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\xDAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\xC7_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$\x91\x90a(\xB5V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1F\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FaV[``\x91P[P\x91P\x91Pa\x1Fq\x85\x83\x83a#NV[\x92PPP[\x92\x91PPV[4\x15a\x14>W`@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\xDB\x92\x91\x90a(>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a \x02\x92\x91\x90a(\xC0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a $\x91\x90a(\xEAV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a N\x90\x83\x90\x83\x90` \x01a)\x02V[`@\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 \xBEWa \xBEa$\x19V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \xE8W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a \xFF\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a!iW\x81\x81\x81Q\x81\x10a!.Wa!.a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a!KWa!Ka(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\x13V[P_\x84`@Q` \x01a!~\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\"\x10W_\x83\x82\x81Q\x81\x10a!\xB7Wa!\xB7a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\xD4Wa!\xD4a(\xA1V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!\xF5\x92\x91\x90a)&V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a!\x9CV[P\x86\x88\x87`@Q` \x01a\"&\x93\x92\x91\x90a)JV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a\"T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a\"u\x8A`\xFF\x8D\x16a'\xDAV[\x81\x10\x15a\"\xD6W\x82\x81\x81Q\x81\x10a\"\x8EWa\"\x8Ea(\xA1V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a\"\xA8\x83\x8Da'\xC7V[\x81Q\x81\x10a\"\xB8Wa\"\xB8a(\xA1V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\"hV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a#GW\x83\x81\x81Q\x81\x10a#\x06Wa#\x06a(\xA1V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a#\x1E\x91\x90a)}V[a#)\x90`\x02a*wV[a#3\x91\x90a)}V[a#=\x90\x83a'\xC7V[\x91P`\x01\x01a\"\xEBV[P\x92\x91PPV[``\x82a#cWa#^\x82a#\xADV[a#\xA6V[\x81Q\x15\x80\x15a#zWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a#\xA3W`@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#\xBDW\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#\xECW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a$\x02W__\xFD[a$\x0B\x83a#\xD6V[\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$PWa$Pa$\x19V[`@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$\x7FWa$\x7Fa$\x19V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a$\x97W__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\xBAWa$\xBAa$\x19V[`@\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$\xF8W__\xFD[a%\0a$-V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a%+W__\xFD[a%5\x86\x86a$\x87V[\x93Pa%D\x86`\x80\x87\x01a$\xE8V[\x92Pa%S\x86`\xC0\x87\x01a$\xE8V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a%jW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a%\x85W__\xFD[a#\xA6\x82a#\xD6V[__`@\x83\x85\x03\x12\x15a%\x9FW__\xFD[a%\xA8\x83a#\xD6V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xC3W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\xD3W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xEDWa%\xEDa$\x19V[a&\0`\x1F\x82\x01`\x1F\x19\x16` \x01a$VV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a&\x14W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a&FW__\xFD[a&P\x85\x85a$\x87V[\x92Pa&_\x85`\x80\x86\x01a$\xE8V[\x91Pa&n\x85`\xC0\x86\x01a$\xE8V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a&\x87W__\xFD[a#\xA6\x83\x83a$\x87V[__`@\x83\x85\x03\x12\x15a&\xA2W__\xFD[a&\xAB\x83a#\xD6V[\x91Pa&\xB9` \x84\x01a#\xD6V[\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'\x07W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a'!W__\xFD[a'*\x85a#\xD6V[\x93Pa'8` \x86\x01a#\xD6V[\x92P`@\x85\x015\x91Pa'M``\x86\x01a#\xD6V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a'\x8FWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\xACW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1FvWa\x1Fva'\xB3V[\x81\x81\x03\x81\x81\x11\x15a\x1FvWa\x1Fva'\xB3V[\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#\xA6V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a(Ra(L\x83\x86a('V[\x84a('V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a(\x88WcNH{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#\xA6\x82\x84a('V[_a(\xCB\x82\x85a('V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(\xF5\x82\x84a('V[_\x81R`\x01\x01\x93\x92PPPV[_a)\r\x82\x85a('V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a)1\x82\x85a('V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a)U\x82\x86a('V[`\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\x1FvWa\x1Fva'\xB3V[`\x01\x81[`\x01\x84\x11\x15a)\xCFW\x80\x85\x04\x81\x11\x15a)\xB3Wa)\xB3a'\xB3V[`\x01\x84\x16\x15a)\xC1W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a)\x98V[\x93P\x93\x91PPV[_\x82a)\xE5WP`\x01a\x1FvV[\x81a)\xF1WP_a\x1FvV[\x81`\x01\x81\x14a*\x07W`\x02\x81\x14a*\x11Wa*-V[`\x01\x91PPa\x1FvV[`\xFF\x84\x11\x15a*\"Wa*\"a'\xB3V[PP`\x01\x82\x1Ba\x1FvV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a*PWP\x81\x81\na\x1FvV[a*\\_\x19\x84\x84a)\x94V[\x80_\x19\x04\x82\x11\x15a*oWa*oa'\xB3V[\x02\x93\x92PPPV[_a#\xA6\x83\x83a)\xD7V\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#\0\n",
2224    );
2225    #[derive(serde::Serialize, serde::Deserialize)]
2226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2228    #[derive(Clone)]
2229    pub struct ValidatorStatus(u8);
2230    const _: () = {
2231        use alloy::sol_types as alloy_sol_types;
2232        #[automatically_derived]
2233        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
2234            #[inline]
2235            fn stv_to_tokens(
2236                &self,
2237            ) -> <alloy::sol_types::sol_data::Uint<
2238                8,
2239            > as alloy_sol_types::SolType>::Token<'_> {
2240                alloy_sol_types::private::SolTypeValue::<
2241                    alloy::sol_types::sol_data::Uint<8>,
2242                >::stv_to_tokens(self)
2243            }
2244            #[inline]
2245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2246                <alloy::sol_types::sol_data::Uint<
2247                    8,
2248                > as alloy_sol_types::SolType>::tokenize(self)
2249                    .0
2250            }
2251            #[inline]
2252            fn stv_abi_encode_packed_to(
2253                &self,
2254                out: &mut alloy_sol_types::private::Vec<u8>,
2255            ) {
2256                <alloy::sol_types::sol_data::Uint<
2257                    8,
2258                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
2259            }
2260            #[inline]
2261            fn stv_abi_packed_encoded_size(&self) -> usize {
2262                <alloy::sol_types::sol_data::Uint<
2263                    8,
2264                > as alloy_sol_types::SolType>::abi_encoded_size(self)
2265            }
2266        }
2267        impl ValidatorStatus {
2268            /// The Solidity type name.
2269            pub const NAME: &'static str = stringify!(ValidatorStatus);
2270            /// Convert from the underlying value type.
2271            #[inline]
2272            pub const fn from_underlying(value: u8) -> Self {
2273                Self(value)
2274            }
2275            /// Return the underlying value.
2276            #[inline]
2277            pub const fn into_underlying(self) -> u8 {
2278                self.0
2279            }
2280            /// Return the single encoding of this value, delegating to the
2281            /// underlying type.
2282            #[inline]
2283            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
2284                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
2285            }
2286            /// Return the packed encoding of this value, delegating to the
2287            /// underlying type.
2288            #[inline]
2289            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
2290                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
2291            }
2292        }
2293        #[automatically_derived]
2294        impl From<u8> for ValidatorStatus {
2295            fn from(value: u8) -> Self {
2296                Self::from_underlying(value)
2297            }
2298        }
2299        #[automatically_derived]
2300        impl From<ValidatorStatus> for u8 {
2301            fn from(value: ValidatorStatus) -> Self {
2302                value.into_underlying()
2303            }
2304        }
2305        #[automatically_derived]
2306        impl alloy_sol_types::SolType for ValidatorStatus {
2307            type RustType = u8;
2308            type Token<'a> = <alloy::sol_types::sol_data::Uint<
2309                8,
2310            > as alloy_sol_types::SolType>::Token<'a>;
2311            const SOL_NAME: &'static str = Self::NAME;
2312            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2313                8,
2314            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2315            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2316                8,
2317            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2318            #[inline]
2319            fn valid_token(token: &Self::Token<'_>) -> bool {
2320                Self::type_check(token).is_ok()
2321            }
2322            #[inline]
2323            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
2324                <alloy::sol_types::sol_data::Uint<
2325                    8,
2326                > as alloy_sol_types::SolType>::type_check(token)
2327            }
2328            #[inline]
2329            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2330                <alloy::sol_types::sol_data::Uint<
2331                    8,
2332                > as alloy_sol_types::SolType>::detokenize(token)
2333            }
2334        }
2335        #[automatically_derived]
2336        impl alloy_sol_types::EventTopic for ValidatorStatus {
2337            #[inline]
2338            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2339                <alloy::sol_types::sol_data::Uint<
2340                    8,
2341                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
2342            }
2343            #[inline]
2344            fn encode_topic_preimage(
2345                rust: &Self::RustType,
2346                out: &mut alloy_sol_types::private::Vec<u8>,
2347            ) {
2348                <alloy::sol_types::sol_data::Uint<
2349                    8,
2350                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
2351            }
2352            #[inline]
2353            fn encode_topic(
2354                rust: &Self::RustType,
2355            ) -> alloy_sol_types::abi::token::WordToken {
2356                <alloy::sol_types::sol_data::Uint<
2357                    8,
2358                > as alloy_sol_types::EventTopic>::encode_topic(rust)
2359            }
2360        }
2361    };
2362    #[derive(serde::Serialize, serde::Deserialize)]
2363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2364    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
2365```solidity
2366error AddressEmptyCode(address target);
2367```*/
2368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2369    #[derive(Clone)]
2370    pub struct AddressEmptyCode {
2371        #[allow(missing_docs)]
2372        pub target: alloy::sol_types::private::Address,
2373    }
2374    #[allow(
2375        non_camel_case_types,
2376        non_snake_case,
2377        clippy::pub_underscore_fields,
2378        clippy::style
2379    )]
2380    const _: () = {
2381        use alloy::sol_types as alloy_sol_types;
2382        #[doc(hidden)]
2383        #[allow(dead_code)]
2384        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2385        #[doc(hidden)]
2386        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2387        #[cfg(test)]
2388        #[allow(dead_code, unreachable_patterns)]
2389        fn _type_assertion(
2390            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2391        ) {
2392            match _t {
2393                alloy_sol_types::private::AssertTypeEq::<
2394                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2395                >(_) => {}
2396            }
2397        }
2398        #[automatically_derived]
2399        #[doc(hidden)]
2400        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
2401            fn from(value: AddressEmptyCode) -> Self {
2402                (value.target,)
2403            }
2404        }
2405        #[automatically_derived]
2406        #[doc(hidden)]
2407        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
2408            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2409                Self { target: tuple.0 }
2410            }
2411        }
2412        #[automatically_derived]
2413        impl alloy_sol_types::SolError for AddressEmptyCode {
2414            type Parameters<'a> = UnderlyingSolTuple<'a>;
2415            type Token<'a> = <Self::Parameters<
2416                'a,
2417            > as alloy_sol_types::SolType>::Token<'a>;
2418            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
2419            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
2420            #[inline]
2421            fn new<'a>(
2422                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2423            ) -> Self {
2424                tuple.into()
2425            }
2426            #[inline]
2427            fn tokenize(&self) -> Self::Token<'_> {
2428                (
2429                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2430                        &self.target,
2431                    ),
2432                )
2433            }
2434            #[inline]
2435            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2436                Self::abi_decode_raw_with_config(
2437                    data,
2438                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2439                )
2440            }
2441        }
2442    };
2443    #[derive(serde::Serialize, serde::Deserialize)]
2444    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2445    /**Custom error with signature `BLSSigIsInfinity()` and selector `0x74272332`.
2446```solidity
2447error BLSSigIsInfinity();
2448```*/
2449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2450    #[derive(Clone)]
2451    pub struct BLSSigIsInfinity;
2452    #[allow(
2453        non_camel_case_types,
2454        non_snake_case,
2455        clippy::pub_underscore_fields,
2456        clippy::style
2457    )]
2458    const _: () = {
2459        use alloy::sol_types as alloy_sol_types;
2460        #[doc(hidden)]
2461        #[allow(dead_code)]
2462        type UnderlyingSolTuple<'a> = ();
2463        #[doc(hidden)]
2464        type UnderlyingRustTuple<'a> = ();
2465        #[cfg(test)]
2466        #[allow(dead_code, unreachable_patterns)]
2467        fn _type_assertion(
2468            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2469        ) {
2470            match _t {
2471                alloy_sol_types::private::AssertTypeEq::<
2472                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2473                >(_) => {}
2474            }
2475        }
2476        #[automatically_derived]
2477        #[doc(hidden)]
2478        impl ::core::convert::From<BLSSigIsInfinity> for UnderlyingRustTuple<'_> {
2479            fn from(value: BLSSigIsInfinity) -> Self {
2480                ()
2481            }
2482        }
2483        #[automatically_derived]
2484        #[doc(hidden)]
2485        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigIsInfinity {
2486            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2487                Self
2488            }
2489        }
2490        #[automatically_derived]
2491        impl alloy_sol_types::SolError for BLSSigIsInfinity {
2492            type Parameters<'a> = UnderlyingSolTuple<'a>;
2493            type Token<'a> = <Self::Parameters<
2494                'a,
2495            > as alloy_sol_types::SolType>::Token<'a>;
2496            const SIGNATURE: &'static str = "BLSSigIsInfinity()";
2497            const SELECTOR: [u8; 4] = [116u8, 39u8, 35u8, 50u8];
2498            #[inline]
2499            fn new<'a>(
2500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2501            ) -> Self {
2502                tuple.into()
2503            }
2504            #[inline]
2505            fn tokenize(&self) -> Self::Token<'_> {
2506                ()
2507            }
2508            #[inline]
2509            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2510                Self::abi_decode_raw_with_config(
2511                    data,
2512                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2513                )
2514            }
2515        }
2516    };
2517    #[derive(serde::Serialize, serde::Deserialize)]
2518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2519    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
2520```solidity
2521error BLSSigVerificationFailed();
2522```*/
2523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2524    #[derive(Clone)]
2525    pub struct BLSSigVerificationFailed;
2526    #[allow(
2527        non_camel_case_types,
2528        non_snake_case,
2529        clippy::pub_underscore_fields,
2530        clippy::style
2531    )]
2532    const _: () = {
2533        use alloy::sol_types as alloy_sol_types;
2534        #[doc(hidden)]
2535        #[allow(dead_code)]
2536        type UnderlyingSolTuple<'a> = ();
2537        #[doc(hidden)]
2538        type UnderlyingRustTuple<'a> = ();
2539        #[cfg(test)]
2540        #[allow(dead_code, unreachable_patterns)]
2541        fn _type_assertion(
2542            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2543        ) {
2544            match _t {
2545                alloy_sol_types::private::AssertTypeEq::<
2546                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2547                >(_) => {}
2548            }
2549        }
2550        #[automatically_derived]
2551        #[doc(hidden)]
2552        impl ::core::convert::From<BLSSigVerificationFailed>
2553        for UnderlyingRustTuple<'_> {
2554            fn from(value: BLSSigVerificationFailed) -> Self {
2555                ()
2556            }
2557        }
2558        #[automatically_derived]
2559        #[doc(hidden)]
2560        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2561        for BLSSigVerificationFailed {
2562            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2563                Self
2564            }
2565        }
2566        #[automatically_derived]
2567        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
2568            type Parameters<'a> = UnderlyingSolTuple<'a>;
2569            type Token<'a> = <Self::Parameters<
2570                'a,
2571            > as alloy_sol_types::SolType>::Token<'a>;
2572            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
2573            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
2574            #[inline]
2575            fn new<'a>(
2576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2577            ) -> Self {
2578                tuple.into()
2579            }
2580            #[inline]
2581            fn tokenize(&self) -> Self::Token<'_> {
2582                ()
2583            }
2584            #[inline]
2585            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2586                Self::abi_decode_raw_with_config(
2587                    data,
2588                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2589                )
2590            }
2591        }
2592    };
2593    #[derive(serde::Serialize, serde::Deserialize)]
2594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2595    /**Custom error with signature `BLSVKIsInfinity()` and selector `0xbc86c59a`.
2596```solidity
2597error BLSVKIsInfinity();
2598```*/
2599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2600    #[derive(Clone)]
2601    pub struct BLSVKIsInfinity;
2602    #[allow(
2603        non_camel_case_types,
2604        non_snake_case,
2605        clippy::pub_underscore_fields,
2606        clippy::style
2607    )]
2608    const _: () = {
2609        use alloy::sol_types as alloy_sol_types;
2610        #[doc(hidden)]
2611        #[allow(dead_code)]
2612        type UnderlyingSolTuple<'a> = ();
2613        #[doc(hidden)]
2614        type UnderlyingRustTuple<'a> = ();
2615        #[cfg(test)]
2616        #[allow(dead_code, unreachable_patterns)]
2617        fn _type_assertion(
2618            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2619        ) {
2620            match _t {
2621                alloy_sol_types::private::AssertTypeEq::<
2622                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2623                >(_) => {}
2624            }
2625        }
2626        #[automatically_derived]
2627        #[doc(hidden)]
2628        impl ::core::convert::From<BLSVKIsInfinity> for UnderlyingRustTuple<'_> {
2629            fn from(value: BLSVKIsInfinity) -> Self {
2630                ()
2631            }
2632        }
2633        #[automatically_derived]
2634        #[doc(hidden)]
2635        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSVKIsInfinity {
2636            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2637                Self
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolError for BLSVKIsInfinity {
2642            type Parameters<'a> = UnderlyingSolTuple<'a>;
2643            type Token<'a> = <Self::Parameters<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SIGNATURE: &'static str = "BLSVKIsInfinity()";
2647            const SELECTOR: [u8; 4] = [188u8, 134u8, 197u8, 154u8];
2648            #[inline]
2649            fn new<'a>(
2650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2651            ) -> Self {
2652                tuple.into()
2653            }
2654            #[inline]
2655            fn tokenize(&self) -> Self::Token<'_> {
2656                ()
2657            }
2658            #[inline]
2659            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2660                Self::abi_decode_raw_with_config(
2661                    data,
2662                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2663                )
2664            }
2665        }
2666    };
2667    #[derive(serde::Serialize, serde::Deserialize)]
2668    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2669    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
2670```solidity
2671error BN254PairingProdFailed();
2672```*/
2673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2674    #[derive(Clone)]
2675    pub struct BN254PairingProdFailed;
2676    #[allow(
2677        non_camel_case_types,
2678        non_snake_case,
2679        clippy::pub_underscore_fields,
2680        clippy::style
2681    )]
2682    const _: () = {
2683        use alloy::sol_types as alloy_sol_types;
2684        #[doc(hidden)]
2685        #[allow(dead_code)]
2686        type UnderlyingSolTuple<'a> = ();
2687        #[doc(hidden)]
2688        type UnderlyingRustTuple<'a> = ();
2689        #[cfg(test)]
2690        #[allow(dead_code, unreachable_patterns)]
2691        fn _type_assertion(
2692            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2693        ) {
2694            match _t {
2695                alloy_sol_types::private::AssertTypeEq::<
2696                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2697                >(_) => {}
2698            }
2699        }
2700        #[automatically_derived]
2701        #[doc(hidden)]
2702        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
2703            fn from(value: BN254PairingProdFailed) -> Self {
2704                ()
2705            }
2706        }
2707        #[automatically_derived]
2708        #[doc(hidden)]
2709        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
2710            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2711                Self
2712            }
2713        }
2714        #[automatically_derived]
2715        impl alloy_sol_types::SolError for BN254PairingProdFailed {
2716            type Parameters<'a> = UnderlyingSolTuple<'a>;
2717            type Token<'a> = <Self::Parameters<
2718                'a,
2719            > as alloy_sol_types::SolType>::Token<'a>;
2720            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
2721            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
2722            #[inline]
2723            fn new<'a>(
2724                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2725            ) -> Self {
2726                tuple.into()
2727            }
2728            #[inline]
2729            fn tokenize(&self) -> Self::Token<'_> {
2730                ()
2731            }
2732            #[inline]
2733            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2734                Self::abi_decode_raw_with_config(
2735                    data,
2736                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2737                )
2738            }
2739        }
2740    };
2741    #[derive(serde::Serialize, serde::Deserialize)]
2742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2743    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
2744```solidity
2745error BlsKeyAlreadyUsed();
2746```*/
2747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2748    #[derive(Clone)]
2749    pub struct BlsKeyAlreadyUsed;
2750    #[allow(
2751        non_camel_case_types,
2752        non_snake_case,
2753        clippy::pub_underscore_fields,
2754        clippy::style
2755    )]
2756    const _: () = {
2757        use alloy::sol_types as alloy_sol_types;
2758        #[doc(hidden)]
2759        #[allow(dead_code)]
2760        type UnderlyingSolTuple<'a> = ();
2761        #[doc(hidden)]
2762        type UnderlyingRustTuple<'a> = ();
2763        #[cfg(test)]
2764        #[allow(dead_code, unreachable_patterns)]
2765        fn _type_assertion(
2766            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2767        ) {
2768            match _t {
2769                alloy_sol_types::private::AssertTypeEq::<
2770                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2771                >(_) => {}
2772            }
2773        }
2774        #[automatically_derived]
2775        #[doc(hidden)]
2776        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
2777            fn from(value: BlsKeyAlreadyUsed) -> Self {
2778                ()
2779            }
2780        }
2781        #[automatically_derived]
2782        #[doc(hidden)]
2783        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
2784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2785                Self
2786            }
2787        }
2788        #[automatically_derived]
2789        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
2790            type Parameters<'a> = UnderlyingSolTuple<'a>;
2791            type Token<'a> = <Self::Parameters<
2792                'a,
2793            > as alloy_sol_types::SolType>::Token<'a>;
2794            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
2795            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
2796            #[inline]
2797            fn new<'a>(
2798                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2799            ) -> Self {
2800                tuple.into()
2801            }
2802            #[inline]
2803            fn tokenize(&self) -> Self::Token<'_> {
2804                ()
2805            }
2806            #[inline]
2807            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2808                Self::abi_decode_raw_with_config(
2809                    data,
2810                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2811                )
2812            }
2813        }
2814    };
2815    #[derive(serde::Serialize, serde::Deserialize)]
2816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2817    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
2818```solidity
2819error ERC1967InvalidImplementation(address implementation);
2820```*/
2821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2822    #[derive(Clone)]
2823    pub struct ERC1967InvalidImplementation {
2824        #[allow(missing_docs)]
2825        pub implementation: alloy::sol_types::private::Address,
2826    }
2827    #[allow(
2828        non_camel_case_types,
2829        non_snake_case,
2830        clippy::pub_underscore_fields,
2831        clippy::style
2832    )]
2833    const _: () = {
2834        use alloy::sol_types as alloy_sol_types;
2835        #[doc(hidden)]
2836        #[allow(dead_code)]
2837        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2838        #[doc(hidden)]
2839        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2840        #[cfg(test)]
2841        #[allow(dead_code, unreachable_patterns)]
2842        fn _type_assertion(
2843            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2844        ) {
2845            match _t {
2846                alloy_sol_types::private::AssertTypeEq::<
2847                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2848                >(_) => {}
2849            }
2850        }
2851        #[automatically_derived]
2852        #[doc(hidden)]
2853        impl ::core::convert::From<ERC1967InvalidImplementation>
2854        for UnderlyingRustTuple<'_> {
2855            fn from(value: ERC1967InvalidImplementation) -> Self {
2856                (value.implementation,)
2857            }
2858        }
2859        #[automatically_derived]
2860        #[doc(hidden)]
2861        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2862        for ERC1967InvalidImplementation {
2863            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2864                Self { implementation: tuple.0 }
2865            }
2866        }
2867        #[automatically_derived]
2868        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
2869            type Parameters<'a> = UnderlyingSolTuple<'a>;
2870            type Token<'a> = <Self::Parameters<
2871                'a,
2872            > as alloy_sol_types::SolType>::Token<'a>;
2873            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
2874            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
2875            #[inline]
2876            fn new<'a>(
2877                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2878            ) -> Self {
2879                tuple.into()
2880            }
2881            #[inline]
2882            fn tokenize(&self) -> Self::Token<'_> {
2883                (
2884                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2885                        &self.implementation,
2886                    ),
2887                )
2888            }
2889            #[inline]
2890            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2891                Self::abi_decode_raw_with_config(
2892                    data,
2893                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2894                )
2895            }
2896        }
2897    };
2898    #[derive(serde::Serialize, serde::Deserialize)]
2899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2900    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
2901```solidity
2902error ERC1967NonPayable();
2903```*/
2904    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2905    #[derive(Clone)]
2906    pub struct ERC1967NonPayable;
2907    #[allow(
2908        non_camel_case_types,
2909        non_snake_case,
2910        clippy::pub_underscore_fields,
2911        clippy::style
2912    )]
2913    const _: () = {
2914        use alloy::sol_types as alloy_sol_types;
2915        #[doc(hidden)]
2916        #[allow(dead_code)]
2917        type UnderlyingSolTuple<'a> = ();
2918        #[doc(hidden)]
2919        type UnderlyingRustTuple<'a> = ();
2920        #[cfg(test)]
2921        #[allow(dead_code, unreachable_patterns)]
2922        fn _type_assertion(
2923            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2924        ) {
2925            match _t {
2926                alloy_sol_types::private::AssertTypeEq::<
2927                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2928                >(_) => {}
2929            }
2930        }
2931        #[automatically_derived]
2932        #[doc(hidden)]
2933        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
2934            fn from(value: ERC1967NonPayable) -> Self {
2935                ()
2936            }
2937        }
2938        #[automatically_derived]
2939        #[doc(hidden)]
2940        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
2941            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2942                Self
2943            }
2944        }
2945        #[automatically_derived]
2946        impl alloy_sol_types::SolError for ERC1967NonPayable {
2947            type Parameters<'a> = UnderlyingSolTuple<'a>;
2948            type Token<'a> = <Self::Parameters<
2949                'a,
2950            > as alloy_sol_types::SolType>::Token<'a>;
2951            const SIGNATURE: &'static str = "ERC1967NonPayable()";
2952            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
2953            #[inline]
2954            fn new<'a>(
2955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2956            ) -> Self {
2957                tuple.into()
2958            }
2959            #[inline]
2960            fn tokenize(&self) -> Self::Token<'_> {
2961                ()
2962            }
2963            #[inline]
2964            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2965                Self::abi_decode_raw_with_config(
2966                    data,
2967                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2968                )
2969            }
2970        }
2971    };
2972    #[derive(serde::Serialize, serde::Deserialize)]
2973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2974    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
2975```solidity
2976error ExitEscrowPeriodInvalid();
2977```*/
2978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2979    #[derive(Clone)]
2980    pub struct ExitEscrowPeriodInvalid;
2981    #[allow(
2982        non_camel_case_types,
2983        non_snake_case,
2984        clippy::pub_underscore_fields,
2985        clippy::style
2986    )]
2987    const _: () = {
2988        use alloy::sol_types as alloy_sol_types;
2989        #[doc(hidden)]
2990        #[allow(dead_code)]
2991        type UnderlyingSolTuple<'a> = ();
2992        #[doc(hidden)]
2993        type UnderlyingRustTuple<'a> = ();
2994        #[cfg(test)]
2995        #[allow(dead_code, unreachable_patterns)]
2996        fn _type_assertion(
2997            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2998        ) {
2999            match _t {
3000                alloy_sol_types::private::AssertTypeEq::<
3001                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3002                >(_) => {}
3003            }
3004        }
3005        #[automatically_derived]
3006        #[doc(hidden)]
3007        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
3008            fn from(value: ExitEscrowPeriodInvalid) -> Self {
3009                ()
3010            }
3011        }
3012        #[automatically_derived]
3013        #[doc(hidden)]
3014        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
3015            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3016                Self
3017            }
3018        }
3019        #[automatically_derived]
3020        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
3021            type Parameters<'a> = UnderlyingSolTuple<'a>;
3022            type Token<'a> = <Self::Parameters<
3023                'a,
3024            > as alloy_sol_types::SolType>::Token<'a>;
3025            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
3026            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
3027            #[inline]
3028            fn new<'a>(
3029                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3030            ) -> Self {
3031                tuple.into()
3032            }
3033            #[inline]
3034            fn tokenize(&self) -> Self::Token<'_> {
3035                ()
3036            }
3037            #[inline]
3038            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3039                Self::abi_decode_raw_with_config(
3040                    data,
3041                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3042                )
3043            }
3044        }
3045    };
3046    #[derive(serde::Serialize, serde::Deserialize)]
3047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3048    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
3049```solidity
3050error FailedInnerCall();
3051```*/
3052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3053    #[derive(Clone)]
3054    pub struct FailedInnerCall;
3055    #[allow(
3056        non_camel_case_types,
3057        non_snake_case,
3058        clippy::pub_underscore_fields,
3059        clippy::style
3060    )]
3061    const _: () = {
3062        use alloy::sol_types as alloy_sol_types;
3063        #[doc(hidden)]
3064        #[allow(dead_code)]
3065        type UnderlyingSolTuple<'a> = ();
3066        #[doc(hidden)]
3067        type UnderlyingRustTuple<'a> = ();
3068        #[cfg(test)]
3069        #[allow(dead_code, unreachable_patterns)]
3070        fn _type_assertion(
3071            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3072        ) {
3073            match _t {
3074                alloy_sol_types::private::AssertTypeEq::<
3075                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3076                >(_) => {}
3077            }
3078        }
3079        #[automatically_derived]
3080        #[doc(hidden)]
3081        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
3082            fn from(value: FailedInnerCall) -> Self {
3083                ()
3084            }
3085        }
3086        #[automatically_derived]
3087        #[doc(hidden)]
3088        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
3089            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3090                Self
3091            }
3092        }
3093        #[automatically_derived]
3094        impl alloy_sol_types::SolError for FailedInnerCall {
3095            type Parameters<'a> = UnderlyingSolTuple<'a>;
3096            type Token<'a> = <Self::Parameters<
3097                'a,
3098            > as alloy_sol_types::SolType>::Token<'a>;
3099            const SIGNATURE: &'static str = "FailedInnerCall()";
3100            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
3101            #[inline]
3102            fn new<'a>(
3103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3104            ) -> Self {
3105                tuple.into()
3106            }
3107            #[inline]
3108            fn tokenize(&self) -> Self::Token<'_> {
3109                ()
3110            }
3111            #[inline]
3112            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3113                Self::abi_decode_raw_with_config(
3114                    data,
3115                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3116                )
3117            }
3118        }
3119    };
3120    #[derive(serde::Serialize, serde::Deserialize)]
3121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3122    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
3123```solidity
3124error InsufficientAllowance(uint256, uint256);
3125```*/
3126    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3127    #[derive(Clone)]
3128    pub struct InsufficientAllowance {
3129        #[allow(missing_docs)]
3130        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3131        #[allow(missing_docs)]
3132        pub _1: alloy::sol_types::private::primitives::aliases::U256,
3133    }
3134    #[allow(
3135        non_camel_case_types,
3136        non_snake_case,
3137        clippy::pub_underscore_fields,
3138        clippy::style
3139    )]
3140    const _: () = {
3141        use alloy::sol_types as alloy_sol_types;
3142        #[doc(hidden)]
3143        #[allow(dead_code)]
3144        type UnderlyingSolTuple<'a> = (
3145            alloy::sol_types::sol_data::Uint<256>,
3146            alloy::sol_types::sol_data::Uint<256>,
3147        );
3148        #[doc(hidden)]
3149        type UnderlyingRustTuple<'a> = (
3150            alloy::sol_types::private::primitives::aliases::U256,
3151            alloy::sol_types::private::primitives::aliases::U256,
3152        );
3153        #[cfg(test)]
3154        #[allow(dead_code, unreachable_patterns)]
3155        fn _type_assertion(
3156            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3157        ) {
3158            match _t {
3159                alloy_sol_types::private::AssertTypeEq::<
3160                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3161                >(_) => {}
3162            }
3163        }
3164        #[automatically_derived]
3165        #[doc(hidden)]
3166        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
3167            fn from(value: InsufficientAllowance) -> Self {
3168                (value._0, value._1)
3169            }
3170        }
3171        #[automatically_derived]
3172        #[doc(hidden)]
3173        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
3174            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3175                Self { _0: tuple.0, _1: tuple.1 }
3176            }
3177        }
3178        #[automatically_derived]
3179        impl alloy_sol_types::SolError for InsufficientAllowance {
3180            type Parameters<'a> = UnderlyingSolTuple<'a>;
3181            type Token<'a> = <Self::Parameters<
3182                'a,
3183            > as alloy_sol_types::SolType>::Token<'a>;
3184            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
3185            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
3186            #[inline]
3187            fn new<'a>(
3188                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3189            ) -> Self {
3190                tuple.into()
3191            }
3192            #[inline]
3193            fn tokenize(&self) -> Self::Token<'_> {
3194                (
3195                    <alloy::sol_types::sol_data::Uint<
3196                        256,
3197                    > as alloy_sol_types::SolType>::tokenize(&self._0),
3198                    <alloy::sol_types::sol_data::Uint<
3199                        256,
3200                    > as alloy_sol_types::SolType>::tokenize(&self._1),
3201                )
3202            }
3203            #[inline]
3204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3205                Self::abi_decode_raw_with_config(
3206                    data,
3207                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3208                )
3209            }
3210        }
3211    };
3212    #[derive(serde::Serialize, serde::Deserialize)]
3213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3214    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
3215```solidity
3216error InsufficientBalance(uint256);
3217```*/
3218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3219    #[derive(Clone)]
3220    pub struct InsufficientBalance(
3221        pub alloy::sol_types::private::primitives::aliases::U256,
3222    );
3223    #[allow(
3224        non_camel_case_types,
3225        non_snake_case,
3226        clippy::pub_underscore_fields,
3227        clippy::style
3228    )]
3229    const _: () = {
3230        use alloy::sol_types as alloy_sol_types;
3231        #[doc(hidden)]
3232        #[allow(dead_code)]
3233        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3234        #[doc(hidden)]
3235        type UnderlyingRustTuple<'a> = (
3236            alloy::sol_types::private::primitives::aliases::U256,
3237        );
3238        #[cfg(test)]
3239        #[allow(dead_code, unreachable_patterns)]
3240        fn _type_assertion(
3241            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3242        ) {
3243            match _t {
3244                alloy_sol_types::private::AssertTypeEq::<
3245                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3246                >(_) => {}
3247            }
3248        }
3249        #[automatically_derived]
3250        #[doc(hidden)]
3251        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
3252            fn from(value: InsufficientBalance) -> Self {
3253                (value.0,)
3254            }
3255        }
3256        #[automatically_derived]
3257        #[doc(hidden)]
3258        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
3259            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3260                Self(tuple.0)
3261            }
3262        }
3263        #[automatically_derived]
3264        impl alloy_sol_types::SolError for InsufficientBalance {
3265            type Parameters<'a> = UnderlyingSolTuple<'a>;
3266            type Token<'a> = <Self::Parameters<
3267                'a,
3268            > as alloy_sol_types::SolType>::Token<'a>;
3269            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
3270            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
3271            #[inline]
3272            fn new<'a>(
3273                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3274            ) -> Self {
3275                tuple.into()
3276            }
3277            #[inline]
3278            fn tokenize(&self) -> Self::Token<'_> {
3279                (
3280                    <alloy::sol_types::sol_data::Uint<
3281                        256,
3282                    > as alloy_sol_types::SolType>::tokenize(&self.0),
3283                )
3284            }
3285            #[inline]
3286            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3287                Self::abi_decode_raw_with_config(
3288                    data,
3289                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3290                )
3291            }
3292        }
3293    };
3294    #[derive(serde::Serialize, serde::Deserialize)]
3295    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3296    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
3297```solidity
3298error InvalidCommission();
3299```*/
3300    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3301    #[derive(Clone)]
3302    pub struct InvalidCommission;
3303    #[allow(
3304        non_camel_case_types,
3305        non_snake_case,
3306        clippy::pub_underscore_fields,
3307        clippy::style
3308    )]
3309    const _: () = {
3310        use alloy::sol_types as alloy_sol_types;
3311        #[doc(hidden)]
3312        #[allow(dead_code)]
3313        type UnderlyingSolTuple<'a> = ();
3314        #[doc(hidden)]
3315        type UnderlyingRustTuple<'a> = ();
3316        #[cfg(test)]
3317        #[allow(dead_code, unreachable_patterns)]
3318        fn _type_assertion(
3319            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3320        ) {
3321            match _t {
3322                alloy_sol_types::private::AssertTypeEq::<
3323                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3324                >(_) => {}
3325            }
3326        }
3327        #[automatically_derived]
3328        #[doc(hidden)]
3329        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
3330            fn from(value: InvalidCommission) -> Self {
3331                ()
3332            }
3333        }
3334        #[automatically_derived]
3335        #[doc(hidden)]
3336        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
3337            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3338                Self
3339            }
3340        }
3341        #[automatically_derived]
3342        impl alloy_sol_types::SolError for InvalidCommission {
3343            type Parameters<'a> = UnderlyingSolTuple<'a>;
3344            type Token<'a> = <Self::Parameters<
3345                'a,
3346            > as alloy_sol_types::SolType>::Token<'a>;
3347            const SIGNATURE: &'static str = "InvalidCommission()";
3348            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
3349            #[inline]
3350            fn new<'a>(
3351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3352            ) -> Self {
3353                tuple.into()
3354            }
3355            #[inline]
3356            fn tokenize(&self) -> Self::Token<'_> {
3357                ()
3358            }
3359            #[inline]
3360            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3361                Self::abi_decode_raw_with_config(
3362                    data,
3363                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3364                )
3365            }
3366        }
3367    };
3368    #[derive(serde::Serialize, serde::Deserialize)]
3369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3370    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3371```solidity
3372error InvalidG1();
3373```*/
3374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3375    #[derive(Clone)]
3376    pub struct InvalidG1;
3377    #[allow(
3378        non_camel_case_types,
3379        non_snake_case,
3380        clippy::pub_underscore_fields,
3381        clippy::style
3382    )]
3383    const _: () = {
3384        use alloy::sol_types as alloy_sol_types;
3385        #[doc(hidden)]
3386        #[allow(dead_code)]
3387        type UnderlyingSolTuple<'a> = ();
3388        #[doc(hidden)]
3389        type UnderlyingRustTuple<'a> = ();
3390        #[cfg(test)]
3391        #[allow(dead_code, unreachable_patterns)]
3392        fn _type_assertion(
3393            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3394        ) {
3395            match _t {
3396                alloy_sol_types::private::AssertTypeEq::<
3397                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3398                >(_) => {}
3399            }
3400        }
3401        #[automatically_derived]
3402        #[doc(hidden)]
3403        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3404            fn from(value: InvalidG1) -> Self {
3405                ()
3406            }
3407        }
3408        #[automatically_derived]
3409        #[doc(hidden)]
3410        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3411            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3412                Self
3413            }
3414        }
3415        #[automatically_derived]
3416        impl alloy_sol_types::SolError for InvalidG1 {
3417            type Parameters<'a> = UnderlyingSolTuple<'a>;
3418            type Token<'a> = <Self::Parameters<
3419                'a,
3420            > as alloy_sol_types::SolType>::Token<'a>;
3421            const SIGNATURE: &'static str = "InvalidG1()";
3422            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3423            #[inline]
3424            fn new<'a>(
3425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3426            ) -> Self {
3427                tuple.into()
3428            }
3429            #[inline]
3430            fn tokenize(&self) -> Self::Token<'_> {
3431                ()
3432            }
3433            #[inline]
3434            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3435                Self::abi_decode_raw_with_config(
3436                    data,
3437                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3438                )
3439            }
3440        }
3441    };
3442    #[derive(serde::Serialize, serde::Deserialize)]
3443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3444    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
3445```solidity
3446error InvalidInitialization();
3447```*/
3448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3449    #[derive(Clone)]
3450    pub struct InvalidInitialization;
3451    #[allow(
3452        non_camel_case_types,
3453        non_snake_case,
3454        clippy::pub_underscore_fields,
3455        clippy::style
3456    )]
3457    const _: () = {
3458        use alloy::sol_types as alloy_sol_types;
3459        #[doc(hidden)]
3460        #[allow(dead_code)]
3461        type UnderlyingSolTuple<'a> = ();
3462        #[doc(hidden)]
3463        type UnderlyingRustTuple<'a> = ();
3464        #[cfg(test)]
3465        #[allow(dead_code, unreachable_patterns)]
3466        fn _type_assertion(
3467            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3468        ) {
3469            match _t {
3470                alloy_sol_types::private::AssertTypeEq::<
3471                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3472                >(_) => {}
3473            }
3474        }
3475        #[automatically_derived]
3476        #[doc(hidden)]
3477        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
3478            fn from(value: InvalidInitialization) -> Self {
3479                ()
3480            }
3481        }
3482        #[automatically_derived]
3483        #[doc(hidden)]
3484        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
3485            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3486                Self
3487            }
3488        }
3489        #[automatically_derived]
3490        impl alloy_sol_types::SolError for InvalidInitialization {
3491            type Parameters<'a> = UnderlyingSolTuple<'a>;
3492            type Token<'a> = <Self::Parameters<
3493                'a,
3494            > as alloy_sol_types::SolType>::Token<'a>;
3495            const SIGNATURE: &'static str = "InvalidInitialization()";
3496            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
3497            #[inline]
3498            fn new<'a>(
3499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3500            ) -> Self {
3501                tuple.into()
3502            }
3503            #[inline]
3504            fn tokenize(&self) -> Self::Token<'_> {
3505                ()
3506            }
3507            #[inline]
3508            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3509                Self::abi_decode_raw_with_config(
3510                    data,
3511                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3512                )
3513            }
3514        }
3515    };
3516    #[derive(serde::Serialize, serde::Deserialize)]
3517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3518    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
3519```solidity
3520error InvalidSchnorrVK();
3521```*/
3522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3523    #[derive(Clone)]
3524    pub struct InvalidSchnorrVK;
3525    #[allow(
3526        non_camel_case_types,
3527        non_snake_case,
3528        clippy::pub_underscore_fields,
3529        clippy::style
3530    )]
3531    const _: () = {
3532        use alloy::sol_types as alloy_sol_types;
3533        #[doc(hidden)]
3534        #[allow(dead_code)]
3535        type UnderlyingSolTuple<'a> = ();
3536        #[doc(hidden)]
3537        type UnderlyingRustTuple<'a> = ();
3538        #[cfg(test)]
3539        #[allow(dead_code, unreachable_patterns)]
3540        fn _type_assertion(
3541            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3542        ) {
3543            match _t {
3544                alloy_sol_types::private::AssertTypeEq::<
3545                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3546                >(_) => {}
3547            }
3548        }
3549        #[automatically_derived]
3550        #[doc(hidden)]
3551        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
3552            fn from(value: InvalidSchnorrVK) -> Self {
3553                ()
3554            }
3555        }
3556        #[automatically_derived]
3557        #[doc(hidden)]
3558        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
3559            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3560                Self
3561            }
3562        }
3563        #[automatically_derived]
3564        impl alloy_sol_types::SolError for InvalidSchnorrVK {
3565            type Parameters<'a> = UnderlyingSolTuple<'a>;
3566            type Token<'a> = <Self::Parameters<
3567                'a,
3568            > as alloy_sol_types::SolType>::Token<'a>;
3569            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
3570            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
3571            #[inline]
3572            fn new<'a>(
3573                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3574            ) -> Self {
3575                tuple.into()
3576            }
3577            #[inline]
3578            fn tokenize(&self) -> Self::Token<'_> {
3579                ()
3580            }
3581            #[inline]
3582            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3583                Self::abi_decode_raw_with_config(
3584                    data,
3585                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3586                )
3587            }
3588        }
3589    };
3590    #[derive(serde::Serialize, serde::Deserialize)]
3591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3592    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
3593```solidity
3594error NotInitializing();
3595```*/
3596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3597    #[derive(Clone)]
3598    pub struct NotInitializing;
3599    #[allow(
3600        non_camel_case_types,
3601        non_snake_case,
3602        clippy::pub_underscore_fields,
3603        clippy::style
3604    )]
3605    const _: () = {
3606        use alloy::sol_types as alloy_sol_types;
3607        #[doc(hidden)]
3608        #[allow(dead_code)]
3609        type UnderlyingSolTuple<'a> = ();
3610        #[doc(hidden)]
3611        type UnderlyingRustTuple<'a> = ();
3612        #[cfg(test)]
3613        #[allow(dead_code, unreachable_patterns)]
3614        fn _type_assertion(
3615            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3616        ) {
3617            match _t {
3618                alloy_sol_types::private::AssertTypeEq::<
3619                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3620                >(_) => {}
3621            }
3622        }
3623        #[automatically_derived]
3624        #[doc(hidden)]
3625        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
3626            fn from(value: NotInitializing) -> Self {
3627                ()
3628            }
3629        }
3630        #[automatically_derived]
3631        #[doc(hidden)]
3632        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
3633            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3634                Self
3635            }
3636        }
3637        #[automatically_derived]
3638        impl alloy_sol_types::SolError for NotInitializing {
3639            type Parameters<'a> = UnderlyingSolTuple<'a>;
3640            type Token<'a> = <Self::Parameters<
3641                'a,
3642            > as alloy_sol_types::SolType>::Token<'a>;
3643            const SIGNATURE: &'static str = "NotInitializing()";
3644            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
3645            #[inline]
3646            fn new<'a>(
3647                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3648            ) -> Self {
3649                tuple.into()
3650            }
3651            #[inline]
3652            fn tokenize(&self) -> Self::Token<'_> {
3653                ()
3654            }
3655            #[inline]
3656            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3657                Self::abi_decode_raw_with_config(
3658                    data,
3659                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3660                )
3661            }
3662        }
3663    };
3664    #[derive(serde::Serialize, serde::Deserialize)]
3665    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3666    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
3667```solidity
3668error NothingToWithdraw();
3669```*/
3670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3671    #[derive(Clone)]
3672    pub struct NothingToWithdraw;
3673    #[allow(
3674        non_camel_case_types,
3675        non_snake_case,
3676        clippy::pub_underscore_fields,
3677        clippy::style
3678    )]
3679    const _: () = {
3680        use alloy::sol_types as alloy_sol_types;
3681        #[doc(hidden)]
3682        #[allow(dead_code)]
3683        type UnderlyingSolTuple<'a> = ();
3684        #[doc(hidden)]
3685        type UnderlyingRustTuple<'a> = ();
3686        #[cfg(test)]
3687        #[allow(dead_code, unreachable_patterns)]
3688        fn _type_assertion(
3689            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3690        ) {
3691            match _t {
3692                alloy_sol_types::private::AssertTypeEq::<
3693                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3694                >(_) => {}
3695            }
3696        }
3697        #[automatically_derived]
3698        #[doc(hidden)]
3699        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
3700            fn from(value: NothingToWithdraw) -> Self {
3701                ()
3702            }
3703        }
3704        #[automatically_derived]
3705        #[doc(hidden)]
3706        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
3707            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3708                Self
3709            }
3710        }
3711        #[automatically_derived]
3712        impl alloy_sol_types::SolError for NothingToWithdraw {
3713            type Parameters<'a> = UnderlyingSolTuple<'a>;
3714            type Token<'a> = <Self::Parameters<
3715                'a,
3716            > as alloy_sol_types::SolType>::Token<'a>;
3717            const SIGNATURE: &'static str = "NothingToWithdraw()";
3718            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
3719            #[inline]
3720            fn new<'a>(
3721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3722            ) -> Self {
3723                tuple.into()
3724            }
3725            #[inline]
3726            fn tokenize(&self) -> Self::Token<'_> {
3727                ()
3728            }
3729            #[inline]
3730            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3731                Self::abi_decode_raw_with_config(
3732                    data,
3733                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3734                )
3735            }
3736        }
3737    };
3738    #[derive(serde::Serialize, serde::Deserialize)]
3739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3740    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
3741```solidity
3742error OwnableInvalidOwner(address owner);
3743```*/
3744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3745    #[derive(Clone)]
3746    pub struct OwnableInvalidOwner {
3747        #[allow(missing_docs)]
3748        pub owner: alloy::sol_types::private::Address,
3749    }
3750    #[allow(
3751        non_camel_case_types,
3752        non_snake_case,
3753        clippy::pub_underscore_fields,
3754        clippy::style
3755    )]
3756    const _: () = {
3757        use alloy::sol_types as alloy_sol_types;
3758        #[doc(hidden)]
3759        #[allow(dead_code)]
3760        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3761        #[doc(hidden)]
3762        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3763        #[cfg(test)]
3764        #[allow(dead_code, unreachable_patterns)]
3765        fn _type_assertion(
3766            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3767        ) {
3768            match _t {
3769                alloy_sol_types::private::AssertTypeEq::<
3770                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3771                >(_) => {}
3772            }
3773        }
3774        #[automatically_derived]
3775        #[doc(hidden)]
3776        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
3777            fn from(value: OwnableInvalidOwner) -> Self {
3778                (value.owner,)
3779            }
3780        }
3781        #[automatically_derived]
3782        #[doc(hidden)]
3783        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
3784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3785                Self { owner: tuple.0 }
3786            }
3787        }
3788        #[automatically_derived]
3789        impl alloy_sol_types::SolError for OwnableInvalidOwner {
3790            type Parameters<'a> = UnderlyingSolTuple<'a>;
3791            type Token<'a> = <Self::Parameters<
3792                'a,
3793            > as alloy_sol_types::SolType>::Token<'a>;
3794            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
3795            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
3796            #[inline]
3797            fn new<'a>(
3798                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3799            ) -> Self {
3800                tuple.into()
3801            }
3802            #[inline]
3803            fn tokenize(&self) -> Self::Token<'_> {
3804                (
3805                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3806                        &self.owner,
3807                    ),
3808                )
3809            }
3810            #[inline]
3811            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3812                Self::abi_decode_raw_with_config(
3813                    data,
3814                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3815                )
3816            }
3817        }
3818    };
3819    #[derive(serde::Serialize, serde::Deserialize)]
3820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3821    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
3822```solidity
3823error OwnableUnauthorizedAccount(address account);
3824```*/
3825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3826    #[derive(Clone)]
3827    pub struct OwnableUnauthorizedAccount {
3828        #[allow(missing_docs)]
3829        pub account: alloy::sol_types::private::Address,
3830    }
3831    #[allow(
3832        non_camel_case_types,
3833        non_snake_case,
3834        clippy::pub_underscore_fields,
3835        clippy::style
3836    )]
3837    const _: () = {
3838        use alloy::sol_types as alloy_sol_types;
3839        #[doc(hidden)]
3840        #[allow(dead_code)]
3841        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3842        #[doc(hidden)]
3843        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3844        #[cfg(test)]
3845        #[allow(dead_code, unreachable_patterns)]
3846        fn _type_assertion(
3847            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3848        ) {
3849            match _t {
3850                alloy_sol_types::private::AssertTypeEq::<
3851                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3852                >(_) => {}
3853            }
3854        }
3855        #[automatically_derived]
3856        #[doc(hidden)]
3857        impl ::core::convert::From<OwnableUnauthorizedAccount>
3858        for UnderlyingRustTuple<'_> {
3859            fn from(value: OwnableUnauthorizedAccount) -> Self {
3860                (value.account,)
3861            }
3862        }
3863        #[automatically_derived]
3864        #[doc(hidden)]
3865        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3866        for OwnableUnauthorizedAccount {
3867            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3868                Self { account: tuple.0 }
3869            }
3870        }
3871        #[automatically_derived]
3872        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
3873            type Parameters<'a> = UnderlyingSolTuple<'a>;
3874            type Token<'a> = <Self::Parameters<
3875                'a,
3876            > as alloy_sol_types::SolType>::Token<'a>;
3877            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
3878            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
3879            #[inline]
3880            fn new<'a>(
3881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3882            ) -> Self {
3883                tuple.into()
3884            }
3885            #[inline]
3886            fn tokenize(&self) -> Self::Token<'_> {
3887                (
3888                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3889                        &self.account,
3890                    ),
3891                )
3892            }
3893            #[inline]
3894            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3895                Self::abi_decode_raw_with_config(
3896                    data,
3897                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3898                )
3899            }
3900        }
3901    };
3902    #[derive(serde::Serialize, serde::Deserialize)]
3903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3904    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
3905```solidity
3906error OwnershipCannotBeRenounced();
3907```*/
3908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3909    #[derive(Clone)]
3910    pub struct OwnershipCannotBeRenounced;
3911    #[allow(
3912        non_camel_case_types,
3913        non_snake_case,
3914        clippy::pub_underscore_fields,
3915        clippy::style
3916    )]
3917    const _: () = {
3918        use alloy::sol_types as alloy_sol_types;
3919        #[doc(hidden)]
3920        #[allow(dead_code)]
3921        type UnderlyingSolTuple<'a> = ();
3922        #[doc(hidden)]
3923        type UnderlyingRustTuple<'a> = ();
3924        #[cfg(test)]
3925        #[allow(dead_code, unreachable_patterns)]
3926        fn _type_assertion(
3927            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3928        ) {
3929            match _t {
3930                alloy_sol_types::private::AssertTypeEq::<
3931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3932                >(_) => {}
3933            }
3934        }
3935        #[automatically_derived]
3936        #[doc(hidden)]
3937        impl ::core::convert::From<OwnershipCannotBeRenounced>
3938        for UnderlyingRustTuple<'_> {
3939            fn from(value: OwnershipCannotBeRenounced) -> Self {
3940                ()
3941            }
3942        }
3943        #[automatically_derived]
3944        #[doc(hidden)]
3945        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3946        for OwnershipCannotBeRenounced {
3947            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3948                Self
3949            }
3950        }
3951        #[automatically_derived]
3952        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
3953            type Parameters<'a> = UnderlyingSolTuple<'a>;
3954            type Token<'a> = <Self::Parameters<
3955                'a,
3956            > as alloy_sol_types::SolType>::Token<'a>;
3957            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
3958            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
3959            #[inline]
3960            fn new<'a>(
3961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3962            ) -> Self {
3963                tuple.into()
3964            }
3965            #[inline]
3966            fn tokenize(&self) -> Self::Token<'_> {
3967                ()
3968            }
3969            #[inline]
3970            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3971                Self::abi_decode_raw_with_config(
3972                    data,
3973                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3974                )
3975            }
3976        }
3977    };
3978    #[derive(serde::Serialize, serde::Deserialize)]
3979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3980    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3981```solidity
3982error PowPrecompileFailed();
3983```*/
3984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3985    #[derive(Clone)]
3986    pub struct PowPrecompileFailed;
3987    #[allow(
3988        non_camel_case_types,
3989        non_snake_case,
3990        clippy::pub_underscore_fields,
3991        clippy::style
3992    )]
3993    const _: () = {
3994        use alloy::sol_types as alloy_sol_types;
3995        #[doc(hidden)]
3996        #[allow(dead_code)]
3997        type UnderlyingSolTuple<'a> = ();
3998        #[doc(hidden)]
3999        type UnderlyingRustTuple<'a> = ();
4000        #[cfg(test)]
4001        #[allow(dead_code, unreachable_patterns)]
4002        fn _type_assertion(
4003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4004        ) {
4005            match _t {
4006                alloy_sol_types::private::AssertTypeEq::<
4007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4008                >(_) => {}
4009            }
4010        }
4011        #[automatically_derived]
4012        #[doc(hidden)]
4013        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
4014            fn from(value: PowPrecompileFailed) -> Self {
4015                ()
4016            }
4017        }
4018        #[automatically_derived]
4019        #[doc(hidden)]
4020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
4021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4022                Self
4023            }
4024        }
4025        #[automatically_derived]
4026        impl alloy_sol_types::SolError for PowPrecompileFailed {
4027            type Parameters<'a> = UnderlyingSolTuple<'a>;
4028            type Token<'a> = <Self::Parameters<
4029                'a,
4030            > as alloy_sol_types::SolType>::Token<'a>;
4031            const SIGNATURE: &'static str = "PowPrecompileFailed()";
4032            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
4033            #[inline]
4034            fn new<'a>(
4035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4036            ) -> Self {
4037                tuple.into()
4038            }
4039            #[inline]
4040            fn tokenize(&self) -> Self::Token<'_> {
4041                ()
4042            }
4043            #[inline]
4044            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4045                Self::abi_decode_raw_with_config(
4046                    data,
4047                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4048                )
4049            }
4050        }
4051    };
4052    #[derive(serde::Serialize, serde::Deserialize)]
4053    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4054    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
4055```solidity
4056error PrematureWithdrawal();
4057```*/
4058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4059    #[derive(Clone)]
4060    pub struct PrematureWithdrawal;
4061    #[allow(
4062        non_camel_case_types,
4063        non_snake_case,
4064        clippy::pub_underscore_fields,
4065        clippy::style
4066    )]
4067    const _: () = {
4068        use alloy::sol_types as alloy_sol_types;
4069        #[doc(hidden)]
4070        #[allow(dead_code)]
4071        type UnderlyingSolTuple<'a> = ();
4072        #[doc(hidden)]
4073        type UnderlyingRustTuple<'a> = ();
4074        #[cfg(test)]
4075        #[allow(dead_code, unreachable_patterns)]
4076        fn _type_assertion(
4077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4078        ) {
4079            match _t {
4080                alloy_sol_types::private::AssertTypeEq::<
4081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4082                >(_) => {}
4083            }
4084        }
4085        #[automatically_derived]
4086        #[doc(hidden)]
4087        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
4088            fn from(value: PrematureWithdrawal) -> Self {
4089                ()
4090            }
4091        }
4092        #[automatically_derived]
4093        #[doc(hidden)]
4094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
4095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4096                Self
4097            }
4098        }
4099        #[automatically_derived]
4100        impl alloy_sol_types::SolError for PrematureWithdrawal {
4101            type Parameters<'a> = UnderlyingSolTuple<'a>;
4102            type Token<'a> = <Self::Parameters<
4103                'a,
4104            > as alloy_sol_types::SolType>::Token<'a>;
4105            const SIGNATURE: &'static str = "PrematureWithdrawal()";
4106            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
4107            #[inline]
4108            fn new<'a>(
4109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4110            ) -> Self {
4111                tuple.into()
4112            }
4113            #[inline]
4114            fn tokenize(&self) -> Self::Token<'_> {
4115                ()
4116            }
4117            #[inline]
4118            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4119                Self::abi_decode_raw_with_config(
4120                    data,
4121                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4122                )
4123            }
4124        }
4125    };
4126    #[derive(serde::Serialize, serde::Deserialize)]
4127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4128    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
4129```solidity
4130error UUPSUnauthorizedCallContext();
4131```*/
4132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4133    #[derive(Clone)]
4134    pub struct UUPSUnauthorizedCallContext;
4135    #[allow(
4136        non_camel_case_types,
4137        non_snake_case,
4138        clippy::pub_underscore_fields,
4139        clippy::style
4140    )]
4141    const _: () = {
4142        use alloy::sol_types as alloy_sol_types;
4143        #[doc(hidden)]
4144        #[allow(dead_code)]
4145        type UnderlyingSolTuple<'a> = ();
4146        #[doc(hidden)]
4147        type UnderlyingRustTuple<'a> = ();
4148        #[cfg(test)]
4149        #[allow(dead_code, unreachable_patterns)]
4150        fn _type_assertion(
4151            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4152        ) {
4153            match _t {
4154                alloy_sol_types::private::AssertTypeEq::<
4155                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4156                >(_) => {}
4157            }
4158        }
4159        #[automatically_derived]
4160        #[doc(hidden)]
4161        impl ::core::convert::From<UUPSUnauthorizedCallContext>
4162        for UnderlyingRustTuple<'_> {
4163            fn from(value: UUPSUnauthorizedCallContext) -> Self {
4164                ()
4165            }
4166        }
4167        #[automatically_derived]
4168        #[doc(hidden)]
4169        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4170        for UUPSUnauthorizedCallContext {
4171            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4172                Self
4173            }
4174        }
4175        #[automatically_derived]
4176        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4177            type Parameters<'a> = UnderlyingSolTuple<'a>;
4178            type Token<'a> = <Self::Parameters<
4179                'a,
4180            > as alloy_sol_types::SolType>::Token<'a>;
4181            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4182            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4183            #[inline]
4184            fn new<'a>(
4185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4186            ) -> Self {
4187                tuple.into()
4188            }
4189            #[inline]
4190            fn tokenize(&self) -> Self::Token<'_> {
4191                ()
4192            }
4193            #[inline]
4194            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4195                Self::abi_decode_raw_with_config(
4196                    data,
4197                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4198                )
4199            }
4200        }
4201    };
4202    #[derive(serde::Serialize, serde::Deserialize)]
4203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4204    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4205```solidity
4206error UUPSUnsupportedProxiableUUID(bytes32 slot);
4207```*/
4208    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4209    #[derive(Clone)]
4210    pub struct UUPSUnsupportedProxiableUUID {
4211        #[allow(missing_docs)]
4212        pub slot: alloy::sol_types::private::FixedBytes<32>,
4213    }
4214    #[allow(
4215        non_camel_case_types,
4216        non_snake_case,
4217        clippy::pub_underscore_fields,
4218        clippy::style
4219    )]
4220    const _: () = {
4221        use alloy::sol_types as alloy_sol_types;
4222        #[doc(hidden)]
4223        #[allow(dead_code)]
4224        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4225        #[doc(hidden)]
4226        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4227        #[cfg(test)]
4228        #[allow(dead_code, unreachable_patterns)]
4229        fn _type_assertion(
4230            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4231        ) {
4232            match _t {
4233                alloy_sol_types::private::AssertTypeEq::<
4234                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4235                >(_) => {}
4236            }
4237        }
4238        #[automatically_derived]
4239        #[doc(hidden)]
4240        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
4241        for UnderlyingRustTuple<'_> {
4242            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4243                (value.slot,)
4244            }
4245        }
4246        #[automatically_derived]
4247        #[doc(hidden)]
4248        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4249        for UUPSUnsupportedProxiableUUID {
4250            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4251                Self { slot: tuple.0 }
4252            }
4253        }
4254        #[automatically_derived]
4255        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4256            type Parameters<'a> = UnderlyingSolTuple<'a>;
4257            type Token<'a> = <Self::Parameters<
4258                'a,
4259            > as alloy_sol_types::SolType>::Token<'a>;
4260            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4261            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4262            #[inline]
4263            fn new<'a>(
4264                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4265            ) -> Self {
4266                tuple.into()
4267            }
4268            #[inline]
4269            fn tokenize(&self) -> Self::Token<'_> {
4270                (
4271                    <alloy::sol_types::sol_data::FixedBytes<
4272                        32,
4273                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4274                )
4275            }
4276            #[inline]
4277            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4278                Self::abi_decode_raw_with_config(
4279                    data,
4280                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4281                )
4282            }
4283        }
4284    };
4285    #[derive(serde::Serialize, serde::Deserialize)]
4286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4287    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4288```solidity
4289error UndelegationAlreadyExists();
4290```*/
4291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4292    #[derive(Clone)]
4293    pub struct UndelegationAlreadyExists;
4294    #[allow(
4295        non_camel_case_types,
4296        non_snake_case,
4297        clippy::pub_underscore_fields,
4298        clippy::style
4299    )]
4300    const _: () = {
4301        use alloy::sol_types as alloy_sol_types;
4302        #[doc(hidden)]
4303        #[allow(dead_code)]
4304        type UnderlyingSolTuple<'a> = ();
4305        #[doc(hidden)]
4306        type UnderlyingRustTuple<'a> = ();
4307        #[cfg(test)]
4308        #[allow(dead_code, unreachable_patterns)]
4309        fn _type_assertion(
4310            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4311        ) {
4312            match _t {
4313                alloy_sol_types::private::AssertTypeEq::<
4314                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4315                >(_) => {}
4316            }
4317        }
4318        #[automatically_derived]
4319        #[doc(hidden)]
4320        impl ::core::convert::From<UndelegationAlreadyExists>
4321        for UnderlyingRustTuple<'_> {
4322            fn from(value: UndelegationAlreadyExists) -> Self {
4323                ()
4324            }
4325        }
4326        #[automatically_derived]
4327        #[doc(hidden)]
4328        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4329        for UndelegationAlreadyExists {
4330            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4331                Self
4332            }
4333        }
4334        #[automatically_derived]
4335        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4336            type Parameters<'a> = UnderlyingSolTuple<'a>;
4337            type Token<'a> = <Self::Parameters<
4338                'a,
4339            > as alloy_sol_types::SolType>::Token<'a>;
4340            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4341            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4342            #[inline]
4343            fn new<'a>(
4344                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4345            ) -> Self {
4346                tuple.into()
4347            }
4348            #[inline]
4349            fn tokenize(&self) -> Self::Token<'_> {
4350                ()
4351            }
4352            #[inline]
4353            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4354                Self::abi_decode_raw_with_config(
4355                    data,
4356                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4357                )
4358            }
4359        }
4360    };
4361    #[derive(serde::Serialize, serde::Deserialize)]
4362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4363    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4364```solidity
4365error ValidatorAlreadyExited();
4366```*/
4367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4368    #[derive(Clone)]
4369    pub struct ValidatorAlreadyExited;
4370    #[allow(
4371        non_camel_case_types,
4372        non_snake_case,
4373        clippy::pub_underscore_fields,
4374        clippy::style
4375    )]
4376    const _: () = {
4377        use alloy::sol_types as alloy_sol_types;
4378        #[doc(hidden)]
4379        #[allow(dead_code)]
4380        type UnderlyingSolTuple<'a> = ();
4381        #[doc(hidden)]
4382        type UnderlyingRustTuple<'a> = ();
4383        #[cfg(test)]
4384        #[allow(dead_code, unreachable_patterns)]
4385        fn _type_assertion(
4386            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4387        ) {
4388            match _t {
4389                alloy_sol_types::private::AssertTypeEq::<
4390                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4391                >(_) => {}
4392            }
4393        }
4394        #[automatically_derived]
4395        #[doc(hidden)]
4396        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
4397            fn from(value: ValidatorAlreadyExited) -> Self {
4398                ()
4399            }
4400        }
4401        #[automatically_derived]
4402        #[doc(hidden)]
4403        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
4404            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4405                Self
4406            }
4407        }
4408        #[automatically_derived]
4409        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
4410            type Parameters<'a> = UnderlyingSolTuple<'a>;
4411            type Token<'a> = <Self::Parameters<
4412                'a,
4413            > as alloy_sol_types::SolType>::Token<'a>;
4414            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
4415            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
4416            #[inline]
4417            fn new<'a>(
4418                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4419            ) -> Self {
4420                tuple.into()
4421            }
4422            #[inline]
4423            fn tokenize(&self) -> Self::Token<'_> {
4424                ()
4425            }
4426            #[inline]
4427            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4428                Self::abi_decode_raw_with_config(
4429                    data,
4430                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4431                )
4432            }
4433        }
4434    };
4435    #[derive(serde::Serialize, serde::Deserialize)]
4436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4437    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
4438```solidity
4439error ValidatorAlreadyRegistered();
4440```*/
4441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4442    #[derive(Clone)]
4443    pub struct ValidatorAlreadyRegistered;
4444    #[allow(
4445        non_camel_case_types,
4446        non_snake_case,
4447        clippy::pub_underscore_fields,
4448        clippy::style
4449    )]
4450    const _: () = {
4451        use alloy::sol_types as alloy_sol_types;
4452        #[doc(hidden)]
4453        #[allow(dead_code)]
4454        type UnderlyingSolTuple<'a> = ();
4455        #[doc(hidden)]
4456        type UnderlyingRustTuple<'a> = ();
4457        #[cfg(test)]
4458        #[allow(dead_code, unreachable_patterns)]
4459        fn _type_assertion(
4460            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4461        ) {
4462            match _t {
4463                alloy_sol_types::private::AssertTypeEq::<
4464                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4465                >(_) => {}
4466            }
4467        }
4468        #[automatically_derived]
4469        #[doc(hidden)]
4470        impl ::core::convert::From<ValidatorAlreadyRegistered>
4471        for UnderlyingRustTuple<'_> {
4472            fn from(value: ValidatorAlreadyRegistered) -> Self {
4473                ()
4474            }
4475        }
4476        #[automatically_derived]
4477        #[doc(hidden)]
4478        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4479        for ValidatorAlreadyRegistered {
4480            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4481                Self
4482            }
4483        }
4484        #[automatically_derived]
4485        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
4486            type Parameters<'a> = UnderlyingSolTuple<'a>;
4487            type Token<'a> = <Self::Parameters<
4488                'a,
4489            > as alloy_sol_types::SolType>::Token<'a>;
4490            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
4491            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
4492            #[inline]
4493            fn new<'a>(
4494                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4495            ) -> Self {
4496                tuple.into()
4497            }
4498            #[inline]
4499            fn tokenize(&self) -> Self::Token<'_> {
4500                ()
4501            }
4502            #[inline]
4503            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4504                Self::abi_decode_raw_with_config(
4505                    data,
4506                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4507                )
4508            }
4509        }
4510    };
4511    #[derive(serde::Serialize, serde::Deserialize)]
4512    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4513    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
4514```solidity
4515error ValidatorInactive();
4516```*/
4517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4518    #[derive(Clone)]
4519    pub struct ValidatorInactive;
4520    #[allow(
4521        non_camel_case_types,
4522        non_snake_case,
4523        clippy::pub_underscore_fields,
4524        clippy::style
4525    )]
4526    const _: () = {
4527        use alloy::sol_types as alloy_sol_types;
4528        #[doc(hidden)]
4529        #[allow(dead_code)]
4530        type UnderlyingSolTuple<'a> = ();
4531        #[doc(hidden)]
4532        type UnderlyingRustTuple<'a> = ();
4533        #[cfg(test)]
4534        #[allow(dead_code, unreachable_patterns)]
4535        fn _type_assertion(
4536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4537        ) {
4538            match _t {
4539                alloy_sol_types::private::AssertTypeEq::<
4540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4541                >(_) => {}
4542            }
4543        }
4544        #[automatically_derived]
4545        #[doc(hidden)]
4546        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
4547            fn from(value: ValidatorInactive) -> Self {
4548                ()
4549            }
4550        }
4551        #[automatically_derived]
4552        #[doc(hidden)]
4553        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
4554            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4555                Self
4556            }
4557        }
4558        #[automatically_derived]
4559        impl alloy_sol_types::SolError for ValidatorInactive {
4560            type Parameters<'a> = UnderlyingSolTuple<'a>;
4561            type Token<'a> = <Self::Parameters<
4562                'a,
4563            > as alloy_sol_types::SolType>::Token<'a>;
4564            const SIGNATURE: &'static str = "ValidatorInactive()";
4565            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
4566            #[inline]
4567            fn new<'a>(
4568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4569            ) -> Self {
4570                tuple.into()
4571            }
4572            #[inline]
4573            fn tokenize(&self) -> Self::Token<'_> {
4574                ()
4575            }
4576            #[inline]
4577            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4578                Self::abi_decode_raw_with_config(
4579                    data,
4580                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4581                )
4582            }
4583        }
4584    };
4585    #[derive(serde::Serialize, serde::Deserialize)]
4586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4587    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
4588```solidity
4589error ValidatorNotExited();
4590```*/
4591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4592    #[derive(Clone)]
4593    pub struct ValidatorNotExited;
4594    #[allow(
4595        non_camel_case_types,
4596        non_snake_case,
4597        clippy::pub_underscore_fields,
4598        clippy::style
4599    )]
4600    const _: () = {
4601        use alloy::sol_types as alloy_sol_types;
4602        #[doc(hidden)]
4603        #[allow(dead_code)]
4604        type UnderlyingSolTuple<'a> = ();
4605        #[doc(hidden)]
4606        type UnderlyingRustTuple<'a> = ();
4607        #[cfg(test)]
4608        #[allow(dead_code, unreachable_patterns)]
4609        fn _type_assertion(
4610            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4611        ) {
4612            match _t {
4613                alloy_sol_types::private::AssertTypeEq::<
4614                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4615                >(_) => {}
4616            }
4617        }
4618        #[automatically_derived]
4619        #[doc(hidden)]
4620        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
4621            fn from(value: ValidatorNotExited) -> Self {
4622                ()
4623            }
4624        }
4625        #[automatically_derived]
4626        #[doc(hidden)]
4627        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
4628            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4629                Self
4630            }
4631        }
4632        #[automatically_derived]
4633        impl alloy_sol_types::SolError for ValidatorNotExited {
4634            type Parameters<'a> = UnderlyingSolTuple<'a>;
4635            type Token<'a> = <Self::Parameters<
4636                'a,
4637            > as alloy_sol_types::SolType>::Token<'a>;
4638            const SIGNATURE: &'static str = "ValidatorNotExited()";
4639            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
4640            #[inline]
4641            fn new<'a>(
4642                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4643            ) -> Self {
4644                tuple.into()
4645            }
4646            #[inline]
4647            fn tokenize(&self) -> Self::Token<'_> {
4648                ()
4649            }
4650            #[inline]
4651            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4652                Self::abi_decode_raw_with_config(
4653                    data,
4654                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4655                )
4656            }
4657        }
4658    };
4659    #[derive(serde::Serialize, serde::Deserialize)]
4660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4661    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4662```solidity
4663error ZeroAddress();
4664```*/
4665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4666    #[derive(Clone)]
4667    pub struct ZeroAddress;
4668    #[allow(
4669        non_camel_case_types,
4670        non_snake_case,
4671        clippy::pub_underscore_fields,
4672        clippy::style
4673    )]
4674    const _: () = {
4675        use alloy::sol_types as alloy_sol_types;
4676        #[doc(hidden)]
4677        #[allow(dead_code)]
4678        type UnderlyingSolTuple<'a> = ();
4679        #[doc(hidden)]
4680        type UnderlyingRustTuple<'a> = ();
4681        #[cfg(test)]
4682        #[allow(dead_code, unreachable_patterns)]
4683        fn _type_assertion(
4684            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4685        ) {
4686            match _t {
4687                alloy_sol_types::private::AssertTypeEq::<
4688                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4689                >(_) => {}
4690            }
4691        }
4692        #[automatically_derived]
4693        #[doc(hidden)]
4694        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4695            fn from(value: ZeroAddress) -> Self {
4696                ()
4697            }
4698        }
4699        #[automatically_derived]
4700        #[doc(hidden)]
4701        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4702            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4703                Self
4704            }
4705        }
4706        #[automatically_derived]
4707        impl alloy_sol_types::SolError for ZeroAddress {
4708            type Parameters<'a> = UnderlyingSolTuple<'a>;
4709            type Token<'a> = <Self::Parameters<
4710                'a,
4711            > as alloy_sol_types::SolType>::Token<'a>;
4712            const SIGNATURE: &'static str = "ZeroAddress()";
4713            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4714            #[inline]
4715            fn new<'a>(
4716                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4717            ) -> Self {
4718                tuple.into()
4719            }
4720            #[inline]
4721            fn tokenize(&self) -> Self::Token<'_> {
4722                ()
4723            }
4724            #[inline]
4725            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4726                Self::abi_decode_raw_with_config(
4727                    data,
4728                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4729                )
4730            }
4731        }
4732    };
4733    #[derive(serde::Serialize, serde::Deserialize)]
4734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4735    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
4736```solidity
4737error ZeroAmount();
4738```*/
4739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4740    #[derive(Clone)]
4741    pub struct ZeroAmount;
4742    #[allow(
4743        non_camel_case_types,
4744        non_snake_case,
4745        clippy::pub_underscore_fields,
4746        clippy::style
4747    )]
4748    const _: () = {
4749        use alloy::sol_types as alloy_sol_types;
4750        #[doc(hidden)]
4751        #[allow(dead_code)]
4752        type UnderlyingSolTuple<'a> = ();
4753        #[doc(hidden)]
4754        type UnderlyingRustTuple<'a> = ();
4755        #[cfg(test)]
4756        #[allow(dead_code, unreachable_patterns)]
4757        fn _type_assertion(
4758            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4759        ) {
4760            match _t {
4761                alloy_sol_types::private::AssertTypeEq::<
4762                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4763                >(_) => {}
4764            }
4765        }
4766        #[automatically_derived]
4767        #[doc(hidden)]
4768        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
4769            fn from(value: ZeroAmount) -> Self {
4770                ()
4771            }
4772        }
4773        #[automatically_derived]
4774        #[doc(hidden)]
4775        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
4776            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4777                Self
4778            }
4779        }
4780        #[automatically_derived]
4781        impl alloy_sol_types::SolError for ZeroAmount {
4782            type Parameters<'a> = UnderlyingSolTuple<'a>;
4783            type Token<'a> = <Self::Parameters<
4784                'a,
4785            > as alloy_sol_types::SolType>::Token<'a>;
4786            const SIGNATURE: &'static str = "ZeroAmount()";
4787            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
4788            #[inline]
4789            fn new<'a>(
4790                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4791            ) -> Self {
4792                tuple.into()
4793            }
4794            #[inline]
4795            fn tokenize(&self) -> Self::Token<'_> {
4796                ()
4797            }
4798            #[inline]
4799            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4800                Self::abi_decode_raw_with_config(
4801                    data,
4802                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4803                )
4804            }
4805        }
4806    };
4807    #[derive(serde::Serialize, serde::Deserialize)]
4808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4809    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
4810```solidity
4811event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
4812```*/
4813    #[allow(
4814        non_camel_case_types,
4815        non_snake_case,
4816        clippy::pub_underscore_fields,
4817        clippy::style
4818    )]
4819    #[derive(Clone)]
4820    pub struct ConsensusKeysUpdated {
4821        #[allow(missing_docs)]
4822        pub account: alloy::sol_types::private::Address,
4823        #[allow(missing_docs)]
4824        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4825        #[allow(missing_docs)]
4826        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4827    }
4828    #[allow(
4829        non_camel_case_types,
4830        non_snake_case,
4831        clippy::pub_underscore_fields,
4832        clippy::style
4833    )]
4834    const _: () = {
4835        use alloy::sol_types as alloy_sol_types;
4836        #[automatically_derived]
4837        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
4838            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
4839            type DataToken<'a> = <Self::DataTuple<
4840                'a,
4841            > as alloy_sol_types::SolType>::Token<'a>;
4842            type TopicList = (
4843                alloy_sol_types::sol_data::FixedBytes<32>,
4844                alloy::sol_types::sol_data::Address,
4845            );
4846            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
4847            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4848                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
4849                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
4850                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
4851            ]);
4852            const ANONYMOUS: bool = false;
4853            #[allow(unused_variables)]
4854            #[inline]
4855            fn new(
4856                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4857                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4858            ) -> Self {
4859                Self {
4860                    account: topics.1,
4861                    blsVK: data.0,
4862                    schnorrVK: data.1,
4863                }
4864            }
4865            #[inline]
4866            fn check_signature(
4867                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4868            ) -> alloy_sol_types::Result<()> {
4869                if topics.0 != Self::SIGNATURE_HASH {
4870                    return Err(
4871                        alloy_sol_types::Error::invalid_event_signature_hash(
4872                            Self::SIGNATURE,
4873                            topics.0,
4874                            Self::SIGNATURE_HASH,
4875                        ),
4876                    );
4877                }
4878                Ok(())
4879            }
4880            #[inline]
4881            fn tokenize_body(&self) -> Self::DataToken<'_> {
4882                (
4883                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
4884                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4885                        &self.schnorrVK,
4886                    ),
4887                )
4888            }
4889            #[inline]
4890            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4891                (Self::SIGNATURE_HASH.into(), self.account.clone())
4892            }
4893            #[inline]
4894            fn encode_topics_raw(
4895                &self,
4896                out: &mut [alloy_sol_types::abi::token::WordToken],
4897            ) -> alloy_sol_types::Result<()> {
4898                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4899                    return Err(alloy_sol_types::Error::Overrun);
4900                }
4901                out[0usize] = alloy_sol_types::abi::token::WordToken(
4902                    Self::SIGNATURE_HASH,
4903                );
4904                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4905                    &self.account,
4906                );
4907                Ok(())
4908            }
4909        }
4910        #[automatically_derived]
4911        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
4912            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4913                From::from(self)
4914            }
4915            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4916                From::from(&self)
4917            }
4918        }
4919        #[automatically_derived]
4920        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
4921            #[inline]
4922            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
4923                alloy_sol_types::SolEvent::encode_log_data(this)
4924            }
4925        }
4926    };
4927    #[derive(serde::Serialize, serde::Deserialize)]
4928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4929    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
4930```solidity
4931event Delegated(address indexed delegator, address indexed validator, uint256 amount);
4932```*/
4933    #[allow(
4934        non_camel_case_types,
4935        non_snake_case,
4936        clippy::pub_underscore_fields,
4937        clippy::style
4938    )]
4939    #[derive(Clone)]
4940    pub struct Delegated {
4941        #[allow(missing_docs)]
4942        pub delegator: alloy::sol_types::private::Address,
4943        #[allow(missing_docs)]
4944        pub validator: alloy::sol_types::private::Address,
4945        #[allow(missing_docs)]
4946        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4947    }
4948    #[allow(
4949        non_camel_case_types,
4950        non_snake_case,
4951        clippy::pub_underscore_fields,
4952        clippy::style
4953    )]
4954    const _: () = {
4955        use alloy::sol_types as alloy_sol_types;
4956        #[automatically_derived]
4957        impl alloy_sol_types::SolEvent for Delegated {
4958            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4959            type DataToken<'a> = <Self::DataTuple<
4960                'a,
4961            > as alloy_sol_types::SolType>::Token<'a>;
4962            type TopicList = (
4963                alloy_sol_types::sol_data::FixedBytes<32>,
4964                alloy::sol_types::sol_data::Address,
4965                alloy::sol_types::sol_data::Address,
4966            );
4967            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
4968            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4969                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
4970                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
4971                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
4972            ]);
4973            const ANONYMOUS: bool = false;
4974            #[allow(unused_variables)]
4975            #[inline]
4976            fn new(
4977                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4978                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4979            ) -> Self {
4980                Self {
4981                    delegator: topics.1,
4982                    validator: topics.2,
4983                    amount: data.0,
4984                }
4985            }
4986            #[inline]
4987            fn check_signature(
4988                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4989            ) -> alloy_sol_types::Result<()> {
4990                if topics.0 != Self::SIGNATURE_HASH {
4991                    return Err(
4992                        alloy_sol_types::Error::invalid_event_signature_hash(
4993                            Self::SIGNATURE,
4994                            topics.0,
4995                            Self::SIGNATURE_HASH,
4996                        ),
4997                    );
4998                }
4999                Ok(())
5000            }
5001            #[inline]
5002            fn tokenize_body(&self) -> Self::DataToken<'_> {
5003                (
5004                    <alloy::sol_types::sol_data::Uint<
5005                        256,
5006                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5007                )
5008            }
5009            #[inline]
5010            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5011                (
5012                    Self::SIGNATURE_HASH.into(),
5013                    self.delegator.clone(),
5014                    self.validator.clone(),
5015                )
5016            }
5017            #[inline]
5018            fn encode_topics_raw(
5019                &self,
5020                out: &mut [alloy_sol_types::abi::token::WordToken],
5021            ) -> alloy_sol_types::Result<()> {
5022                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5023                    return Err(alloy_sol_types::Error::Overrun);
5024                }
5025                out[0usize] = alloy_sol_types::abi::token::WordToken(
5026                    Self::SIGNATURE_HASH,
5027                );
5028                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5029                    &self.delegator,
5030                );
5031                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5032                    &self.validator,
5033                );
5034                Ok(())
5035            }
5036        }
5037        #[automatically_derived]
5038        impl alloy_sol_types::private::IntoLogData for Delegated {
5039            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5040                From::from(self)
5041            }
5042            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5043                From::from(&self)
5044            }
5045        }
5046        #[automatically_derived]
5047        impl From<&Delegated> for alloy_sol_types::private::LogData {
5048            #[inline]
5049            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
5050                alloy_sol_types::SolEvent::encode_log_data(this)
5051            }
5052        }
5053    };
5054    #[derive(serde::Serialize, serde::Deserialize)]
5055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5056    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5057```solidity
5058event Initialized(uint64 version);
5059```*/
5060    #[allow(
5061        non_camel_case_types,
5062        non_snake_case,
5063        clippy::pub_underscore_fields,
5064        clippy::style
5065    )]
5066    #[derive(Clone)]
5067    pub struct Initialized {
5068        #[allow(missing_docs)]
5069        pub version: u64,
5070    }
5071    #[allow(
5072        non_camel_case_types,
5073        non_snake_case,
5074        clippy::pub_underscore_fields,
5075        clippy::style
5076    )]
5077    const _: () = {
5078        use alloy::sol_types as alloy_sol_types;
5079        #[automatically_derived]
5080        impl alloy_sol_types::SolEvent for Initialized {
5081            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5082            type DataToken<'a> = <Self::DataTuple<
5083                'a,
5084            > as alloy_sol_types::SolType>::Token<'a>;
5085            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5086            const SIGNATURE: &'static str = "Initialized(uint64)";
5087            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5088                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5089                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5090                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5091            ]);
5092            const ANONYMOUS: bool = false;
5093            #[allow(unused_variables)]
5094            #[inline]
5095            fn new(
5096                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5097                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5098            ) -> Self {
5099                Self { version: data.0 }
5100            }
5101            #[inline]
5102            fn check_signature(
5103                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5104            ) -> alloy_sol_types::Result<()> {
5105                if topics.0 != Self::SIGNATURE_HASH {
5106                    return Err(
5107                        alloy_sol_types::Error::invalid_event_signature_hash(
5108                            Self::SIGNATURE,
5109                            topics.0,
5110                            Self::SIGNATURE_HASH,
5111                        ),
5112                    );
5113                }
5114                Ok(())
5115            }
5116            #[inline]
5117            fn tokenize_body(&self) -> Self::DataToken<'_> {
5118                (
5119                    <alloy::sol_types::sol_data::Uint<
5120                        64,
5121                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5122                )
5123            }
5124            #[inline]
5125            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5126                (Self::SIGNATURE_HASH.into(),)
5127            }
5128            #[inline]
5129            fn encode_topics_raw(
5130                &self,
5131                out: &mut [alloy_sol_types::abi::token::WordToken],
5132            ) -> alloy_sol_types::Result<()> {
5133                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5134                    return Err(alloy_sol_types::Error::Overrun);
5135                }
5136                out[0usize] = alloy_sol_types::abi::token::WordToken(
5137                    Self::SIGNATURE_HASH,
5138                );
5139                Ok(())
5140            }
5141        }
5142        #[automatically_derived]
5143        impl alloy_sol_types::private::IntoLogData for Initialized {
5144            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5145                From::from(self)
5146            }
5147            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5148                From::from(&self)
5149            }
5150        }
5151        #[automatically_derived]
5152        impl From<&Initialized> for alloy_sol_types::private::LogData {
5153            #[inline]
5154            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5155                alloy_sol_types::SolEvent::encode_log_data(this)
5156            }
5157        }
5158    };
5159    #[derive(serde::Serialize, serde::Deserialize)]
5160    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5161    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5162```solidity
5163event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5164```*/
5165    #[allow(
5166        non_camel_case_types,
5167        non_snake_case,
5168        clippy::pub_underscore_fields,
5169        clippy::style
5170    )]
5171    #[derive(Clone)]
5172    pub struct OwnershipTransferred {
5173        #[allow(missing_docs)]
5174        pub previousOwner: alloy::sol_types::private::Address,
5175        #[allow(missing_docs)]
5176        pub newOwner: alloy::sol_types::private::Address,
5177    }
5178    #[allow(
5179        non_camel_case_types,
5180        non_snake_case,
5181        clippy::pub_underscore_fields,
5182        clippy::style
5183    )]
5184    const _: () = {
5185        use alloy::sol_types as alloy_sol_types;
5186        #[automatically_derived]
5187        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5188            type DataTuple<'a> = ();
5189            type DataToken<'a> = <Self::DataTuple<
5190                'a,
5191            > as alloy_sol_types::SolType>::Token<'a>;
5192            type TopicList = (
5193                alloy_sol_types::sol_data::FixedBytes<32>,
5194                alloy::sol_types::sol_data::Address,
5195                alloy::sol_types::sol_data::Address,
5196            );
5197            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5198            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5199                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5200                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5201                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5202            ]);
5203            const ANONYMOUS: bool = false;
5204            #[allow(unused_variables)]
5205            #[inline]
5206            fn new(
5207                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5208                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5209            ) -> Self {
5210                Self {
5211                    previousOwner: topics.1,
5212                    newOwner: topics.2,
5213                }
5214            }
5215            #[inline]
5216            fn check_signature(
5217                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5218            ) -> alloy_sol_types::Result<()> {
5219                if topics.0 != Self::SIGNATURE_HASH {
5220                    return Err(
5221                        alloy_sol_types::Error::invalid_event_signature_hash(
5222                            Self::SIGNATURE,
5223                            topics.0,
5224                            Self::SIGNATURE_HASH,
5225                        ),
5226                    );
5227                }
5228                Ok(())
5229            }
5230            #[inline]
5231            fn tokenize_body(&self) -> Self::DataToken<'_> {
5232                ()
5233            }
5234            #[inline]
5235            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5236                (
5237                    Self::SIGNATURE_HASH.into(),
5238                    self.previousOwner.clone(),
5239                    self.newOwner.clone(),
5240                )
5241            }
5242            #[inline]
5243            fn encode_topics_raw(
5244                &self,
5245                out: &mut [alloy_sol_types::abi::token::WordToken],
5246            ) -> alloy_sol_types::Result<()> {
5247                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5248                    return Err(alloy_sol_types::Error::Overrun);
5249                }
5250                out[0usize] = alloy_sol_types::abi::token::WordToken(
5251                    Self::SIGNATURE_HASH,
5252                );
5253                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5254                    &self.previousOwner,
5255                );
5256                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5257                    &self.newOwner,
5258                );
5259                Ok(())
5260            }
5261        }
5262        #[automatically_derived]
5263        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5264            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5265                From::from(self)
5266            }
5267            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5268                From::from(&self)
5269            }
5270        }
5271        #[automatically_derived]
5272        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5273            #[inline]
5274            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5275                alloy_sol_types::SolEvent::encode_log_data(this)
5276            }
5277        }
5278    };
5279    #[derive(serde::Serialize, serde::Deserialize)]
5280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5281    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
5282```solidity
5283event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
5284```*/
5285    #[allow(
5286        non_camel_case_types,
5287        non_snake_case,
5288        clippy::pub_underscore_fields,
5289        clippy::style
5290    )]
5291    #[derive(Clone)]
5292    pub struct Undelegated {
5293        #[allow(missing_docs)]
5294        pub delegator: alloy::sol_types::private::Address,
5295        #[allow(missing_docs)]
5296        pub validator: alloy::sol_types::private::Address,
5297        #[allow(missing_docs)]
5298        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5299    }
5300    #[allow(
5301        non_camel_case_types,
5302        non_snake_case,
5303        clippy::pub_underscore_fields,
5304        clippy::style
5305    )]
5306    const _: () = {
5307        use alloy::sol_types as alloy_sol_types;
5308        #[automatically_derived]
5309        impl alloy_sol_types::SolEvent for Undelegated {
5310            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5311            type DataToken<'a> = <Self::DataTuple<
5312                'a,
5313            > as alloy_sol_types::SolType>::Token<'a>;
5314            type TopicList = (
5315                alloy_sol_types::sol_data::FixedBytes<32>,
5316                alloy::sol_types::sol_data::Address,
5317                alloy::sol_types::sol_data::Address,
5318            );
5319            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
5320            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5321                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
5322                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
5323                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
5324            ]);
5325            const ANONYMOUS: bool = false;
5326            #[allow(unused_variables)]
5327            #[inline]
5328            fn new(
5329                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5330                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5331            ) -> Self {
5332                Self {
5333                    delegator: topics.1,
5334                    validator: topics.2,
5335                    amount: data.0,
5336                }
5337            }
5338            #[inline]
5339            fn check_signature(
5340                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5341            ) -> alloy_sol_types::Result<()> {
5342                if topics.0 != Self::SIGNATURE_HASH {
5343                    return Err(
5344                        alloy_sol_types::Error::invalid_event_signature_hash(
5345                            Self::SIGNATURE,
5346                            topics.0,
5347                            Self::SIGNATURE_HASH,
5348                        ),
5349                    );
5350                }
5351                Ok(())
5352            }
5353            #[inline]
5354            fn tokenize_body(&self) -> Self::DataToken<'_> {
5355                (
5356                    <alloy::sol_types::sol_data::Uint<
5357                        256,
5358                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5359                )
5360            }
5361            #[inline]
5362            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5363                (
5364                    Self::SIGNATURE_HASH.into(),
5365                    self.delegator.clone(),
5366                    self.validator.clone(),
5367                )
5368            }
5369            #[inline]
5370            fn encode_topics_raw(
5371                &self,
5372                out: &mut [alloy_sol_types::abi::token::WordToken],
5373            ) -> alloy_sol_types::Result<()> {
5374                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5375                    return Err(alloy_sol_types::Error::Overrun);
5376                }
5377                out[0usize] = alloy_sol_types::abi::token::WordToken(
5378                    Self::SIGNATURE_HASH,
5379                );
5380                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5381                    &self.delegator,
5382                );
5383                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5384                    &self.validator,
5385                );
5386                Ok(())
5387            }
5388        }
5389        #[automatically_derived]
5390        impl alloy_sol_types::private::IntoLogData for Undelegated {
5391            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5392                From::from(self)
5393            }
5394            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5395                From::from(&self)
5396            }
5397        }
5398        #[automatically_derived]
5399        impl From<&Undelegated> for alloy_sol_types::private::LogData {
5400            #[inline]
5401            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
5402                alloy_sol_types::SolEvent::encode_log_data(this)
5403            }
5404        }
5405    };
5406    #[derive(serde::Serialize, serde::Deserialize)]
5407    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5408    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5409```solidity
5410event Upgraded(address indexed implementation);
5411```*/
5412    #[allow(
5413        non_camel_case_types,
5414        non_snake_case,
5415        clippy::pub_underscore_fields,
5416        clippy::style
5417    )]
5418    #[derive(Clone)]
5419    pub struct Upgraded {
5420        #[allow(missing_docs)]
5421        pub implementation: alloy::sol_types::private::Address,
5422    }
5423    #[allow(
5424        non_camel_case_types,
5425        non_snake_case,
5426        clippy::pub_underscore_fields,
5427        clippy::style
5428    )]
5429    const _: () = {
5430        use alloy::sol_types as alloy_sol_types;
5431        #[automatically_derived]
5432        impl alloy_sol_types::SolEvent for Upgraded {
5433            type DataTuple<'a> = ();
5434            type DataToken<'a> = <Self::DataTuple<
5435                'a,
5436            > as alloy_sol_types::SolType>::Token<'a>;
5437            type TopicList = (
5438                alloy_sol_types::sol_data::FixedBytes<32>,
5439                alloy::sol_types::sol_data::Address,
5440            );
5441            const SIGNATURE: &'static str = "Upgraded(address)";
5442            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5443                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5444                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
5445                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5446            ]);
5447            const ANONYMOUS: bool = false;
5448            #[allow(unused_variables)]
5449            #[inline]
5450            fn new(
5451                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5452                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5453            ) -> Self {
5454                Self { implementation: topics.1 }
5455            }
5456            #[inline]
5457            fn check_signature(
5458                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5459            ) -> alloy_sol_types::Result<()> {
5460                if topics.0 != Self::SIGNATURE_HASH {
5461                    return Err(
5462                        alloy_sol_types::Error::invalid_event_signature_hash(
5463                            Self::SIGNATURE,
5464                            topics.0,
5465                            Self::SIGNATURE_HASH,
5466                        ),
5467                    );
5468                }
5469                Ok(())
5470            }
5471            #[inline]
5472            fn tokenize_body(&self) -> Self::DataToken<'_> {
5473                ()
5474            }
5475            #[inline]
5476            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5477                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5478            }
5479            #[inline]
5480            fn encode_topics_raw(
5481                &self,
5482                out: &mut [alloy_sol_types::abi::token::WordToken],
5483            ) -> alloy_sol_types::Result<()> {
5484                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5485                    return Err(alloy_sol_types::Error::Overrun);
5486                }
5487                out[0usize] = alloy_sol_types::abi::token::WordToken(
5488                    Self::SIGNATURE_HASH,
5489                );
5490                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5491                    &self.implementation,
5492                );
5493                Ok(())
5494            }
5495        }
5496        #[automatically_derived]
5497        impl alloy_sol_types::private::IntoLogData for Upgraded {
5498            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5499                From::from(self)
5500            }
5501            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5502                From::from(&self)
5503            }
5504        }
5505        #[automatically_derived]
5506        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5507            #[inline]
5508            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5509                alloy_sol_types::SolEvent::encode_log_data(this)
5510            }
5511        }
5512    };
5513    #[derive(serde::Serialize, serde::Deserialize)]
5514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5515    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
5516```solidity
5517event ValidatorExit(address indexed validator);
5518```*/
5519    #[allow(
5520        non_camel_case_types,
5521        non_snake_case,
5522        clippy::pub_underscore_fields,
5523        clippy::style
5524    )]
5525    #[derive(Clone)]
5526    pub struct ValidatorExit {
5527        #[allow(missing_docs)]
5528        pub validator: alloy::sol_types::private::Address,
5529    }
5530    #[allow(
5531        non_camel_case_types,
5532        non_snake_case,
5533        clippy::pub_underscore_fields,
5534        clippy::style
5535    )]
5536    const _: () = {
5537        use alloy::sol_types as alloy_sol_types;
5538        #[automatically_derived]
5539        impl alloy_sol_types::SolEvent for ValidatorExit {
5540            type DataTuple<'a> = ();
5541            type DataToken<'a> = <Self::DataTuple<
5542                'a,
5543            > as alloy_sol_types::SolType>::Token<'a>;
5544            type TopicList = (
5545                alloy_sol_types::sol_data::FixedBytes<32>,
5546                alloy::sol_types::sol_data::Address,
5547            );
5548            const SIGNATURE: &'static str = "ValidatorExit(address)";
5549            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5550                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
5551                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
5552                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
5553            ]);
5554            const ANONYMOUS: bool = false;
5555            #[allow(unused_variables)]
5556            #[inline]
5557            fn new(
5558                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5559                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5560            ) -> Self {
5561                Self { validator: topics.1 }
5562            }
5563            #[inline]
5564            fn check_signature(
5565                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5566            ) -> alloy_sol_types::Result<()> {
5567                if topics.0 != Self::SIGNATURE_HASH {
5568                    return Err(
5569                        alloy_sol_types::Error::invalid_event_signature_hash(
5570                            Self::SIGNATURE,
5571                            topics.0,
5572                            Self::SIGNATURE_HASH,
5573                        ),
5574                    );
5575                }
5576                Ok(())
5577            }
5578            #[inline]
5579            fn tokenize_body(&self) -> Self::DataToken<'_> {
5580                ()
5581            }
5582            #[inline]
5583            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5584                (Self::SIGNATURE_HASH.into(), self.validator.clone())
5585            }
5586            #[inline]
5587            fn encode_topics_raw(
5588                &self,
5589                out: &mut [alloy_sol_types::abi::token::WordToken],
5590            ) -> alloy_sol_types::Result<()> {
5591                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5592                    return Err(alloy_sol_types::Error::Overrun);
5593                }
5594                out[0usize] = alloy_sol_types::abi::token::WordToken(
5595                    Self::SIGNATURE_HASH,
5596                );
5597                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5598                    &self.validator,
5599                );
5600                Ok(())
5601            }
5602        }
5603        #[automatically_derived]
5604        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
5605            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5606                From::from(self)
5607            }
5608            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5609                From::from(&self)
5610            }
5611        }
5612        #[automatically_derived]
5613        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
5614            #[inline]
5615            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
5616                alloy_sol_types::SolEvent::encode_log_data(this)
5617            }
5618        }
5619    };
5620    #[derive(serde::Serialize, serde::Deserialize)]
5621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5622    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
5623```solidity
5624event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
5625```*/
5626    #[allow(
5627        non_camel_case_types,
5628        non_snake_case,
5629        clippy::pub_underscore_fields,
5630        clippy::style
5631    )]
5632    #[derive(Clone)]
5633    pub struct ValidatorRegistered {
5634        #[allow(missing_docs)]
5635        pub account: alloy::sol_types::private::Address,
5636        #[allow(missing_docs)]
5637        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5638        #[allow(missing_docs)]
5639        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5640        #[allow(missing_docs)]
5641        pub commission: u16,
5642    }
5643    #[allow(
5644        non_camel_case_types,
5645        non_snake_case,
5646        clippy::pub_underscore_fields,
5647        clippy::style
5648    )]
5649    const _: () = {
5650        use alloy::sol_types as alloy_sol_types;
5651        #[automatically_derived]
5652        impl alloy_sol_types::SolEvent for ValidatorRegistered {
5653            type DataTuple<'a> = (
5654                BN254::G2Point,
5655                EdOnBN254::EdOnBN254Point,
5656                alloy::sol_types::sol_data::Uint<16>,
5657            );
5658            type DataToken<'a> = <Self::DataTuple<
5659                'a,
5660            > as alloy_sol_types::SolType>::Token<'a>;
5661            type TopicList = (
5662                alloy_sol_types::sol_data::FixedBytes<32>,
5663                alloy::sol_types::sol_data::Address,
5664            );
5665            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
5666            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5667                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
5668                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
5669                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
5670            ]);
5671            const ANONYMOUS: bool = false;
5672            #[allow(unused_variables)]
5673            #[inline]
5674            fn new(
5675                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5676                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5677            ) -> Self {
5678                Self {
5679                    account: topics.1,
5680                    blsVk: data.0,
5681                    schnorrVk: data.1,
5682                    commission: data.2,
5683                }
5684            }
5685            #[inline]
5686            fn check_signature(
5687                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5688            ) -> alloy_sol_types::Result<()> {
5689                if topics.0 != Self::SIGNATURE_HASH {
5690                    return Err(
5691                        alloy_sol_types::Error::invalid_event_signature_hash(
5692                            Self::SIGNATURE,
5693                            topics.0,
5694                            Self::SIGNATURE_HASH,
5695                        ),
5696                    );
5697                }
5698                Ok(())
5699            }
5700            #[inline]
5701            fn tokenize_body(&self) -> Self::DataToken<'_> {
5702                (
5703                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
5704                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5705                        &self.schnorrVk,
5706                    ),
5707                    <alloy::sol_types::sol_data::Uint<
5708                        16,
5709                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
5710                )
5711            }
5712            #[inline]
5713            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5714                (Self::SIGNATURE_HASH.into(), self.account.clone())
5715            }
5716            #[inline]
5717            fn encode_topics_raw(
5718                &self,
5719                out: &mut [alloy_sol_types::abi::token::WordToken],
5720            ) -> alloy_sol_types::Result<()> {
5721                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5722                    return Err(alloy_sol_types::Error::Overrun);
5723                }
5724                out[0usize] = alloy_sol_types::abi::token::WordToken(
5725                    Self::SIGNATURE_HASH,
5726                );
5727                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5728                    &self.account,
5729                );
5730                Ok(())
5731            }
5732        }
5733        #[automatically_derived]
5734        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
5735            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5736                From::from(self)
5737            }
5738            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5739                From::from(&self)
5740            }
5741        }
5742        #[automatically_derived]
5743        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
5744            #[inline]
5745            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
5746                alloy_sol_types::SolEvent::encode_log_data(this)
5747            }
5748        }
5749    };
5750    #[derive(serde::Serialize, serde::Deserialize)]
5751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5752    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
5753```solidity
5754event Withdrawal(address indexed account, uint256 amount);
5755```*/
5756    #[allow(
5757        non_camel_case_types,
5758        non_snake_case,
5759        clippy::pub_underscore_fields,
5760        clippy::style
5761    )]
5762    #[derive(Clone)]
5763    pub struct Withdrawal {
5764        #[allow(missing_docs)]
5765        pub account: alloy::sol_types::private::Address,
5766        #[allow(missing_docs)]
5767        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5768    }
5769    #[allow(
5770        non_camel_case_types,
5771        non_snake_case,
5772        clippy::pub_underscore_fields,
5773        clippy::style
5774    )]
5775    const _: () = {
5776        use alloy::sol_types as alloy_sol_types;
5777        #[automatically_derived]
5778        impl alloy_sol_types::SolEvent for Withdrawal {
5779            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5780            type DataToken<'a> = <Self::DataTuple<
5781                'a,
5782            > as alloy_sol_types::SolType>::Token<'a>;
5783            type TopicList = (
5784                alloy_sol_types::sol_data::FixedBytes<32>,
5785                alloy::sol_types::sol_data::Address,
5786            );
5787            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
5788            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5789                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
5790                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
5791                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
5792            ]);
5793            const ANONYMOUS: bool = false;
5794            #[allow(unused_variables)]
5795            #[inline]
5796            fn new(
5797                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5798                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5799            ) -> Self {
5800                Self {
5801                    account: topics.1,
5802                    amount: data.0,
5803                }
5804            }
5805            #[inline]
5806            fn check_signature(
5807                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5808            ) -> alloy_sol_types::Result<()> {
5809                if topics.0 != Self::SIGNATURE_HASH {
5810                    return Err(
5811                        alloy_sol_types::Error::invalid_event_signature_hash(
5812                            Self::SIGNATURE,
5813                            topics.0,
5814                            Self::SIGNATURE_HASH,
5815                        ),
5816                    );
5817                }
5818                Ok(())
5819            }
5820            #[inline]
5821            fn tokenize_body(&self) -> Self::DataToken<'_> {
5822                (
5823                    <alloy::sol_types::sol_data::Uint<
5824                        256,
5825                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5826                )
5827            }
5828            #[inline]
5829            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5830                (Self::SIGNATURE_HASH.into(), self.account.clone())
5831            }
5832            #[inline]
5833            fn encode_topics_raw(
5834                &self,
5835                out: &mut [alloy_sol_types::abi::token::WordToken],
5836            ) -> alloy_sol_types::Result<()> {
5837                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5838                    return Err(alloy_sol_types::Error::Overrun);
5839                }
5840                out[0usize] = alloy_sol_types::abi::token::WordToken(
5841                    Self::SIGNATURE_HASH,
5842                );
5843                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5844                    &self.account,
5845                );
5846                Ok(())
5847            }
5848        }
5849        #[automatically_derived]
5850        impl alloy_sol_types::private::IntoLogData for Withdrawal {
5851            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5852                From::from(self)
5853            }
5854            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5855                From::from(&self)
5856            }
5857        }
5858        #[automatically_derived]
5859        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
5860            #[inline]
5861            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
5862                alloy_sol_types::SolEvent::encode_log_data(this)
5863            }
5864        }
5865    };
5866    /**Constructor`.
5867```solidity
5868constructor();
5869```*/
5870    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5871    #[derive(Clone)]
5872    pub struct constructorCall {}
5873    const _: () = {
5874        use alloy::sol_types as alloy_sol_types;
5875        {
5876            #[doc(hidden)]
5877            #[allow(dead_code)]
5878            type UnderlyingSolTuple<'a> = ();
5879            #[doc(hidden)]
5880            type UnderlyingRustTuple<'a> = ();
5881            #[cfg(test)]
5882            #[allow(dead_code, unreachable_patterns)]
5883            fn _type_assertion(
5884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5885            ) {
5886                match _t {
5887                    alloy_sol_types::private::AssertTypeEq::<
5888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5889                    >(_) => {}
5890                }
5891            }
5892            #[automatically_derived]
5893            #[doc(hidden)]
5894            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5895                fn from(value: constructorCall) -> Self {
5896                    ()
5897                }
5898            }
5899            #[automatically_derived]
5900            #[doc(hidden)]
5901            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5903                    Self {}
5904                }
5905            }
5906        }
5907        #[automatically_derived]
5908        impl alloy_sol_types::SolConstructor for constructorCall {
5909            type Parameters<'a> = ();
5910            type Token<'a> = <Self::Parameters<
5911                'a,
5912            > as alloy_sol_types::SolType>::Token<'a>;
5913            #[inline]
5914            fn new<'a>(
5915                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5916            ) -> Self {
5917                tuple.into()
5918            }
5919            #[inline]
5920            fn tokenize(&self) -> Self::Token<'_> {
5921                ()
5922            }
5923        }
5924    };
5925    #[derive(serde::Serialize, serde::Deserialize)]
5926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5927    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5928```solidity
5929function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5930```*/
5931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5932    #[derive(Clone)]
5933    pub struct UPGRADE_INTERFACE_VERSIONCall;
5934    #[derive(serde::Serialize, serde::Deserialize)]
5935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5936    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5938    #[derive(Clone)]
5939    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5940        #[allow(missing_docs)]
5941        pub _0: alloy::sol_types::private::String,
5942    }
5943    #[allow(
5944        non_camel_case_types,
5945        non_snake_case,
5946        clippy::pub_underscore_fields,
5947        clippy::style
5948    )]
5949    const _: () = {
5950        use alloy::sol_types as alloy_sol_types;
5951        {
5952            #[doc(hidden)]
5953            #[allow(dead_code)]
5954            type UnderlyingSolTuple<'a> = ();
5955            #[doc(hidden)]
5956            type UnderlyingRustTuple<'a> = ();
5957            #[cfg(test)]
5958            #[allow(dead_code, unreachable_patterns)]
5959            fn _type_assertion(
5960                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5961            ) {
5962                match _t {
5963                    alloy_sol_types::private::AssertTypeEq::<
5964                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5965                    >(_) => {}
5966                }
5967            }
5968            #[automatically_derived]
5969            #[doc(hidden)]
5970            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
5971            for UnderlyingRustTuple<'_> {
5972                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5973                    ()
5974                }
5975            }
5976            #[automatically_derived]
5977            #[doc(hidden)]
5978            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5979            for UPGRADE_INTERFACE_VERSIONCall {
5980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5981                    Self
5982                }
5983            }
5984        }
5985        {
5986            #[doc(hidden)]
5987            #[allow(dead_code)]
5988            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5989            #[doc(hidden)]
5990            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5991            #[cfg(test)]
5992            #[allow(dead_code, unreachable_patterns)]
5993            fn _type_assertion(
5994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5995            ) {
5996                match _t {
5997                    alloy_sol_types::private::AssertTypeEq::<
5998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5999                    >(_) => {}
6000                }
6001            }
6002            #[automatically_derived]
6003            #[doc(hidden)]
6004            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6005            for UnderlyingRustTuple<'_> {
6006                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6007                    (value._0,)
6008                }
6009            }
6010            #[automatically_derived]
6011            #[doc(hidden)]
6012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6013            for UPGRADE_INTERFACE_VERSIONReturn {
6014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6015                    Self { _0: tuple.0 }
6016                }
6017            }
6018        }
6019        #[automatically_derived]
6020        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6021            type Parameters<'a> = ();
6022            type Token<'a> = <Self::Parameters<
6023                'a,
6024            > as alloy_sol_types::SolType>::Token<'a>;
6025            type Return = alloy::sol_types::private::String;
6026            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6027            type ReturnToken<'a> = <Self::ReturnTuple<
6028                'a,
6029            > as alloy_sol_types::SolType>::Token<'a>;
6030            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6031            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6032            #[inline]
6033            fn new<'a>(
6034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6035            ) -> Self {
6036                tuple.into()
6037            }
6038            #[inline]
6039            fn tokenize(&self) -> Self::Token<'_> {
6040                ()
6041            }
6042            #[inline]
6043            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6044                (
6045                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6046                        ret,
6047                    ),
6048                )
6049            }
6050            #[inline]
6051            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6052                <Self::ReturnTuple<
6053                    '_,
6054                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6055                    .map(|r| {
6056                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6057                        r._0
6058                    })
6059            }
6060            #[inline]
6061            fn abi_decode_returns_with_config(
6062                data: &[u8],
6063                config: alloy_sol_types::abi::AbiDecoderConfig,
6064            ) -> alloy_sol_types::Result<Self::Return> {
6065                <Self::ReturnTuple<
6066                    '_,
6067                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6068                        data,
6069                        config,
6070                    )
6071                    .map(|r| {
6072                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6073                        r._0
6074                    })
6075            }
6076            #[inline]
6077            fn abi_decode_returns_validate(
6078                data: &[u8],
6079            ) -> alloy_sol_types::Result<Self::Return> {
6080                Self::abi_decode_returns_with_config(
6081                    data,
6082                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6083                )
6084            }
6085        }
6086    };
6087    #[derive(serde::Serialize, serde::Deserialize)]
6088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6089    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
6090```solidity
6091function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
6092```*/
6093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6094    #[derive(Clone)]
6095    pub struct _hashBlsKeyCall {
6096        #[allow(missing_docs)]
6097        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
6098    }
6099    #[derive(serde::Serialize, serde::Deserialize)]
6100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6101    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
6102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6103    #[derive(Clone)]
6104    pub struct _hashBlsKeyReturn {
6105        #[allow(missing_docs)]
6106        pub _0: alloy::sol_types::private::FixedBytes<32>,
6107    }
6108    #[allow(
6109        non_camel_case_types,
6110        non_snake_case,
6111        clippy::pub_underscore_fields,
6112        clippy::style
6113    )]
6114    const _: () = {
6115        use alloy::sol_types as alloy_sol_types;
6116        {
6117            #[doc(hidden)]
6118            #[allow(dead_code)]
6119            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
6120            #[doc(hidden)]
6121            type UnderlyingRustTuple<'a> = (
6122                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
6123            );
6124            #[cfg(test)]
6125            #[allow(dead_code, unreachable_patterns)]
6126            fn _type_assertion(
6127                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6128            ) {
6129                match _t {
6130                    alloy_sol_types::private::AssertTypeEq::<
6131                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6132                    >(_) => {}
6133                }
6134            }
6135            #[automatically_derived]
6136            #[doc(hidden)]
6137            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
6138                fn from(value: _hashBlsKeyCall) -> Self {
6139                    (value.blsVK,)
6140                }
6141            }
6142            #[automatically_derived]
6143            #[doc(hidden)]
6144            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
6145                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6146                    Self { blsVK: tuple.0 }
6147                }
6148            }
6149        }
6150        {
6151            #[doc(hidden)]
6152            #[allow(dead_code)]
6153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6154            #[doc(hidden)]
6155            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6156            #[cfg(test)]
6157            #[allow(dead_code, unreachable_patterns)]
6158            fn _type_assertion(
6159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6160            ) {
6161                match _t {
6162                    alloy_sol_types::private::AssertTypeEq::<
6163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6164                    >(_) => {}
6165                }
6166            }
6167            #[automatically_derived]
6168            #[doc(hidden)]
6169            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
6170                fn from(value: _hashBlsKeyReturn) -> Self {
6171                    (value._0,)
6172                }
6173            }
6174            #[automatically_derived]
6175            #[doc(hidden)]
6176            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
6177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6178                    Self { _0: tuple.0 }
6179                }
6180            }
6181        }
6182        #[automatically_derived]
6183        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
6184            type Parameters<'a> = (BN254::G2Point,);
6185            type Token<'a> = <Self::Parameters<
6186                'a,
6187            > as alloy_sol_types::SolType>::Token<'a>;
6188            type Return = alloy::sol_types::private::FixedBytes<32>;
6189            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6190            type ReturnToken<'a> = <Self::ReturnTuple<
6191                'a,
6192            > as alloy_sol_types::SolType>::Token<'a>;
6193            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
6194            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
6195            #[inline]
6196            fn new<'a>(
6197                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6198            ) -> Self {
6199                tuple.into()
6200            }
6201            #[inline]
6202            fn tokenize(&self) -> Self::Token<'_> {
6203                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
6204            }
6205            #[inline]
6206            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6207                (
6208                    <alloy::sol_types::sol_data::FixedBytes<
6209                        32,
6210                    > as alloy_sol_types::SolType>::tokenize(ret),
6211                )
6212            }
6213            #[inline]
6214            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6215                <Self::ReturnTuple<
6216                    '_,
6217                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6218                    .map(|r| {
6219                        let r: _hashBlsKeyReturn = r.into();
6220                        r._0
6221                    })
6222            }
6223            #[inline]
6224            fn abi_decode_returns_with_config(
6225                data: &[u8],
6226                config: alloy_sol_types::abi::AbiDecoderConfig,
6227            ) -> alloy_sol_types::Result<Self::Return> {
6228                <Self::ReturnTuple<
6229                    '_,
6230                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6231                        data,
6232                        config,
6233                    )
6234                    .map(|r| {
6235                        let r: _hashBlsKeyReturn = r.into();
6236                        r._0
6237                    })
6238            }
6239            #[inline]
6240            fn abi_decode_returns_validate(
6241                data: &[u8],
6242            ) -> alloy_sol_types::Result<Self::Return> {
6243                Self::abi_decode_returns_with_config(
6244                    data,
6245                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6246                )
6247            }
6248        }
6249    };
6250    #[derive(serde::Serialize, serde::Deserialize)]
6251    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6252    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
6253```solidity
6254function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
6255```*/
6256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6257    #[derive(Clone)]
6258    pub struct blsKeysCall {
6259        #[allow(missing_docs)]
6260        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
6261    }
6262    #[derive(serde::Serialize, serde::Deserialize)]
6263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6264    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
6265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6266    #[derive(Clone)]
6267    pub struct blsKeysReturn {
6268        #[allow(missing_docs)]
6269        pub used: bool,
6270    }
6271    #[allow(
6272        non_camel_case_types,
6273        non_snake_case,
6274        clippy::pub_underscore_fields,
6275        clippy::style
6276    )]
6277    const _: () = {
6278        use alloy::sol_types as alloy_sol_types;
6279        {
6280            #[doc(hidden)]
6281            #[allow(dead_code)]
6282            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6283            #[doc(hidden)]
6284            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6285            #[cfg(test)]
6286            #[allow(dead_code, unreachable_patterns)]
6287            fn _type_assertion(
6288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6289            ) {
6290                match _t {
6291                    alloy_sol_types::private::AssertTypeEq::<
6292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6293                    >(_) => {}
6294                }
6295            }
6296            #[automatically_derived]
6297            #[doc(hidden)]
6298            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
6299                fn from(value: blsKeysCall) -> Self {
6300                    (value.blsKeyHash,)
6301                }
6302            }
6303            #[automatically_derived]
6304            #[doc(hidden)]
6305            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
6306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6307                    Self { blsKeyHash: tuple.0 }
6308                }
6309            }
6310        }
6311        {
6312            #[doc(hidden)]
6313            #[allow(dead_code)]
6314            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6315            #[doc(hidden)]
6316            type UnderlyingRustTuple<'a> = (bool,);
6317            #[cfg(test)]
6318            #[allow(dead_code, unreachable_patterns)]
6319            fn _type_assertion(
6320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6321            ) {
6322                match _t {
6323                    alloy_sol_types::private::AssertTypeEq::<
6324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6325                    >(_) => {}
6326                }
6327            }
6328            #[automatically_derived]
6329            #[doc(hidden)]
6330            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
6331                fn from(value: blsKeysReturn) -> Self {
6332                    (value.used,)
6333                }
6334            }
6335            #[automatically_derived]
6336            #[doc(hidden)]
6337            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
6338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6339                    Self { used: tuple.0 }
6340                }
6341            }
6342        }
6343        #[automatically_derived]
6344        impl alloy_sol_types::SolCall for blsKeysCall {
6345            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6346            type Token<'a> = <Self::Parameters<
6347                'a,
6348            > as alloy_sol_types::SolType>::Token<'a>;
6349            type Return = bool;
6350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6351            type ReturnToken<'a> = <Self::ReturnTuple<
6352                'a,
6353            > as alloy_sol_types::SolType>::Token<'a>;
6354            const SIGNATURE: &'static str = "blsKeys(bytes32)";
6355            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
6356            #[inline]
6357            fn new<'a>(
6358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6359            ) -> Self {
6360                tuple.into()
6361            }
6362            #[inline]
6363            fn tokenize(&self) -> Self::Token<'_> {
6364                (
6365                    <alloy::sol_types::sol_data::FixedBytes<
6366                        32,
6367                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
6368                )
6369            }
6370            #[inline]
6371            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6372                (
6373                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6374                        ret,
6375                    ),
6376                )
6377            }
6378            #[inline]
6379            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6380                <Self::ReturnTuple<
6381                    '_,
6382                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6383                    .map(|r| {
6384                        let r: blsKeysReturn = r.into();
6385                        r.used
6386                    })
6387            }
6388            #[inline]
6389            fn abi_decode_returns_with_config(
6390                data: &[u8],
6391                config: alloy_sol_types::abi::AbiDecoderConfig,
6392            ) -> alloy_sol_types::Result<Self::Return> {
6393                <Self::ReturnTuple<
6394                    '_,
6395                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6396                        data,
6397                        config,
6398                    )
6399                    .map(|r| {
6400                        let r: blsKeysReturn = r.into();
6401                        r.used
6402                    })
6403            }
6404            #[inline]
6405            fn abi_decode_returns_validate(
6406                data: &[u8],
6407            ) -> alloy_sol_types::Result<Self::Return> {
6408                Self::abi_decode_returns_with_config(
6409                    data,
6410                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6411                )
6412            }
6413        }
6414    };
6415    #[derive(serde::Serialize, serde::Deserialize)]
6416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6417    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
6418```solidity
6419function claimValidatorExit(address validator) external;
6420```*/
6421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6422    #[derive(Clone)]
6423    pub struct claimValidatorExitCall {
6424        #[allow(missing_docs)]
6425        pub validator: alloy::sol_types::private::Address,
6426    }
6427    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
6428    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6429    #[derive(Clone)]
6430    pub struct claimValidatorExitReturn {}
6431    #[allow(
6432        non_camel_case_types,
6433        non_snake_case,
6434        clippy::pub_underscore_fields,
6435        clippy::style
6436    )]
6437    const _: () = {
6438        use alloy::sol_types as alloy_sol_types;
6439        {
6440            #[doc(hidden)]
6441            #[allow(dead_code)]
6442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6443            #[doc(hidden)]
6444            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6445            #[cfg(test)]
6446            #[allow(dead_code, unreachable_patterns)]
6447            fn _type_assertion(
6448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6449            ) {
6450                match _t {
6451                    alloy_sol_types::private::AssertTypeEq::<
6452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6453                    >(_) => {}
6454                }
6455            }
6456            #[automatically_derived]
6457            #[doc(hidden)]
6458            impl ::core::convert::From<claimValidatorExitCall>
6459            for UnderlyingRustTuple<'_> {
6460                fn from(value: claimValidatorExitCall) -> Self {
6461                    (value.validator,)
6462                }
6463            }
6464            #[automatically_derived]
6465            #[doc(hidden)]
6466            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6467            for claimValidatorExitCall {
6468                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6469                    Self { validator: tuple.0 }
6470                }
6471            }
6472        }
6473        {
6474            #[doc(hidden)]
6475            #[allow(dead_code)]
6476            type UnderlyingSolTuple<'a> = ();
6477            #[doc(hidden)]
6478            type UnderlyingRustTuple<'a> = ();
6479            #[cfg(test)]
6480            #[allow(dead_code, unreachable_patterns)]
6481            fn _type_assertion(
6482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6483            ) {
6484                match _t {
6485                    alloy_sol_types::private::AssertTypeEq::<
6486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6487                    >(_) => {}
6488                }
6489            }
6490            #[automatically_derived]
6491            #[doc(hidden)]
6492            impl ::core::convert::From<claimValidatorExitReturn>
6493            for UnderlyingRustTuple<'_> {
6494                fn from(value: claimValidatorExitReturn) -> Self {
6495                    ()
6496                }
6497            }
6498            #[automatically_derived]
6499            #[doc(hidden)]
6500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6501            for claimValidatorExitReturn {
6502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6503                    Self {}
6504                }
6505            }
6506        }
6507        impl claimValidatorExitReturn {
6508            fn _tokenize(
6509                &self,
6510            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6511                ()
6512            }
6513        }
6514        #[automatically_derived]
6515        impl alloy_sol_types::SolCall for claimValidatorExitCall {
6516            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6517            type Token<'a> = <Self::Parameters<
6518                'a,
6519            > as alloy_sol_types::SolType>::Token<'a>;
6520            type Return = claimValidatorExitReturn;
6521            type ReturnTuple<'a> = ();
6522            type ReturnToken<'a> = <Self::ReturnTuple<
6523                'a,
6524            > as alloy_sol_types::SolType>::Token<'a>;
6525            const SIGNATURE: &'static str = "claimValidatorExit(address)";
6526            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
6527            #[inline]
6528            fn new<'a>(
6529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6530            ) -> Self {
6531                tuple.into()
6532            }
6533            #[inline]
6534            fn tokenize(&self) -> Self::Token<'_> {
6535                (
6536                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6537                        &self.validator,
6538                    ),
6539                )
6540            }
6541            #[inline]
6542            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6543                claimValidatorExitReturn::_tokenize(ret)
6544            }
6545            #[inline]
6546            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6547                <Self::ReturnTuple<
6548                    '_,
6549                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6550                    .map(Into::into)
6551            }
6552            #[inline]
6553            fn abi_decode_returns_with_config(
6554                data: &[u8],
6555                config: alloy_sol_types::abi::AbiDecoderConfig,
6556            ) -> alloy_sol_types::Result<Self::Return> {
6557                <Self::ReturnTuple<
6558                    '_,
6559                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6560                        data,
6561                        config,
6562                    )
6563                    .map(Into::into)
6564            }
6565            #[inline]
6566            fn abi_decode_returns_validate(
6567                data: &[u8],
6568            ) -> alloy_sol_types::Result<Self::Return> {
6569                Self::abi_decode_returns_with_config(
6570                    data,
6571                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6572                )
6573            }
6574        }
6575    };
6576    #[derive(serde::Serialize, serde::Deserialize)]
6577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6578    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
6579```solidity
6580function claimWithdrawal(address validator) external;
6581```*/
6582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6583    #[derive(Clone)]
6584    pub struct claimWithdrawalCall {
6585        #[allow(missing_docs)]
6586        pub validator: alloy::sol_types::private::Address,
6587    }
6588    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
6589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6590    #[derive(Clone)]
6591    pub struct claimWithdrawalReturn {}
6592    #[allow(
6593        non_camel_case_types,
6594        non_snake_case,
6595        clippy::pub_underscore_fields,
6596        clippy::style
6597    )]
6598    const _: () = {
6599        use alloy::sol_types as alloy_sol_types;
6600        {
6601            #[doc(hidden)]
6602            #[allow(dead_code)]
6603            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6604            #[doc(hidden)]
6605            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6606            #[cfg(test)]
6607            #[allow(dead_code, unreachable_patterns)]
6608            fn _type_assertion(
6609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6610            ) {
6611                match _t {
6612                    alloy_sol_types::private::AssertTypeEq::<
6613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6614                    >(_) => {}
6615                }
6616            }
6617            #[automatically_derived]
6618            #[doc(hidden)]
6619            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
6620                fn from(value: claimWithdrawalCall) -> Self {
6621                    (value.validator,)
6622                }
6623            }
6624            #[automatically_derived]
6625            #[doc(hidden)]
6626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
6627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6628                    Self { validator: tuple.0 }
6629                }
6630            }
6631        }
6632        {
6633            #[doc(hidden)]
6634            #[allow(dead_code)]
6635            type UnderlyingSolTuple<'a> = ();
6636            #[doc(hidden)]
6637            type UnderlyingRustTuple<'a> = ();
6638            #[cfg(test)]
6639            #[allow(dead_code, unreachable_patterns)]
6640            fn _type_assertion(
6641                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6642            ) {
6643                match _t {
6644                    alloy_sol_types::private::AssertTypeEq::<
6645                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6646                    >(_) => {}
6647                }
6648            }
6649            #[automatically_derived]
6650            #[doc(hidden)]
6651            impl ::core::convert::From<claimWithdrawalReturn>
6652            for UnderlyingRustTuple<'_> {
6653                fn from(value: claimWithdrawalReturn) -> Self {
6654                    ()
6655                }
6656            }
6657            #[automatically_derived]
6658            #[doc(hidden)]
6659            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6660            for claimWithdrawalReturn {
6661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6662                    Self {}
6663                }
6664            }
6665        }
6666        impl claimWithdrawalReturn {
6667            fn _tokenize(
6668                &self,
6669            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6670                ()
6671            }
6672        }
6673        #[automatically_derived]
6674        impl alloy_sol_types::SolCall for claimWithdrawalCall {
6675            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6676            type Token<'a> = <Self::Parameters<
6677                'a,
6678            > as alloy_sol_types::SolType>::Token<'a>;
6679            type Return = claimWithdrawalReturn;
6680            type ReturnTuple<'a> = ();
6681            type ReturnToken<'a> = <Self::ReturnTuple<
6682                'a,
6683            > as alloy_sol_types::SolType>::Token<'a>;
6684            const SIGNATURE: &'static str = "claimWithdrawal(address)";
6685            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
6686            #[inline]
6687            fn new<'a>(
6688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6689            ) -> Self {
6690                tuple.into()
6691            }
6692            #[inline]
6693            fn tokenize(&self) -> Self::Token<'_> {
6694                (
6695                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6696                        &self.validator,
6697                    ),
6698                )
6699            }
6700            #[inline]
6701            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6702                claimWithdrawalReturn::_tokenize(ret)
6703            }
6704            #[inline]
6705            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6706                <Self::ReturnTuple<
6707                    '_,
6708                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6709                    .map(Into::into)
6710            }
6711            #[inline]
6712            fn abi_decode_returns_with_config(
6713                data: &[u8],
6714                config: alloy_sol_types::abi::AbiDecoderConfig,
6715            ) -> alloy_sol_types::Result<Self::Return> {
6716                <Self::ReturnTuple<
6717                    '_,
6718                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6719                        data,
6720                        config,
6721                    )
6722                    .map(Into::into)
6723            }
6724            #[inline]
6725            fn abi_decode_returns_validate(
6726                data: &[u8],
6727            ) -> alloy_sol_types::Result<Self::Return> {
6728                Self::abi_decode_returns_with_config(
6729                    data,
6730                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6731                )
6732            }
6733        }
6734    };
6735    #[derive(serde::Serialize, serde::Deserialize)]
6736    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6737    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
6738```solidity
6739function delegate(address validator, uint256 amount) external;
6740```*/
6741    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6742    #[derive(Clone)]
6743    pub struct delegateCall {
6744        #[allow(missing_docs)]
6745        pub validator: alloy::sol_types::private::Address,
6746        #[allow(missing_docs)]
6747        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6748    }
6749    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
6750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6751    #[derive(Clone)]
6752    pub struct delegateReturn {}
6753    #[allow(
6754        non_camel_case_types,
6755        non_snake_case,
6756        clippy::pub_underscore_fields,
6757        clippy::style
6758    )]
6759    const _: () = {
6760        use alloy::sol_types as alloy_sol_types;
6761        {
6762            #[doc(hidden)]
6763            #[allow(dead_code)]
6764            type UnderlyingSolTuple<'a> = (
6765                alloy::sol_types::sol_data::Address,
6766                alloy::sol_types::sol_data::Uint<256>,
6767            );
6768            #[doc(hidden)]
6769            type UnderlyingRustTuple<'a> = (
6770                alloy::sol_types::private::Address,
6771                alloy::sol_types::private::primitives::aliases::U256,
6772            );
6773            #[cfg(test)]
6774            #[allow(dead_code, unreachable_patterns)]
6775            fn _type_assertion(
6776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6777            ) {
6778                match _t {
6779                    alloy_sol_types::private::AssertTypeEq::<
6780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6781                    >(_) => {}
6782                }
6783            }
6784            #[automatically_derived]
6785            #[doc(hidden)]
6786            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
6787                fn from(value: delegateCall) -> Self {
6788                    (value.validator, value.amount)
6789                }
6790            }
6791            #[automatically_derived]
6792            #[doc(hidden)]
6793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
6794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6795                    Self {
6796                        validator: tuple.0,
6797                        amount: tuple.1,
6798                    }
6799                }
6800            }
6801        }
6802        {
6803            #[doc(hidden)]
6804            #[allow(dead_code)]
6805            type UnderlyingSolTuple<'a> = ();
6806            #[doc(hidden)]
6807            type UnderlyingRustTuple<'a> = ();
6808            #[cfg(test)]
6809            #[allow(dead_code, unreachable_patterns)]
6810            fn _type_assertion(
6811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6812            ) {
6813                match _t {
6814                    alloy_sol_types::private::AssertTypeEq::<
6815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6816                    >(_) => {}
6817                }
6818            }
6819            #[automatically_derived]
6820            #[doc(hidden)]
6821            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
6822                fn from(value: delegateReturn) -> Self {
6823                    ()
6824                }
6825            }
6826            #[automatically_derived]
6827            #[doc(hidden)]
6828            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
6829                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6830                    Self {}
6831                }
6832            }
6833        }
6834        impl delegateReturn {
6835            fn _tokenize(
6836                &self,
6837            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6838                ()
6839            }
6840        }
6841        #[automatically_derived]
6842        impl alloy_sol_types::SolCall for delegateCall {
6843            type Parameters<'a> = (
6844                alloy::sol_types::sol_data::Address,
6845                alloy::sol_types::sol_data::Uint<256>,
6846            );
6847            type Token<'a> = <Self::Parameters<
6848                'a,
6849            > as alloy_sol_types::SolType>::Token<'a>;
6850            type Return = delegateReturn;
6851            type ReturnTuple<'a> = ();
6852            type ReturnToken<'a> = <Self::ReturnTuple<
6853                'a,
6854            > as alloy_sol_types::SolType>::Token<'a>;
6855            const SIGNATURE: &'static str = "delegate(address,uint256)";
6856            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
6857            #[inline]
6858            fn new<'a>(
6859                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6860            ) -> Self {
6861                tuple.into()
6862            }
6863            #[inline]
6864            fn tokenize(&self) -> Self::Token<'_> {
6865                (
6866                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6867                        &self.validator,
6868                    ),
6869                    <alloy::sol_types::sol_data::Uint<
6870                        256,
6871                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
6872                )
6873            }
6874            #[inline]
6875            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6876                delegateReturn::_tokenize(ret)
6877            }
6878            #[inline]
6879            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6880                <Self::ReturnTuple<
6881                    '_,
6882                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6883                    .map(Into::into)
6884            }
6885            #[inline]
6886            fn abi_decode_returns_with_config(
6887                data: &[u8],
6888                config: alloy_sol_types::abi::AbiDecoderConfig,
6889            ) -> alloy_sol_types::Result<Self::Return> {
6890                <Self::ReturnTuple<
6891                    '_,
6892                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6893                        data,
6894                        config,
6895                    )
6896                    .map(Into::into)
6897            }
6898            #[inline]
6899            fn abi_decode_returns_validate(
6900                data: &[u8],
6901            ) -> alloy_sol_types::Result<Self::Return> {
6902                Self::abi_decode_returns_with_config(
6903                    data,
6904                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6905                )
6906            }
6907        }
6908    };
6909    #[derive(serde::Serialize, serde::Deserialize)]
6910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6911    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
6912```solidity
6913function delegations(address validator, address delegator) external view returns (uint256 amount);
6914```*/
6915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6916    #[derive(Clone)]
6917    pub struct delegationsCall {
6918        #[allow(missing_docs)]
6919        pub validator: alloy::sol_types::private::Address,
6920        #[allow(missing_docs)]
6921        pub delegator: alloy::sol_types::private::Address,
6922    }
6923    #[derive(serde::Serialize, serde::Deserialize)]
6924    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6925    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
6926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6927    #[derive(Clone)]
6928    pub struct delegationsReturn {
6929        #[allow(missing_docs)]
6930        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6931    }
6932    #[allow(
6933        non_camel_case_types,
6934        non_snake_case,
6935        clippy::pub_underscore_fields,
6936        clippy::style
6937    )]
6938    const _: () = {
6939        use alloy::sol_types as alloy_sol_types;
6940        {
6941            #[doc(hidden)]
6942            #[allow(dead_code)]
6943            type UnderlyingSolTuple<'a> = (
6944                alloy::sol_types::sol_data::Address,
6945                alloy::sol_types::sol_data::Address,
6946            );
6947            #[doc(hidden)]
6948            type UnderlyingRustTuple<'a> = (
6949                alloy::sol_types::private::Address,
6950                alloy::sol_types::private::Address,
6951            );
6952            #[cfg(test)]
6953            #[allow(dead_code, unreachable_patterns)]
6954            fn _type_assertion(
6955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6956            ) {
6957                match _t {
6958                    alloy_sol_types::private::AssertTypeEq::<
6959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6960                    >(_) => {}
6961                }
6962            }
6963            #[automatically_derived]
6964            #[doc(hidden)]
6965            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
6966                fn from(value: delegationsCall) -> Self {
6967                    (value.validator, value.delegator)
6968                }
6969            }
6970            #[automatically_derived]
6971            #[doc(hidden)]
6972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
6973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6974                    Self {
6975                        validator: tuple.0,
6976                        delegator: tuple.1,
6977                    }
6978                }
6979            }
6980        }
6981        {
6982            #[doc(hidden)]
6983            #[allow(dead_code)]
6984            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6985            #[doc(hidden)]
6986            type UnderlyingRustTuple<'a> = (
6987                alloy::sol_types::private::primitives::aliases::U256,
6988            );
6989            #[cfg(test)]
6990            #[allow(dead_code, unreachable_patterns)]
6991            fn _type_assertion(
6992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6993            ) {
6994                match _t {
6995                    alloy_sol_types::private::AssertTypeEq::<
6996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6997                    >(_) => {}
6998                }
6999            }
7000            #[automatically_derived]
7001            #[doc(hidden)]
7002            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
7003                fn from(value: delegationsReturn) -> Self {
7004                    (value.amount,)
7005                }
7006            }
7007            #[automatically_derived]
7008            #[doc(hidden)]
7009            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
7010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7011                    Self { amount: tuple.0 }
7012                }
7013            }
7014        }
7015        #[automatically_derived]
7016        impl alloy_sol_types::SolCall for delegationsCall {
7017            type Parameters<'a> = (
7018                alloy::sol_types::sol_data::Address,
7019                alloy::sol_types::sol_data::Address,
7020            );
7021            type Token<'a> = <Self::Parameters<
7022                'a,
7023            > as alloy_sol_types::SolType>::Token<'a>;
7024            type Return = alloy::sol_types::private::primitives::aliases::U256;
7025            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7026            type ReturnToken<'a> = <Self::ReturnTuple<
7027                'a,
7028            > as alloy_sol_types::SolType>::Token<'a>;
7029            const SIGNATURE: &'static str = "delegations(address,address)";
7030            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
7031            #[inline]
7032            fn new<'a>(
7033                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7034            ) -> Self {
7035                tuple.into()
7036            }
7037            #[inline]
7038            fn tokenize(&self) -> Self::Token<'_> {
7039                (
7040                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7041                        &self.validator,
7042                    ),
7043                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7044                        &self.delegator,
7045                    ),
7046                )
7047            }
7048            #[inline]
7049            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7050                (
7051                    <alloy::sol_types::sol_data::Uint<
7052                        256,
7053                    > as alloy_sol_types::SolType>::tokenize(ret),
7054                )
7055            }
7056            #[inline]
7057            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7058                <Self::ReturnTuple<
7059                    '_,
7060                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7061                    .map(|r| {
7062                        let r: delegationsReturn = r.into();
7063                        r.amount
7064                    })
7065            }
7066            #[inline]
7067            fn abi_decode_returns_with_config(
7068                data: &[u8],
7069                config: alloy_sol_types::abi::AbiDecoderConfig,
7070            ) -> alloy_sol_types::Result<Self::Return> {
7071                <Self::ReturnTuple<
7072                    '_,
7073                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7074                        data,
7075                        config,
7076                    )
7077                    .map(|r| {
7078                        let r: delegationsReturn = r.into();
7079                        r.amount
7080                    })
7081            }
7082            #[inline]
7083            fn abi_decode_returns_validate(
7084                data: &[u8],
7085            ) -> alloy_sol_types::Result<Self::Return> {
7086                Self::abi_decode_returns_with_config(
7087                    data,
7088                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7089                )
7090            }
7091        }
7092    };
7093    #[derive(serde::Serialize, serde::Deserialize)]
7094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7095    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
7096```solidity
7097function deregisterValidator() external;
7098```*/
7099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7100    #[derive(Clone)]
7101    pub struct deregisterValidatorCall;
7102    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
7103    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7104    #[derive(Clone)]
7105    pub struct deregisterValidatorReturn {}
7106    #[allow(
7107        non_camel_case_types,
7108        non_snake_case,
7109        clippy::pub_underscore_fields,
7110        clippy::style
7111    )]
7112    const _: () = {
7113        use alloy::sol_types as alloy_sol_types;
7114        {
7115            #[doc(hidden)]
7116            #[allow(dead_code)]
7117            type UnderlyingSolTuple<'a> = ();
7118            #[doc(hidden)]
7119            type UnderlyingRustTuple<'a> = ();
7120            #[cfg(test)]
7121            #[allow(dead_code, unreachable_patterns)]
7122            fn _type_assertion(
7123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7124            ) {
7125                match _t {
7126                    alloy_sol_types::private::AssertTypeEq::<
7127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7128                    >(_) => {}
7129                }
7130            }
7131            #[automatically_derived]
7132            #[doc(hidden)]
7133            impl ::core::convert::From<deregisterValidatorCall>
7134            for UnderlyingRustTuple<'_> {
7135                fn from(value: deregisterValidatorCall) -> Self {
7136                    ()
7137                }
7138            }
7139            #[automatically_derived]
7140            #[doc(hidden)]
7141            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7142            for deregisterValidatorCall {
7143                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7144                    Self
7145                }
7146            }
7147        }
7148        {
7149            #[doc(hidden)]
7150            #[allow(dead_code)]
7151            type UnderlyingSolTuple<'a> = ();
7152            #[doc(hidden)]
7153            type UnderlyingRustTuple<'a> = ();
7154            #[cfg(test)]
7155            #[allow(dead_code, unreachable_patterns)]
7156            fn _type_assertion(
7157                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7158            ) {
7159                match _t {
7160                    alloy_sol_types::private::AssertTypeEq::<
7161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7162                    >(_) => {}
7163                }
7164            }
7165            #[automatically_derived]
7166            #[doc(hidden)]
7167            impl ::core::convert::From<deregisterValidatorReturn>
7168            for UnderlyingRustTuple<'_> {
7169                fn from(value: deregisterValidatorReturn) -> Self {
7170                    ()
7171                }
7172            }
7173            #[automatically_derived]
7174            #[doc(hidden)]
7175            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7176            for deregisterValidatorReturn {
7177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7178                    Self {}
7179                }
7180            }
7181        }
7182        impl deregisterValidatorReturn {
7183            fn _tokenize(
7184                &self,
7185            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7186                ()
7187            }
7188        }
7189        #[automatically_derived]
7190        impl alloy_sol_types::SolCall for deregisterValidatorCall {
7191            type Parameters<'a> = ();
7192            type Token<'a> = <Self::Parameters<
7193                'a,
7194            > as alloy_sol_types::SolType>::Token<'a>;
7195            type Return = deregisterValidatorReturn;
7196            type ReturnTuple<'a> = ();
7197            type ReturnToken<'a> = <Self::ReturnTuple<
7198                'a,
7199            > as alloy_sol_types::SolType>::Token<'a>;
7200            const SIGNATURE: &'static str = "deregisterValidator()";
7201            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
7202            #[inline]
7203            fn new<'a>(
7204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7205            ) -> Self {
7206                tuple.into()
7207            }
7208            #[inline]
7209            fn tokenize(&self) -> Self::Token<'_> {
7210                ()
7211            }
7212            #[inline]
7213            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7214                deregisterValidatorReturn::_tokenize(ret)
7215            }
7216            #[inline]
7217            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7218                <Self::ReturnTuple<
7219                    '_,
7220                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7221                    .map(Into::into)
7222            }
7223            #[inline]
7224            fn abi_decode_returns_with_config(
7225                data: &[u8],
7226                config: alloy_sol_types::abi::AbiDecoderConfig,
7227            ) -> alloy_sol_types::Result<Self::Return> {
7228                <Self::ReturnTuple<
7229                    '_,
7230                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7231                        data,
7232                        config,
7233                    )
7234                    .map(Into::into)
7235            }
7236            #[inline]
7237            fn abi_decode_returns_validate(
7238                data: &[u8],
7239            ) -> alloy_sol_types::Result<Self::Return> {
7240                Self::abi_decode_returns_with_config(
7241                    data,
7242                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7243                )
7244            }
7245        }
7246    };
7247    #[derive(serde::Serialize, serde::Deserialize)]
7248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7249    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
7250```solidity
7251function exitEscrowPeriod() external view returns (uint256);
7252```*/
7253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7254    #[derive(Clone)]
7255    pub struct exitEscrowPeriodCall;
7256    #[derive(serde::Serialize, serde::Deserialize)]
7257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7258    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
7259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7260    #[derive(Clone)]
7261    pub struct exitEscrowPeriodReturn {
7262        #[allow(missing_docs)]
7263        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7264    }
7265    #[allow(
7266        non_camel_case_types,
7267        non_snake_case,
7268        clippy::pub_underscore_fields,
7269        clippy::style
7270    )]
7271    const _: () = {
7272        use alloy::sol_types as alloy_sol_types;
7273        {
7274            #[doc(hidden)]
7275            #[allow(dead_code)]
7276            type UnderlyingSolTuple<'a> = ();
7277            #[doc(hidden)]
7278            type UnderlyingRustTuple<'a> = ();
7279            #[cfg(test)]
7280            #[allow(dead_code, unreachable_patterns)]
7281            fn _type_assertion(
7282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7283            ) {
7284                match _t {
7285                    alloy_sol_types::private::AssertTypeEq::<
7286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7287                    >(_) => {}
7288                }
7289            }
7290            #[automatically_derived]
7291            #[doc(hidden)]
7292            impl ::core::convert::From<exitEscrowPeriodCall>
7293            for UnderlyingRustTuple<'_> {
7294                fn from(value: exitEscrowPeriodCall) -> Self {
7295                    ()
7296                }
7297            }
7298            #[automatically_derived]
7299            #[doc(hidden)]
7300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7301            for exitEscrowPeriodCall {
7302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7303                    Self
7304                }
7305            }
7306        }
7307        {
7308            #[doc(hidden)]
7309            #[allow(dead_code)]
7310            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7311            #[doc(hidden)]
7312            type UnderlyingRustTuple<'a> = (
7313                alloy::sol_types::private::primitives::aliases::U256,
7314            );
7315            #[cfg(test)]
7316            #[allow(dead_code, unreachable_patterns)]
7317            fn _type_assertion(
7318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7319            ) {
7320                match _t {
7321                    alloy_sol_types::private::AssertTypeEq::<
7322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7323                    >(_) => {}
7324                }
7325            }
7326            #[automatically_derived]
7327            #[doc(hidden)]
7328            impl ::core::convert::From<exitEscrowPeriodReturn>
7329            for UnderlyingRustTuple<'_> {
7330                fn from(value: exitEscrowPeriodReturn) -> Self {
7331                    (value._0,)
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7337            for exitEscrowPeriodReturn {
7338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7339                    Self { _0: tuple.0 }
7340                }
7341            }
7342        }
7343        #[automatically_derived]
7344        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
7345            type Parameters<'a> = ();
7346            type Token<'a> = <Self::Parameters<
7347                'a,
7348            > as alloy_sol_types::SolType>::Token<'a>;
7349            type Return = alloy::sol_types::private::primitives::aliases::U256;
7350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7351            type ReturnToken<'a> = <Self::ReturnTuple<
7352                'a,
7353            > as alloy_sol_types::SolType>::Token<'a>;
7354            const SIGNATURE: &'static str = "exitEscrowPeriod()";
7355            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
7356            #[inline]
7357            fn new<'a>(
7358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7359            ) -> Self {
7360                tuple.into()
7361            }
7362            #[inline]
7363            fn tokenize(&self) -> Self::Token<'_> {
7364                ()
7365            }
7366            #[inline]
7367            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7368                (
7369                    <alloy::sol_types::sol_data::Uint<
7370                        256,
7371                    > as alloy_sol_types::SolType>::tokenize(ret),
7372                )
7373            }
7374            #[inline]
7375            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7376                <Self::ReturnTuple<
7377                    '_,
7378                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7379                    .map(|r| {
7380                        let r: exitEscrowPeriodReturn = r.into();
7381                        r._0
7382                    })
7383            }
7384            #[inline]
7385            fn abi_decode_returns_with_config(
7386                data: &[u8],
7387                config: alloy_sol_types::abi::AbiDecoderConfig,
7388            ) -> alloy_sol_types::Result<Self::Return> {
7389                <Self::ReturnTuple<
7390                    '_,
7391                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7392                        data,
7393                        config,
7394                    )
7395                    .map(|r| {
7396                        let r: exitEscrowPeriodReturn = r.into();
7397                        r._0
7398                    })
7399            }
7400            #[inline]
7401            fn abi_decode_returns_validate(
7402                data: &[u8],
7403            ) -> alloy_sol_types::Result<Self::Return> {
7404                Self::abi_decode_returns_with_config(
7405                    data,
7406                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7407                )
7408            }
7409        }
7410    };
7411    #[derive(serde::Serialize, serde::Deserialize)]
7412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7413    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7414```solidity
7415function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7416```*/
7417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7418    #[derive(Clone)]
7419    pub struct getVersionCall;
7420    #[derive(serde::Serialize, serde::Deserialize)]
7421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7422    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7424    #[derive(Clone)]
7425    pub struct getVersionReturn {
7426        #[allow(missing_docs)]
7427        pub majorVersion: u8,
7428        #[allow(missing_docs)]
7429        pub minorVersion: u8,
7430        #[allow(missing_docs)]
7431        pub patchVersion: u8,
7432    }
7433    #[allow(
7434        non_camel_case_types,
7435        non_snake_case,
7436        clippy::pub_underscore_fields,
7437        clippy::style
7438    )]
7439    const _: () = {
7440        use alloy::sol_types as alloy_sol_types;
7441        {
7442            #[doc(hidden)]
7443            #[allow(dead_code)]
7444            type UnderlyingSolTuple<'a> = ();
7445            #[doc(hidden)]
7446            type UnderlyingRustTuple<'a> = ();
7447            #[cfg(test)]
7448            #[allow(dead_code, unreachable_patterns)]
7449            fn _type_assertion(
7450                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7451            ) {
7452                match _t {
7453                    alloy_sol_types::private::AssertTypeEq::<
7454                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7455                    >(_) => {}
7456                }
7457            }
7458            #[automatically_derived]
7459            #[doc(hidden)]
7460            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7461                fn from(value: getVersionCall) -> Self {
7462                    ()
7463                }
7464            }
7465            #[automatically_derived]
7466            #[doc(hidden)]
7467            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7468                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7469                    Self
7470                }
7471            }
7472        }
7473        {
7474            #[doc(hidden)]
7475            #[allow(dead_code)]
7476            type UnderlyingSolTuple<'a> = (
7477                alloy::sol_types::sol_data::Uint<8>,
7478                alloy::sol_types::sol_data::Uint<8>,
7479                alloy::sol_types::sol_data::Uint<8>,
7480            );
7481            #[doc(hidden)]
7482            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7483            #[cfg(test)]
7484            #[allow(dead_code, unreachable_patterns)]
7485            fn _type_assertion(
7486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7487            ) {
7488                match _t {
7489                    alloy_sol_types::private::AssertTypeEq::<
7490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7491                    >(_) => {}
7492                }
7493            }
7494            #[automatically_derived]
7495            #[doc(hidden)]
7496            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7497                fn from(value: getVersionReturn) -> Self {
7498                    (value.majorVersion, value.minorVersion, value.patchVersion)
7499                }
7500            }
7501            #[automatically_derived]
7502            #[doc(hidden)]
7503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7505                    Self {
7506                        majorVersion: tuple.0,
7507                        minorVersion: tuple.1,
7508                        patchVersion: tuple.2,
7509                    }
7510                }
7511            }
7512        }
7513        impl getVersionReturn {
7514            fn _tokenize(
7515                &self,
7516            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7517                (
7518                    <alloy::sol_types::sol_data::Uint<
7519                        8,
7520                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
7521                    <alloy::sol_types::sol_data::Uint<
7522                        8,
7523                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
7524                    <alloy::sol_types::sol_data::Uint<
7525                        8,
7526                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
7527                )
7528            }
7529        }
7530        #[automatically_derived]
7531        impl alloy_sol_types::SolCall for getVersionCall {
7532            type Parameters<'a> = ();
7533            type Token<'a> = <Self::Parameters<
7534                'a,
7535            > as alloy_sol_types::SolType>::Token<'a>;
7536            type Return = getVersionReturn;
7537            type ReturnTuple<'a> = (
7538                alloy::sol_types::sol_data::Uint<8>,
7539                alloy::sol_types::sol_data::Uint<8>,
7540                alloy::sol_types::sol_data::Uint<8>,
7541            );
7542            type ReturnToken<'a> = <Self::ReturnTuple<
7543                'a,
7544            > as alloy_sol_types::SolType>::Token<'a>;
7545            const SIGNATURE: &'static str = "getVersion()";
7546            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7547            #[inline]
7548            fn new<'a>(
7549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7550            ) -> Self {
7551                tuple.into()
7552            }
7553            #[inline]
7554            fn tokenize(&self) -> Self::Token<'_> {
7555                ()
7556            }
7557            #[inline]
7558            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7559                getVersionReturn::_tokenize(ret)
7560            }
7561            #[inline]
7562            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7563                <Self::ReturnTuple<
7564                    '_,
7565                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7566                    .map(Into::into)
7567            }
7568            #[inline]
7569            fn abi_decode_returns_with_config(
7570                data: &[u8],
7571                config: alloy_sol_types::abi::AbiDecoderConfig,
7572            ) -> alloy_sol_types::Result<Self::Return> {
7573                <Self::ReturnTuple<
7574                    '_,
7575                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7576                        data,
7577                        config,
7578                    )
7579                    .map(Into::into)
7580            }
7581            #[inline]
7582            fn abi_decode_returns_validate(
7583                data: &[u8],
7584            ) -> alloy_sol_types::Result<Self::Return> {
7585                Self::abi_decode_returns_with_config(
7586                    data,
7587                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7588                )
7589            }
7590        }
7591    };
7592    #[derive(serde::Serialize, serde::Deserialize)]
7593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7594    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
7595```solidity
7596function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
7597```*/
7598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7599    #[derive(Clone)]
7600    pub struct initializeCall {
7601        #[allow(missing_docs)]
7602        pub _tokenAddress: alloy::sol_types::private::Address,
7603        #[allow(missing_docs)]
7604        pub _lightClientAddress: alloy::sol_types::private::Address,
7605        #[allow(missing_docs)]
7606        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
7607        #[allow(missing_docs)]
7608        pub _timelock: alloy::sol_types::private::Address,
7609    }
7610    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
7611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7612    #[derive(Clone)]
7613    pub struct initializeReturn {}
7614    #[allow(
7615        non_camel_case_types,
7616        non_snake_case,
7617        clippy::pub_underscore_fields,
7618        clippy::style
7619    )]
7620    const _: () = {
7621        use alloy::sol_types as alloy_sol_types;
7622        {
7623            #[doc(hidden)]
7624            #[allow(dead_code)]
7625            type UnderlyingSolTuple<'a> = (
7626                alloy::sol_types::sol_data::Address,
7627                alloy::sol_types::sol_data::Address,
7628                alloy::sol_types::sol_data::Uint<256>,
7629                alloy::sol_types::sol_data::Address,
7630            );
7631            #[doc(hidden)]
7632            type UnderlyingRustTuple<'a> = (
7633                alloy::sol_types::private::Address,
7634                alloy::sol_types::private::Address,
7635                alloy::sol_types::private::primitives::aliases::U256,
7636                alloy::sol_types::private::Address,
7637            );
7638            #[cfg(test)]
7639            #[allow(dead_code, unreachable_patterns)]
7640            fn _type_assertion(
7641                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7642            ) {
7643                match _t {
7644                    alloy_sol_types::private::AssertTypeEq::<
7645                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7646                    >(_) => {}
7647                }
7648            }
7649            #[automatically_derived]
7650            #[doc(hidden)]
7651            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7652                fn from(value: initializeCall) -> Self {
7653                    (
7654                        value._tokenAddress,
7655                        value._lightClientAddress,
7656                        value._exitEscrowPeriod,
7657                        value._timelock,
7658                    )
7659                }
7660            }
7661            #[automatically_derived]
7662            #[doc(hidden)]
7663            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7665                    Self {
7666                        _tokenAddress: tuple.0,
7667                        _lightClientAddress: tuple.1,
7668                        _exitEscrowPeriod: tuple.2,
7669                        _timelock: tuple.3,
7670                    }
7671                }
7672            }
7673        }
7674        {
7675            #[doc(hidden)]
7676            #[allow(dead_code)]
7677            type UnderlyingSolTuple<'a> = ();
7678            #[doc(hidden)]
7679            type UnderlyingRustTuple<'a> = ();
7680            #[cfg(test)]
7681            #[allow(dead_code, unreachable_patterns)]
7682            fn _type_assertion(
7683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7684            ) {
7685                match _t {
7686                    alloy_sol_types::private::AssertTypeEq::<
7687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7688                    >(_) => {}
7689                }
7690            }
7691            #[automatically_derived]
7692            #[doc(hidden)]
7693            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7694                fn from(value: initializeReturn) -> Self {
7695                    ()
7696                }
7697            }
7698            #[automatically_derived]
7699            #[doc(hidden)]
7700            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7702                    Self {}
7703                }
7704            }
7705        }
7706        impl initializeReturn {
7707            fn _tokenize(
7708                &self,
7709            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7710                ()
7711            }
7712        }
7713        #[automatically_derived]
7714        impl alloy_sol_types::SolCall for initializeCall {
7715            type Parameters<'a> = (
7716                alloy::sol_types::sol_data::Address,
7717                alloy::sol_types::sol_data::Address,
7718                alloy::sol_types::sol_data::Uint<256>,
7719                alloy::sol_types::sol_data::Address,
7720            );
7721            type Token<'a> = <Self::Parameters<
7722                'a,
7723            > as alloy_sol_types::SolType>::Token<'a>;
7724            type Return = initializeReturn;
7725            type ReturnTuple<'a> = ();
7726            type ReturnToken<'a> = <Self::ReturnTuple<
7727                'a,
7728            > as alloy_sol_types::SolType>::Token<'a>;
7729            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
7730            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
7731            #[inline]
7732            fn new<'a>(
7733                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7734            ) -> Self {
7735                tuple.into()
7736            }
7737            #[inline]
7738            fn tokenize(&self) -> Self::Token<'_> {
7739                (
7740                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7741                        &self._tokenAddress,
7742                    ),
7743                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7744                        &self._lightClientAddress,
7745                    ),
7746                    <alloy::sol_types::sol_data::Uint<
7747                        256,
7748                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
7749                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7750                        &self._timelock,
7751                    ),
7752                )
7753            }
7754            #[inline]
7755            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7756                initializeReturn::_tokenize(ret)
7757            }
7758            #[inline]
7759            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7760                <Self::ReturnTuple<
7761                    '_,
7762                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7763                    .map(Into::into)
7764            }
7765            #[inline]
7766            fn abi_decode_returns_with_config(
7767                data: &[u8],
7768                config: alloy_sol_types::abi::AbiDecoderConfig,
7769            ) -> alloy_sol_types::Result<Self::Return> {
7770                <Self::ReturnTuple<
7771                    '_,
7772                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7773                        data,
7774                        config,
7775                    )
7776                    .map(Into::into)
7777            }
7778            #[inline]
7779            fn abi_decode_returns_validate(
7780                data: &[u8],
7781            ) -> alloy_sol_types::Result<Self::Return> {
7782                Self::abi_decode_returns_with_config(
7783                    data,
7784                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7785                )
7786            }
7787        }
7788    };
7789    #[derive(serde::Serialize, serde::Deserialize)]
7790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7791    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
7792```solidity
7793function initializedAtBlock() external view returns (uint256);
7794```*/
7795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7796    #[derive(Clone)]
7797    pub struct initializedAtBlockCall;
7798    #[derive(serde::Serialize, serde::Deserialize)]
7799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7800    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
7801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7802    #[derive(Clone)]
7803    pub struct initializedAtBlockReturn {
7804        #[allow(missing_docs)]
7805        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7806    }
7807    #[allow(
7808        non_camel_case_types,
7809        non_snake_case,
7810        clippy::pub_underscore_fields,
7811        clippy::style
7812    )]
7813    const _: () = {
7814        use alloy::sol_types as alloy_sol_types;
7815        {
7816            #[doc(hidden)]
7817            #[allow(dead_code)]
7818            type UnderlyingSolTuple<'a> = ();
7819            #[doc(hidden)]
7820            type UnderlyingRustTuple<'a> = ();
7821            #[cfg(test)]
7822            #[allow(dead_code, unreachable_patterns)]
7823            fn _type_assertion(
7824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7825            ) {
7826                match _t {
7827                    alloy_sol_types::private::AssertTypeEq::<
7828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7829                    >(_) => {}
7830                }
7831            }
7832            #[automatically_derived]
7833            #[doc(hidden)]
7834            impl ::core::convert::From<initializedAtBlockCall>
7835            for UnderlyingRustTuple<'_> {
7836                fn from(value: initializedAtBlockCall) -> Self {
7837                    ()
7838                }
7839            }
7840            #[automatically_derived]
7841            #[doc(hidden)]
7842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7843            for initializedAtBlockCall {
7844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7845                    Self
7846                }
7847            }
7848        }
7849        {
7850            #[doc(hidden)]
7851            #[allow(dead_code)]
7852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7853            #[doc(hidden)]
7854            type UnderlyingRustTuple<'a> = (
7855                alloy::sol_types::private::primitives::aliases::U256,
7856            );
7857            #[cfg(test)]
7858            #[allow(dead_code, unreachable_patterns)]
7859            fn _type_assertion(
7860                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7861            ) {
7862                match _t {
7863                    alloy_sol_types::private::AssertTypeEq::<
7864                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7865                    >(_) => {}
7866                }
7867            }
7868            #[automatically_derived]
7869            #[doc(hidden)]
7870            impl ::core::convert::From<initializedAtBlockReturn>
7871            for UnderlyingRustTuple<'_> {
7872                fn from(value: initializedAtBlockReturn) -> Self {
7873                    (value._0,)
7874                }
7875            }
7876            #[automatically_derived]
7877            #[doc(hidden)]
7878            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7879            for initializedAtBlockReturn {
7880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7881                    Self { _0: tuple.0 }
7882                }
7883            }
7884        }
7885        #[automatically_derived]
7886        impl alloy_sol_types::SolCall for initializedAtBlockCall {
7887            type Parameters<'a> = ();
7888            type Token<'a> = <Self::Parameters<
7889                'a,
7890            > as alloy_sol_types::SolType>::Token<'a>;
7891            type Return = alloy::sol_types::private::primitives::aliases::U256;
7892            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7893            type ReturnToken<'a> = <Self::ReturnTuple<
7894                'a,
7895            > as alloy_sol_types::SolType>::Token<'a>;
7896            const SIGNATURE: &'static str = "initializedAtBlock()";
7897            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
7898            #[inline]
7899            fn new<'a>(
7900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7901            ) -> Self {
7902                tuple.into()
7903            }
7904            #[inline]
7905            fn tokenize(&self) -> Self::Token<'_> {
7906                ()
7907            }
7908            #[inline]
7909            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7910                (
7911                    <alloy::sol_types::sol_data::Uint<
7912                        256,
7913                    > as alloy_sol_types::SolType>::tokenize(ret),
7914                )
7915            }
7916            #[inline]
7917            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7918                <Self::ReturnTuple<
7919                    '_,
7920                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7921                    .map(|r| {
7922                        let r: initializedAtBlockReturn = r.into();
7923                        r._0
7924                    })
7925            }
7926            #[inline]
7927            fn abi_decode_returns_with_config(
7928                data: &[u8],
7929                config: alloy_sol_types::abi::AbiDecoderConfig,
7930            ) -> alloy_sol_types::Result<Self::Return> {
7931                <Self::ReturnTuple<
7932                    '_,
7933                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7934                        data,
7935                        config,
7936                    )
7937                    .map(|r| {
7938                        let r: initializedAtBlockReturn = r.into();
7939                        r._0
7940                    })
7941            }
7942            #[inline]
7943            fn abi_decode_returns_validate(
7944                data: &[u8],
7945            ) -> alloy_sol_types::Result<Self::Return> {
7946                Self::abi_decode_returns_with_config(
7947                    data,
7948                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7949                )
7950            }
7951        }
7952    };
7953    #[derive(serde::Serialize, serde::Deserialize)]
7954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7955    /**Function with signature `lightClient()` and selector `0xb5700e68`.
7956```solidity
7957function lightClient() external view returns (address);
7958```*/
7959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7960    #[derive(Clone)]
7961    pub struct lightClientCall;
7962    #[derive(serde::Serialize, serde::Deserialize)]
7963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7964    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
7965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7966    #[derive(Clone)]
7967    pub struct lightClientReturn {
7968        #[allow(missing_docs)]
7969        pub _0: alloy::sol_types::private::Address,
7970    }
7971    #[allow(
7972        non_camel_case_types,
7973        non_snake_case,
7974        clippy::pub_underscore_fields,
7975        clippy::style
7976    )]
7977    const _: () = {
7978        use alloy::sol_types as alloy_sol_types;
7979        {
7980            #[doc(hidden)]
7981            #[allow(dead_code)]
7982            type UnderlyingSolTuple<'a> = ();
7983            #[doc(hidden)]
7984            type UnderlyingRustTuple<'a> = ();
7985            #[cfg(test)]
7986            #[allow(dead_code, unreachable_patterns)]
7987            fn _type_assertion(
7988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7989            ) {
7990                match _t {
7991                    alloy_sol_types::private::AssertTypeEq::<
7992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7993                    >(_) => {}
7994                }
7995            }
7996            #[automatically_derived]
7997            #[doc(hidden)]
7998            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
7999                fn from(value: lightClientCall) -> Self {
8000                    ()
8001                }
8002            }
8003            #[automatically_derived]
8004            #[doc(hidden)]
8005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
8006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8007                    Self
8008                }
8009            }
8010        }
8011        {
8012            #[doc(hidden)]
8013            #[allow(dead_code)]
8014            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8015            #[doc(hidden)]
8016            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8017            #[cfg(test)]
8018            #[allow(dead_code, unreachable_patterns)]
8019            fn _type_assertion(
8020                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8021            ) {
8022                match _t {
8023                    alloy_sol_types::private::AssertTypeEq::<
8024                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8025                    >(_) => {}
8026                }
8027            }
8028            #[automatically_derived]
8029            #[doc(hidden)]
8030            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
8031                fn from(value: lightClientReturn) -> Self {
8032                    (value._0,)
8033                }
8034            }
8035            #[automatically_derived]
8036            #[doc(hidden)]
8037            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
8038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8039                    Self { _0: tuple.0 }
8040                }
8041            }
8042        }
8043        #[automatically_derived]
8044        impl alloy_sol_types::SolCall for lightClientCall {
8045            type Parameters<'a> = ();
8046            type Token<'a> = <Self::Parameters<
8047                'a,
8048            > as alloy_sol_types::SolType>::Token<'a>;
8049            type Return = alloy::sol_types::private::Address;
8050            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8051            type ReturnToken<'a> = <Self::ReturnTuple<
8052                'a,
8053            > as alloy_sol_types::SolType>::Token<'a>;
8054            const SIGNATURE: &'static str = "lightClient()";
8055            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
8056            #[inline]
8057            fn new<'a>(
8058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8059            ) -> Self {
8060                tuple.into()
8061            }
8062            #[inline]
8063            fn tokenize(&self) -> Self::Token<'_> {
8064                ()
8065            }
8066            #[inline]
8067            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8068                (
8069                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8070                        ret,
8071                    ),
8072                )
8073            }
8074            #[inline]
8075            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8076                <Self::ReturnTuple<
8077                    '_,
8078                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8079                    .map(|r| {
8080                        let r: lightClientReturn = r.into();
8081                        r._0
8082                    })
8083            }
8084            #[inline]
8085            fn abi_decode_returns_with_config(
8086                data: &[u8],
8087                config: alloy_sol_types::abi::AbiDecoderConfig,
8088            ) -> alloy_sol_types::Result<Self::Return> {
8089                <Self::ReturnTuple<
8090                    '_,
8091                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8092                        data,
8093                        config,
8094                    )
8095                    .map(|r| {
8096                        let r: lightClientReturn = r.into();
8097                        r._0
8098                    })
8099            }
8100            #[inline]
8101            fn abi_decode_returns_validate(
8102                data: &[u8],
8103            ) -> alloy_sol_types::Result<Self::Return> {
8104                Self::abi_decode_returns_with_config(
8105                    data,
8106                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8107                )
8108            }
8109        }
8110    };
8111    #[derive(serde::Serialize, serde::Deserialize)]
8112    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8113    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8114```solidity
8115function owner() external view returns (address);
8116```*/
8117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8118    #[derive(Clone)]
8119    pub struct ownerCall;
8120    #[derive(serde::Serialize, serde::Deserialize)]
8121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8122    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8124    #[derive(Clone)]
8125    pub struct ownerReturn {
8126        #[allow(missing_docs)]
8127        pub _0: alloy::sol_types::private::Address,
8128    }
8129    #[allow(
8130        non_camel_case_types,
8131        non_snake_case,
8132        clippy::pub_underscore_fields,
8133        clippy::style
8134    )]
8135    const _: () = {
8136        use alloy::sol_types as alloy_sol_types;
8137        {
8138            #[doc(hidden)]
8139            #[allow(dead_code)]
8140            type UnderlyingSolTuple<'a> = ();
8141            #[doc(hidden)]
8142            type UnderlyingRustTuple<'a> = ();
8143            #[cfg(test)]
8144            #[allow(dead_code, unreachable_patterns)]
8145            fn _type_assertion(
8146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8147            ) {
8148                match _t {
8149                    alloy_sol_types::private::AssertTypeEq::<
8150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8151                    >(_) => {}
8152                }
8153            }
8154            #[automatically_derived]
8155            #[doc(hidden)]
8156            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
8157                fn from(value: ownerCall) -> Self {
8158                    ()
8159                }
8160            }
8161            #[automatically_derived]
8162            #[doc(hidden)]
8163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
8164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8165                    Self
8166                }
8167            }
8168        }
8169        {
8170            #[doc(hidden)]
8171            #[allow(dead_code)]
8172            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8173            #[doc(hidden)]
8174            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8175            #[cfg(test)]
8176            #[allow(dead_code, unreachable_patterns)]
8177            fn _type_assertion(
8178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8179            ) {
8180                match _t {
8181                    alloy_sol_types::private::AssertTypeEq::<
8182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8183                    >(_) => {}
8184                }
8185            }
8186            #[automatically_derived]
8187            #[doc(hidden)]
8188            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
8189                fn from(value: ownerReturn) -> Self {
8190                    (value._0,)
8191                }
8192            }
8193            #[automatically_derived]
8194            #[doc(hidden)]
8195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
8196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8197                    Self { _0: tuple.0 }
8198                }
8199            }
8200        }
8201        #[automatically_derived]
8202        impl alloy_sol_types::SolCall for ownerCall {
8203            type Parameters<'a> = ();
8204            type Token<'a> = <Self::Parameters<
8205                'a,
8206            > as alloy_sol_types::SolType>::Token<'a>;
8207            type Return = alloy::sol_types::private::Address;
8208            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8209            type ReturnToken<'a> = <Self::ReturnTuple<
8210                'a,
8211            > as alloy_sol_types::SolType>::Token<'a>;
8212            const SIGNATURE: &'static str = "owner()";
8213            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
8214            #[inline]
8215            fn new<'a>(
8216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8217            ) -> Self {
8218                tuple.into()
8219            }
8220            #[inline]
8221            fn tokenize(&self) -> Self::Token<'_> {
8222                ()
8223            }
8224            #[inline]
8225            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8226                (
8227                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8228                        ret,
8229                    ),
8230                )
8231            }
8232            #[inline]
8233            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8234                <Self::ReturnTuple<
8235                    '_,
8236                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8237                    .map(|r| {
8238                        let r: ownerReturn = r.into();
8239                        r._0
8240                    })
8241            }
8242            #[inline]
8243            fn abi_decode_returns_with_config(
8244                data: &[u8],
8245                config: alloy_sol_types::abi::AbiDecoderConfig,
8246            ) -> alloy_sol_types::Result<Self::Return> {
8247                <Self::ReturnTuple<
8248                    '_,
8249                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8250                        data,
8251                        config,
8252                    )
8253                    .map(|r| {
8254                        let r: ownerReturn = r.into();
8255                        r._0
8256                    })
8257            }
8258            #[inline]
8259            fn abi_decode_returns_validate(
8260                data: &[u8],
8261            ) -> alloy_sol_types::Result<Self::Return> {
8262                Self::abi_decode_returns_with_config(
8263                    data,
8264                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8265                )
8266            }
8267        }
8268    };
8269    #[derive(serde::Serialize, serde::Deserialize)]
8270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8271    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
8272```solidity
8273function proxiableUUID() external view returns (bytes32);
8274```*/
8275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8276    #[derive(Clone)]
8277    pub struct proxiableUUIDCall;
8278    #[derive(serde::Serialize, serde::Deserialize)]
8279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8280    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
8281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8282    #[derive(Clone)]
8283    pub struct proxiableUUIDReturn {
8284        #[allow(missing_docs)]
8285        pub _0: alloy::sol_types::private::FixedBytes<32>,
8286    }
8287    #[allow(
8288        non_camel_case_types,
8289        non_snake_case,
8290        clippy::pub_underscore_fields,
8291        clippy::style
8292    )]
8293    const _: () = {
8294        use alloy::sol_types as alloy_sol_types;
8295        {
8296            #[doc(hidden)]
8297            #[allow(dead_code)]
8298            type UnderlyingSolTuple<'a> = ();
8299            #[doc(hidden)]
8300            type UnderlyingRustTuple<'a> = ();
8301            #[cfg(test)]
8302            #[allow(dead_code, unreachable_patterns)]
8303            fn _type_assertion(
8304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8305            ) {
8306                match _t {
8307                    alloy_sol_types::private::AssertTypeEq::<
8308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8309                    >(_) => {}
8310                }
8311            }
8312            #[automatically_derived]
8313            #[doc(hidden)]
8314            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
8315                fn from(value: proxiableUUIDCall) -> Self {
8316                    ()
8317                }
8318            }
8319            #[automatically_derived]
8320            #[doc(hidden)]
8321            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
8322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8323                    Self
8324                }
8325            }
8326        }
8327        {
8328            #[doc(hidden)]
8329            #[allow(dead_code)]
8330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8331            #[doc(hidden)]
8332            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8333            #[cfg(test)]
8334            #[allow(dead_code, unreachable_patterns)]
8335            fn _type_assertion(
8336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8337            ) {
8338                match _t {
8339                    alloy_sol_types::private::AssertTypeEq::<
8340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8341                    >(_) => {}
8342                }
8343            }
8344            #[automatically_derived]
8345            #[doc(hidden)]
8346            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8347                fn from(value: proxiableUUIDReturn) -> Self {
8348                    (value._0,)
8349                }
8350            }
8351            #[automatically_derived]
8352            #[doc(hidden)]
8353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8355                    Self { _0: tuple.0 }
8356                }
8357            }
8358        }
8359        #[automatically_derived]
8360        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8361            type Parameters<'a> = ();
8362            type Token<'a> = <Self::Parameters<
8363                'a,
8364            > as alloy_sol_types::SolType>::Token<'a>;
8365            type Return = alloy::sol_types::private::FixedBytes<32>;
8366            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8367            type ReturnToken<'a> = <Self::ReturnTuple<
8368                'a,
8369            > as alloy_sol_types::SolType>::Token<'a>;
8370            const SIGNATURE: &'static str = "proxiableUUID()";
8371            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8372            #[inline]
8373            fn new<'a>(
8374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8375            ) -> Self {
8376                tuple.into()
8377            }
8378            #[inline]
8379            fn tokenize(&self) -> Self::Token<'_> {
8380                ()
8381            }
8382            #[inline]
8383            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8384                (
8385                    <alloy::sol_types::sol_data::FixedBytes<
8386                        32,
8387                    > as alloy_sol_types::SolType>::tokenize(ret),
8388                )
8389            }
8390            #[inline]
8391            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8392                <Self::ReturnTuple<
8393                    '_,
8394                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8395                    .map(|r| {
8396                        let r: proxiableUUIDReturn = r.into();
8397                        r._0
8398                    })
8399            }
8400            #[inline]
8401            fn abi_decode_returns_with_config(
8402                data: &[u8],
8403                config: alloy_sol_types::abi::AbiDecoderConfig,
8404            ) -> alloy_sol_types::Result<Self::Return> {
8405                <Self::ReturnTuple<
8406                    '_,
8407                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8408                        data,
8409                        config,
8410                    )
8411                    .map(|r| {
8412                        let r: proxiableUUIDReturn = r.into();
8413                        r._0
8414                    })
8415            }
8416            #[inline]
8417            fn abi_decode_returns_validate(
8418                data: &[u8],
8419            ) -> alloy_sol_types::Result<Self::Return> {
8420                Self::abi_decode_returns_with_config(
8421                    data,
8422                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8423                )
8424            }
8425        }
8426    };
8427    #[derive(serde::Serialize, serde::Deserialize)]
8428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8429    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
8430```solidity
8431function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
8432```*/
8433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8434    #[derive(Clone)]
8435    pub struct registerValidatorCall {
8436        #[allow(missing_docs)]
8437        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8438        #[allow(missing_docs)]
8439        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8440        #[allow(missing_docs)]
8441        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8442        #[allow(missing_docs)]
8443        pub commission: u16,
8444    }
8445    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
8446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8447    #[derive(Clone)]
8448    pub struct registerValidatorReturn {}
8449    #[allow(
8450        non_camel_case_types,
8451        non_snake_case,
8452        clippy::pub_underscore_fields,
8453        clippy::style
8454    )]
8455    const _: () = {
8456        use alloy::sol_types as alloy_sol_types;
8457        {
8458            #[doc(hidden)]
8459            #[allow(dead_code)]
8460            type UnderlyingSolTuple<'a> = (
8461                BN254::G2Point,
8462                EdOnBN254::EdOnBN254Point,
8463                BN254::G1Point,
8464                alloy::sol_types::sol_data::Uint<16>,
8465            );
8466            #[doc(hidden)]
8467            type UnderlyingRustTuple<'a> = (
8468                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8469                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8470                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8471                u16,
8472            );
8473            #[cfg(test)]
8474            #[allow(dead_code, unreachable_patterns)]
8475            fn _type_assertion(
8476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8477            ) {
8478                match _t {
8479                    alloy_sol_types::private::AssertTypeEq::<
8480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8481                    >(_) => {}
8482                }
8483            }
8484            #[automatically_derived]
8485            #[doc(hidden)]
8486            impl ::core::convert::From<registerValidatorCall>
8487            for UnderlyingRustTuple<'_> {
8488                fn from(value: registerValidatorCall) -> Self {
8489                    (value.blsVK, value.schnorrVK, value.blsSig, value.commission)
8490                }
8491            }
8492            #[automatically_derived]
8493            #[doc(hidden)]
8494            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8495            for registerValidatorCall {
8496                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8497                    Self {
8498                        blsVK: tuple.0,
8499                        schnorrVK: tuple.1,
8500                        blsSig: tuple.2,
8501                        commission: tuple.3,
8502                    }
8503                }
8504            }
8505        }
8506        {
8507            #[doc(hidden)]
8508            #[allow(dead_code)]
8509            type UnderlyingSolTuple<'a> = ();
8510            #[doc(hidden)]
8511            type UnderlyingRustTuple<'a> = ();
8512            #[cfg(test)]
8513            #[allow(dead_code, unreachable_patterns)]
8514            fn _type_assertion(
8515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8516            ) {
8517                match _t {
8518                    alloy_sol_types::private::AssertTypeEq::<
8519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8520                    >(_) => {}
8521                }
8522            }
8523            #[automatically_derived]
8524            #[doc(hidden)]
8525            impl ::core::convert::From<registerValidatorReturn>
8526            for UnderlyingRustTuple<'_> {
8527                fn from(value: registerValidatorReturn) -> Self {
8528                    ()
8529                }
8530            }
8531            #[automatically_derived]
8532            #[doc(hidden)]
8533            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8534            for registerValidatorReturn {
8535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8536                    Self {}
8537                }
8538            }
8539        }
8540        impl registerValidatorReturn {
8541            fn _tokenize(
8542                &self,
8543            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8544                ()
8545            }
8546        }
8547        #[automatically_derived]
8548        impl alloy_sol_types::SolCall for registerValidatorCall {
8549            type Parameters<'a> = (
8550                BN254::G2Point,
8551                EdOnBN254::EdOnBN254Point,
8552                BN254::G1Point,
8553                alloy::sol_types::sol_data::Uint<16>,
8554            );
8555            type Token<'a> = <Self::Parameters<
8556                'a,
8557            > as alloy_sol_types::SolType>::Token<'a>;
8558            type Return = registerValidatorReturn;
8559            type ReturnTuple<'a> = ();
8560            type ReturnToken<'a> = <Self::ReturnTuple<
8561                'a,
8562            > as alloy_sol_types::SolType>::Token<'a>;
8563            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
8564            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
8565            #[inline]
8566            fn new<'a>(
8567                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8568            ) -> Self {
8569                tuple.into()
8570            }
8571            #[inline]
8572            fn tokenize(&self) -> Self::Token<'_> {
8573                (
8574                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8575                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8576                        &self.schnorrVK,
8577                    ),
8578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8579                    <alloy::sol_types::sol_data::Uint<
8580                        16,
8581                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
8582                )
8583            }
8584            #[inline]
8585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8586                registerValidatorReturn::_tokenize(ret)
8587            }
8588            #[inline]
8589            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8590                <Self::ReturnTuple<
8591                    '_,
8592                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8593                    .map(Into::into)
8594            }
8595            #[inline]
8596            fn abi_decode_returns_with_config(
8597                data: &[u8],
8598                config: alloy_sol_types::abi::AbiDecoderConfig,
8599            ) -> alloy_sol_types::Result<Self::Return> {
8600                <Self::ReturnTuple<
8601                    '_,
8602                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8603                        data,
8604                        config,
8605                    )
8606                    .map(Into::into)
8607            }
8608            #[inline]
8609            fn abi_decode_returns_validate(
8610                data: &[u8],
8611            ) -> alloy_sol_types::Result<Self::Return> {
8612                Self::abi_decode_returns_with_config(
8613                    data,
8614                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8615                )
8616            }
8617        }
8618    };
8619    #[derive(serde::Serialize, serde::Deserialize)]
8620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8621    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8622```solidity
8623function renounceOwnership() external;
8624```*/
8625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8626    #[derive(Clone)]
8627    pub struct renounceOwnershipCall;
8628    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8630    #[derive(Clone)]
8631    pub struct renounceOwnershipReturn {}
8632    #[allow(
8633        non_camel_case_types,
8634        non_snake_case,
8635        clippy::pub_underscore_fields,
8636        clippy::style
8637    )]
8638    const _: () = {
8639        use alloy::sol_types as alloy_sol_types;
8640        {
8641            #[doc(hidden)]
8642            #[allow(dead_code)]
8643            type UnderlyingSolTuple<'a> = ();
8644            #[doc(hidden)]
8645            type UnderlyingRustTuple<'a> = ();
8646            #[cfg(test)]
8647            #[allow(dead_code, unreachable_patterns)]
8648            fn _type_assertion(
8649                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8650            ) {
8651                match _t {
8652                    alloy_sol_types::private::AssertTypeEq::<
8653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8654                    >(_) => {}
8655                }
8656            }
8657            #[automatically_derived]
8658            #[doc(hidden)]
8659            impl ::core::convert::From<renounceOwnershipCall>
8660            for UnderlyingRustTuple<'_> {
8661                fn from(value: renounceOwnershipCall) -> Self {
8662                    ()
8663                }
8664            }
8665            #[automatically_derived]
8666            #[doc(hidden)]
8667            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8668            for renounceOwnershipCall {
8669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8670                    Self
8671                }
8672            }
8673        }
8674        {
8675            #[doc(hidden)]
8676            #[allow(dead_code)]
8677            type UnderlyingSolTuple<'a> = ();
8678            #[doc(hidden)]
8679            type UnderlyingRustTuple<'a> = ();
8680            #[cfg(test)]
8681            #[allow(dead_code, unreachable_patterns)]
8682            fn _type_assertion(
8683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8684            ) {
8685                match _t {
8686                    alloy_sol_types::private::AssertTypeEq::<
8687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8688                    >(_) => {}
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<renounceOwnershipReturn>
8694            for UnderlyingRustTuple<'_> {
8695                fn from(value: renounceOwnershipReturn) -> Self {
8696                    ()
8697                }
8698            }
8699            #[automatically_derived]
8700            #[doc(hidden)]
8701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8702            for renounceOwnershipReturn {
8703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8704                    Self {}
8705                }
8706            }
8707        }
8708        impl renounceOwnershipReturn {
8709            fn _tokenize(
8710                &self,
8711            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8712                ()
8713            }
8714        }
8715        #[automatically_derived]
8716        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8717            type Parameters<'a> = ();
8718            type Token<'a> = <Self::Parameters<
8719                'a,
8720            > as alloy_sol_types::SolType>::Token<'a>;
8721            type Return = renounceOwnershipReturn;
8722            type ReturnTuple<'a> = ();
8723            type ReturnToken<'a> = <Self::ReturnTuple<
8724                'a,
8725            > as alloy_sol_types::SolType>::Token<'a>;
8726            const SIGNATURE: &'static str = "renounceOwnership()";
8727            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8728            #[inline]
8729            fn new<'a>(
8730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8731            ) -> Self {
8732                tuple.into()
8733            }
8734            #[inline]
8735            fn tokenize(&self) -> Self::Token<'_> {
8736                ()
8737            }
8738            #[inline]
8739            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8740                renounceOwnershipReturn::_tokenize(ret)
8741            }
8742            #[inline]
8743            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8744                <Self::ReturnTuple<
8745                    '_,
8746                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8747                    .map(Into::into)
8748            }
8749            #[inline]
8750            fn abi_decode_returns_with_config(
8751                data: &[u8],
8752                config: alloy_sol_types::abi::AbiDecoderConfig,
8753            ) -> alloy_sol_types::Result<Self::Return> {
8754                <Self::ReturnTuple<
8755                    '_,
8756                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8757                        data,
8758                        config,
8759                    )
8760                    .map(Into::into)
8761            }
8762            #[inline]
8763            fn abi_decode_returns_validate(
8764                data: &[u8],
8765            ) -> alloy_sol_types::Result<Self::Return> {
8766                Self::abi_decode_returns_with_config(
8767                    data,
8768                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8769                )
8770            }
8771        }
8772    };
8773    #[derive(serde::Serialize, serde::Deserialize)]
8774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8775    /**Function with signature `token()` and selector `0xfc0c546a`.
8776```solidity
8777function token() external view returns (address);
8778```*/
8779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8780    #[derive(Clone)]
8781    pub struct tokenCall;
8782    #[derive(serde::Serialize, serde::Deserialize)]
8783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8784    ///Container type for the return parameters of the [`token()`](tokenCall) function.
8785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8786    #[derive(Clone)]
8787    pub struct tokenReturn {
8788        #[allow(missing_docs)]
8789        pub _0: alloy::sol_types::private::Address,
8790    }
8791    #[allow(
8792        non_camel_case_types,
8793        non_snake_case,
8794        clippy::pub_underscore_fields,
8795        clippy::style
8796    )]
8797    const _: () = {
8798        use alloy::sol_types as alloy_sol_types;
8799        {
8800            #[doc(hidden)]
8801            #[allow(dead_code)]
8802            type UnderlyingSolTuple<'a> = ();
8803            #[doc(hidden)]
8804            type UnderlyingRustTuple<'a> = ();
8805            #[cfg(test)]
8806            #[allow(dead_code, unreachable_patterns)]
8807            fn _type_assertion(
8808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8809            ) {
8810                match _t {
8811                    alloy_sol_types::private::AssertTypeEq::<
8812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8813                    >(_) => {}
8814                }
8815            }
8816            #[automatically_derived]
8817            #[doc(hidden)]
8818            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
8819                fn from(value: tokenCall) -> Self {
8820                    ()
8821                }
8822            }
8823            #[automatically_derived]
8824            #[doc(hidden)]
8825            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
8826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8827                    Self
8828                }
8829            }
8830        }
8831        {
8832            #[doc(hidden)]
8833            #[allow(dead_code)]
8834            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8835            #[doc(hidden)]
8836            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8837            #[cfg(test)]
8838            #[allow(dead_code, unreachable_patterns)]
8839            fn _type_assertion(
8840                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8841            ) {
8842                match _t {
8843                    alloy_sol_types::private::AssertTypeEq::<
8844                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8845                    >(_) => {}
8846                }
8847            }
8848            #[automatically_derived]
8849            #[doc(hidden)]
8850            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
8851                fn from(value: tokenReturn) -> Self {
8852                    (value._0,)
8853                }
8854            }
8855            #[automatically_derived]
8856            #[doc(hidden)]
8857            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
8858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8859                    Self { _0: tuple.0 }
8860                }
8861            }
8862        }
8863        #[automatically_derived]
8864        impl alloy_sol_types::SolCall for tokenCall {
8865            type Parameters<'a> = ();
8866            type Token<'a> = <Self::Parameters<
8867                'a,
8868            > as alloy_sol_types::SolType>::Token<'a>;
8869            type Return = alloy::sol_types::private::Address;
8870            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8871            type ReturnToken<'a> = <Self::ReturnTuple<
8872                'a,
8873            > as alloy_sol_types::SolType>::Token<'a>;
8874            const SIGNATURE: &'static str = "token()";
8875            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
8876            #[inline]
8877            fn new<'a>(
8878                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8879            ) -> Self {
8880                tuple.into()
8881            }
8882            #[inline]
8883            fn tokenize(&self) -> Self::Token<'_> {
8884                ()
8885            }
8886            #[inline]
8887            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8888                (
8889                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8890                        ret,
8891                    ),
8892                )
8893            }
8894            #[inline]
8895            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8896                <Self::ReturnTuple<
8897                    '_,
8898                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8899                    .map(|r| {
8900                        let r: tokenReturn = r.into();
8901                        r._0
8902                    })
8903            }
8904            #[inline]
8905            fn abi_decode_returns_with_config(
8906                data: &[u8],
8907                config: alloy_sol_types::abi::AbiDecoderConfig,
8908            ) -> alloy_sol_types::Result<Self::Return> {
8909                <Self::ReturnTuple<
8910                    '_,
8911                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8912                        data,
8913                        config,
8914                    )
8915                    .map(|r| {
8916                        let r: tokenReturn = r.into();
8917                        r._0
8918                    })
8919            }
8920            #[inline]
8921            fn abi_decode_returns_validate(
8922                data: &[u8],
8923            ) -> alloy_sol_types::Result<Self::Return> {
8924                Self::abi_decode_returns_with_config(
8925                    data,
8926                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8927                )
8928            }
8929        }
8930    };
8931    #[derive(serde::Serialize, serde::Deserialize)]
8932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8933    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8934```solidity
8935function transferOwnership(address newOwner) external;
8936```*/
8937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8938    #[derive(Clone)]
8939    pub struct transferOwnershipCall {
8940        #[allow(missing_docs)]
8941        pub newOwner: alloy::sol_types::private::Address,
8942    }
8943    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8944    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8945    #[derive(Clone)]
8946    pub struct transferOwnershipReturn {}
8947    #[allow(
8948        non_camel_case_types,
8949        non_snake_case,
8950        clippy::pub_underscore_fields,
8951        clippy::style
8952    )]
8953    const _: () = {
8954        use alloy::sol_types as alloy_sol_types;
8955        {
8956            #[doc(hidden)]
8957            #[allow(dead_code)]
8958            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8959            #[doc(hidden)]
8960            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8961            #[cfg(test)]
8962            #[allow(dead_code, unreachable_patterns)]
8963            fn _type_assertion(
8964                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8965            ) {
8966                match _t {
8967                    alloy_sol_types::private::AssertTypeEq::<
8968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8969                    >(_) => {}
8970                }
8971            }
8972            #[automatically_derived]
8973            #[doc(hidden)]
8974            impl ::core::convert::From<transferOwnershipCall>
8975            for UnderlyingRustTuple<'_> {
8976                fn from(value: transferOwnershipCall) -> Self {
8977                    (value.newOwner,)
8978                }
8979            }
8980            #[automatically_derived]
8981            #[doc(hidden)]
8982            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8983            for transferOwnershipCall {
8984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8985                    Self { newOwner: tuple.0 }
8986                }
8987            }
8988        }
8989        {
8990            #[doc(hidden)]
8991            #[allow(dead_code)]
8992            type UnderlyingSolTuple<'a> = ();
8993            #[doc(hidden)]
8994            type UnderlyingRustTuple<'a> = ();
8995            #[cfg(test)]
8996            #[allow(dead_code, unreachable_patterns)]
8997            fn _type_assertion(
8998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8999            ) {
9000                match _t {
9001                    alloy_sol_types::private::AssertTypeEq::<
9002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9003                    >(_) => {}
9004                }
9005            }
9006            #[automatically_derived]
9007            #[doc(hidden)]
9008            impl ::core::convert::From<transferOwnershipReturn>
9009            for UnderlyingRustTuple<'_> {
9010                fn from(value: transferOwnershipReturn) -> Self {
9011                    ()
9012                }
9013            }
9014            #[automatically_derived]
9015            #[doc(hidden)]
9016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9017            for transferOwnershipReturn {
9018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9019                    Self {}
9020                }
9021            }
9022        }
9023        impl transferOwnershipReturn {
9024            fn _tokenize(
9025                &self,
9026            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9027                ()
9028            }
9029        }
9030        #[automatically_derived]
9031        impl alloy_sol_types::SolCall for transferOwnershipCall {
9032            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9033            type Token<'a> = <Self::Parameters<
9034                'a,
9035            > as alloy_sol_types::SolType>::Token<'a>;
9036            type Return = transferOwnershipReturn;
9037            type ReturnTuple<'a> = ();
9038            type ReturnToken<'a> = <Self::ReturnTuple<
9039                'a,
9040            > as alloy_sol_types::SolType>::Token<'a>;
9041            const SIGNATURE: &'static str = "transferOwnership(address)";
9042            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
9043            #[inline]
9044            fn new<'a>(
9045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9046            ) -> Self {
9047                tuple.into()
9048            }
9049            #[inline]
9050            fn tokenize(&self) -> Self::Token<'_> {
9051                (
9052                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9053                        &self.newOwner,
9054                    ),
9055                )
9056            }
9057            #[inline]
9058            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9059                transferOwnershipReturn::_tokenize(ret)
9060            }
9061            #[inline]
9062            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9063                <Self::ReturnTuple<
9064                    '_,
9065                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9066                    .map(Into::into)
9067            }
9068            #[inline]
9069            fn abi_decode_returns_with_config(
9070                data: &[u8],
9071                config: alloy_sol_types::abi::AbiDecoderConfig,
9072            ) -> alloy_sol_types::Result<Self::Return> {
9073                <Self::ReturnTuple<
9074                    '_,
9075                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9076                        data,
9077                        config,
9078                    )
9079                    .map(Into::into)
9080            }
9081            #[inline]
9082            fn abi_decode_returns_validate(
9083                data: &[u8],
9084            ) -> alloy_sol_types::Result<Self::Return> {
9085                Self::abi_decode_returns_with_config(
9086                    data,
9087                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9088                )
9089            }
9090        }
9091    };
9092    #[derive(serde::Serialize, serde::Deserialize)]
9093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9094    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
9095```solidity
9096function undelegate(address validator, uint256 amount) external;
9097```*/
9098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9099    #[derive(Clone)]
9100    pub struct undelegateCall {
9101        #[allow(missing_docs)]
9102        pub validator: alloy::sol_types::private::Address,
9103        #[allow(missing_docs)]
9104        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9105    }
9106    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
9107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9108    #[derive(Clone)]
9109    pub struct undelegateReturn {}
9110    #[allow(
9111        non_camel_case_types,
9112        non_snake_case,
9113        clippy::pub_underscore_fields,
9114        clippy::style
9115    )]
9116    const _: () = {
9117        use alloy::sol_types as alloy_sol_types;
9118        {
9119            #[doc(hidden)]
9120            #[allow(dead_code)]
9121            type UnderlyingSolTuple<'a> = (
9122                alloy::sol_types::sol_data::Address,
9123                alloy::sol_types::sol_data::Uint<256>,
9124            );
9125            #[doc(hidden)]
9126            type UnderlyingRustTuple<'a> = (
9127                alloy::sol_types::private::Address,
9128                alloy::sol_types::private::primitives::aliases::U256,
9129            );
9130            #[cfg(test)]
9131            #[allow(dead_code, unreachable_patterns)]
9132            fn _type_assertion(
9133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9134            ) {
9135                match _t {
9136                    alloy_sol_types::private::AssertTypeEq::<
9137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9138                    >(_) => {}
9139                }
9140            }
9141            #[automatically_derived]
9142            #[doc(hidden)]
9143            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
9144                fn from(value: undelegateCall) -> Self {
9145                    (value.validator, value.amount)
9146                }
9147            }
9148            #[automatically_derived]
9149            #[doc(hidden)]
9150            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
9151                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9152                    Self {
9153                        validator: tuple.0,
9154                        amount: tuple.1,
9155                    }
9156                }
9157            }
9158        }
9159        {
9160            #[doc(hidden)]
9161            #[allow(dead_code)]
9162            type UnderlyingSolTuple<'a> = ();
9163            #[doc(hidden)]
9164            type UnderlyingRustTuple<'a> = ();
9165            #[cfg(test)]
9166            #[allow(dead_code, unreachable_patterns)]
9167            fn _type_assertion(
9168                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9169            ) {
9170                match _t {
9171                    alloy_sol_types::private::AssertTypeEq::<
9172                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9173                    >(_) => {}
9174                }
9175            }
9176            #[automatically_derived]
9177            #[doc(hidden)]
9178            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
9179                fn from(value: undelegateReturn) -> Self {
9180                    ()
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
9186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9187                    Self {}
9188                }
9189            }
9190        }
9191        impl undelegateReturn {
9192            fn _tokenize(
9193                &self,
9194            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9195                ()
9196            }
9197        }
9198        #[automatically_derived]
9199        impl alloy_sol_types::SolCall for undelegateCall {
9200            type Parameters<'a> = (
9201                alloy::sol_types::sol_data::Address,
9202                alloy::sol_types::sol_data::Uint<256>,
9203            );
9204            type Token<'a> = <Self::Parameters<
9205                'a,
9206            > as alloy_sol_types::SolType>::Token<'a>;
9207            type Return = undelegateReturn;
9208            type ReturnTuple<'a> = ();
9209            type ReturnToken<'a> = <Self::ReturnTuple<
9210                'a,
9211            > as alloy_sol_types::SolType>::Token<'a>;
9212            const SIGNATURE: &'static str = "undelegate(address,uint256)";
9213            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
9214            #[inline]
9215            fn new<'a>(
9216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9217            ) -> Self {
9218                tuple.into()
9219            }
9220            #[inline]
9221            fn tokenize(&self) -> Self::Token<'_> {
9222                (
9223                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9224                        &self.validator,
9225                    ),
9226                    <alloy::sol_types::sol_data::Uint<
9227                        256,
9228                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9229                )
9230            }
9231            #[inline]
9232            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9233                undelegateReturn::_tokenize(ret)
9234            }
9235            #[inline]
9236            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9237                <Self::ReturnTuple<
9238                    '_,
9239                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9240                    .map(Into::into)
9241            }
9242            #[inline]
9243            fn abi_decode_returns_with_config(
9244                data: &[u8],
9245                config: alloy_sol_types::abi::AbiDecoderConfig,
9246            ) -> alloy_sol_types::Result<Self::Return> {
9247                <Self::ReturnTuple<
9248                    '_,
9249                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9250                        data,
9251                        config,
9252                    )
9253                    .map(Into::into)
9254            }
9255            #[inline]
9256            fn abi_decode_returns_validate(
9257                data: &[u8],
9258            ) -> alloy_sol_types::Result<Self::Return> {
9259                Self::abi_decode_returns_with_config(
9260                    data,
9261                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9262                )
9263            }
9264        }
9265    };
9266    #[derive(serde::Serialize, serde::Deserialize)]
9267    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9268    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
9269```solidity
9270function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
9271```*/
9272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9273    #[derive(Clone)]
9274    pub struct undelegationsCall {
9275        #[allow(missing_docs)]
9276        pub validator: alloy::sol_types::private::Address,
9277        #[allow(missing_docs)]
9278        pub delegator: alloy::sol_types::private::Address,
9279    }
9280    #[derive(serde::Serialize, serde::Deserialize)]
9281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9282    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
9283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9284    #[derive(Clone)]
9285    pub struct undelegationsReturn {
9286        #[allow(missing_docs)]
9287        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9288        #[allow(missing_docs)]
9289        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9290    }
9291    #[allow(
9292        non_camel_case_types,
9293        non_snake_case,
9294        clippy::pub_underscore_fields,
9295        clippy::style
9296    )]
9297    const _: () = {
9298        use alloy::sol_types as alloy_sol_types;
9299        {
9300            #[doc(hidden)]
9301            #[allow(dead_code)]
9302            type UnderlyingSolTuple<'a> = (
9303                alloy::sol_types::sol_data::Address,
9304                alloy::sol_types::sol_data::Address,
9305            );
9306            #[doc(hidden)]
9307            type UnderlyingRustTuple<'a> = (
9308                alloy::sol_types::private::Address,
9309                alloy::sol_types::private::Address,
9310            );
9311            #[cfg(test)]
9312            #[allow(dead_code, unreachable_patterns)]
9313            fn _type_assertion(
9314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9315            ) {
9316                match _t {
9317                    alloy_sol_types::private::AssertTypeEq::<
9318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9319                    >(_) => {}
9320                }
9321            }
9322            #[automatically_derived]
9323            #[doc(hidden)]
9324            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
9325                fn from(value: undelegationsCall) -> Self {
9326                    (value.validator, value.delegator)
9327                }
9328            }
9329            #[automatically_derived]
9330            #[doc(hidden)]
9331            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
9332                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9333                    Self {
9334                        validator: tuple.0,
9335                        delegator: tuple.1,
9336                    }
9337                }
9338            }
9339        }
9340        {
9341            #[doc(hidden)]
9342            #[allow(dead_code)]
9343            type UnderlyingSolTuple<'a> = (
9344                alloy::sol_types::sol_data::Uint<256>,
9345                alloy::sol_types::sol_data::Uint<256>,
9346            );
9347            #[doc(hidden)]
9348            type UnderlyingRustTuple<'a> = (
9349                alloy::sol_types::private::primitives::aliases::U256,
9350                alloy::sol_types::private::primitives::aliases::U256,
9351            );
9352            #[cfg(test)]
9353            #[allow(dead_code, unreachable_patterns)]
9354            fn _type_assertion(
9355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9356            ) {
9357                match _t {
9358                    alloy_sol_types::private::AssertTypeEq::<
9359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9360                    >(_) => {}
9361                }
9362            }
9363            #[automatically_derived]
9364            #[doc(hidden)]
9365            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
9366                fn from(value: undelegationsReturn) -> Self {
9367                    (value.amount, value.unlocksAt)
9368                }
9369            }
9370            #[automatically_derived]
9371            #[doc(hidden)]
9372            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
9373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9374                    Self {
9375                        amount: tuple.0,
9376                        unlocksAt: tuple.1,
9377                    }
9378                }
9379            }
9380        }
9381        impl undelegationsReturn {
9382            fn _tokenize(
9383                &self,
9384            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9385                (
9386                    <alloy::sol_types::sol_data::Uint<
9387                        256,
9388                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9389                    <alloy::sol_types::sol_data::Uint<
9390                        256,
9391                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
9392                )
9393            }
9394        }
9395        #[automatically_derived]
9396        impl alloy_sol_types::SolCall for undelegationsCall {
9397            type Parameters<'a> = (
9398                alloy::sol_types::sol_data::Address,
9399                alloy::sol_types::sol_data::Address,
9400            );
9401            type Token<'a> = <Self::Parameters<
9402                'a,
9403            > as alloy_sol_types::SolType>::Token<'a>;
9404            type Return = undelegationsReturn;
9405            type ReturnTuple<'a> = (
9406                alloy::sol_types::sol_data::Uint<256>,
9407                alloy::sol_types::sol_data::Uint<256>,
9408            );
9409            type ReturnToken<'a> = <Self::ReturnTuple<
9410                'a,
9411            > as alloy_sol_types::SolType>::Token<'a>;
9412            const SIGNATURE: &'static str = "undelegations(address,address)";
9413            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
9414            #[inline]
9415            fn new<'a>(
9416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9417            ) -> Self {
9418                tuple.into()
9419            }
9420            #[inline]
9421            fn tokenize(&self) -> Self::Token<'_> {
9422                (
9423                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9424                        &self.validator,
9425                    ),
9426                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9427                        &self.delegator,
9428                    ),
9429                )
9430            }
9431            #[inline]
9432            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9433                undelegationsReturn::_tokenize(ret)
9434            }
9435            #[inline]
9436            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9437                <Self::ReturnTuple<
9438                    '_,
9439                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9440                    .map(Into::into)
9441            }
9442            #[inline]
9443            fn abi_decode_returns_with_config(
9444                data: &[u8],
9445                config: alloy_sol_types::abi::AbiDecoderConfig,
9446            ) -> alloy_sol_types::Result<Self::Return> {
9447                <Self::ReturnTuple<
9448                    '_,
9449                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9450                        data,
9451                        config,
9452                    )
9453                    .map(Into::into)
9454            }
9455            #[inline]
9456            fn abi_decode_returns_validate(
9457                data: &[u8],
9458            ) -> alloy_sol_types::Result<Self::Return> {
9459                Self::abi_decode_returns_with_config(
9460                    data,
9461                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9462                )
9463            }
9464        }
9465    };
9466    #[derive(serde::Serialize, serde::Deserialize)]
9467    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9468    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
9469```solidity
9470function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
9471```*/
9472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9473    #[derive(Clone)]
9474    pub struct updateConsensusKeysCall {
9475        #[allow(missing_docs)]
9476        pub newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9477        #[allow(missing_docs)]
9478        pub newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9479        #[allow(missing_docs)]
9480        pub newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9481    }
9482    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
9483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9484    #[derive(Clone)]
9485    pub struct updateConsensusKeysReturn {}
9486    #[allow(
9487        non_camel_case_types,
9488        non_snake_case,
9489        clippy::pub_underscore_fields,
9490        clippy::style
9491    )]
9492    const _: () = {
9493        use alloy::sol_types as alloy_sol_types;
9494        {
9495            #[doc(hidden)]
9496            #[allow(dead_code)]
9497            type UnderlyingSolTuple<'a> = (
9498                BN254::G2Point,
9499                EdOnBN254::EdOnBN254Point,
9500                BN254::G1Point,
9501            );
9502            #[doc(hidden)]
9503            type UnderlyingRustTuple<'a> = (
9504                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9505                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9506                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9507            );
9508            #[cfg(test)]
9509            #[allow(dead_code, unreachable_patterns)]
9510            fn _type_assertion(
9511                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9512            ) {
9513                match _t {
9514                    alloy_sol_types::private::AssertTypeEq::<
9515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9516                    >(_) => {}
9517                }
9518            }
9519            #[automatically_derived]
9520            #[doc(hidden)]
9521            impl ::core::convert::From<updateConsensusKeysCall>
9522            for UnderlyingRustTuple<'_> {
9523                fn from(value: updateConsensusKeysCall) -> Self {
9524                    (value.newBlsVK, value.newSchnorrVK, value.newBlsSig)
9525                }
9526            }
9527            #[automatically_derived]
9528            #[doc(hidden)]
9529            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9530            for updateConsensusKeysCall {
9531                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9532                    Self {
9533                        newBlsVK: tuple.0,
9534                        newSchnorrVK: tuple.1,
9535                        newBlsSig: tuple.2,
9536                    }
9537                }
9538            }
9539        }
9540        {
9541            #[doc(hidden)]
9542            #[allow(dead_code)]
9543            type UnderlyingSolTuple<'a> = ();
9544            #[doc(hidden)]
9545            type UnderlyingRustTuple<'a> = ();
9546            #[cfg(test)]
9547            #[allow(dead_code, unreachable_patterns)]
9548            fn _type_assertion(
9549                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9550            ) {
9551                match _t {
9552                    alloy_sol_types::private::AssertTypeEq::<
9553                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9554                    >(_) => {}
9555                }
9556            }
9557            #[automatically_derived]
9558            #[doc(hidden)]
9559            impl ::core::convert::From<updateConsensusKeysReturn>
9560            for UnderlyingRustTuple<'_> {
9561                fn from(value: updateConsensusKeysReturn) -> Self {
9562                    ()
9563                }
9564            }
9565            #[automatically_derived]
9566            #[doc(hidden)]
9567            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9568            for updateConsensusKeysReturn {
9569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9570                    Self {}
9571                }
9572            }
9573        }
9574        impl updateConsensusKeysReturn {
9575            fn _tokenize(
9576                &self,
9577            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9578                ()
9579            }
9580        }
9581        #[automatically_derived]
9582        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
9583            type Parameters<'a> = (
9584                BN254::G2Point,
9585                EdOnBN254::EdOnBN254Point,
9586                BN254::G1Point,
9587            );
9588            type Token<'a> = <Self::Parameters<
9589                'a,
9590            > as alloy_sol_types::SolType>::Token<'a>;
9591            type Return = updateConsensusKeysReturn;
9592            type ReturnTuple<'a> = ();
9593            type ReturnToken<'a> = <Self::ReturnTuple<
9594                'a,
9595            > as alloy_sol_types::SolType>::Token<'a>;
9596            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
9597            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
9598            #[inline]
9599            fn new<'a>(
9600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9601            ) -> Self {
9602                tuple.into()
9603            }
9604            #[inline]
9605            fn tokenize(&self) -> Self::Token<'_> {
9606                (
9607                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(
9608                        &self.newBlsVK,
9609                    ),
9610                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9611                        &self.newSchnorrVK,
9612                    ),
9613                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
9614                        &self.newBlsSig,
9615                    ),
9616                )
9617            }
9618            #[inline]
9619            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9620                updateConsensusKeysReturn::_tokenize(ret)
9621            }
9622            #[inline]
9623            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9624                <Self::ReturnTuple<
9625                    '_,
9626                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9627                    .map(Into::into)
9628            }
9629            #[inline]
9630            fn abi_decode_returns_with_config(
9631                data: &[u8],
9632                config: alloy_sol_types::abi::AbiDecoderConfig,
9633            ) -> alloy_sol_types::Result<Self::Return> {
9634                <Self::ReturnTuple<
9635                    '_,
9636                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9637                        data,
9638                        config,
9639                    )
9640                    .map(Into::into)
9641            }
9642            #[inline]
9643            fn abi_decode_returns_validate(
9644                data: &[u8],
9645            ) -> alloy_sol_types::Result<Self::Return> {
9646                Self::abi_decode_returns_with_config(
9647                    data,
9648                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9649                )
9650            }
9651        }
9652    };
9653    #[derive(serde::Serialize, serde::Deserialize)]
9654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9655    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9656```solidity
9657function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9658```*/
9659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9660    #[derive(Clone)]
9661    pub struct upgradeToAndCallCall {
9662        #[allow(missing_docs)]
9663        pub newImplementation: alloy::sol_types::private::Address,
9664        #[allow(missing_docs)]
9665        pub data: alloy::sol_types::private::Bytes,
9666    }
9667    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9668    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9669    #[derive(Clone)]
9670    pub struct upgradeToAndCallReturn {}
9671    #[allow(
9672        non_camel_case_types,
9673        non_snake_case,
9674        clippy::pub_underscore_fields,
9675        clippy::style
9676    )]
9677    const _: () = {
9678        use alloy::sol_types as alloy_sol_types;
9679        {
9680            #[doc(hidden)]
9681            #[allow(dead_code)]
9682            type UnderlyingSolTuple<'a> = (
9683                alloy::sol_types::sol_data::Address,
9684                alloy::sol_types::sol_data::Bytes,
9685            );
9686            #[doc(hidden)]
9687            type UnderlyingRustTuple<'a> = (
9688                alloy::sol_types::private::Address,
9689                alloy::sol_types::private::Bytes,
9690            );
9691            #[cfg(test)]
9692            #[allow(dead_code, unreachable_patterns)]
9693            fn _type_assertion(
9694                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9695            ) {
9696                match _t {
9697                    alloy_sol_types::private::AssertTypeEq::<
9698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9699                    >(_) => {}
9700                }
9701            }
9702            #[automatically_derived]
9703            #[doc(hidden)]
9704            impl ::core::convert::From<upgradeToAndCallCall>
9705            for UnderlyingRustTuple<'_> {
9706                fn from(value: upgradeToAndCallCall) -> Self {
9707                    (value.newImplementation, value.data)
9708                }
9709            }
9710            #[automatically_derived]
9711            #[doc(hidden)]
9712            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9713            for upgradeToAndCallCall {
9714                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9715                    Self {
9716                        newImplementation: tuple.0,
9717                        data: tuple.1,
9718                    }
9719                }
9720            }
9721        }
9722        {
9723            #[doc(hidden)]
9724            #[allow(dead_code)]
9725            type UnderlyingSolTuple<'a> = ();
9726            #[doc(hidden)]
9727            type UnderlyingRustTuple<'a> = ();
9728            #[cfg(test)]
9729            #[allow(dead_code, unreachable_patterns)]
9730            fn _type_assertion(
9731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9732            ) {
9733                match _t {
9734                    alloy_sol_types::private::AssertTypeEq::<
9735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9736                    >(_) => {}
9737                }
9738            }
9739            #[automatically_derived]
9740            #[doc(hidden)]
9741            impl ::core::convert::From<upgradeToAndCallReturn>
9742            for UnderlyingRustTuple<'_> {
9743                fn from(value: upgradeToAndCallReturn) -> Self {
9744                    ()
9745                }
9746            }
9747            #[automatically_derived]
9748            #[doc(hidden)]
9749            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9750            for upgradeToAndCallReturn {
9751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9752                    Self {}
9753                }
9754            }
9755        }
9756        impl upgradeToAndCallReturn {
9757            fn _tokenize(
9758                &self,
9759            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9760                ()
9761            }
9762        }
9763        #[automatically_derived]
9764        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9765            type Parameters<'a> = (
9766                alloy::sol_types::sol_data::Address,
9767                alloy::sol_types::sol_data::Bytes,
9768            );
9769            type Token<'a> = <Self::Parameters<
9770                'a,
9771            > as alloy_sol_types::SolType>::Token<'a>;
9772            type Return = upgradeToAndCallReturn;
9773            type ReturnTuple<'a> = ();
9774            type ReturnToken<'a> = <Self::ReturnTuple<
9775                'a,
9776            > as alloy_sol_types::SolType>::Token<'a>;
9777            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9778            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9779            #[inline]
9780            fn new<'a>(
9781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9782            ) -> Self {
9783                tuple.into()
9784            }
9785            #[inline]
9786            fn tokenize(&self) -> Self::Token<'_> {
9787                (
9788                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9789                        &self.newImplementation,
9790                    ),
9791                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9792                        &self.data,
9793                    ),
9794                )
9795            }
9796            #[inline]
9797            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9798                upgradeToAndCallReturn::_tokenize(ret)
9799            }
9800            #[inline]
9801            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9802                <Self::ReturnTuple<
9803                    '_,
9804                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9805                    .map(Into::into)
9806            }
9807            #[inline]
9808            fn abi_decode_returns_with_config(
9809                data: &[u8],
9810                config: alloy_sol_types::abi::AbiDecoderConfig,
9811            ) -> alloy_sol_types::Result<Self::Return> {
9812                <Self::ReturnTuple<
9813                    '_,
9814                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9815                        data,
9816                        config,
9817                    )
9818                    .map(Into::into)
9819            }
9820            #[inline]
9821            fn abi_decode_returns_validate(
9822                data: &[u8],
9823            ) -> alloy_sol_types::Result<Self::Return> {
9824                Self::abi_decode_returns_with_config(
9825                    data,
9826                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9827                )
9828            }
9829        }
9830    };
9831    #[derive(serde::Serialize, serde::Deserialize)]
9832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9833    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
9834```solidity
9835function validatorExits(address validator) external view returns (uint256 unlocksAt);
9836```*/
9837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9838    #[derive(Clone)]
9839    pub struct validatorExitsCall {
9840        #[allow(missing_docs)]
9841        pub validator: alloy::sol_types::private::Address,
9842    }
9843    #[derive(serde::Serialize, serde::Deserialize)]
9844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9845    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
9846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9847    #[derive(Clone)]
9848    pub struct validatorExitsReturn {
9849        #[allow(missing_docs)]
9850        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9851    }
9852    #[allow(
9853        non_camel_case_types,
9854        non_snake_case,
9855        clippy::pub_underscore_fields,
9856        clippy::style
9857    )]
9858    const _: () = {
9859        use alloy::sol_types as alloy_sol_types;
9860        {
9861            #[doc(hidden)]
9862            #[allow(dead_code)]
9863            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9864            #[doc(hidden)]
9865            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9866            #[cfg(test)]
9867            #[allow(dead_code, unreachable_patterns)]
9868            fn _type_assertion(
9869                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9870            ) {
9871                match _t {
9872                    alloy_sol_types::private::AssertTypeEq::<
9873                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9874                    >(_) => {}
9875                }
9876            }
9877            #[automatically_derived]
9878            #[doc(hidden)]
9879            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
9880                fn from(value: validatorExitsCall) -> Self {
9881                    (value.validator,)
9882                }
9883            }
9884            #[automatically_derived]
9885            #[doc(hidden)]
9886            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
9887                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9888                    Self { validator: tuple.0 }
9889                }
9890            }
9891        }
9892        {
9893            #[doc(hidden)]
9894            #[allow(dead_code)]
9895            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9896            #[doc(hidden)]
9897            type UnderlyingRustTuple<'a> = (
9898                alloy::sol_types::private::primitives::aliases::U256,
9899            );
9900            #[cfg(test)]
9901            #[allow(dead_code, unreachable_patterns)]
9902            fn _type_assertion(
9903                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9904            ) {
9905                match _t {
9906                    alloy_sol_types::private::AssertTypeEq::<
9907                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9908                    >(_) => {}
9909                }
9910            }
9911            #[automatically_derived]
9912            #[doc(hidden)]
9913            impl ::core::convert::From<validatorExitsReturn>
9914            for UnderlyingRustTuple<'_> {
9915                fn from(value: validatorExitsReturn) -> Self {
9916                    (value.unlocksAt,)
9917                }
9918            }
9919            #[automatically_derived]
9920            #[doc(hidden)]
9921            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9922            for validatorExitsReturn {
9923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9924                    Self { unlocksAt: tuple.0 }
9925                }
9926            }
9927        }
9928        #[automatically_derived]
9929        impl alloy_sol_types::SolCall for validatorExitsCall {
9930            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9931            type Token<'a> = <Self::Parameters<
9932                'a,
9933            > as alloy_sol_types::SolType>::Token<'a>;
9934            type Return = alloy::sol_types::private::primitives::aliases::U256;
9935            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9936            type ReturnToken<'a> = <Self::ReturnTuple<
9937                'a,
9938            > as alloy_sol_types::SolType>::Token<'a>;
9939            const SIGNATURE: &'static str = "validatorExits(address)";
9940            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
9941            #[inline]
9942            fn new<'a>(
9943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9944            ) -> Self {
9945                tuple.into()
9946            }
9947            #[inline]
9948            fn tokenize(&self) -> Self::Token<'_> {
9949                (
9950                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9951                        &self.validator,
9952                    ),
9953                )
9954            }
9955            #[inline]
9956            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9957                (
9958                    <alloy::sol_types::sol_data::Uint<
9959                        256,
9960                    > as alloy_sol_types::SolType>::tokenize(ret),
9961                )
9962            }
9963            #[inline]
9964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9965                <Self::ReturnTuple<
9966                    '_,
9967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9968                    .map(|r| {
9969                        let r: validatorExitsReturn = r.into();
9970                        r.unlocksAt
9971                    })
9972            }
9973            #[inline]
9974            fn abi_decode_returns_with_config(
9975                data: &[u8],
9976                config: alloy_sol_types::abi::AbiDecoderConfig,
9977            ) -> alloy_sol_types::Result<Self::Return> {
9978                <Self::ReturnTuple<
9979                    '_,
9980                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9981                        data,
9982                        config,
9983                    )
9984                    .map(|r| {
9985                        let r: validatorExitsReturn = r.into();
9986                        r.unlocksAt
9987                    })
9988            }
9989            #[inline]
9990            fn abi_decode_returns_validate(
9991                data: &[u8],
9992            ) -> alloy_sol_types::Result<Self::Return> {
9993                Self::abi_decode_returns_with_config(
9994                    data,
9995                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9996                )
9997            }
9998        }
9999    };
10000    #[derive(serde::Serialize, serde::Deserialize)]
10001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10002    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
10003```solidity
10004function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
10005```*/
10006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10007    #[derive(Clone)]
10008    pub struct validatorsCall {
10009        #[allow(missing_docs)]
10010        pub account: alloy::sol_types::private::Address,
10011    }
10012    #[derive(serde::Serialize, serde::Deserialize)]
10013    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10014    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
10015    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10016    #[derive(Clone)]
10017    pub struct validatorsReturn {
10018        #[allow(missing_docs)]
10019        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
10020        #[allow(missing_docs)]
10021        pub status: <ValidatorStatus as alloy::sol_types::SolType>::RustType,
10022    }
10023    #[allow(
10024        non_camel_case_types,
10025        non_snake_case,
10026        clippy::pub_underscore_fields,
10027        clippy::style
10028    )]
10029    const _: () = {
10030        use alloy::sol_types as alloy_sol_types;
10031        {
10032            #[doc(hidden)]
10033            #[allow(dead_code)]
10034            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10035            #[doc(hidden)]
10036            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10037            #[cfg(test)]
10038            #[allow(dead_code, unreachable_patterns)]
10039            fn _type_assertion(
10040                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10041            ) {
10042                match _t {
10043                    alloy_sol_types::private::AssertTypeEq::<
10044                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10045                    >(_) => {}
10046                }
10047            }
10048            #[automatically_derived]
10049            #[doc(hidden)]
10050            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
10051                fn from(value: validatorsCall) -> Self {
10052                    (value.account,)
10053                }
10054            }
10055            #[automatically_derived]
10056            #[doc(hidden)]
10057            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
10058                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10059                    Self { account: tuple.0 }
10060                }
10061            }
10062        }
10063        {
10064            #[doc(hidden)]
10065            #[allow(dead_code)]
10066            type UnderlyingSolTuple<'a> = (
10067                alloy::sol_types::sol_data::Uint<256>,
10068                ValidatorStatus,
10069            );
10070            #[doc(hidden)]
10071            type UnderlyingRustTuple<'a> = (
10072                alloy::sol_types::private::primitives::aliases::U256,
10073                <ValidatorStatus as alloy::sol_types::SolType>::RustType,
10074            );
10075            #[cfg(test)]
10076            #[allow(dead_code, unreachable_patterns)]
10077            fn _type_assertion(
10078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10079            ) {
10080                match _t {
10081                    alloy_sol_types::private::AssertTypeEq::<
10082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10083                    >(_) => {}
10084                }
10085            }
10086            #[automatically_derived]
10087            #[doc(hidden)]
10088            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
10089                fn from(value: validatorsReturn) -> Self {
10090                    (value.delegatedAmount, value.status)
10091                }
10092            }
10093            #[automatically_derived]
10094            #[doc(hidden)]
10095            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
10096                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10097                    Self {
10098                        delegatedAmount: tuple.0,
10099                        status: tuple.1,
10100                    }
10101                }
10102            }
10103        }
10104        impl validatorsReturn {
10105            fn _tokenize(
10106                &self,
10107            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10108                (
10109                    <alloy::sol_types::sol_data::Uint<
10110                        256,
10111                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
10112                    <ValidatorStatus as alloy_sol_types::SolType>::tokenize(&self.status),
10113                )
10114            }
10115        }
10116        #[automatically_derived]
10117        impl alloy_sol_types::SolCall for validatorsCall {
10118            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10119            type Token<'a> = <Self::Parameters<
10120                'a,
10121            > as alloy_sol_types::SolType>::Token<'a>;
10122            type Return = validatorsReturn;
10123            type ReturnTuple<'a> = (
10124                alloy::sol_types::sol_data::Uint<256>,
10125                ValidatorStatus,
10126            );
10127            type ReturnToken<'a> = <Self::ReturnTuple<
10128                'a,
10129            > as alloy_sol_types::SolType>::Token<'a>;
10130            const SIGNATURE: &'static str = "validators(address)";
10131            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
10132            #[inline]
10133            fn new<'a>(
10134                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10135            ) -> Self {
10136                tuple.into()
10137            }
10138            #[inline]
10139            fn tokenize(&self) -> Self::Token<'_> {
10140                (
10141                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10142                        &self.account,
10143                    ),
10144                )
10145            }
10146            #[inline]
10147            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10148                validatorsReturn::_tokenize(ret)
10149            }
10150            #[inline]
10151            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10152                <Self::ReturnTuple<
10153                    '_,
10154                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10155                    .map(Into::into)
10156            }
10157            #[inline]
10158            fn abi_decode_returns_with_config(
10159                data: &[u8],
10160                config: alloy_sol_types::abi::AbiDecoderConfig,
10161            ) -> alloy_sol_types::Result<Self::Return> {
10162                <Self::ReturnTuple<
10163                    '_,
10164                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10165                        data,
10166                        config,
10167                    )
10168                    .map(Into::into)
10169            }
10170            #[inline]
10171            fn abi_decode_returns_validate(
10172                data: &[u8],
10173            ) -> alloy_sol_types::Result<Self::Return> {
10174                Self::abi_decode_returns_with_config(
10175                    data,
10176                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10177                )
10178            }
10179        }
10180    };
10181    ///Container for all the [`StakeTable`](self) function calls.
10182    #[derive(Clone)]
10183    #[derive(serde::Serialize, serde::Deserialize)]
10184    #[derive(Debug, PartialEq, Eq, Hash)]
10185    pub enum StakeTableCalls {
10186        #[allow(missing_docs)]
10187        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10188        #[allow(missing_docs)]
10189        _hashBlsKey(_hashBlsKeyCall),
10190        #[allow(missing_docs)]
10191        blsKeys(blsKeysCall),
10192        #[allow(missing_docs)]
10193        claimValidatorExit(claimValidatorExitCall),
10194        #[allow(missing_docs)]
10195        claimWithdrawal(claimWithdrawalCall),
10196        #[allow(missing_docs)]
10197        delegate(delegateCall),
10198        #[allow(missing_docs)]
10199        delegations(delegationsCall),
10200        #[allow(missing_docs)]
10201        deregisterValidator(deregisterValidatorCall),
10202        #[allow(missing_docs)]
10203        exitEscrowPeriod(exitEscrowPeriodCall),
10204        #[allow(missing_docs)]
10205        getVersion(getVersionCall),
10206        #[allow(missing_docs)]
10207        initialize(initializeCall),
10208        #[allow(missing_docs)]
10209        initializedAtBlock(initializedAtBlockCall),
10210        #[allow(missing_docs)]
10211        lightClient(lightClientCall),
10212        #[allow(missing_docs)]
10213        owner(ownerCall),
10214        #[allow(missing_docs)]
10215        proxiableUUID(proxiableUUIDCall),
10216        #[allow(missing_docs)]
10217        registerValidator(registerValidatorCall),
10218        #[allow(missing_docs)]
10219        renounceOwnership(renounceOwnershipCall),
10220        #[allow(missing_docs)]
10221        token(tokenCall),
10222        #[allow(missing_docs)]
10223        transferOwnership(transferOwnershipCall),
10224        #[allow(missing_docs)]
10225        undelegate(undelegateCall),
10226        #[allow(missing_docs)]
10227        undelegations(undelegationsCall),
10228        #[allow(missing_docs)]
10229        updateConsensusKeys(updateConsensusKeysCall),
10230        #[allow(missing_docs)]
10231        upgradeToAndCall(upgradeToAndCallCall),
10232        #[allow(missing_docs)]
10233        validatorExits(validatorExitsCall),
10234        #[allow(missing_docs)]
10235        validators(validatorsCall),
10236    }
10237    impl StakeTableCalls {
10238        /// All the selectors of this enum.
10239        ///
10240        /// Note that the selectors might not be in the same order as the variants.
10241        /// No guarantees are made about the order of the selectors.
10242        ///
10243        /// Prefer using `SolInterface` methods instead.
10244        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10245            [2u8, 110u8, 64u8, 43u8],
10246            [13u8, 142u8, 110u8, 44u8],
10247            [19u8, 185u8, 5u8, 122u8],
10248            [33u8, 64u8, 254u8, 205u8],
10249            [62u8, 157u8, 249u8, 181u8],
10250            [77u8, 153u8, 221u8, 22u8],
10251            [79u8, 30u8, 242u8, 134u8],
10252            [82u8, 209u8, 144u8, 45u8],
10253            [85u8, 68u8, 194u8, 241u8],
10254            [106u8, 145u8, 28u8, 207u8],
10255            [113u8, 80u8, 24u8, 166u8],
10256            [141u8, 165u8, 203u8, 91u8],
10257            [155u8, 48u8, 165u8, 230u8],
10258            [158u8, 154u8, 143u8, 49u8],
10259            [162u8, 215u8, 141u8, 213u8],
10260            [163u8, 6u8, 106u8, 171u8],
10261            [173u8, 60u8, 177u8, 204u8],
10262            [179u8, 230u8, 235u8, 213u8],
10263            [181u8, 112u8, 14u8, 104u8],
10264            [181u8, 236u8, 179u8, 68u8],
10265            [190u8, 32u8, 48u8, 148u8],
10266            [198u8, 72u8, 20u8, 221u8],
10267            [242u8, 253u8, 227u8, 139u8],
10268            [250u8, 82u8, 199u8, 216u8],
10269            [252u8, 12u8, 84u8, 106u8],
10270        ];
10271        /// The names of the variants in the same order as `SELECTORS`.
10272        pub const VARIANT_NAMES: &'static [&'static str] = &[
10273            ::core::stringify!(delegate),
10274            ::core::stringify!(getVersion),
10275            ::core::stringify!(registerValidator),
10276            ::core::stringify!(claimValidatorExit),
10277            ::core::stringify!(initializedAtBlock),
10278            ::core::stringify!(undelegate),
10279            ::core::stringify!(upgradeToAndCall),
10280            ::core::stringify!(proxiableUUID),
10281            ::core::stringify!(updateConsensusKeys),
10282            ::core::stringify!(deregisterValidator),
10283            ::core::stringify!(renounceOwnership),
10284            ::core::stringify!(owner),
10285            ::core::stringify!(_hashBlsKey),
10286            ::core::stringify!(exitEscrowPeriod),
10287            ::core::stringify!(undelegations),
10288            ::core::stringify!(claimWithdrawal),
10289            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
10290            ::core::stringify!(blsKeys),
10291            ::core::stringify!(lightClient),
10292            ::core::stringify!(validatorExits),
10293            ::core::stringify!(initialize),
10294            ::core::stringify!(delegations),
10295            ::core::stringify!(transferOwnership),
10296            ::core::stringify!(validators),
10297            ::core::stringify!(token),
10298        ];
10299        /// The signatures in the same order as `SELECTORS`.
10300        pub const SIGNATURES: &'static [&'static str] = &[
10301            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
10302            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
10303            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
10304            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
10305            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
10306            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
10307            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
10308            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
10309            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
10310            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
10311            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10312            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
10313            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
10314            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
10315            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
10316            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
10317            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
10318            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
10319            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
10320            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
10321            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
10322            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
10323            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10324            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
10325            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
10326        ];
10327        /// Returns the signature for the given selector, if known.
10328        #[inline]
10329        pub fn signature_by_selector(
10330            selector: [u8; 4usize],
10331        ) -> ::core::option::Option<&'static str> {
10332            match Self::SELECTORS.binary_search(&selector) {
10333                ::core::result::Result::Ok(idx) => {
10334                    ::core::option::Option::Some(Self::SIGNATURES[idx])
10335                }
10336                ::core::result::Result::Err(_) => ::core::option::Option::None,
10337            }
10338        }
10339        /// Returns the enum variant name for the given selector, if known.
10340        #[inline]
10341        pub fn name_by_selector(
10342            selector: [u8; 4usize],
10343        ) -> ::core::option::Option<&'static str> {
10344            let sig = Self::signature_by_selector(selector)?;
10345            sig.split_once('(').map(|(name, _)| name)
10346        }
10347    }
10348    #[automatically_derived]
10349    impl alloy_sol_types::SolInterface for StakeTableCalls {
10350        const NAME: &'static str = "StakeTableCalls";
10351        const MIN_DATA_LENGTH: usize = 0usize;
10352        const COUNT: usize = 25usize;
10353        #[inline]
10354        fn selector(&self) -> [u8; 4] {
10355            match self {
10356                Self::UPGRADE_INTERFACE_VERSION(_) => {
10357                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10358                }
10359                Self::_hashBlsKey(_) => {
10360                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
10361                }
10362                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
10363                Self::claimValidatorExit(_) => {
10364                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
10365                }
10366                Self::claimWithdrawal(_) => {
10367                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
10368                }
10369                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
10370                Self::delegations(_) => {
10371                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
10372                }
10373                Self::deregisterValidator(_) => {
10374                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
10375                }
10376                Self::exitEscrowPeriod(_) => {
10377                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10378                }
10379                Self::getVersion(_) => {
10380                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10381                }
10382                Self::initialize(_) => {
10383                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10384                }
10385                Self::initializedAtBlock(_) => {
10386                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
10387                }
10388                Self::lightClient(_) => {
10389                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
10390                }
10391                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10392                Self::proxiableUUID(_) => {
10393                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10394                }
10395                Self::registerValidator(_) => {
10396                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
10397                }
10398                Self::renounceOwnership(_) => {
10399                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10400                }
10401                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
10402                Self::transferOwnership(_) => {
10403                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10404                }
10405                Self::undelegate(_) => {
10406                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
10407                }
10408                Self::undelegations(_) => {
10409                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
10410                }
10411                Self::updateConsensusKeys(_) => {
10412                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
10413                }
10414                Self::upgradeToAndCall(_) => {
10415                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10416                }
10417                Self::validatorExits(_) => {
10418                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
10419                }
10420                Self::validators(_) => {
10421                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
10422                }
10423            }
10424        }
10425        #[inline]
10426        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10427            Self::SELECTORS.get(i).copied()
10428        }
10429        #[inline]
10430        fn valid_selector(selector: [u8; 4]) -> bool {
10431            Self::SELECTORS.binary_search(&selector).is_ok()
10432        }
10433        #[inline]
10434        #[allow(non_snake_case)]
10435        fn abi_decode_raw(
10436            selector: [u8; 4],
10437            data: &[u8],
10438        ) -> alloy_sol_types::Result<Self> {
10439            Self::abi_decode_raw_with_config(
10440                selector,
10441                data,
10442                alloy_sol_types::abi::AbiDecoderConfig::default(),
10443            )
10444        }
10445        #[inline]
10446        #[allow(non_snake_case)]
10447        fn abi_decode_raw_with_config(
10448            selector: [u8; 4],
10449            data: &[u8],
10450            config: alloy_sol_types::abi::AbiDecoderConfig,
10451        ) -> alloy_sol_types::Result<Self> {
10452            static DECODE_SHIMS: &[fn(
10453                &[u8],
10454                alloy_sol_types::abi::AbiDecoderConfig,
10455            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
10456                {
10457                    fn delegate(
10458                        data: &[u8],
10459                        config: alloy_sol_types::abi::AbiDecoderConfig,
10460                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10461                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10462                                data,
10463                                config,
10464                            )
10465                            .map(StakeTableCalls::delegate)
10466                    }
10467                    delegate
10468                },
10469                {
10470                    fn getVersion(
10471                        data: &[u8],
10472                        config: alloy_sol_types::abi::AbiDecoderConfig,
10473                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10474                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10475                                data,
10476                                config,
10477                            )
10478                            .map(StakeTableCalls::getVersion)
10479                    }
10480                    getVersion
10481                },
10482                {
10483                    fn registerValidator(
10484                        data: &[u8],
10485                        config: alloy_sol_types::abi::AbiDecoderConfig,
10486                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10487                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10488                                data,
10489                                config,
10490                            )
10491                            .map(StakeTableCalls::registerValidator)
10492                    }
10493                    registerValidator
10494                },
10495                {
10496                    fn claimValidatorExit(
10497                        data: &[u8],
10498                        config: alloy_sol_types::abi::AbiDecoderConfig,
10499                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10500                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10501                                data,
10502                                config,
10503                            )
10504                            .map(StakeTableCalls::claimValidatorExit)
10505                    }
10506                    claimValidatorExit
10507                },
10508                {
10509                    fn initializedAtBlock(
10510                        data: &[u8],
10511                        config: alloy_sol_types::abi::AbiDecoderConfig,
10512                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10513                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10514                                data,
10515                                config,
10516                            )
10517                            .map(StakeTableCalls::initializedAtBlock)
10518                    }
10519                    initializedAtBlock
10520                },
10521                {
10522                    fn undelegate(
10523                        data: &[u8],
10524                        config: alloy_sol_types::abi::AbiDecoderConfig,
10525                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10526                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10527                                data,
10528                                config,
10529                            )
10530                            .map(StakeTableCalls::undelegate)
10531                    }
10532                    undelegate
10533                },
10534                {
10535                    fn upgradeToAndCall(
10536                        data: &[u8],
10537                        config: alloy_sol_types::abi::AbiDecoderConfig,
10538                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10539                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10540                                data,
10541                                config,
10542                            )
10543                            .map(StakeTableCalls::upgradeToAndCall)
10544                    }
10545                    upgradeToAndCall
10546                },
10547                {
10548                    fn proxiableUUID(
10549                        data: &[u8],
10550                        config: alloy_sol_types::abi::AbiDecoderConfig,
10551                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10552                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10553                                data,
10554                                config,
10555                            )
10556                            .map(StakeTableCalls::proxiableUUID)
10557                    }
10558                    proxiableUUID
10559                },
10560                {
10561                    fn updateConsensusKeys(
10562                        data: &[u8],
10563                        config: alloy_sol_types::abi::AbiDecoderConfig,
10564                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10565                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10566                                data,
10567                                config,
10568                            )
10569                            .map(StakeTableCalls::updateConsensusKeys)
10570                    }
10571                    updateConsensusKeys
10572                },
10573                {
10574                    fn deregisterValidator(
10575                        data: &[u8],
10576                        config: alloy_sol_types::abi::AbiDecoderConfig,
10577                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10578                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10579                                data,
10580                                config,
10581                            )
10582                            .map(StakeTableCalls::deregisterValidator)
10583                    }
10584                    deregisterValidator
10585                },
10586                {
10587                    fn renounceOwnership(
10588                        data: &[u8],
10589                        config: alloy_sol_types::abi::AbiDecoderConfig,
10590                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10591                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10592                                data,
10593                                config,
10594                            )
10595                            .map(StakeTableCalls::renounceOwnership)
10596                    }
10597                    renounceOwnership
10598                },
10599                {
10600                    fn owner(
10601                        data: &[u8],
10602                        config: alloy_sol_types::abi::AbiDecoderConfig,
10603                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10604                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10605                                data,
10606                                config,
10607                            )
10608                            .map(StakeTableCalls::owner)
10609                    }
10610                    owner
10611                },
10612                {
10613                    fn _hashBlsKey(
10614                        data: &[u8],
10615                        config: alloy_sol_types::abi::AbiDecoderConfig,
10616                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10617                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10618                                data,
10619                                config,
10620                            )
10621                            .map(StakeTableCalls::_hashBlsKey)
10622                    }
10623                    _hashBlsKey
10624                },
10625                {
10626                    fn exitEscrowPeriod(
10627                        data: &[u8],
10628                        config: alloy_sol_types::abi::AbiDecoderConfig,
10629                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10630                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10631                                data,
10632                                config,
10633                            )
10634                            .map(StakeTableCalls::exitEscrowPeriod)
10635                    }
10636                    exitEscrowPeriod
10637                },
10638                {
10639                    fn undelegations(
10640                        data: &[u8],
10641                        config: alloy_sol_types::abi::AbiDecoderConfig,
10642                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10643                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10644                                data,
10645                                config,
10646                            )
10647                            .map(StakeTableCalls::undelegations)
10648                    }
10649                    undelegations
10650                },
10651                {
10652                    fn claimWithdrawal(
10653                        data: &[u8],
10654                        config: alloy_sol_types::abi::AbiDecoderConfig,
10655                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10656                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10657                                data,
10658                                config,
10659                            )
10660                            .map(StakeTableCalls::claimWithdrawal)
10661                    }
10662                    claimWithdrawal
10663                },
10664                {
10665                    fn UPGRADE_INTERFACE_VERSION(
10666                        data: &[u8],
10667                        config: alloy_sol_types::abi::AbiDecoderConfig,
10668                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10669                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10670                                data,
10671                                config,
10672                            )
10673                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
10674                    }
10675                    UPGRADE_INTERFACE_VERSION
10676                },
10677                {
10678                    fn blsKeys(
10679                        data: &[u8],
10680                        config: alloy_sol_types::abi::AbiDecoderConfig,
10681                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10682                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10683                                data,
10684                                config,
10685                            )
10686                            .map(StakeTableCalls::blsKeys)
10687                    }
10688                    blsKeys
10689                },
10690                {
10691                    fn lightClient(
10692                        data: &[u8],
10693                        config: alloy_sol_types::abi::AbiDecoderConfig,
10694                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10695                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10696                                data,
10697                                config,
10698                            )
10699                            .map(StakeTableCalls::lightClient)
10700                    }
10701                    lightClient
10702                },
10703                {
10704                    fn validatorExits(
10705                        data: &[u8],
10706                        config: alloy_sol_types::abi::AbiDecoderConfig,
10707                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10708                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10709                                data,
10710                                config,
10711                            )
10712                            .map(StakeTableCalls::validatorExits)
10713                    }
10714                    validatorExits
10715                },
10716                {
10717                    fn initialize(
10718                        data: &[u8],
10719                        config: alloy_sol_types::abi::AbiDecoderConfig,
10720                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10721                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10722                                data,
10723                                config,
10724                            )
10725                            .map(StakeTableCalls::initialize)
10726                    }
10727                    initialize
10728                },
10729                {
10730                    fn delegations(
10731                        data: &[u8],
10732                        config: alloy_sol_types::abi::AbiDecoderConfig,
10733                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10734                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10735                                data,
10736                                config,
10737                            )
10738                            .map(StakeTableCalls::delegations)
10739                    }
10740                    delegations
10741                },
10742                {
10743                    fn transferOwnership(
10744                        data: &[u8],
10745                        config: alloy_sol_types::abi::AbiDecoderConfig,
10746                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10747                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10748                                data,
10749                                config,
10750                            )
10751                            .map(StakeTableCalls::transferOwnership)
10752                    }
10753                    transferOwnership
10754                },
10755                {
10756                    fn validators(
10757                        data: &[u8],
10758                        config: alloy_sol_types::abi::AbiDecoderConfig,
10759                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10760                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10761                                data,
10762                                config,
10763                            )
10764                            .map(StakeTableCalls::validators)
10765                    }
10766                    validators
10767                },
10768                {
10769                    fn token(
10770                        data: &[u8],
10771                        config: alloy_sol_types::abi::AbiDecoderConfig,
10772                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10773                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
10774                                data,
10775                                config,
10776                            )
10777                            .map(StakeTableCalls::token)
10778                    }
10779                    token
10780                },
10781            ];
10782            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10783                return Err(
10784                    alloy_sol_types::Error::unknown_selector(
10785                        <Self as alloy_sol_types::SolInterface>::NAME,
10786                        selector,
10787                    ),
10788                );
10789            };
10790            DECODE_SHIMS[idx](data, config)
10791        }
10792        #[inline]
10793        #[allow(non_snake_case)]
10794        fn abi_decode_raw_validate(
10795            selector: [u8; 4],
10796            data: &[u8],
10797        ) -> alloy_sol_types::Result<Self> {
10798            Self::abi_decode_raw_with_config(
10799                selector,
10800                data,
10801                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10802            )
10803        }
10804        #[inline]
10805        fn abi_encoded_size(&self) -> usize {
10806            match self {
10807                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10808                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10809                        inner,
10810                    )
10811                }
10812                Self::_hashBlsKey(inner) => {
10813                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
10814                        inner,
10815                    )
10816                }
10817                Self::blsKeys(inner) => {
10818                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10819                }
10820                Self::claimValidatorExit(inner) => {
10821                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
10822                        inner,
10823                    )
10824                }
10825                Self::claimWithdrawal(inner) => {
10826                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
10827                        inner,
10828                    )
10829                }
10830                Self::delegate(inner) => {
10831                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10832                }
10833                Self::delegations(inner) => {
10834                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10835                        inner,
10836                    )
10837                }
10838                Self::deregisterValidator(inner) => {
10839                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10840                        inner,
10841                    )
10842                }
10843                Self::exitEscrowPeriod(inner) => {
10844                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10845                        inner,
10846                    )
10847                }
10848                Self::getVersion(inner) => {
10849                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10850                }
10851                Self::initialize(inner) => {
10852                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10853                }
10854                Self::initializedAtBlock(inner) => {
10855                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
10856                        inner,
10857                    )
10858                }
10859                Self::lightClient(inner) => {
10860                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
10861                        inner,
10862                    )
10863                }
10864                Self::owner(inner) => {
10865                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10866                }
10867                Self::proxiableUUID(inner) => {
10868                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10869                        inner,
10870                    )
10871                }
10872                Self::registerValidator(inner) => {
10873                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10874                        inner,
10875                    )
10876                }
10877                Self::renounceOwnership(inner) => {
10878                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10879                        inner,
10880                    )
10881                }
10882                Self::token(inner) => {
10883                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10884                }
10885                Self::transferOwnership(inner) => {
10886                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10887                        inner,
10888                    )
10889                }
10890                Self::undelegate(inner) => {
10891                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10892                }
10893                Self::undelegations(inner) => {
10894                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10895                        inner,
10896                    )
10897                }
10898                Self::updateConsensusKeys(inner) => {
10899                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
10900                        inner,
10901                    )
10902                }
10903                Self::upgradeToAndCall(inner) => {
10904                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10905                        inner,
10906                    )
10907                }
10908                Self::validatorExits(inner) => {
10909                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10910                        inner,
10911                    )
10912                }
10913                Self::validators(inner) => {
10914                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10915                }
10916            }
10917        }
10918        #[inline]
10919        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10920            match self {
10921                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10922                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10923                        inner,
10924                        out,
10925                    )
10926                }
10927                Self::_hashBlsKey(inner) => {
10928                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
10929                        inner,
10930                        out,
10931                    )
10932                }
10933                Self::blsKeys(inner) => {
10934                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10935                }
10936                Self::claimValidatorExit(inner) => {
10937                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
10938                        inner,
10939                        out,
10940                    )
10941                }
10942                Self::claimWithdrawal(inner) => {
10943                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
10944                        inner,
10945                        out,
10946                    )
10947                }
10948                Self::delegate(inner) => {
10949                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10950                        inner,
10951                        out,
10952                    )
10953                }
10954                Self::delegations(inner) => {
10955                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10956                        inner,
10957                        out,
10958                    )
10959                }
10960                Self::deregisterValidator(inner) => {
10961                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10962                        inner,
10963                        out,
10964                    )
10965                }
10966                Self::exitEscrowPeriod(inner) => {
10967                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10968                        inner,
10969                        out,
10970                    )
10971                }
10972                Self::getVersion(inner) => {
10973                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10974                        inner,
10975                        out,
10976                    )
10977                }
10978                Self::initialize(inner) => {
10979                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10980                        inner,
10981                        out,
10982                    )
10983                }
10984                Self::initializedAtBlock(inner) => {
10985                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
10986                        inner,
10987                        out,
10988                    )
10989                }
10990                Self::lightClient(inner) => {
10991                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
10992                        inner,
10993                        out,
10994                    )
10995                }
10996                Self::owner(inner) => {
10997                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10998                }
10999                Self::proxiableUUID(inner) => {
11000                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11001                        inner,
11002                        out,
11003                    )
11004                }
11005                Self::registerValidator(inner) => {
11006                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
11007                        inner,
11008                        out,
11009                    )
11010                }
11011                Self::renounceOwnership(inner) => {
11012                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11013                        inner,
11014                        out,
11015                    )
11016                }
11017                Self::token(inner) => {
11018                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11019                }
11020                Self::transferOwnership(inner) => {
11021                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11022                        inner,
11023                        out,
11024                    )
11025                }
11026                Self::undelegate(inner) => {
11027                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11028                        inner,
11029                        out,
11030                    )
11031                }
11032                Self::undelegations(inner) => {
11033                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11034                        inner,
11035                        out,
11036                    )
11037                }
11038                Self::updateConsensusKeys(inner) => {
11039                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
11040                        inner,
11041                        out,
11042                    )
11043                }
11044                Self::upgradeToAndCall(inner) => {
11045                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11046                        inner,
11047                        out,
11048                    )
11049                }
11050                Self::validatorExits(inner) => {
11051                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11052                        inner,
11053                        out,
11054                    )
11055                }
11056                Self::validators(inner) => {
11057                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11058                        inner,
11059                        out,
11060                    )
11061                }
11062            }
11063        }
11064    }
11065    ///Container for all the [`StakeTable`](self) custom errors.
11066    #[derive(Clone)]
11067    #[derive(serde::Serialize, serde::Deserialize)]
11068    #[derive(Debug, PartialEq, Eq, Hash)]
11069    pub enum StakeTableErrors {
11070        #[allow(missing_docs)]
11071        AddressEmptyCode(AddressEmptyCode),
11072        #[allow(missing_docs)]
11073        BLSSigIsInfinity(BLSSigIsInfinity),
11074        #[allow(missing_docs)]
11075        BLSSigVerificationFailed(BLSSigVerificationFailed),
11076        #[allow(missing_docs)]
11077        BLSVKIsInfinity(BLSVKIsInfinity),
11078        #[allow(missing_docs)]
11079        BN254PairingProdFailed(BN254PairingProdFailed),
11080        #[allow(missing_docs)]
11081        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
11082        #[allow(missing_docs)]
11083        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11084        #[allow(missing_docs)]
11085        ERC1967NonPayable(ERC1967NonPayable),
11086        #[allow(missing_docs)]
11087        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
11088        #[allow(missing_docs)]
11089        FailedInnerCall(FailedInnerCall),
11090        #[allow(missing_docs)]
11091        InsufficientAllowance(InsufficientAllowance),
11092        #[allow(missing_docs)]
11093        InsufficientBalance(InsufficientBalance),
11094        #[allow(missing_docs)]
11095        InvalidCommission(InvalidCommission),
11096        #[allow(missing_docs)]
11097        InvalidG1(InvalidG1),
11098        #[allow(missing_docs)]
11099        InvalidInitialization(InvalidInitialization),
11100        #[allow(missing_docs)]
11101        InvalidSchnorrVK(InvalidSchnorrVK),
11102        #[allow(missing_docs)]
11103        NotInitializing(NotInitializing),
11104        #[allow(missing_docs)]
11105        NothingToWithdraw(NothingToWithdraw),
11106        #[allow(missing_docs)]
11107        OwnableInvalidOwner(OwnableInvalidOwner),
11108        #[allow(missing_docs)]
11109        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11110        #[allow(missing_docs)]
11111        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
11112        #[allow(missing_docs)]
11113        PowPrecompileFailed(PowPrecompileFailed),
11114        #[allow(missing_docs)]
11115        PrematureWithdrawal(PrematureWithdrawal),
11116        #[allow(missing_docs)]
11117        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11118        #[allow(missing_docs)]
11119        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11120        #[allow(missing_docs)]
11121        UndelegationAlreadyExists(UndelegationAlreadyExists),
11122        #[allow(missing_docs)]
11123        ValidatorAlreadyExited(ValidatorAlreadyExited),
11124        #[allow(missing_docs)]
11125        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
11126        #[allow(missing_docs)]
11127        ValidatorInactive(ValidatorInactive),
11128        #[allow(missing_docs)]
11129        ValidatorNotExited(ValidatorNotExited),
11130        #[allow(missing_docs)]
11131        ZeroAddress(ZeroAddress),
11132        #[allow(missing_docs)]
11133        ZeroAmount(ZeroAmount),
11134    }
11135    impl StakeTableErrors {
11136        /// All the selectors of this enum.
11137        ///
11138        /// Note that the selectors might not be in the same order as the variants.
11139        /// No guarantees are made about the order of the selectors.
11140        ///
11141        /// Prefer using `SolInterface` methods instead.
11142        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11143            [1u8, 181u8, 20u8, 174u8],
11144            [6u8, 207u8, 67u8, 143u8],
11145            [12u8, 237u8, 62u8, 80u8],
11146            [17u8, 140u8, 218u8, 167u8],
11147            [20u8, 37u8, 234u8, 66u8],
11148            [30u8, 79u8, 189u8, 247u8],
11149            [31u8, 42u8, 32u8, 5u8],
11150            [42u8, 27u8, 45u8, 216u8],
11151            [47u8, 171u8, 146u8, 202u8],
11152            [50u8, 116u8, 250u8, 100u8],
11153            [76u8, 156u8, 140u8, 227u8],
11154            [80u8, 138u8, 121u8, 63u8],
11155            [90u8, 119u8, 67u8, 87u8],
11156            [116u8, 39u8, 35u8, 50u8],
11157            [146u8, 102u8, 83u8, 81u8],
11158            [153u8, 115u8, 247u8, 216u8],
11159            [153u8, 150u8, 179u8, 21u8],
11160            [158u8, 120u8, 209u8, 76u8],
11161            [170u8, 29u8, 73u8, 164u8],
11162            [179u8, 152u8, 151u8, 159u8],
11163            [181u8, 126u8, 33u8, 223u8],
11164            [188u8, 134u8, 197u8, 154u8],
11165            [194u8, 6u8, 51u8, 79u8],
11166            [208u8, 208u8, 79u8, 96u8],
11167            [212u8, 35u8, 164u8, 241u8],
11168            [215u8, 230u8, 188u8, 248u8],
11169            [217u8, 46u8, 35u8, 61u8],
11170            [220u8, 129u8, 219u8, 133u8],
11171            [224u8, 124u8, 141u8, 186u8],
11172            [234u8, 180u8, 169u8, 99u8],
11173            [242u8, 83u8, 20u8, 166u8],
11174            [249u8, 46u8, 232u8, 169u8],
11175        ];
11176        /// The names of the variants in the same order as `SELECTORS`.
11177        pub const VARIANT_NAMES: &'static [&'static str] = &[
11178            ::core::stringify!(BlsKeyAlreadyUsed),
11179            ::core::stringify!(InvalidSchnorrVK),
11180            ::core::stringify!(BLSSigVerificationFailed),
11181            ::core::stringify!(OwnableUnauthorizedAccount),
11182            ::core::stringify!(FailedInnerCall),
11183            ::core::stringify!(OwnableInvalidOwner),
11184            ::core::stringify!(ZeroAmount),
11185            ::core::stringify!(InsufficientAllowance),
11186            ::core::stringify!(OwnershipCannotBeRenounced),
11187            ::core::stringify!(PowPrecompileFailed),
11188            ::core::stringify!(ERC1967InvalidImplementation),
11189            ::core::stringify!(ValidatorInactive),
11190            ::core::stringify!(PrematureWithdrawal),
11191            ::core::stringify!(BLSSigIsInfinity),
11192            ::core::stringify!(InsufficientBalance),
11193            ::core::stringify!(ValidatorAlreadyRegistered),
11194            ::core::stringify!(AddressEmptyCode),
11195            ::core::stringify!(InvalidG1),
11196            ::core::stringify!(UUPSUnsupportedProxiableUUID),
11197            ::core::stringify!(ERC1967NonPayable),
11198            ::core::stringify!(ExitEscrowPeriodInvalid),
11199            ::core::stringify!(BLSVKIsInfinity),
11200            ::core::stringify!(BN254PairingProdFailed),
11201            ::core::stringify!(NothingToWithdraw),
11202            ::core::stringify!(UndelegationAlreadyExists),
11203            ::core::stringify!(NotInitializing),
11204            ::core::stringify!(ZeroAddress),
11205            ::core::stringify!(InvalidCommission),
11206            ::core::stringify!(UUPSUnauthorizedCallContext),
11207            ::core::stringify!(ValidatorAlreadyExited),
11208            ::core::stringify!(ValidatorNotExited),
11209            ::core::stringify!(InvalidInitialization),
11210        ];
11211        /// The signatures in the same order as `SELECTORS`.
11212        pub const SIGNATURES: &'static [&'static str] = &[
11213            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
11214            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
11215            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
11216            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
11217            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
11218            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
11219            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
11220            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
11221            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
11222            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
11223            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
11224            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
11225            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
11226            <BLSSigIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
11227            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
11228            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
11229            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
11230            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
11231            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
11232            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
11233            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
11234            <BLSVKIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
11235            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
11236            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
11237            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
11238            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
11239            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
11240            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
11241            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
11242            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
11243            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
11244            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
11245        ];
11246        /// Returns the signature for the given selector, if known.
11247        #[inline]
11248        pub fn signature_by_selector(
11249            selector: [u8; 4usize],
11250        ) -> ::core::option::Option<&'static str> {
11251            match Self::SELECTORS.binary_search(&selector) {
11252                ::core::result::Result::Ok(idx) => {
11253                    ::core::option::Option::Some(Self::SIGNATURES[idx])
11254                }
11255                ::core::result::Result::Err(_) => ::core::option::Option::None,
11256            }
11257        }
11258        /// Returns the enum variant name for the given selector, if known.
11259        #[inline]
11260        pub fn name_by_selector(
11261            selector: [u8; 4usize],
11262        ) -> ::core::option::Option<&'static str> {
11263            let sig = Self::signature_by_selector(selector)?;
11264            sig.split_once('(').map(|(name, _)| name)
11265        }
11266    }
11267    #[automatically_derived]
11268    impl alloy_sol_types::SolInterface for StakeTableErrors {
11269        const NAME: &'static str = "StakeTableErrors";
11270        const MIN_DATA_LENGTH: usize = 0usize;
11271        const COUNT: usize = 32usize;
11272        #[inline]
11273        fn selector(&self) -> [u8; 4] {
11274            match self {
11275                Self::AddressEmptyCode(_) => {
11276                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11277                }
11278                Self::BLSSigIsInfinity(_) => {
11279                    <BLSSigIsInfinity as alloy_sol_types::SolError>::SELECTOR
11280                }
11281                Self::BLSSigVerificationFailed(_) => {
11282                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
11283                }
11284                Self::BLSVKIsInfinity(_) => {
11285                    <BLSVKIsInfinity as alloy_sol_types::SolError>::SELECTOR
11286                }
11287                Self::BN254PairingProdFailed(_) => {
11288                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
11289                }
11290                Self::BlsKeyAlreadyUsed(_) => {
11291                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
11292                }
11293                Self::ERC1967InvalidImplementation(_) => {
11294                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11295                }
11296                Self::ERC1967NonPayable(_) => {
11297                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11298                }
11299                Self::ExitEscrowPeriodInvalid(_) => {
11300                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
11301                }
11302                Self::FailedInnerCall(_) => {
11303                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11304                }
11305                Self::InsufficientAllowance(_) => {
11306                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
11307                }
11308                Self::InsufficientBalance(_) => {
11309                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
11310                }
11311                Self::InvalidCommission(_) => {
11312                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
11313                }
11314                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
11315                Self::InvalidInitialization(_) => {
11316                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11317                }
11318                Self::InvalidSchnorrVK(_) => {
11319                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
11320                }
11321                Self::NotInitializing(_) => {
11322                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11323                }
11324                Self::NothingToWithdraw(_) => {
11325                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
11326                }
11327                Self::OwnableInvalidOwner(_) => {
11328                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11329                }
11330                Self::OwnableUnauthorizedAccount(_) => {
11331                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11332                }
11333                Self::OwnershipCannotBeRenounced(_) => {
11334                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
11335                }
11336                Self::PowPrecompileFailed(_) => {
11337                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
11338                }
11339                Self::PrematureWithdrawal(_) => {
11340                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
11341                }
11342                Self::UUPSUnauthorizedCallContext(_) => {
11343                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11344                }
11345                Self::UUPSUnsupportedProxiableUUID(_) => {
11346                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11347                }
11348                Self::UndelegationAlreadyExists(_) => {
11349                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
11350                }
11351                Self::ValidatorAlreadyExited(_) => {
11352                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
11353                }
11354                Self::ValidatorAlreadyRegistered(_) => {
11355                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
11356                }
11357                Self::ValidatorInactive(_) => {
11358                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
11359                }
11360                Self::ValidatorNotExited(_) => {
11361                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
11362                }
11363                Self::ZeroAddress(_) => {
11364                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
11365                }
11366                Self::ZeroAmount(_) => {
11367                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
11368                }
11369            }
11370        }
11371        #[inline]
11372        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11373            Self::SELECTORS.get(i).copied()
11374        }
11375        #[inline]
11376        fn valid_selector(selector: [u8; 4]) -> bool {
11377            Self::SELECTORS.binary_search(&selector).is_ok()
11378        }
11379        #[inline]
11380        #[allow(non_snake_case)]
11381        fn abi_decode_raw(
11382            selector: [u8; 4],
11383            data: &[u8],
11384        ) -> alloy_sol_types::Result<Self> {
11385            Self::abi_decode_raw_with_config(
11386                selector,
11387                data,
11388                alloy_sol_types::abi::AbiDecoderConfig::default(),
11389            )
11390        }
11391        #[inline]
11392        #[allow(non_snake_case)]
11393        fn abi_decode_raw_with_config(
11394            selector: [u8; 4],
11395            data: &[u8],
11396            config: alloy_sol_types::abi::AbiDecoderConfig,
11397        ) -> alloy_sol_types::Result<Self> {
11398            static DECODE_SHIMS: &[fn(
11399                &[u8],
11400                alloy_sol_types::abi::AbiDecoderConfig,
11401            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
11402                {
11403                    fn BlsKeyAlreadyUsed(
11404                        data: &[u8],
11405                        config: alloy_sol_types::abi::AbiDecoderConfig,
11406                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11407                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11408                                data,
11409                                config,
11410                            )
11411                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
11412                    }
11413                    BlsKeyAlreadyUsed
11414                },
11415                {
11416                    fn InvalidSchnorrVK(
11417                        data: &[u8],
11418                        config: alloy_sol_types::abi::AbiDecoderConfig,
11419                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11420                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11421                                data,
11422                                config,
11423                            )
11424                            .map(StakeTableErrors::InvalidSchnorrVK)
11425                    }
11426                    InvalidSchnorrVK
11427                },
11428                {
11429                    fn BLSSigVerificationFailed(
11430                        data: &[u8],
11431                        config: alloy_sol_types::abi::AbiDecoderConfig,
11432                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11433                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11434                                data,
11435                                config,
11436                            )
11437                            .map(StakeTableErrors::BLSSigVerificationFailed)
11438                    }
11439                    BLSSigVerificationFailed
11440                },
11441                {
11442                    fn OwnableUnauthorizedAccount(
11443                        data: &[u8],
11444                        config: alloy_sol_types::abi::AbiDecoderConfig,
11445                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11446                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11447                                data,
11448                                config,
11449                            )
11450                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
11451                    }
11452                    OwnableUnauthorizedAccount
11453                },
11454                {
11455                    fn FailedInnerCall(
11456                        data: &[u8],
11457                        config: alloy_sol_types::abi::AbiDecoderConfig,
11458                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11459                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11460                                data,
11461                                config,
11462                            )
11463                            .map(StakeTableErrors::FailedInnerCall)
11464                    }
11465                    FailedInnerCall
11466                },
11467                {
11468                    fn OwnableInvalidOwner(
11469                        data: &[u8],
11470                        config: alloy_sol_types::abi::AbiDecoderConfig,
11471                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11472                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11473                                data,
11474                                config,
11475                            )
11476                            .map(StakeTableErrors::OwnableInvalidOwner)
11477                    }
11478                    OwnableInvalidOwner
11479                },
11480                {
11481                    fn ZeroAmount(
11482                        data: &[u8],
11483                        config: alloy_sol_types::abi::AbiDecoderConfig,
11484                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11485                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11486                                data,
11487                                config,
11488                            )
11489                            .map(StakeTableErrors::ZeroAmount)
11490                    }
11491                    ZeroAmount
11492                },
11493                {
11494                    fn InsufficientAllowance(
11495                        data: &[u8],
11496                        config: alloy_sol_types::abi::AbiDecoderConfig,
11497                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11498                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11499                                data,
11500                                config,
11501                            )
11502                            .map(StakeTableErrors::InsufficientAllowance)
11503                    }
11504                    InsufficientAllowance
11505                },
11506                {
11507                    fn OwnershipCannotBeRenounced(
11508                        data: &[u8],
11509                        config: alloy_sol_types::abi::AbiDecoderConfig,
11510                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11511                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11512                                data,
11513                                config,
11514                            )
11515                            .map(StakeTableErrors::OwnershipCannotBeRenounced)
11516                    }
11517                    OwnershipCannotBeRenounced
11518                },
11519                {
11520                    fn PowPrecompileFailed(
11521                        data: &[u8],
11522                        config: alloy_sol_types::abi::AbiDecoderConfig,
11523                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11524                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11525                                data,
11526                                config,
11527                            )
11528                            .map(StakeTableErrors::PowPrecompileFailed)
11529                    }
11530                    PowPrecompileFailed
11531                },
11532                {
11533                    fn ERC1967InvalidImplementation(
11534                        data: &[u8],
11535                        config: alloy_sol_types::abi::AbiDecoderConfig,
11536                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11537                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11538                                data,
11539                                config,
11540                            )
11541                            .map(StakeTableErrors::ERC1967InvalidImplementation)
11542                    }
11543                    ERC1967InvalidImplementation
11544                },
11545                {
11546                    fn ValidatorInactive(
11547                        data: &[u8],
11548                        config: alloy_sol_types::abi::AbiDecoderConfig,
11549                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11550                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11551                                data,
11552                                config,
11553                            )
11554                            .map(StakeTableErrors::ValidatorInactive)
11555                    }
11556                    ValidatorInactive
11557                },
11558                {
11559                    fn PrematureWithdrawal(
11560                        data: &[u8],
11561                        config: alloy_sol_types::abi::AbiDecoderConfig,
11562                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11563                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11564                                data,
11565                                config,
11566                            )
11567                            .map(StakeTableErrors::PrematureWithdrawal)
11568                    }
11569                    PrematureWithdrawal
11570                },
11571                {
11572                    fn BLSSigIsInfinity(
11573                        data: &[u8],
11574                        config: alloy_sol_types::abi::AbiDecoderConfig,
11575                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11576                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11577                                data,
11578                                config,
11579                            )
11580                            .map(StakeTableErrors::BLSSigIsInfinity)
11581                    }
11582                    BLSSigIsInfinity
11583                },
11584                {
11585                    fn InsufficientBalance(
11586                        data: &[u8],
11587                        config: alloy_sol_types::abi::AbiDecoderConfig,
11588                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11589                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11590                                data,
11591                                config,
11592                            )
11593                            .map(StakeTableErrors::InsufficientBalance)
11594                    }
11595                    InsufficientBalance
11596                },
11597                {
11598                    fn ValidatorAlreadyRegistered(
11599                        data: &[u8],
11600                        config: alloy_sol_types::abi::AbiDecoderConfig,
11601                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11602                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11603                                data,
11604                                config,
11605                            )
11606                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11607                    }
11608                    ValidatorAlreadyRegistered
11609                },
11610                {
11611                    fn AddressEmptyCode(
11612                        data: &[u8],
11613                        config: alloy_sol_types::abi::AbiDecoderConfig,
11614                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11615                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11616                                data,
11617                                config,
11618                            )
11619                            .map(StakeTableErrors::AddressEmptyCode)
11620                    }
11621                    AddressEmptyCode
11622                },
11623                {
11624                    fn InvalidG1(
11625                        data: &[u8],
11626                        config: alloy_sol_types::abi::AbiDecoderConfig,
11627                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11628                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11629                                data,
11630                                config,
11631                            )
11632                            .map(StakeTableErrors::InvalidG1)
11633                    }
11634                    InvalidG1
11635                },
11636                {
11637                    fn UUPSUnsupportedProxiableUUID(
11638                        data: &[u8],
11639                        config: alloy_sol_types::abi::AbiDecoderConfig,
11640                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11641                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11642                                data,
11643                                config,
11644                            )
11645                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11646                    }
11647                    UUPSUnsupportedProxiableUUID
11648                },
11649                {
11650                    fn ERC1967NonPayable(
11651                        data: &[u8],
11652                        config: alloy_sol_types::abi::AbiDecoderConfig,
11653                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11654                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11655                                data,
11656                                config,
11657                            )
11658                            .map(StakeTableErrors::ERC1967NonPayable)
11659                    }
11660                    ERC1967NonPayable
11661                },
11662                {
11663                    fn ExitEscrowPeriodInvalid(
11664                        data: &[u8],
11665                        config: alloy_sol_types::abi::AbiDecoderConfig,
11666                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11667                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11668                                data,
11669                                config,
11670                            )
11671                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11672                    }
11673                    ExitEscrowPeriodInvalid
11674                },
11675                {
11676                    fn BLSVKIsInfinity(
11677                        data: &[u8],
11678                        config: alloy_sol_types::abi::AbiDecoderConfig,
11679                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11680                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11681                                data,
11682                                config,
11683                            )
11684                            .map(StakeTableErrors::BLSVKIsInfinity)
11685                    }
11686                    BLSVKIsInfinity
11687                },
11688                {
11689                    fn BN254PairingProdFailed(
11690                        data: &[u8],
11691                        config: alloy_sol_types::abi::AbiDecoderConfig,
11692                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11693                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11694                                data,
11695                                config,
11696                            )
11697                            .map(StakeTableErrors::BN254PairingProdFailed)
11698                    }
11699                    BN254PairingProdFailed
11700                },
11701                {
11702                    fn NothingToWithdraw(
11703                        data: &[u8],
11704                        config: alloy_sol_types::abi::AbiDecoderConfig,
11705                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11706                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11707                                data,
11708                                config,
11709                            )
11710                            .map(StakeTableErrors::NothingToWithdraw)
11711                    }
11712                    NothingToWithdraw
11713                },
11714                {
11715                    fn UndelegationAlreadyExists(
11716                        data: &[u8],
11717                        config: alloy_sol_types::abi::AbiDecoderConfig,
11718                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11719                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11720                                data,
11721                                config,
11722                            )
11723                            .map(StakeTableErrors::UndelegationAlreadyExists)
11724                    }
11725                    UndelegationAlreadyExists
11726                },
11727                {
11728                    fn NotInitializing(
11729                        data: &[u8],
11730                        config: alloy_sol_types::abi::AbiDecoderConfig,
11731                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11732                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11733                                data,
11734                                config,
11735                            )
11736                            .map(StakeTableErrors::NotInitializing)
11737                    }
11738                    NotInitializing
11739                },
11740                {
11741                    fn ZeroAddress(
11742                        data: &[u8],
11743                        config: alloy_sol_types::abi::AbiDecoderConfig,
11744                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11745                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11746                                data,
11747                                config,
11748                            )
11749                            .map(StakeTableErrors::ZeroAddress)
11750                    }
11751                    ZeroAddress
11752                },
11753                {
11754                    fn InvalidCommission(
11755                        data: &[u8],
11756                        config: alloy_sol_types::abi::AbiDecoderConfig,
11757                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11758                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11759                                data,
11760                                config,
11761                            )
11762                            .map(StakeTableErrors::InvalidCommission)
11763                    }
11764                    InvalidCommission
11765                },
11766                {
11767                    fn UUPSUnauthorizedCallContext(
11768                        data: &[u8],
11769                        config: alloy_sol_types::abi::AbiDecoderConfig,
11770                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11771                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11772                                data,
11773                                config,
11774                            )
11775                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11776                    }
11777                    UUPSUnauthorizedCallContext
11778                },
11779                {
11780                    fn ValidatorAlreadyExited(
11781                        data: &[u8],
11782                        config: alloy_sol_types::abi::AbiDecoderConfig,
11783                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11784                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11785                                data,
11786                                config,
11787                            )
11788                            .map(StakeTableErrors::ValidatorAlreadyExited)
11789                    }
11790                    ValidatorAlreadyExited
11791                },
11792                {
11793                    fn ValidatorNotExited(
11794                        data: &[u8],
11795                        config: alloy_sol_types::abi::AbiDecoderConfig,
11796                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11797                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11798                                data,
11799                                config,
11800                            )
11801                            .map(StakeTableErrors::ValidatorNotExited)
11802                    }
11803                    ValidatorNotExited
11804                },
11805                {
11806                    fn InvalidInitialization(
11807                        data: &[u8],
11808                        config: alloy_sol_types::abi::AbiDecoderConfig,
11809                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11810                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
11811                                data,
11812                                config,
11813                            )
11814                            .map(StakeTableErrors::InvalidInitialization)
11815                    }
11816                    InvalidInitialization
11817                },
11818            ];
11819            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11820                return Err(
11821                    alloy_sol_types::Error::unknown_selector(
11822                        <Self as alloy_sol_types::SolInterface>::NAME,
11823                        selector,
11824                    ),
11825                );
11826            };
11827            DECODE_SHIMS[idx](data, config)
11828        }
11829        #[inline]
11830        #[allow(non_snake_case)]
11831        fn abi_decode_raw_validate(
11832            selector: [u8; 4],
11833            data: &[u8],
11834        ) -> alloy_sol_types::Result<Self> {
11835            Self::abi_decode_raw_with_config(
11836                selector,
11837                data,
11838                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11839            )
11840        }
11841        #[inline]
11842        fn abi_encoded_size(&self) -> usize {
11843            match self {
11844                Self::AddressEmptyCode(inner) => {
11845                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
11846                        inner,
11847                    )
11848                }
11849                Self::BLSSigIsInfinity(inner) => {
11850                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
11851                        inner,
11852                    )
11853                }
11854                Self::BLSSigVerificationFailed(inner) => {
11855                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
11856                        inner,
11857                    )
11858                }
11859                Self::BLSVKIsInfinity(inner) => {
11860                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
11861                        inner,
11862                    )
11863                }
11864                Self::BN254PairingProdFailed(inner) => {
11865                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
11866                        inner,
11867                    )
11868                }
11869                Self::BlsKeyAlreadyUsed(inner) => {
11870                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
11871                        inner,
11872                    )
11873                }
11874                Self::ERC1967InvalidImplementation(inner) => {
11875                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
11876                        inner,
11877                    )
11878                }
11879                Self::ERC1967NonPayable(inner) => {
11880                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11881                        inner,
11882                    )
11883                }
11884                Self::ExitEscrowPeriodInvalid(inner) => {
11885                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
11886                        inner,
11887                    )
11888                }
11889                Self::FailedInnerCall(inner) => {
11890                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11891                        inner,
11892                    )
11893                }
11894                Self::InsufficientAllowance(inner) => {
11895                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
11896                        inner,
11897                    )
11898                }
11899                Self::InsufficientBalance(inner) => {
11900                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
11901                        inner,
11902                    )
11903                }
11904                Self::InvalidCommission(inner) => {
11905                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
11906                        inner,
11907                    )
11908                }
11909                Self::InvalidG1(inner) => {
11910                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
11911                }
11912                Self::InvalidInitialization(inner) => {
11913                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11914                        inner,
11915                    )
11916                }
11917                Self::InvalidSchnorrVK(inner) => {
11918                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
11919                        inner,
11920                    )
11921                }
11922                Self::NotInitializing(inner) => {
11923                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11924                        inner,
11925                    )
11926                }
11927                Self::NothingToWithdraw(inner) => {
11928                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
11929                        inner,
11930                    )
11931                }
11932                Self::OwnableInvalidOwner(inner) => {
11933                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11934                        inner,
11935                    )
11936                }
11937                Self::OwnableUnauthorizedAccount(inner) => {
11938                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11939                        inner,
11940                    )
11941                }
11942                Self::OwnershipCannotBeRenounced(inner) => {
11943                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
11944                        inner,
11945                    )
11946                }
11947                Self::PowPrecompileFailed(inner) => {
11948                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
11949                        inner,
11950                    )
11951                }
11952                Self::PrematureWithdrawal(inner) => {
11953                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
11954                        inner,
11955                    )
11956                }
11957                Self::UUPSUnauthorizedCallContext(inner) => {
11958                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11959                        inner,
11960                    )
11961                }
11962                Self::UUPSUnsupportedProxiableUUID(inner) => {
11963                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11964                        inner,
11965                    )
11966                }
11967                Self::UndelegationAlreadyExists(inner) => {
11968                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
11969                        inner,
11970                    )
11971                }
11972                Self::ValidatorAlreadyExited(inner) => {
11973                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
11974                        inner,
11975                    )
11976                }
11977                Self::ValidatorAlreadyRegistered(inner) => {
11978                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
11979                        inner,
11980                    )
11981                }
11982                Self::ValidatorInactive(inner) => {
11983                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
11984                        inner,
11985                    )
11986                }
11987                Self::ValidatorNotExited(inner) => {
11988                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
11989                        inner,
11990                    )
11991                }
11992                Self::ZeroAddress(inner) => {
11993                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
11994                }
11995                Self::ZeroAmount(inner) => {
11996                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
11997                }
11998            }
11999        }
12000        #[inline]
12001        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12002            match self {
12003                Self::AddressEmptyCode(inner) => {
12004                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12005                        inner,
12006                        out,
12007                    )
12008                }
12009                Self::BLSSigIsInfinity(inner) => {
12010                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
12011                        inner,
12012                        out,
12013                    )
12014                }
12015                Self::BLSSigVerificationFailed(inner) => {
12016                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
12017                        inner,
12018                        out,
12019                    )
12020                }
12021                Self::BLSVKIsInfinity(inner) => {
12022                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
12023                        inner,
12024                        out,
12025                    )
12026                }
12027                Self::BN254PairingProdFailed(inner) => {
12028                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
12029                        inner,
12030                        out,
12031                    )
12032                }
12033                Self::BlsKeyAlreadyUsed(inner) => {
12034                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
12035                        inner,
12036                        out,
12037                    )
12038                }
12039                Self::ERC1967InvalidImplementation(inner) => {
12040                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12041                        inner,
12042                        out,
12043                    )
12044                }
12045                Self::ERC1967NonPayable(inner) => {
12046                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12047                        inner,
12048                        out,
12049                    )
12050                }
12051                Self::ExitEscrowPeriodInvalid(inner) => {
12052                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
12053                        inner,
12054                        out,
12055                    )
12056                }
12057                Self::FailedInnerCall(inner) => {
12058                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12059                        inner,
12060                        out,
12061                    )
12062                }
12063                Self::InsufficientAllowance(inner) => {
12064                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
12065                        inner,
12066                        out,
12067                    )
12068                }
12069                Self::InsufficientBalance(inner) => {
12070                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
12071                        inner,
12072                        out,
12073                    )
12074                }
12075                Self::InvalidCommission(inner) => {
12076                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
12077                        inner,
12078                        out,
12079                    )
12080                }
12081                Self::InvalidG1(inner) => {
12082                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
12083                }
12084                Self::InvalidInitialization(inner) => {
12085                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12086                        inner,
12087                        out,
12088                    )
12089                }
12090                Self::InvalidSchnorrVK(inner) => {
12091                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
12092                        inner,
12093                        out,
12094                    )
12095                }
12096                Self::NotInitializing(inner) => {
12097                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12098                        inner,
12099                        out,
12100                    )
12101                }
12102                Self::NothingToWithdraw(inner) => {
12103                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
12104                        inner,
12105                        out,
12106                    )
12107                }
12108                Self::OwnableInvalidOwner(inner) => {
12109                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12110                        inner,
12111                        out,
12112                    )
12113                }
12114                Self::OwnableUnauthorizedAccount(inner) => {
12115                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12116                        inner,
12117                        out,
12118                    )
12119                }
12120                Self::OwnershipCannotBeRenounced(inner) => {
12121                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12122                        inner,
12123                        out,
12124                    )
12125                }
12126                Self::PowPrecompileFailed(inner) => {
12127                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
12128                        inner,
12129                        out,
12130                    )
12131                }
12132                Self::PrematureWithdrawal(inner) => {
12133                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
12134                        inner,
12135                        out,
12136                    )
12137                }
12138                Self::UUPSUnauthorizedCallContext(inner) => {
12139                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12140                        inner,
12141                        out,
12142                    )
12143                }
12144                Self::UUPSUnsupportedProxiableUUID(inner) => {
12145                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12146                        inner,
12147                        out,
12148                    )
12149                }
12150                Self::UndelegationAlreadyExists(inner) => {
12151                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
12152                        inner,
12153                        out,
12154                    )
12155                }
12156                Self::ValidatorAlreadyExited(inner) => {
12157                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
12158                        inner,
12159                        out,
12160                    )
12161                }
12162                Self::ValidatorAlreadyRegistered(inner) => {
12163                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
12164                        inner,
12165                        out,
12166                    )
12167                }
12168                Self::ValidatorInactive(inner) => {
12169                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
12170                        inner,
12171                        out,
12172                    )
12173                }
12174                Self::ValidatorNotExited(inner) => {
12175                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
12176                        inner,
12177                        out,
12178                    )
12179                }
12180                Self::ZeroAddress(inner) => {
12181                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
12182                        inner,
12183                        out,
12184                    )
12185                }
12186                Self::ZeroAmount(inner) => {
12187                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
12188                }
12189            }
12190        }
12191    }
12192    #[automatically_derived]
12193    impl StakeTableErrors {
12194        /**Creates a [`AddressEmptyCode`] error.
12195
12196```solidity
12197error AddressEmptyCode(address)
12198```*/
12199        #[inline]
12200        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
12201            Self::AddressEmptyCode(AddressEmptyCode { target: target })
12202        }
12203        /**Creates a [`BLSSigIsInfinity`] error.
12204
12205```solidity
12206error BLSSigIsInfinity()
12207```*/
12208        #[inline]
12209        pub fn bls_sig_is_infinity() -> Self {
12210            Self::BLSSigIsInfinity(BLSSigIsInfinity)
12211        }
12212        /**Creates a [`BLSSigVerificationFailed`] error.
12213
12214```solidity
12215error BLSSigVerificationFailed()
12216```*/
12217        #[inline]
12218        pub fn bls_sig_verification_failed() -> Self {
12219            Self::BLSSigVerificationFailed(BLSSigVerificationFailed)
12220        }
12221        /**Creates a [`BLSVKIsInfinity`] error.
12222
12223```solidity
12224error BLSVKIsInfinity()
12225```*/
12226        #[inline]
12227        pub fn blsvk_is_infinity() -> Self {
12228            Self::BLSVKIsInfinity(BLSVKIsInfinity)
12229        }
12230        /**Creates a [`BN254PairingProdFailed`] error.
12231
12232```solidity
12233error BN254PairingProdFailed()
12234```*/
12235        #[inline]
12236        pub fn bn_254_pairing_prod_failed() -> Self {
12237            Self::BN254PairingProdFailed(BN254PairingProdFailed)
12238        }
12239        /**Creates a [`BlsKeyAlreadyUsed`] error.
12240
12241```solidity
12242error BlsKeyAlreadyUsed()
12243```*/
12244        #[inline]
12245        pub fn bls_key_already_used() -> Self {
12246            Self::BlsKeyAlreadyUsed(BlsKeyAlreadyUsed)
12247        }
12248        /**Creates a [`ERC1967InvalidImplementation`] error.
12249
12250```solidity
12251error ERC1967InvalidImplementation(address)
12252```*/
12253        #[inline]
12254        pub fn erc_1967_invalid_implementation(
12255            implementation: alloy::sol_types::private::Address,
12256        ) -> Self {
12257            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
12258                implementation: implementation,
12259            })
12260        }
12261        /**Creates a [`ERC1967NonPayable`] error.
12262
12263```solidity
12264error ERC1967NonPayable()
12265```*/
12266        #[inline]
12267        pub fn erc_1967_non_payable() -> Self {
12268            Self::ERC1967NonPayable(ERC1967NonPayable)
12269        }
12270        /**Creates a [`ExitEscrowPeriodInvalid`] error.
12271
12272```solidity
12273error ExitEscrowPeriodInvalid()
12274```*/
12275        #[inline]
12276        pub fn exit_escrow_period_invalid() -> Self {
12277            Self::ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid)
12278        }
12279        /**Creates a [`FailedInnerCall`] error.
12280
12281```solidity
12282error FailedInnerCall()
12283```*/
12284        #[inline]
12285        pub fn failed_inner_call() -> Self {
12286            Self::FailedInnerCall(FailedInnerCall)
12287        }
12288        /**Creates a [`InsufficientAllowance`] error.
12289
12290```solidity
12291error InsufficientAllowance(uint256,uint256)
12292```*/
12293        #[inline]
12294        pub fn insufficient_allowance(
12295            _0: alloy::sol_types::private::primitives::aliases::U256,
12296            _1: alloy::sol_types::private::primitives::aliases::U256,
12297        ) -> Self {
12298            Self::InsufficientAllowance(InsufficientAllowance {
12299                _0: _0,
12300                _1: _1,
12301            })
12302        }
12303        /**Creates a [`InsufficientBalance`] error.
12304
12305```solidity
12306error InsufficientBalance(uint256)
12307```*/
12308        #[inline]
12309        pub fn insufficient_balance(
12310            _0: alloy::sol_types::private::primitives::aliases::U256,
12311        ) -> Self {
12312            Self::InsufficientBalance(InsufficientBalance(_0))
12313        }
12314        /**Creates a [`InvalidCommission`] error.
12315
12316```solidity
12317error InvalidCommission()
12318```*/
12319        #[inline]
12320        pub fn invalid_commission() -> Self {
12321            Self::InvalidCommission(InvalidCommission)
12322        }
12323        /**Creates a [`InvalidG1`] error.
12324
12325```solidity
12326error InvalidG1()
12327```*/
12328        #[inline]
12329        pub fn invalid_g_1() -> Self {
12330            Self::InvalidG1(InvalidG1)
12331        }
12332        /**Creates a [`InvalidInitialization`] error.
12333
12334```solidity
12335error InvalidInitialization()
12336```*/
12337        #[inline]
12338        pub fn invalid_initialization() -> Self {
12339            Self::InvalidInitialization(InvalidInitialization)
12340        }
12341        /**Creates a [`InvalidSchnorrVK`] error.
12342
12343```solidity
12344error InvalidSchnorrVK()
12345```*/
12346        #[inline]
12347        pub fn invalid_schnorr_vk() -> Self {
12348            Self::InvalidSchnorrVK(InvalidSchnorrVK)
12349        }
12350        /**Creates a [`NotInitializing`] error.
12351
12352```solidity
12353error NotInitializing()
12354```*/
12355        #[inline]
12356        pub fn not_initializing() -> Self {
12357            Self::NotInitializing(NotInitializing)
12358        }
12359        /**Creates a [`NothingToWithdraw`] error.
12360
12361```solidity
12362error NothingToWithdraw()
12363```*/
12364        #[inline]
12365        pub fn nothing_to_withdraw() -> Self {
12366            Self::NothingToWithdraw(NothingToWithdraw)
12367        }
12368        /**Creates a [`OwnableInvalidOwner`] error.
12369
12370```solidity
12371error OwnableInvalidOwner(address)
12372```*/
12373        #[inline]
12374        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
12375            Self::OwnableInvalidOwner(OwnableInvalidOwner {
12376                owner: owner,
12377            })
12378        }
12379        /**Creates a [`OwnableUnauthorizedAccount`] error.
12380
12381```solidity
12382error OwnableUnauthorizedAccount(address)
12383```*/
12384        #[inline]
12385        pub fn ownable_unauthorized_account(
12386            account: alloy::sol_types::private::Address,
12387        ) -> Self {
12388            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
12389                account: account,
12390            })
12391        }
12392        /**Creates a [`OwnershipCannotBeRenounced`] error.
12393
12394```solidity
12395error OwnershipCannotBeRenounced()
12396```*/
12397        #[inline]
12398        pub fn ownership_cannot_be_renounced() -> Self {
12399            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
12400        }
12401        /**Creates a [`PowPrecompileFailed`] error.
12402
12403```solidity
12404error PowPrecompileFailed()
12405```*/
12406        #[inline]
12407        pub fn pow_precompile_failed() -> Self {
12408            Self::PowPrecompileFailed(PowPrecompileFailed)
12409        }
12410        /**Creates a [`PrematureWithdrawal`] error.
12411
12412```solidity
12413error PrematureWithdrawal()
12414```*/
12415        #[inline]
12416        pub fn premature_withdrawal() -> Self {
12417            Self::PrematureWithdrawal(PrematureWithdrawal)
12418        }
12419        /**Creates a [`UUPSUnauthorizedCallContext`] error.
12420
12421```solidity
12422error UUPSUnauthorizedCallContext()
12423```*/
12424        #[inline]
12425        pub fn uups_unauthorized_call_context() -> Self {
12426            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
12427        }
12428        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
12429
12430```solidity
12431error UUPSUnsupportedProxiableUUID(bytes32)
12432```*/
12433        #[inline]
12434        pub fn uups_unsupported_proxiable_uuid(
12435            slot: alloy::sol_types::private::FixedBytes<32>,
12436        ) -> Self {
12437            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
12438                slot: slot,
12439            })
12440        }
12441        /**Creates a [`UndelegationAlreadyExists`] error.
12442
12443```solidity
12444error UndelegationAlreadyExists()
12445```*/
12446        #[inline]
12447        pub fn undelegation_already_exists() -> Self {
12448            Self::UndelegationAlreadyExists(UndelegationAlreadyExists)
12449        }
12450        /**Creates a [`ValidatorAlreadyExited`] error.
12451
12452```solidity
12453error ValidatorAlreadyExited()
12454```*/
12455        #[inline]
12456        pub fn validator_already_exited() -> Self {
12457            Self::ValidatorAlreadyExited(ValidatorAlreadyExited)
12458        }
12459        /**Creates a [`ValidatorAlreadyRegistered`] error.
12460
12461```solidity
12462error ValidatorAlreadyRegistered()
12463```*/
12464        #[inline]
12465        pub fn validator_already_registered() -> Self {
12466            Self::ValidatorAlreadyRegistered(ValidatorAlreadyRegistered)
12467        }
12468        /**Creates a [`ValidatorInactive`] error.
12469
12470```solidity
12471error ValidatorInactive()
12472```*/
12473        #[inline]
12474        pub fn validator_inactive() -> Self {
12475            Self::ValidatorInactive(ValidatorInactive)
12476        }
12477        /**Creates a [`ValidatorNotExited`] error.
12478
12479```solidity
12480error ValidatorNotExited()
12481```*/
12482        #[inline]
12483        pub fn validator_not_exited() -> Self {
12484            Self::ValidatorNotExited(ValidatorNotExited)
12485        }
12486        /**Creates a [`ZeroAddress`] error.
12487
12488```solidity
12489error ZeroAddress()
12490```*/
12491        #[inline]
12492        pub fn zero_address() -> Self {
12493            Self::ZeroAddress(ZeroAddress)
12494        }
12495        /**Creates a [`ZeroAmount`] error.
12496
12497```solidity
12498error ZeroAmount()
12499```*/
12500        #[inline]
12501        pub fn zero_amount() -> Self {
12502            Self::ZeroAmount(ZeroAmount)
12503        }
12504    }
12505    ///Container for all the [`StakeTable`](self) events.
12506    #[derive(Clone)]
12507    #[derive(serde::Serialize, serde::Deserialize)]
12508    #[derive(Debug, PartialEq, Eq, Hash)]
12509    pub enum StakeTableEvents {
12510        #[allow(missing_docs)]
12511        ConsensusKeysUpdated(ConsensusKeysUpdated),
12512        #[allow(missing_docs)]
12513        Delegated(Delegated),
12514        #[allow(missing_docs)]
12515        Initialized(Initialized),
12516        #[allow(missing_docs)]
12517        OwnershipTransferred(OwnershipTransferred),
12518        #[allow(missing_docs)]
12519        Undelegated(Undelegated),
12520        #[allow(missing_docs)]
12521        Upgraded(Upgraded),
12522        #[allow(missing_docs)]
12523        ValidatorExit(ValidatorExit),
12524        #[allow(missing_docs)]
12525        ValidatorRegistered(ValidatorRegistered),
12526        #[allow(missing_docs)]
12527        Withdrawal(Withdrawal),
12528    }
12529    impl StakeTableEvents {
12530        /// All the selectors of this enum.
12531        ///
12532        /// Note that the selectors might not be in the same order as the variants.
12533        /// No guarantees are made about the order of the selectors.
12534        ///
12535        /// Prefer using `SolInterface` methods instead.
12536        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12537            [
12538                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
12539                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
12540                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
12541            ],
12542            [
12543                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
12544                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
12545                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
12546            ],
12547            [
12548                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
12549                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
12550                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
12551            ],
12552            [
12553                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12554                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12555                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12556            ],
12557            [
12558                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12559                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12560                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12561            ],
12562            [
12563                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12564                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12565                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12566            ],
12567            [
12568                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
12569                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
12570                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
12571            ],
12572            [
12573                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
12574                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
12575                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
12576            ],
12577            [
12578                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
12579                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
12580                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
12581            ],
12582        ];
12583        /// The names of the variants in the same order as `SELECTORS`.
12584        pub const VARIANT_NAMES: &'static [&'static str] = &[
12585            ::core::stringify!(Undelegated),
12586            ::core::stringify!(Withdrawal),
12587            ::core::stringify!(ConsensusKeysUpdated),
12588            ::core::stringify!(OwnershipTransferred),
12589            ::core::stringify!(Upgraded),
12590            ::core::stringify!(Initialized),
12591            ::core::stringify!(Delegated),
12592            ::core::stringify!(ValidatorRegistered),
12593            ::core::stringify!(ValidatorExit),
12594        ];
12595        /// The signatures in the same order as `SELECTORS`.
12596        pub const SIGNATURES: &'static [&'static str] = &[
12597            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
12598            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
12599            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
12600            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
12601            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
12602            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
12603            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
12604            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
12605            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
12606        ];
12607        /// Returns the signature for the given selector, if known.
12608        #[inline]
12609        pub fn signature_by_selector(
12610            selector: [u8; 32usize],
12611        ) -> ::core::option::Option<&'static str> {
12612            match Self::SELECTORS.binary_search(&selector) {
12613                ::core::result::Result::Ok(idx) => {
12614                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12615                }
12616                ::core::result::Result::Err(_) => ::core::option::Option::None,
12617            }
12618        }
12619        /// Returns the enum variant name for the given selector, if known.
12620        #[inline]
12621        pub fn name_by_selector(
12622            selector: [u8; 32usize],
12623        ) -> ::core::option::Option<&'static str> {
12624            let sig = Self::signature_by_selector(selector)?;
12625            sig.split_once('(').map(|(name, _)| name)
12626        }
12627    }
12628    #[automatically_derived]
12629    impl alloy_sol_types::SolEventInterface for StakeTableEvents {
12630        const NAME: &'static str = "StakeTableEvents";
12631        const COUNT: usize = 9usize;
12632        fn decode_raw_log(
12633            topics: &[alloy_sol_types::Word],
12634            data: &[u8],
12635        ) -> alloy_sol_types::Result<Self> {
12636            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
12637                topics,
12638                data,
12639                alloy_sol_types::abi::AbiDecoderConfig::default(),
12640            )
12641        }
12642        fn decode_raw_log_with_config(
12643            topics: &[alloy_sol_types::Word],
12644            data: &[u8],
12645            config: alloy_sol_types::abi::AbiDecoderConfig,
12646        ) -> alloy_sol_types::Result<Self> {
12647            match topics.first().copied() {
12648                Some(
12649                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12650                ) => {
12651                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12652                            topics,
12653                            data,
12654                            config,
12655                        )
12656                        .map(Self::ConsensusKeysUpdated)
12657                }
12658                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12659                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12660                            topics,
12661                            data,
12662                            config,
12663                        )
12664                        .map(Self::Delegated)
12665                }
12666                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12667                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12668                            topics,
12669                            data,
12670                            config,
12671                        )
12672                        .map(Self::Initialized)
12673                }
12674                Some(
12675                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12676                ) => {
12677                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12678                            topics,
12679                            data,
12680                            config,
12681                        )
12682                        .map(Self::OwnershipTransferred)
12683                }
12684                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12685                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12686                            topics,
12687                            data,
12688                            config,
12689                        )
12690                        .map(Self::Undelegated)
12691                }
12692                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12693                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12694                            topics,
12695                            data,
12696                            config,
12697                        )
12698                        .map(Self::Upgraded)
12699                }
12700                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12701                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12702                            topics,
12703                            data,
12704                            config,
12705                        )
12706                        .map(Self::ValidatorExit)
12707                }
12708                Some(
12709                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12710                ) => {
12711                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12712                            topics,
12713                            data,
12714                            config,
12715                        )
12716                        .map(Self::ValidatorRegistered)
12717                }
12718                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12719                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
12720                            topics,
12721                            data,
12722                            config,
12723                        )
12724                        .map(Self::Withdrawal)
12725                }
12726                _ => {
12727                    if topics
12728                        .len()
12729                        .checked_mul(alloy_sol_types::Word::len_bytes())
12730                        .and_then(|len| len.checked_add(data.len()))
12731                        .is_none_or(|len| len > config.get_memory_limit())
12732                    {
12733                        return alloy_sol_types::private::Err(
12734                            alloy_sol_types::Error::MemoryLimitExceeded(
12735                                config.get_memory_limit(),
12736                            ),
12737                        );
12738                    }
12739                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12740                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12741                        log: alloy_sol_types::private::Box::new(
12742                            alloy_sol_types::private::LogData::new_unchecked(
12743                                topics.to_vec(),
12744                                data.to_vec().into(),
12745                            ),
12746                        ),
12747                    })
12748                }
12749            }
12750        }
12751    }
12752    #[automatically_derived]
12753    impl alloy_sol_types::private::IntoLogData for StakeTableEvents {
12754        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12755            match self {
12756                Self::ConsensusKeysUpdated(inner) => {
12757                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12758                }
12759                Self::Delegated(inner) => {
12760                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12761                }
12762                Self::Initialized(inner) => {
12763                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12764                }
12765                Self::OwnershipTransferred(inner) => {
12766                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12767                }
12768                Self::Undelegated(inner) => {
12769                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12770                }
12771                Self::Upgraded(inner) => {
12772                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12773                }
12774                Self::ValidatorExit(inner) => {
12775                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12776                }
12777                Self::ValidatorRegistered(inner) => {
12778                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12779                }
12780                Self::Withdrawal(inner) => {
12781                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12782                }
12783            }
12784        }
12785        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12786            match self {
12787                Self::ConsensusKeysUpdated(inner) => {
12788                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12789                }
12790                Self::Delegated(inner) => {
12791                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12792                }
12793                Self::Initialized(inner) => {
12794                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12795                }
12796                Self::OwnershipTransferred(inner) => {
12797                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12798                }
12799                Self::Undelegated(inner) => {
12800                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12801                }
12802                Self::Upgraded(inner) => {
12803                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12804                }
12805                Self::ValidatorExit(inner) => {
12806                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12807                }
12808                Self::ValidatorRegistered(inner) => {
12809                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12810                }
12811                Self::Withdrawal(inner) => {
12812                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12813                }
12814            }
12815        }
12816    }
12817    #[automatically_derived]
12818    impl StakeTableEvents {
12819        /**Creates a [`ConsensusKeysUpdated`] event.
12820
12821```solidity
12822event ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))
12823```*/
12824        #[inline]
12825        pub fn consensus_keys_updated(
12826            account: alloy::sol_types::private::Address,
12827            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12828            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12829        ) -> Self {
12830            Self::ConsensusKeysUpdated(ConsensusKeysUpdated {
12831                account: account,
12832                blsVK: bls_vk,
12833                schnorrVK: schnorr_vk,
12834            })
12835        }
12836        /**Creates a [`Delegated`] event.
12837
12838```solidity
12839event Delegated(address,address,uint256)
12840```*/
12841        #[inline]
12842        pub fn delegated(
12843            delegator: alloy::sol_types::private::Address,
12844            validator: alloy::sol_types::private::Address,
12845            amount: alloy::sol_types::private::primitives::aliases::U256,
12846        ) -> Self {
12847            Self::Delegated(Delegated {
12848                delegator: delegator,
12849                validator: validator,
12850                amount: amount,
12851            })
12852        }
12853        /**Creates a [`Initialized`] event.
12854
12855```solidity
12856event Initialized(uint64)
12857```*/
12858        #[inline]
12859        pub fn initialized(version: u64) -> Self {
12860            Self::Initialized(Initialized { version: version })
12861        }
12862        /**Creates a [`OwnershipTransferred`] event.
12863
12864```solidity
12865event OwnershipTransferred(address,address)
12866```*/
12867        #[inline]
12868        pub fn ownership_transferred(
12869            previous_owner: alloy::sol_types::private::Address,
12870            new_owner: alloy::sol_types::private::Address,
12871        ) -> Self {
12872            Self::OwnershipTransferred(OwnershipTransferred {
12873                previousOwner: previous_owner,
12874                newOwner: new_owner,
12875            })
12876        }
12877        /**Creates a [`Undelegated`] event.
12878
12879```solidity
12880event Undelegated(address,address,uint256)
12881```*/
12882        #[inline]
12883        pub fn undelegated(
12884            delegator: alloy::sol_types::private::Address,
12885            validator: alloy::sol_types::private::Address,
12886            amount: alloy::sol_types::private::primitives::aliases::U256,
12887        ) -> Self {
12888            Self::Undelegated(Undelegated {
12889                delegator: delegator,
12890                validator: validator,
12891                amount: amount,
12892            })
12893        }
12894        /**Creates a [`Upgraded`] event.
12895
12896```solidity
12897event Upgraded(address)
12898```*/
12899        #[inline]
12900        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
12901            Self::Upgraded(Upgraded {
12902                implementation: implementation,
12903            })
12904        }
12905        /**Creates a [`ValidatorExit`] event.
12906
12907```solidity
12908event ValidatorExit(address)
12909```*/
12910        #[inline]
12911        pub fn validator_exit(validator: alloy::sol_types::private::Address) -> Self {
12912            Self::ValidatorExit(ValidatorExit {
12913                validator: validator,
12914            })
12915        }
12916        /**Creates a [`ValidatorRegistered`] event.
12917
12918```solidity
12919event ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)
12920```*/
12921        #[inline]
12922        pub fn validator_registered(
12923            account: alloy::sol_types::private::Address,
12924            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12925            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12926            commission: u16,
12927        ) -> Self {
12928            Self::ValidatorRegistered(ValidatorRegistered {
12929                account: account,
12930                blsVk: bls_vk,
12931                schnorrVk: schnorr_vk,
12932                commission: commission,
12933            })
12934        }
12935        /**Creates a [`Withdrawal`] event.
12936
12937```solidity
12938event Withdrawal(address,uint256)
12939```*/
12940        #[inline]
12941        pub fn withdrawal(
12942            account: alloy::sol_types::private::Address,
12943            amount: alloy::sol_types::private::primitives::aliases::U256,
12944        ) -> Self {
12945            Self::Withdrawal(Withdrawal {
12946                account: account,
12947                amount: amount,
12948            })
12949        }
12950    }
12951    use alloy::contract as alloy_contract;
12952    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12953
12954See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12955    #[inline]
12956    pub const fn new<
12957        P: alloy_contract::private::Provider<N>,
12958        N: alloy_contract::private::Network,
12959    >(
12960        address: alloy_sol_types::private::Address,
12961        __provider: P,
12962    ) -> StakeTableInstance<P, N> {
12963        StakeTableInstance::<P, N>::new(address, __provider)
12964    }
12965    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12966
12967Returns a new instance of the contract, if the deployment was successful.
12968
12969For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12970    #[inline]
12971    pub fn deploy<
12972        P: alloy_contract::private::Provider<N>,
12973        N: alloy_contract::private::Network,
12974    >(
12975        __provider: P,
12976    ) -> impl ::core::future::Future<
12977        Output = alloy_contract::Result<StakeTableInstance<P, N>>,
12978    > {
12979        StakeTableInstance::<P, N>::deploy(__provider)
12980    }
12981    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12982and constructor arguments, if any.
12983
12984This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12985the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12986    #[inline]
12987    pub fn deploy_builder<
12988        P: alloy_contract::private::Provider<N>,
12989        N: alloy_contract::private::Network,
12990    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12991        StakeTableInstance::<P, N>::deploy_builder(__provider)
12992    }
12993    /**A [`StakeTable`](self) instance.
12994
12995Contains type-safe methods for interacting with an on-chain instance of the
12996[`StakeTable`](self) contract located at a given `address`, using a given
12997provider `P`.
12998
12999If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
13000documentation on how to provide it), the `deploy` and `deploy_builder` methods can
13001be used to deploy a new instance of the contract.
13002
13003See the [module-level documentation](self) for all the available methods.*/
13004    #[derive(Clone)]
13005    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
13006        address: alloy_sol_types::private::Address,
13007        provider: P,
13008        _network: ::core::marker::PhantomData<N>,
13009    }
13010    #[automatically_derived]
13011    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
13012        #[inline]
13013        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13014            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
13015        }
13016    }
13017    /// Instantiation and getters/setters.
13018    impl<
13019        P: alloy_contract::private::Provider<N>,
13020        N: alloy_contract::private::Network,
13021    > StakeTableInstance<P, N> {
13022        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
13023
13024See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
13025        #[inline]
13026        pub const fn new(
13027            address: alloy_sol_types::private::Address,
13028            __provider: P,
13029        ) -> Self {
13030            Self {
13031                address,
13032                provider: __provider,
13033                _network: ::core::marker::PhantomData,
13034            }
13035        }
13036        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13037
13038Returns a new instance of the contract, if the deployment was successful.
13039
13040For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13041        #[inline]
13042        pub async fn deploy(
13043            __provider: P,
13044        ) -> alloy_contract::Result<StakeTableInstance<P, N>> {
13045            let call_builder = Self::deploy_builder(__provider);
13046            let contract_address = call_builder.deploy().await?;
13047            Ok(Self::new(contract_address, call_builder.provider))
13048        }
13049        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13050and constructor arguments, if any.
13051
13052This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13053the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13054        #[inline]
13055        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13056            alloy_contract::RawCallBuilder::new_raw_deploy(
13057                __provider,
13058                ::core::clone::Clone::clone(&BYTECODE),
13059            )
13060        }
13061        /// Returns a reference to the address.
13062        #[inline]
13063        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13064            &self.address
13065        }
13066        /// Sets the address.
13067        #[inline]
13068        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13069            self.address = address;
13070        }
13071        /// Sets the address and returns `self`.
13072        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13073            self.set_address(address);
13074            self
13075        }
13076        /// Returns a reference to the provider.
13077        #[inline]
13078        pub const fn provider(&self) -> &P {
13079            &self.provider
13080        }
13081    }
13082    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
13083        /// Clones the provider and returns a new instance with the cloned provider.
13084        #[inline]
13085        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
13086            StakeTableInstance {
13087                address: self.address,
13088                provider: ::core::clone::Clone::clone(&self.provider),
13089                _network: ::core::marker::PhantomData,
13090            }
13091        }
13092    }
13093    /// Function calls.
13094    impl<
13095        P: alloy_contract::private::Provider<N>,
13096        N: alloy_contract::private::Network,
13097    > StakeTableInstance<P, N> {
13098        /// Creates a new call builder using this contract instance's provider and address.
13099        ///
13100        /// Note that the call can be any function call, not just those defined in this
13101        /// contract. Prefer using the other methods for building type-safe contract calls.
13102        pub fn call_builder<C: alloy_sol_types::SolCall>(
13103            &self,
13104            call: &C,
13105        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13106            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13107        }
13108        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13109        pub fn UPGRADE_INTERFACE_VERSION(
13110            &self,
13111        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13112            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13113        }
13114        ///Creates a new call builder for the [`_hashBlsKey`] function.
13115        pub fn _hashBlsKey(
13116            &self,
13117            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13118        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
13119            self.call_builder(&_hashBlsKeyCall { blsVK })
13120        }
13121        ///Creates a new call builder for the [`blsKeys`] function.
13122        pub fn blsKeys(
13123            &self,
13124            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
13125        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
13126            self.call_builder(&blsKeysCall { blsKeyHash })
13127        }
13128        ///Creates a new call builder for the [`claimValidatorExit`] function.
13129        pub fn claimValidatorExit(
13130            &self,
13131            validator: alloy::sol_types::private::Address,
13132        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
13133            self.call_builder(
13134                &claimValidatorExitCall {
13135                    validator,
13136                },
13137            )
13138        }
13139        ///Creates a new call builder for the [`claimWithdrawal`] function.
13140        pub fn claimWithdrawal(
13141            &self,
13142            validator: alloy::sol_types::private::Address,
13143        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
13144            self.call_builder(&claimWithdrawalCall { validator })
13145        }
13146        ///Creates a new call builder for the [`delegate`] function.
13147        pub fn delegate(
13148            &self,
13149            validator: alloy::sol_types::private::Address,
13150            amount: alloy::sol_types::private::primitives::aliases::U256,
13151        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
13152            self.call_builder(&delegateCall { validator, amount })
13153        }
13154        ///Creates a new call builder for the [`delegations`] function.
13155        pub fn delegations(
13156            &self,
13157            validator: alloy::sol_types::private::Address,
13158            delegator: alloy::sol_types::private::Address,
13159        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
13160            self.call_builder(
13161                &delegationsCall {
13162                    validator,
13163                    delegator,
13164                },
13165            )
13166        }
13167        ///Creates a new call builder for the [`deregisterValidator`] function.
13168        pub fn deregisterValidator(
13169            &self,
13170        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
13171            self.call_builder(&deregisterValidatorCall)
13172        }
13173        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
13174        pub fn exitEscrowPeriod(
13175            &self,
13176        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
13177            self.call_builder(&exitEscrowPeriodCall)
13178        }
13179        ///Creates a new call builder for the [`getVersion`] function.
13180        pub fn getVersion(
13181            &self,
13182        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13183            self.call_builder(&getVersionCall)
13184        }
13185        ///Creates a new call builder for the [`initialize`] function.
13186        pub fn initialize(
13187            &self,
13188            _tokenAddress: alloy::sol_types::private::Address,
13189            _lightClientAddress: alloy::sol_types::private::Address,
13190            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
13191            _timelock: alloy::sol_types::private::Address,
13192        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13193            self.call_builder(
13194                &initializeCall {
13195                    _tokenAddress,
13196                    _lightClientAddress,
13197                    _exitEscrowPeriod,
13198                    _timelock,
13199                },
13200            )
13201        }
13202        ///Creates a new call builder for the [`initializedAtBlock`] function.
13203        pub fn initializedAtBlock(
13204            &self,
13205        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
13206            self.call_builder(&initializedAtBlockCall)
13207        }
13208        ///Creates a new call builder for the [`lightClient`] function.
13209        pub fn lightClient(
13210            &self,
13211        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
13212            self.call_builder(&lightClientCall)
13213        }
13214        ///Creates a new call builder for the [`owner`] function.
13215        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13216            self.call_builder(&ownerCall)
13217        }
13218        ///Creates a new call builder for the [`proxiableUUID`] function.
13219        pub fn proxiableUUID(
13220            &self,
13221        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13222            self.call_builder(&proxiableUUIDCall)
13223        }
13224        ///Creates a new call builder for the [`registerValidator`] function.
13225        pub fn registerValidator(
13226            &self,
13227            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13228            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13229            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13230            commission: u16,
13231        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
13232            self.call_builder(
13233                &registerValidatorCall {
13234                    blsVK,
13235                    schnorrVK,
13236                    blsSig,
13237                    commission,
13238                },
13239            )
13240        }
13241        ///Creates a new call builder for the [`renounceOwnership`] function.
13242        pub fn renounceOwnership(
13243            &self,
13244        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13245            self.call_builder(&renounceOwnershipCall)
13246        }
13247        ///Creates a new call builder for the [`token`] function.
13248        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
13249            self.call_builder(&tokenCall)
13250        }
13251        ///Creates a new call builder for the [`transferOwnership`] function.
13252        pub fn transferOwnership(
13253            &self,
13254            newOwner: alloy::sol_types::private::Address,
13255        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13256            self.call_builder(&transferOwnershipCall { newOwner })
13257        }
13258        ///Creates a new call builder for the [`undelegate`] function.
13259        pub fn undelegate(
13260            &self,
13261            validator: alloy::sol_types::private::Address,
13262            amount: alloy::sol_types::private::primitives::aliases::U256,
13263        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
13264            self.call_builder(
13265                &undelegateCall {
13266                    validator,
13267                    amount,
13268                },
13269            )
13270        }
13271        ///Creates a new call builder for the [`undelegations`] function.
13272        pub fn undelegations(
13273            &self,
13274            validator: alloy::sol_types::private::Address,
13275            delegator: alloy::sol_types::private::Address,
13276        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
13277            self.call_builder(
13278                &undelegationsCall {
13279                    validator,
13280                    delegator,
13281                },
13282            )
13283        }
13284        ///Creates a new call builder for the [`updateConsensusKeys`] function.
13285        pub fn updateConsensusKeys(
13286            &self,
13287            newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13288            newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13289            newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13290        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
13291            self.call_builder(
13292                &updateConsensusKeysCall {
13293                    newBlsVK,
13294                    newSchnorrVK,
13295                    newBlsSig,
13296                },
13297            )
13298        }
13299        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13300        pub fn upgradeToAndCall(
13301            &self,
13302            newImplementation: alloy::sol_types::private::Address,
13303            data: alloy::sol_types::private::Bytes,
13304        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13305            self.call_builder(
13306                &upgradeToAndCallCall {
13307                    newImplementation,
13308                    data,
13309                },
13310            )
13311        }
13312        ///Creates a new call builder for the [`validatorExits`] function.
13313        pub fn validatorExits(
13314            &self,
13315            validator: alloy::sol_types::private::Address,
13316        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
13317            self.call_builder(&validatorExitsCall { validator })
13318        }
13319        ///Creates a new call builder for the [`validators`] function.
13320        pub fn validators(
13321            &self,
13322            account: alloy::sol_types::private::Address,
13323        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
13324            self.call_builder(&validatorsCall { account })
13325        }
13326    }
13327    /// Event filters.
13328    impl<
13329        P: alloy_contract::private::Provider<N>,
13330        N: alloy_contract::private::Network,
13331    > StakeTableInstance<P, N> {
13332        /// Creates a new event filter using this contract instance's provider and address.
13333        ///
13334        /// Note that the type can be any event, not just those defined in this contract.
13335        /// Prefer using the other methods for building type-safe event filters.
13336        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13337            &self,
13338        ) -> alloy_contract::Event<&P, E, N> {
13339            alloy_contract::Event::new_sol(&self.provider, &self.address)
13340        }
13341        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
13342        pub fn ConsensusKeysUpdated_filter(
13343            &self,
13344        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
13345            self.event_filter::<ConsensusKeysUpdated>()
13346        }
13347        ///Creates a new event filter for the [`Delegated`] event.
13348        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
13349            self.event_filter::<Delegated>()
13350        }
13351        ///Creates a new event filter for the [`Initialized`] event.
13352        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13353            self.event_filter::<Initialized>()
13354        }
13355        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13356        pub fn OwnershipTransferred_filter(
13357            &self,
13358        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13359            self.event_filter::<OwnershipTransferred>()
13360        }
13361        ///Creates a new event filter for the [`Undelegated`] event.
13362        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
13363            self.event_filter::<Undelegated>()
13364        }
13365        ///Creates a new event filter for the [`Upgraded`] event.
13366        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13367            self.event_filter::<Upgraded>()
13368        }
13369        ///Creates a new event filter for the [`ValidatorExit`] event.
13370        pub fn ValidatorExit_filter(
13371            &self,
13372        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
13373            self.event_filter::<ValidatorExit>()
13374        }
13375        ///Creates a new event filter for the [`ValidatorRegistered`] event.
13376        pub fn ValidatorRegistered_filter(
13377            &self,
13378        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
13379            self.event_filter::<ValidatorRegistered>()
13380        }
13381        ///Creates a new event filter for the [`Withdrawal`] event.
13382        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
13383            self.event_filter::<Withdrawal>()
13384        }
13385    }
13386}