Skip to main content

hotshot_contract_adapter/bindings/
stake_table_v3.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!(@ name);
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///Module containing a contract's types and functions.
1079/**
1080
1081```solidity
1082library StakeTable {
1083    type ValidatorStatus is uint8;
1084}
1085```*/
1086#[allow(
1087    non_camel_case_types,
1088    non_snake_case,
1089    clippy::pub_underscore_fields,
1090    clippy::style,
1091    clippy::empty_structs_with_brackets
1092)]
1093pub mod StakeTable {
1094    use super::*;
1095    use alloy::sol_types as alloy_sol_types;
1096    #[derive(serde::Serialize, serde::Deserialize)]
1097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1099    #[derive(Clone)]
1100    pub struct ValidatorStatus(u8);
1101    const _: () = {
1102        use alloy::sol_types as alloy_sol_types;
1103        #[automatically_derived]
1104        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1105            #[inline]
1106            fn stv_to_tokens(
1107                &self,
1108            ) -> <alloy::sol_types::sol_data::Uint<
1109                8,
1110            > as alloy_sol_types::SolType>::Token<'_> {
1111                alloy_sol_types::private::SolTypeValue::<
1112                    alloy::sol_types::sol_data::Uint<8>,
1113                >::stv_to_tokens(self)
1114            }
1115            #[inline]
1116            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1117                <alloy::sol_types::sol_data::Uint<
1118                    8,
1119                > as alloy_sol_types::SolType>::tokenize(self)
1120                    .0
1121            }
1122            #[inline]
1123            fn stv_abi_encode_packed_to(
1124                &self,
1125                out: &mut alloy_sol_types::private::Vec<u8>,
1126            ) {
1127                <alloy::sol_types::sol_data::Uint<
1128                    8,
1129                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1130            }
1131            #[inline]
1132            fn stv_abi_packed_encoded_size(&self) -> usize {
1133                <alloy::sol_types::sol_data::Uint<
1134                    8,
1135                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1136            }
1137        }
1138        impl ValidatorStatus {
1139            /// The Solidity type name.
1140            pub const NAME: &'static str = stringify!(@ name);
1141            /// Convert from the underlying value type.
1142            #[inline]
1143            pub const fn from_underlying(value: u8) -> Self {
1144                Self(value)
1145            }
1146            /// Return the underlying value.
1147            #[inline]
1148            pub const fn into_underlying(self) -> u8 {
1149                self.0
1150            }
1151            /// Return the single encoding of this value, delegating to the
1152            /// underlying type.
1153            #[inline]
1154            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1155                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1156            }
1157            /// Return the packed encoding of this value, delegating to the
1158            /// underlying type.
1159            #[inline]
1160            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1161                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1162            }
1163        }
1164        #[automatically_derived]
1165        impl From<u8> for ValidatorStatus {
1166            fn from(value: u8) -> Self {
1167                Self::from_underlying(value)
1168            }
1169        }
1170        #[automatically_derived]
1171        impl From<ValidatorStatus> for u8 {
1172            fn from(value: ValidatorStatus) -> Self {
1173                value.into_underlying()
1174            }
1175        }
1176        #[automatically_derived]
1177        impl alloy_sol_types::SolType for ValidatorStatus {
1178            type RustType = u8;
1179            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1180                8,
1181            > as alloy_sol_types::SolType>::Token<'a>;
1182            const SOL_NAME: &'static str = Self::NAME;
1183            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1184                8,
1185            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1186            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1189            #[inline]
1190            fn valid_token(token: &Self::Token<'_>) -> bool {
1191                Self::type_check(token).is_ok()
1192            }
1193            #[inline]
1194            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::SolType>::type_check(token)
1198            }
1199            #[inline]
1200            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1201                <alloy::sol_types::sol_data::Uint<
1202                    8,
1203                > as alloy_sol_types::SolType>::detokenize(token)
1204            }
1205        }
1206        #[automatically_derived]
1207        impl alloy_sol_types::EventTopic for ValidatorStatus {
1208            #[inline]
1209            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1210                <alloy::sol_types::sol_data::Uint<
1211                    8,
1212                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1213            }
1214            #[inline]
1215            fn encode_topic_preimage(
1216                rust: &Self::RustType,
1217                out: &mut alloy_sol_types::private::Vec<u8>,
1218            ) {
1219                <alloy::sol_types::sol_data::Uint<
1220                    8,
1221                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1222            }
1223            #[inline]
1224            fn encode_topic(
1225                rust: &Self::RustType,
1226            ) -> alloy_sol_types::abi::token::WordToken {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1230            }
1231        }
1232    };
1233    use alloy::contract as alloy_contract;
1234    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1235
1236See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1237    #[inline]
1238    pub const fn new<
1239        P: alloy_contract::private::Provider<N>,
1240        N: alloy_contract::private::Network,
1241    >(
1242        address: alloy_sol_types::private::Address,
1243        __provider: P,
1244    ) -> StakeTableInstance<P, N> {
1245        StakeTableInstance::<P, N>::new(address, __provider)
1246    }
1247    /**A [`StakeTable`](self) instance.
1248
1249Contains type-safe methods for interacting with an on-chain instance of the
1250[`StakeTable`](self) contract located at a given `address`, using a given
1251provider `P`.
1252
1253If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1254documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1255be used to deploy a new instance of the contract.
1256
1257See the [module-level documentation](self) for all the available methods.*/
1258    #[derive(Clone)]
1259    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1260        address: alloy_sol_types::private::Address,
1261        provider: P,
1262        _network: ::core::marker::PhantomData<N>,
1263    }
1264    #[automatically_derived]
1265    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1266        #[inline]
1267        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1268            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1269        }
1270    }
1271    /// Instantiation and getters/setters.
1272    impl<
1273        P: alloy_contract::private::Provider<N>,
1274        N: alloy_contract::private::Network,
1275    > StakeTableInstance<P, N> {
1276        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1277
1278See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1279        #[inline]
1280        pub const fn new(
1281            address: alloy_sol_types::private::Address,
1282            __provider: P,
1283        ) -> Self {
1284            Self {
1285                address,
1286                provider: __provider,
1287                _network: ::core::marker::PhantomData,
1288            }
1289        }
1290        /// Returns a reference to the address.
1291        #[inline]
1292        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1293            &self.address
1294        }
1295        /// Sets the address.
1296        #[inline]
1297        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1298            self.address = address;
1299        }
1300        /// Sets the address and returns `self`.
1301        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1302            self.set_address(address);
1303            self
1304        }
1305        /// Returns a reference to the provider.
1306        #[inline]
1307        pub const fn provider(&self) -> &P {
1308            &self.provider
1309        }
1310    }
1311    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1312        /// Clones the provider and returns a new instance with the cloned provider.
1313        #[inline]
1314        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1315            StakeTableInstance {
1316                address: self.address,
1317                provider: ::core::clone::Clone::clone(&self.provider),
1318                _network: ::core::marker::PhantomData,
1319            }
1320        }
1321    }
1322    /// Function calls.
1323    impl<
1324        P: alloy_contract::private::Provider<N>,
1325        N: alloy_contract::private::Network,
1326    > StakeTableInstance<P, N> {
1327        /// Creates a new call builder using this contract instance's provider and address.
1328        ///
1329        /// Note that the call can be any function call, not just those defined in this
1330        /// contract. Prefer using the other methods for building type-safe contract calls.
1331        pub fn call_builder<C: alloy_sol_types::SolCall>(
1332            &self,
1333            call: &C,
1334        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1335            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1336        }
1337    }
1338    /// Event filters.
1339    impl<
1340        P: alloy_contract::private::Provider<N>,
1341        N: alloy_contract::private::Network,
1342    > StakeTableInstance<P, N> {
1343        /// Creates a new event filter using this contract instance's provider and address.
1344        ///
1345        /// Note that the type can be any event, not just those defined in this contract.
1346        /// Prefer using the other methods for building type-safe event filters.
1347        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1348            &self,
1349        ) -> alloy_contract::Event<&P, E, N> {
1350            alloy_contract::Event::new_sol(&self.provider, &self.address)
1351        }
1352    }
1353}
1354///Module containing a contract's types and functions.
1355/**
1356
1357```solidity
1358library StakeTableV2 {
1359    struct InitialCommission { address validator; uint16 commission; }
1360}
1361```*/
1362#[allow(
1363    non_camel_case_types,
1364    non_snake_case,
1365    clippy::pub_underscore_fields,
1366    clippy::style,
1367    clippy::empty_structs_with_brackets
1368)]
1369pub mod StakeTableV2 {
1370    use super::*;
1371    use alloy::sol_types as alloy_sol_types;
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct InitialCommission { address validator; uint16 commission; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct InitialCommission {
1380        #[allow(missing_docs)]
1381        pub validator: alloy::sol_types::private::Address,
1382        #[allow(missing_docs)]
1383        pub commission: u16,
1384    }
1385    #[allow(
1386        non_camel_case_types,
1387        non_snake_case,
1388        clippy::pub_underscore_fields,
1389        clippy::style
1390    )]
1391    const _: () = {
1392        use alloy::sol_types as alloy_sol_types;
1393        #[doc(hidden)]
1394        #[allow(dead_code)]
1395        type UnderlyingSolTuple<'a> = (
1396            alloy::sol_types::sol_data::Address,
1397            alloy::sol_types::sol_data::Uint<16>,
1398        );
1399        #[doc(hidden)]
1400        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
1401        #[cfg(test)]
1402        #[allow(dead_code, unreachable_patterns)]
1403        fn _type_assertion(
1404            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1405        ) {
1406            match _t {
1407                alloy_sol_types::private::AssertTypeEq::<
1408                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1409                >(_) => {}
1410            }
1411        }
1412        #[automatically_derived]
1413        #[doc(hidden)]
1414        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
1415            fn from(value: InitialCommission) -> Self {
1416                (value.validator, value.commission)
1417            }
1418        }
1419        #[automatically_derived]
1420        #[doc(hidden)]
1421        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
1422            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1423                Self {
1424                    validator: tuple.0,
1425                    commission: tuple.1,
1426                }
1427            }
1428        }
1429        #[automatically_derived]
1430        impl alloy_sol_types::SolValue for InitialCommission {
1431            type SolType = Self;
1432        }
1433        #[automatically_derived]
1434        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
1435            #[inline]
1436            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1437                (
1438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1439                        &self.validator,
1440                    ),
1441                    <alloy::sol_types::sol_data::Uint<
1442                        16,
1443                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
1444                )
1445            }
1446            #[inline]
1447            fn stv_abi_encoded_size(&self) -> usize {
1448                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1449                    return size;
1450                }
1451                let tuple = <UnderlyingRustTuple<
1452                    '_,
1453                > as ::core::convert::From<Self>>::from(self.clone());
1454                <UnderlyingSolTuple<
1455                    '_,
1456                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1457            }
1458            #[inline]
1459            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1460                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1461            }
1462            #[inline]
1463            fn stv_abi_encode_packed_to(
1464                &self,
1465                out: &mut alloy_sol_types::private::Vec<u8>,
1466            ) {
1467                let tuple = <UnderlyingRustTuple<
1468                    '_,
1469                > as ::core::convert::From<Self>>::from(self.clone());
1470                <UnderlyingSolTuple<
1471                    '_,
1472                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1473            }
1474            #[inline]
1475            fn stv_abi_packed_encoded_size(&self) -> usize {
1476                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1477                    return size;
1478                }
1479                let tuple = <UnderlyingRustTuple<
1480                    '_,
1481                > as ::core::convert::From<Self>>::from(self.clone());
1482                <UnderlyingSolTuple<
1483                    '_,
1484                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1485            }
1486        }
1487        #[automatically_derived]
1488        impl alloy_sol_types::SolType for InitialCommission {
1489            type RustType = Self;
1490            type Token<'a> = <UnderlyingSolTuple<
1491                'a,
1492            > as alloy_sol_types::SolType>::Token<'a>;
1493            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1494            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1495                '_,
1496            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1497            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1498                '_,
1499            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1500            #[inline]
1501            fn valid_token(token: &Self::Token<'_>) -> bool {
1502                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1503            }
1504            #[inline]
1505            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1506                let tuple = <UnderlyingSolTuple<
1507                    '_,
1508                > as alloy_sol_types::SolType>::detokenize(token);
1509                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1510            }
1511        }
1512        #[automatically_derived]
1513        impl alloy_sol_types::SolStruct for InitialCommission {
1514            const NAME: &'static str = "InitialCommission";
1515            #[inline]
1516            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1517                alloy_sol_types::private::Cow::Borrowed(
1518                    "InitialCommission(address validator,uint16 commission)",
1519                )
1520            }
1521            #[inline]
1522            fn eip712_components() -> alloy_sol_types::private::Vec<
1523                alloy_sol_types::private::Cow<'static, str>,
1524            > {
1525                alloy_sol_types::private::Vec::new()
1526            }
1527            #[inline]
1528            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1529                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1530            }
1531            #[inline]
1532            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1533                [
1534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
1535                            &self.validator,
1536                        )
1537                        .0,
1538                    <alloy::sol_types::sol_data::Uint<
1539                        16,
1540                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
1541                        .0,
1542                ]
1543                    .concat()
1544            }
1545        }
1546        #[automatically_derived]
1547        impl alloy_sol_types::EventTopic for InitialCommission {
1548            #[inline]
1549            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1550                0usize
1551                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
1552                        &rust.validator,
1553                    )
1554                    + <alloy::sol_types::sol_data::Uint<
1555                        16,
1556                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1557                        &rust.commission,
1558                    )
1559            }
1560            #[inline]
1561            fn encode_topic_preimage(
1562                rust: &Self::RustType,
1563                out: &mut alloy_sol_types::private::Vec<u8>,
1564            ) {
1565                out.reserve(
1566                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1567                );
1568                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
1569                    &rust.validator,
1570                    out,
1571                );
1572                <alloy::sol_types::sol_data::Uint<
1573                    16,
1574                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1575                    &rust.commission,
1576                    out,
1577                );
1578            }
1579            #[inline]
1580            fn encode_topic(
1581                rust: &Self::RustType,
1582            ) -> alloy_sol_types::abi::token::WordToken {
1583                let mut out = alloy_sol_types::private::Vec::new();
1584                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1585                    rust,
1586                    &mut out,
1587                );
1588                alloy_sol_types::abi::token::WordToken(
1589                    alloy_sol_types::private::keccak256(out),
1590                )
1591            }
1592        }
1593    };
1594    use alloy::contract as alloy_contract;
1595    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1596
1597See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1598    #[inline]
1599    pub const fn new<
1600        P: alloy_contract::private::Provider<N>,
1601        N: alloy_contract::private::Network,
1602    >(
1603        address: alloy_sol_types::private::Address,
1604        __provider: P,
1605    ) -> StakeTableV2Instance<P, N> {
1606        StakeTableV2Instance::<P, N>::new(address, __provider)
1607    }
1608    /**A [`StakeTableV2`](self) instance.
1609
1610Contains type-safe methods for interacting with an on-chain instance of the
1611[`StakeTableV2`](self) contract located at a given `address`, using a given
1612provider `P`.
1613
1614If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1615documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1616be used to deploy a new instance of the contract.
1617
1618See the [module-level documentation](self) for all the available methods.*/
1619    #[derive(Clone)]
1620    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
1621        address: alloy_sol_types::private::Address,
1622        provider: P,
1623        _network: ::core::marker::PhantomData<N>,
1624    }
1625    #[automatically_derived]
1626    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
1627        #[inline]
1628        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1629            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
1630        }
1631    }
1632    /// Instantiation and getters/setters.
1633    impl<
1634        P: alloy_contract::private::Provider<N>,
1635        N: alloy_contract::private::Network,
1636    > StakeTableV2Instance<P, N> {
1637        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
1638
1639See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
1640        #[inline]
1641        pub const fn new(
1642            address: alloy_sol_types::private::Address,
1643            __provider: P,
1644        ) -> Self {
1645            Self {
1646                address,
1647                provider: __provider,
1648                _network: ::core::marker::PhantomData,
1649            }
1650        }
1651        /// Returns a reference to the address.
1652        #[inline]
1653        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1654            &self.address
1655        }
1656        /// Sets the address.
1657        #[inline]
1658        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1659            self.address = address;
1660        }
1661        /// Sets the address and returns `self`.
1662        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1663            self.set_address(address);
1664            self
1665        }
1666        /// Returns a reference to the provider.
1667        #[inline]
1668        pub const fn provider(&self) -> &P {
1669            &self.provider
1670        }
1671    }
1672    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
1673        /// Clones the provider and returns a new instance with the cloned provider.
1674        #[inline]
1675        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
1676            StakeTableV2Instance {
1677                address: self.address,
1678                provider: ::core::clone::Clone::clone(&self.provider),
1679                _network: ::core::marker::PhantomData,
1680            }
1681        }
1682    }
1683    /// Function calls.
1684    impl<
1685        P: alloy_contract::private::Provider<N>,
1686        N: alloy_contract::private::Network,
1687    > StakeTableV2Instance<P, N> {
1688        /// Creates a new call builder using this contract instance's provider and address.
1689        ///
1690        /// Note that the call can be any function call, not just those defined in this
1691        /// contract. Prefer using the other methods for building type-safe contract calls.
1692        pub fn call_builder<C: alloy_sol_types::SolCall>(
1693            &self,
1694            call: &C,
1695        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1696            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1697        }
1698    }
1699    /// Event filters.
1700    impl<
1701        P: alloy_contract::private::Provider<N>,
1702        N: alloy_contract::private::Network,
1703    > StakeTableV2Instance<P, N> {
1704        /// Creates a new event filter using this contract instance's provider and address.
1705        ///
1706        /// Note that the type can be any event, not just those defined in this contract.
1707        /// Prefer using the other methods for building type-safe event filters.
1708        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1709            &self,
1710        ) -> alloy_contract::Event<&P, E, N> {
1711            alloy_contract::Event::new_sol(&self.provider, &self.address)
1712        }
1713    }
1714}
1715/**
1716
1717Generated by the following Solidity interface...
1718```solidity
1719library BN254 {
1720    type BaseField is uint256;
1721    struct G1Point {
1722        BaseField x;
1723        BaseField y;
1724    }
1725    struct G2Point {
1726        BaseField x0;
1727        BaseField x1;
1728        BaseField y0;
1729        BaseField y1;
1730    }
1731}
1732
1733library EdOnBN254 {
1734    struct EdOnBN254Point {
1735        uint256 x;
1736        uint256 y;
1737    }
1738}
1739
1740library StakeTable {
1741    type ValidatorStatus is uint8;
1742}
1743
1744library StakeTableV2 {
1745    struct InitialCommission {
1746        address validator;
1747        uint16 commission;
1748    }
1749}
1750
1751interface StakeTableV3 {
1752    error AccessControlBadConfirmation();
1753    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1754    error AddressEmptyCode(address target);
1755    error BLSSigVerificationFailed();
1756    error BN254PairingProdFailed();
1757    error BlsKeyAlreadyUsed();
1758    error CommissionAlreadyInitialized(address validator);
1759    error CommissionIncreaseExceedsMax();
1760    error CommissionUnchanged();
1761    error CommissionUpdateTooSoon();
1762    error DefaultAdminCannotBeRenounced();
1763    error DefaultAdminCannotBeRevoked();
1764    error DelegateAmountTooSmall();
1765    error DeprecatedFunction();
1766    error ERC1967InvalidImplementation(address implementation);
1767    error ERC1967NonPayable();
1768    error EnforcedPause();
1769    error ExitEscrowPeriodInvalid();
1770    error ExpectedPause();
1771    error FailedInnerCall();
1772    error InitialActiveStakeExceedsBalance();
1773    error InsufficientAllowance(uint256, uint256);
1774    error InsufficientBalance(uint256);
1775    error InvalidCommission();
1776    error InvalidG1();
1777    error InvalidInitialization();
1778    error InvalidMetadataUriLength();
1779    error InvalidP2pAddr();
1780    error InvalidRateLimitParameters();
1781    error InvalidSchnorrSig();
1782    error InvalidSchnorrVK();
1783    error InvalidX25519Key();
1784    error MinDelegateAmountTooSmall();
1785    error NoUndelegationFound();
1786    error NotInitializing();
1787    error NothingToWithdraw();
1788    error OwnableInvalidOwner(address owner);
1789    error OwnableUnauthorizedAccount(address account);
1790    error OwnershipCannotBeRenounced();
1791    error PowPrecompileFailed();
1792    error PrematureWithdrawal();
1793    error SchnorrKeyAlreadyUsed();
1794    error UUPSUnauthorizedCallContext();
1795    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1796    error UndelegationAlreadyExists();
1797    error ValidatorAlreadyExited();
1798    error ValidatorAlreadyRegistered();
1799    error ValidatorInactive();
1800    error ValidatorNotExited();
1801    error X25519KeyAlreadyUsed();
1802    error ZeroAddress();
1803    error ZeroAmount();
1804
1805    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1806    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1807    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1808    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1809    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1810    event Initialized(uint64 version);
1811    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1812    event MetadataUriUpdated(address indexed validator, string metadataUri);
1813    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1814    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1815    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1816    event P2pAddrUpdated(address indexed validator, string p2pAddr);
1817    event Paused(address account);
1818    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1819    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1820    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1821    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1822    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1823    event Unpaused(address account);
1824    event Upgraded(address indexed implementation);
1825    event ValidatorExit(address indexed validator);
1826    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1827    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1828    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1829    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1830    event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
1831    event Withdrawal(address indexed account, uint256 amount);
1832    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1833    event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
1834
1835    constructor();
1836
1837    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1838    function MAX_COMMISSION_BPS() external view returns (uint16);
1839    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1840    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1841    function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
1842    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1843    function PAUSER_ROLE() external view returns (bytes32);
1844    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1845    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1846    function activeStake() external view returns (uint256);
1847    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1848    function claimValidatorExit(address validator) external;
1849    function claimWithdrawal(address validator) external;
1850    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1851    function delegate(address validator, uint256 amount) external;
1852    function delegations(address validator, address delegator) external view returns (uint256 amount);
1853    function deregisterValidator() external;
1854    function exitEscrowPeriod() external view returns (uint256);
1855    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1856    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1857    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1858    function grantRole(bytes32 role, address account) external;
1859    function hasRole(bytes32 role, address account) external view returns (bool);
1860    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1861    function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
1862    function initializeV3() external;
1863    function initializedAtBlock() external view returns (uint256);
1864    function lightClient() external view returns (address);
1865    function maxCommissionIncrease() external view returns (uint16);
1866    function minCommissionIncreaseInterval() external view returns (uint256);
1867    function minDelegateAmount() external view returns (uint256);
1868    function owner() external view returns (address);
1869    function pause() external;
1870    function paused() external view returns (bool);
1871    function proxiableUUID() external view returns (bytes32);
1872    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1873    function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
1874    function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
1875    function renounceOwnership() external;
1876    function renounceRole(bytes32 role, address callerConfirmation) external;
1877    function revokeRole(bytes32 role, address account) external;
1878    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1879    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1880    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1881    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1882    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1883    function token() external view returns (address);
1884    function transferOwnership(address newOwner) external;
1885    function undelegate(address validator, uint256 amount) external;
1886    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1887    function unpause() external;
1888    function updateCommission(uint16 newCommission) external;
1889    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1890    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1891    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1892    function updateMetadataUri(string memory metadataUri) external;
1893    function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
1894    function updateP2pAddr(string memory p2pAddr) external;
1895    function updateX25519Key(bytes32 x25519Key) external;
1896    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1897    function validateMetadataUri(string memory metadataUri) external pure;
1898    function validateP2pAddr(string memory p2pAddr) external pure;
1899    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1900    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1901    function x25519Keys(bytes32 x25519Key) external view returns (bool used);
1902}
1903```
1904
1905...which was generated by the following JSON ABI:
1906```json
1907[
1908  {
1909    "type": "constructor",
1910    "inputs": [],
1911    "stateMutability": "nonpayable"
1912  },
1913  {
1914    "type": "function",
1915    "name": "DEFAULT_ADMIN_ROLE",
1916    "inputs": [],
1917    "outputs": [
1918      {
1919        "name": "",
1920        "type": "bytes32",
1921        "internalType": "bytes32"
1922      }
1923    ],
1924    "stateMutability": "view"
1925  },
1926  {
1927    "type": "function",
1928    "name": "MAX_COMMISSION_BPS",
1929    "inputs": [],
1930    "outputs": [
1931      {
1932        "name": "",
1933        "type": "uint16",
1934        "internalType": "uint16"
1935      }
1936    ],
1937    "stateMutability": "view"
1938  },
1939  {
1940    "type": "function",
1941    "name": "MAX_EXIT_ESCROW_PERIOD",
1942    "inputs": [],
1943    "outputs": [
1944      {
1945        "name": "",
1946        "type": "uint64",
1947        "internalType": "uint64"
1948      }
1949    ],
1950    "stateMutability": "view"
1951  },
1952  {
1953    "type": "function",
1954    "name": "MAX_METADATA_URI_LENGTH",
1955    "inputs": [],
1956    "outputs": [
1957      {
1958        "name": "",
1959        "type": "uint256",
1960        "internalType": "uint256"
1961      }
1962    ],
1963    "stateMutability": "view"
1964  },
1965  {
1966    "type": "function",
1967    "name": "MAX_P2P_ADDR_LENGTH",
1968    "inputs": [],
1969    "outputs": [
1970      {
1971        "name": "",
1972        "type": "uint256",
1973        "internalType": "uint256"
1974      }
1975    ],
1976    "stateMutability": "view"
1977  },
1978  {
1979    "type": "function",
1980    "name": "MIN_EXIT_ESCROW_PERIOD",
1981    "inputs": [],
1982    "outputs": [
1983      {
1984        "name": "",
1985        "type": "uint64",
1986        "internalType": "uint64"
1987      }
1988    ],
1989    "stateMutability": "view"
1990  },
1991  {
1992    "type": "function",
1993    "name": "PAUSER_ROLE",
1994    "inputs": [],
1995    "outputs": [
1996      {
1997        "name": "",
1998        "type": "bytes32",
1999        "internalType": "bytes32"
2000      }
2001    ],
2002    "stateMutability": "view"
2003  },
2004  {
2005    "type": "function",
2006    "name": "UPGRADE_INTERFACE_VERSION",
2007    "inputs": [],
2008    "outputs": [
2009      {
2010        "name": "",
2011        "type": "string",
2012        "internalType": "string"
2013      }
2014    ],
2015    "stateMutability": "view"
2016  },
2017  {
2018    "type": "function",
2019    "name": "_hashBlsKey",
2020    "inputs": [
2021      {
2022        "name": "blsVK",
2023        "type": "tuple",
2024        "internalType": "struct BN254.G2Point",
2025        "components": [
2026          {
2027            "name": "x0",
2028            "type": "uint256",
2029            "internalType": "BN254.BaseField"
2030          },
2031          {
2032            "name": "x1",
2033            "type": "uint256",
2034            "internalType": "BN254.BaseField"
2035          },
2036          {
2037            "name": "y0",
2038            "type": "uint256",
2039            "internalType": "BN254.BaseField"
2040          },
2041          {
2042            "name": "y1",
2043            "type": "uint256",
2044            "internalType": "BN254.BaseField"
2045          }
2046        ]
2047      }
2048    ],
2049    "outputs": [
2050      {
2051        "name": "",
2052        "type": "bytes32",
2053        "internalType": "bytes32"
2054      }
2055    ],
2056    "stateMutability": "pure"
2057  },
2058  {
2059    "type": "function",
2060    "name": "activeStake",
2061    "inputs": [],
2062    "outputs": [
2063      {
2064        "name": "",
2065        "type": "uint256",
2066        "internalType": "uint256"
2067      }
2068    ],
2069    "stateMutability": "view"
2070  },
2071  {
2072    "type": "function",
2073    "name": "blsKeys",
2074    "inputs": [
2075      {
2076        "name": "blsKeyHash",
2077        "type": "bytes32",
2078        "internalType": "bytes32"
2079      }
2080    ],
2081    "outputs": [
2082      {
2083        "name": "used",
2084        "type": "bool",
2085        "internalType": "bool"
2086      }
2087    ],
2088    "stateMutability": "view"
2089  },
2090  {
2091    "type": "function",
2092    "name": "claimValidatorExit",
2093    "inputs": [
2094      {
2095        "name": "validator",
2096        "type": "address",
2097        "internalType": "address"
2098      }
2099    ],
2100    "outputs": [],
2101    "stateMutability": "nonpayable"
2102  },
2103  {
2104    "type": "function",
2105    "name": "claimWithdrawal",
2106    "inputs": [
2107      {
2108        "name": "validator",
2109        "type": "address",
2110        "internalType": "address"
2111      }
2112    ],
2113    "outputs": [],
2114    "stateMutability": "nonpayable"
2115  },
2116  {
2117    "type": "function",
2118    "name": "commissionTracking",
2119    "inputs": [
2120      {
2121        "name": "validator",
2122        "type": "address",
2123        "internalType": "address"
2124      }
2125    ],
2126    "outputs": [
2127      {
2128        "name": "commission",
2129        "type": "uint16",
2130        "internalType": "uint16"
2131      },
2132      {
2133        "name": "lastIncreaseTime",
2134        "type": "uint256",
2135        "internalType": "uint256"
2136      }
2137    ],
2138    "stateMutability": "view"
2139  },
2140  {
2141    "type": "function",
2142    "name": "delegate",
2143    "inputs": [
2144      {
2145        "name": "validator",
2146        "type": "address",
2147        "internalType": "address"
2148      },
2149      {
2150        "name": "amount",
2151        "type": "uint256",
2152        "internalType": "uint256"
2153      }
2154    ],
2155    "outputs": [],
2156    "stateMutability": "nonpayable"
2157  },
2158  {
2159    "type": "function",
2160    "name": "delegations",
2161    "inputs": [
2162      {
2163        "name": "validator",
2164        "type": "address",
2165        "internalType": "address"
2166      },
2167      {
2168        "name": "delegator",
2169        "type": "address",
2170        "internalType": "address"
2171      }
2172    ],
2173    "outputs": [
2174      {
2175        "name": "amount",
2176        "type": "uint256",
2177        "internalType": "uint256"
2178      }
2179    ],
2180    "stateMutability": "view"
2181  },
2182  {
2183    "type": "function",
2184    "name": "deregisterValidator",
2185    "inputs": [],
2186    "outputs": [],
2187    "stateMutability": "nonpayable"
2188  },
2189  {
2190    "type": "function",
2191    "name": "exitEscrowPeriod",
2192    "inputs": [],
2193    "outputs": [
2194      {
2195        "name": "",
2196        "type": "uint256",
2197        "internalType": "uint256"
2198      }
2199    ],
2200    "stateMutability": "view"
2201  },
2202  {
2203    "type": "function",
2204    "name": "getRoleAdmin",
2205    "inputs": [
2206      {
2207        "name": "role",
2208        "type": "bytes32",
2209        "internalType": "bytes32"
2210      }
2211    ],
2212    "outputs": [
2213      {
2214        "name": "",
2215        "type": "bytes32",
2216        "internalType": "bytes32"
2217      }
2218    ],
2219    "stateMutability": "view"
2220  },
2221  {
2222    "type": "function",
2223    "name": "getUndelegation",
2224    "inputs": [
2225      {
2226        "name": "validator",
2227        "type": "address",
2228        "internalType": "address"
2229      },
2230      {
2231        "name": "delegator",
2232        "type": "address",
2233        "internalType": "address"
2234      }
2235    ],
2236    "outputs": [
2237      {
2238        "name": "id",
2239        "type": "uint64",
2240        "internalType": "uint64"
2241      },
2242      {
2243        "name": "amount",
2244        "type": "uint256",
2245        "internalType": "uint256"
2246      },
2247      {
2248        "name": "unlocksAt",
2249        "type": "uint256",
2250        "internalType": "uint256"
2251      }
2252    ],
2253    "stateMutability": "view"
2254  },
2255  {
2256    "type": "function",
2257    "name": "getVersion",
2258    "inputs": [],
2259    "outputs": [
2260      {
2261        "name": "majorVersion",
2262        "type": "uint8",
2263        "internalType": "uint8"
2264      },
2265      {
2266        "name": "minorVersion",
2267        "type": "uint8",
2268        "internalType": "uint8"
2269      },
2270      {
2271        "name": "patchVersion",
2272        "type": "uint8",
2273        "internalType": "uint8"
2274      }
2275    ],
2276    "stateMutability": "pure"
2277  },
2278  {
2279    "type": "function",
2280    "name": "grantRole",
2281    "inputs": [
2282      {
2283        "name": "role",
2284        "type": "bytes32",
2285        "internalType": "bytes32"
2286      },
2287      {
2288        "name": "account",
2289        "type": "address",
2290        "internalType": "address"
2291      }
2292    ],
2293    "outputs": [],
2294    "stateMutability": "nonpayable"
2295  },
2296  {
2297    "type": "function",
2298    "name": "hasRole",
2299    "inputs": [
2300      {
2301        "name": "role",
2302        "type": "bytes32",
2303        "internalType": "bytes32"
2304      },
2305      {
2306        "name": "account",
2307        "type": "address",
2308        "internalType": "address"
2309      }
2310    ],
2311    "outputs": [
2312      {
2313        "name": "",
2314        "type": "bool",
2315        "internalType": "bool"
2316      }
2317    ],
2318    "stateMutability": "view"
2319  },
2320  {
2321    "type": "function",
2322    "name": "initialize",
2323    "inputs": [
2324      {
2325        "name": "_tokenAddress",
2326        "type": "address",
2327        "internalType": "address"
2328      },
2329      {
2330        "name": "_lightClientAddress",
2331        "type": "address",
2332        "internalType": "address"
2333      },
2334      {
2335        "name": "_exitEscrowPeriod",
2336        "type": "uint256",
2337        "internalType": "uint256"
2338      },
2339      {
2340        "name": "_timelock",
2341        "type": "address",
2342        "internalType": "address"
2343      }
2344    ],
2345    "outputs": [],
2346    "stateMutability": "nonpayable"
2347  },
2348  {
2349    "type": "function",
2350    "name": "initializeV2",
2351    "inputs": [
2352      {
2353        "name": "pauser",
2354        "type": "address",
2355        "internalType": "address"
2356      },
2357      {
2358        "name": "admin",
2359        "type": "address",
2360        "internalType": "address"
2361      },
2362      {
2363        "name": "initialActiveStake",
2364        "type": "uint256",
2365        "internalType": "uint256"
2366      },
2367      {
2368        "name": "initialCommissions",
2369        "type": "tuple[]",
2370        "internalType": "struct StakeTableV2.InitialCommission[]",
2371        "components": [
2372          {
2373            "name": "validator",
2374            "type": "address",
2375            "internalType": "address"
2376          },
2377          {
2378            "name": "commission",
2379            "type": "uint16",
2380            "internalType": "uint16"
2381          }
2382        ]
2383      }
2384    ],
2385    "outputs": [],
2386    "stateMutability": "nonpayable"
2387  },
2388  {
2389    "type": "function",
2390    "name": "initializeV3",
2391    "inputs": [],
2392    "outputs": [],
2393    "stateMutability": "nonpayable"
2394  },
2395  {
2396    "type": "function",
2397    "name": "initializedAtBlock",
2398    "inputs": [],
2399    "outputs": [
2400      {
2401        "name": "",
2402        "type": "uint256",
2403        "internalType": "uint256"
2404      }
2405    ],
2406    "stateMutability": "view"
2407  },
2408  {
2409    "type": "function",
2410    "name": "lightClient",
2411    "inputs": [],
2412    "outputs": [
2413      {
2414        "name": "",
2415        "type": "address",
2416        "internalType": "contract ILightClient"
2417      }
2418    ],
2419    "stateMutability": "view"
2420  },
2421  {
2422    "type": "function",
2423    "name": "maxCommissionIncrease",
2424    "inputs": [],
2425    "outputs": [
2426      {
2427        "name": "",
2428        "type": "uint16",
2429        "internalType": "uint16"
2430      }
2431    ],
2432    "stateMutability": "view"
2433  },
2434  {
2435    "type": "function",
2436    "name": "minCommissionIncreaseInterval",
2437    "inputs": [],
2438    "outputs": [
2439      {
2440        "name": "",
2441        "type": "uint256",
2442        "internalType": "uint256"
2443      }
2444    ],
2445    "stateMutability": "view"
2446  },
2447  {
2448    "type": "function",
2449    "name": "minDelegateAmount",
2450    "inputs": [],
2451    "outputs": [
2452      {
2453        "name": "",
2454        "type": "uint256",
2455        "internalType": "uint256"
2456      }
2457    ],
2458    "stateMutability": "view"
2459  },
2460  {
2461    "type": "function",
2462    "name": "owner",
2463    "inputs": [],
2464    "outputs": [
2465      {
2466        "name": "",
2467        "type": "address",
2468        "internalType": "address"
2469      }
2470    ],
2471    "stateMutability": "view"
2472  },
2473  {
2474    "type": "function",
2475    "name": "pause",
2476    "inputs": [],
2477    "outputs": [],
2478    "stateMutability": "nonpayable"
2479  },
2480  {
2481    "type": "function",
2482    "name": "paused",
2483    "inputs": [],
2484    "outputs": [
2485      {
2486        "name": "",
2487        "type": "bool",
2488        "internalType": "bool"
2489      }
2490    ],
2491    "stateMutability": "view"
2492  },
2493  {
2494    "type": "function",
2495    "name": "proxiableUUID",
2496    "inputs": [],
2497    "outputs": [
2498      {
2499        "name": "",
2500        "type": "bytes32",
2501        "internalType": "bytes32"
2502      }
2503    ],
2504    "stateMutability": "view"
2505  },
2506  {
2507    "type": "function",
2508    "name": "registerValidator",
2509    "inputs": [
2510      {
2511        "name": "",
2512        "type": "tuple",
2513        "internalType": "struct BN254.G2Point",
2514        "components": [
2515          {
2516            "name": "x0",
2517            "type": "uint256",
2518            "internalType": "BN254.BaseField"
2519          },
2520          {
2521            "name": "x1",
2522            "type": "uint256",
2523            "internalType": "BN254.BaseField"
2524          },
2525          {
2526            "name": "y0",
2527            "type": "uint256",
2528            "internalType": "BN254.BaseField"
2529          },
2530          {
2531            "name": "y1",
2532            "type": "uint256",
2533            "internalType": "BN254.BaseField"
2534          }
2535        ]
2536      },
2537      {
2538        "name": "",
2539        "type": "tuple",
2540        "internalType": "struct EdOnBN254.EdOnBN254Point",
2541        "components": [
2542          {
2543            "name": "x",
2544            "type": "uint256",
2545            "internalType": "uint256"
2546          },
2547          {
2548            "name": "y",
2549            "type": "uint256",
2550            "internalType": "uint256"
2551          }
2552        ]
2553      },
2554      {
2555        "name": "",
2556        "type": "tuple",
2557        "internalType": "struct BN254.G1Point",
2558        "components": [
2559          {
2560            "name": "x",
2561            "type": "uint256",
2562            "internalType": "BN254.BaseField"
2563          },
2564          {
2565            "name": "y",
2566            "type": "uint256",
2567            "internalType": "BN254.BaseField"
2568          }
2569        ]
2570      },
2571      {
2572        "name": "",
2573        "type": "uint16",
2574        "internalType": "uint16"
2575      }
2576    ],
2577    "outputs": [],
2578    "stateMutability": "pure"
2579  },
2580  {
2581    "type": "function",
2582    "name": "registerValidatorV2",
2583    "inputs": [
2584      {
2585        "name": "",
2586        "type": "tuple",
2587        "internalType": "struct BN254.G2Point",
2588        "components": [
2589          {
2590            "name": "x0",
2591            "type": "uint256",
2592            "internalType": "BN254.BaseField"
2593          },
2594          {
2595            "name": "x1",
2596            "type": "uint256",
2597            "internalType": "BN254.BaseField"
2598          },
2599          {
2600            "name": "y0",
2601            "type": "uint256",
2602            "internalType": "BN254.BaseField"
2603          },
2604          {
2605            "name": "y1",
2606            "type": "uint256",
2607            "internalType": "BN254.BaseField"
2608          }
2609        ]
2610      },
2611      {
2612        "name": "",
2613        "type": "tuple",
2614        "internalType": "struct EdOnBN254.EdOnBN254Point",
2615        "components": [
2616          {
2617            "name": "x",
2618            "type": "uint256",
2619            "internalType": "uint256"
2620          },
2621          {
2622            "name": "y",
2623            "type": "uint256",
2624            "internalType": "uint256"
2625          }
2626        ]
2627      },
2628      {
2629        "name": "",
2630        "type": "tuple",
2631        "internalType": "struct BN254.G1Point",
2632        "components": [
2633          {
2634            "name": "x",
2635            "type": "uint256",
2636            "internalType": "BN254.BaseField"
2637          },
2638          {
2639            "name": "y",
2640            "type": "uint256",
2641            "internalType": "BN254.BaseField"
2642          }
2643        ]
2644      },
2645      {
2646        "name": "",
2647        "type": "bytes",
2648        "internalType": "bytes"
2649      },
2650      {
2651        "name": "",
2652        "type": "uint16",
2653        "internalType": "uint16"
2654      },
2655      {
2656        "name": "",
2657        "type": "string",
2658        "internalType": "string"
2659      }
2660    ],
2661    "outputs": [],
2662    "stateMutability": "pure"
2663  },
2664  {
2665    "type": "function",
2666    "name": "registerValidatorV3",
2667    "inputs": [
2668      {
2669        "name": "blsVK",
2670        "type": "tuple",
2671        "internalType": "struct BN254.G2Point",
2672        "components": [
2673          {
2674            "name": "x0",
2675            "type": "uint256",
2676            "internalType": "BN254.BaseField"
2677          },
2678          {
2679            "name": "x1",
2680            "type": "uint256",
2681            "internalType": "BN254.BaseField"
2682          },
2683          {
2684            "name": "y0",
2685            "type": "uint256",
2686            "internalType": "BN254.BaseField"
2687          },
2688          {
2689            "name": "y1",
2690            "type": "uint256",
2691            "internalType": "BN254.BaseField"
2692          }
2693        ]
2694      },
2695      {
2696        "name": "schnorrVK",
2697        "type": "tuple",
2698        "internalType": "struct EdOnBN254.EdOnBN254Point",
2699        "components": [
2700          {
2701            "name": "x",
2702            "type": "uint256",
2703            "internalType": "uint256"
2704          },
2705          {
2706            "name": "y",
2707            "type": "uint256",
2708            "internalType": "uint256"
2709          }
2710        ]
2711      },
2712      {
2713        "name": "blsSig",
2714        "type": "tuple",
2715        "internalType": "struct BN254.G1Point",
2716        "components": [
2717          {
2718            "name": "x",
2719            "type": "uint256",
2720            "internalType": "BN254.BaseField"
2721          },
2722          {
2723            "name": "y",
2724            "type": "uint256",
2725            "internalType": "BN254.BaseField"
2726          }
2727        ]
2728      },
2729      {
2730        "name": "schnorrSig",
2731        "type": "bytes",
2732        "internalType": "bytes"
2733      },
2734      {
2735        "name": "commission",
2736        "type": "uint16",
2737        "internalType": "uint16"
2738      },
2739      {
2740        "name": "metadataUri",
2741        "type": "string",
2742        "internalType": "string"
2743      },
2744      {
2745        "name": "x25519Key",
2746        "type": "bytes32",
2747        "internalType": "bytes32"
2748      },
2749      {
2750        "name": "p2pAddr",
2751        "type": "string",
2752        "internalType": "string"
2753      }
2754    ],
2755    "outputs": [],
2756    "stateMutability": "nonpayable"
2757  },
2758  {
2759    "type": "function",
2760    "name": "renounceOwnership",
2761    "inputs": [],
2762    "outputs": [],
2763    "stateMutability": "nonpayable"
2764  },
2765  {
2766    "type": "function",
2767    "name": "renounceRole",
2768    "inputs": [
2769      {
2770        "name": "role",
2771        "type": "bytes32",
2772        "internalType": "bytes32"
2773      },
2774      {
2775        "name": "callerConfirmation",
2776        "type": "address",
2777        "internalType": "address"
2778      }
2779    ],
2780    "outputs": [],
2781    "stateMutability": "nonpayable"
2782  },
2783  {
2784    "type": "function",
2785    "name": "revokeRole",
2786    "inputs": [
2787      {
2788        "name": "role",
2789        "type": "bytes32",
2790        "internalType": "bytes32"
2791      },
2792      {
2793        "name": "account",
2794        "type": "address",
2795        "internalType": "address"
2796      }
2797    ],
2798    "outputs": [],
2799    "stateMutability": "nonpayable"
2800  },
2801  {
2802    "type": "function",
2803    "name": "schnorrKeys",
2804    "inputs": [
2805      {
2806        "name": "schnorrKey",
2807        "type": "bytes32",
2808        "internalType": "bytes32"
2809      }
2810    ],
2811    "outputs": [
2812      {
2813        "name": "used",
2814        "type": "bool",
2815        "internalType": "bool"
2816      }
2817    ],
2818    "stateMutability": "view"
2819  },
2820  {
2821    "type": "function",
2822    "name": "setMaxCommissionIncrease",
2823    "inputs": [
2824      {
2825        "name": "newMaxIncrease",
2826        "type": "uint16",
2827        "internalType": "uint16"
2828      }
2829    ],
2830    "outputs": [],
2831    "stateMutability": "nonpayable"
2832  },
2833  {
2834    "type": "function",
2835    "name": "setMinCommissionUpdateInterval",
2836    "inputs": [
2837      {
2838        "name": "newInterval",
2839        "type": "uint256",
2840        "internalType": "uint256"
2841      }
2842    ],
2843    "outputs": [],
2844    "stateMutability": "nonpayable"
2845  },
2846  {
2847    "type": "function",
2848    "name": "setMinDelegateAmount",
2849    "inputs": [
2850      {
2851        "name": "newMinDelegateAmount",
2852        "type": "uint256",
2853        "internalType": "uint256"
2854      }
2855    ],
2856    "outputs": [],
2857    "stateMutability": "nonpayable"
2858  },
2859  {
2860    "type": "function",
2861    "name": "supportsInterface",
2862    "inputs": [
2863      {
2864        "name": "interfaceId",
2865        "type": "bytes4",
2866        "internalType": "bytes4"
2867      }
2868    ],
2869    "outputs": [
2870      {
2871        "name": "",
2872        "type": "bool",
2873        "internalType": "bool"
2874      }
2875    ],
2876    "stateMutability": "view"
2877  },
2878  {
2879    "type": "function",
2880    "name": "token",
2881    "inputs": [],
2882    "outputs": [
2883      {
2884        "name": "",
2885        "type": "address",
2886        "internalType": "contract ERC20"
2887      }
2888    ],
2889    "stateMutability": "view"
2890  },
2891  {
2892    "type": "function",
2893    "name": "transferOwnership",
2894    "inputs": [
2895      {
2896        "name": "newOwner",
2897        "type": "address",
2898        "internalType": "address"
2899      }
2900    ],
2901    "outputs": [],
2902    "stateMutability": "nonpayable"
2903  },
2904  {
2905    "type": "function",
2906    "name": "undelegate",
2907    "inputs": [
2908      {
2909        "name": "validator",
2910        "type": "address",
2911        "internalType": "address"
2912      },
2913      {
2914        "name": "amount",
2915        "type": "uint256",
2916        "internalType": "uint256"
2917      }
2918    ],
2919    "outputs": [],
2920    "stateMutability": "nonpayable"
2921  },
2922  {
2923    "type": "function",
2924    "name": "undelegations",
2925    "inputs": [
2926      {
2927        "name": "validator",
2928        "type": "address",
2929        "internalType": "address"
2930      },
2931      {
2932        "name": "delegator",
2933        "type": "address",
2934        "internalType": "address"
2935      }
2936    ],
2937    "outputs": [
2938      {
2939        "name": "amount",
2940        "type": "uint256",
2941        "internalType": "uint256"
2942      },
2943      {
2944        "name": "unlocksAt",
2945        "type": "uint256",
2946        "internalType": "uint256"
2947      }
2948    ],
2949    "stateMutability": "view"
2950  },
2951  {
2952    "type": "function",
2953    "name": "unpause",
2954    "inputs": [],
2955    "outputs": [],
2956    "stateMutability": "nonpayable"
2957  },
2958  {
2959    "type": "function",
2960    "name": "updateCommission",
2961    "inputs": [
2962      {
2963        "name": "newCommission",
2964        "type": "uint16",
2965        "internalType": "uint16"
2966      }
2967    ],
2968    "outputs": [],
2969    "stateMutability": "nonpayable"
2970  },
2971  {
2972    "type": "function",
2973    "name": "updateConsensusKeys",
2974    "inputs": [
2975      {
2976        "name": "",
2977        "type": "tuple",
2978        "internalType": "struct BN254.G2Point",
2979        "components": [
2980          {
2981            "name": "x0",
2982            "type": "uint256",
2983            "internalType": "BN254.BaseField"
2984          },
2985          {
2986            "name": "x1",
2987            "type": "uint256",
2988            "internalType": "BN254.BaseField"
2989          },
2990          {
2991            "name": "y0",
2992            "type": "uint256",
2993            "internalType": "BN254.BaseField"
2994          },
2995          {
2996            "name": "y1",
2997            "type": "uint256",
2998            "internalType": "BN254.BaseField"
2999          }
3000        ]
3001      },
3002      {
3003        "name": "",
3004        "type": "tuple",
3005        "internalType": "struct EdOnBN254.EdOnBN254Point",
3006        "components": [
3007          {
3008            "name": "x",
3009            "type": "uint256",
3010            "internalType": "uint256"
3011          },
3012          {
3013            "name": "y",
3014            "type": "uint256",
3015            "internalType": "uint256"
3016          }
3017        ]
3018      },
3019      {
3020        "name": "",
3021        "type": "tuple",
3022        "internalType": "struct BN254.G1Point",
3023        "components": [
3024          {
3025            "name": "x",
3026            "type": "uint256",
3027            "internalType": "BN254.BaseField"
3028          },
3029          {
3030            "name": "y",
3031            "type": "uint256",
3032            "internalType": "BN254.BaseField"
3033          }
3034        ]
3035      }
3036    ],
3037    "outputs": [],
3038    "stateMutability": "pure"
3039  },
3040  {
3041    "type": "function",
3042    "name": "updateConsensusKeysV2",
3043    "inputs": [
3044      {
3045        "name": "blsVK",
3046        "type": "tuple",
3047        "internalType": "struct BN254.G2Point",
3048        "components": [
3049          {
3050            "name": "x0",
3051            "type": "uint256",
3052            "internalType": "BN254.BaseField"
3053          },
3054          {
3055            "name": "x1",
3056            "type": "uint256",
3057            "internalType": "BN254.BaseField"
3058          },
3059          {
3060            "name": "y0",
3061            "type": "uint256",
3062            "internalType": "BN254.BaseField"
3063          },
3064          {
3065            "name": "y1",
3066            "type": "uint256",
3067            "internalType": "BN254.BaseField"
3068          }
3069        ]
3070      },
3071      {
3072        "name": "schnorrVK",
3073        "type": "tuple",
3074        "internalType": "struct EdOnBN254.EdOnBN254Point",
3075        "components": [
3076          {
3077            "name": "x",
3078            "type": "uint256",
3079            "internalType": "uint256"
3080          },
3081          {
3082            "name": "y",
3083            "type": "uint256",
3084            "internalType": "uint256"
3085          }
3086        ]
3087      },
3088      {
3089        "name": "blsSig",
3090        "type": "tuple",
3091        "internalType": "struct BN254.G1Point",
3092        "components": [
3093          {
3094            "name": "x",
3095            "type": "uint256",
3096            "internalType": "BN254.BaseField"
3097          },
3098          {
3099            "name": "y",
3100            "type": "uint256",
3101            "internalType": "BN254.BaseField"
3102          }
3103        ]
3104      },
3105      {
3106        "name": "schnorrSig",
3107        "type": "bytes",
3108        "internalType": "bytes"
3109      }
3110    ],
3111    "outputs": [],
3112    "stateMutability": "nonpayable"
3113  },
3114  {
3115    "type": "function",
3116    "name": "updateExitEscrowPeriod",
3117    "inputs": [
3118      {
3119        "name": "newExitEscrowPeriod",
3120        "type": "uint64",
3121        "internalType": "uint64"
3122      }
3123    ],
3124    "outputs": [],
3125    "stateMutability": "nonpayable"
3126  },
3127  {
3128    "type": "function",
3129    "name": "updateMetadataUri",
3130    "inputs": [
3131      {
3132        "name": "metadataUri",
3133        "type": "string",
3134        "internalType": "string"
3135      }
3136    ],
3137    "outputs": [],
3138    "stateMutability": "nonpayable"
3139  },
3140  {
3141    "type": "function",
3142    "name": "updateNetworkConfig",
3143    "inputs": [
3144      {
3145        "name": "x25519Key",
3146        "type": "bytes32",
3147        "internalType": "bytes32"
3148      },
3149      {
3150        "name": "p2pAddr",
3151        "type": "string",
3152        "internalType": "string"
3153      }
3154    ],
3155    "outputs": [],
3156    "stateMutability": "nonpayable"
3157  },
3158  {
3159    "type": "function",
3160    "name": "updateP2pAddr",
3161    "inputs": [
3162      {
3163        "name": "p2pAddr",
3164        "type": "string",
3165        "internalType": "string"
3166      }
3167    ],
3168    "outputs": [],
3169    "stateMutability": "nonpayable"
3170  },
3171  {
3172    "type": "function",
3173    "name": "updateX25519Key",
3174    "inputs": [
3175      {
3176        "name": "x25519Key",
3177        "type": "bytes32",
3178        "internalType": "bytes32"
3179      }
3180    ],
3181    "outputs": [],
3182    "stateMutability": "nonpayable"
3183  },
3184  {
3185    "type": "function",
3186    "name": "upgradeToAndCall",
3187    "inputs": [
3188      {
3189        "name": "newImplementation",
3190        "type": "address",
3191        "internalType": "address"
3192      },
3193      {
3194        "name": "data",
3195        "type": "bytes",
3196        "internalType": "bytes"
3197      }
3198    ],
3199    "outputs": [],
3200    "stateMutability": "payable"
3201  },
3202  {
3203    "type": "function",
3204    "name": "validateMetadataUri",
3205    "inputs": [
3206      {
3207        "name": "metadataUri",
3208        "type": "string",
3209        "internalType": "string"
3210      }
3211    ],
3212    "outputs": [],
3213    "stateMutability": "pure"
3214  },
3215  {
3216    "type": "function",
3217    "name": "validateP2pAddr",
3218    "inputs": [
3219      {
3220        "name": "p2pAddr",
3221        "type": "string",
3222        "internalType": "string"
3223      }
3224    ],
3225    "outputs": [],
3226    "stateMutability": "pure"
3227  },
3228  {
3229    "type": "function",
3230    "name": "validatorExits",
3231    "inputs": [
3232      {
3233        "name": "validator",
3234        "type": "address",
3235        "internalType": "address"
3236      }
3237    ],
3238    "outputs": [
3239      {
3240        "name": "unlocksAt",
3241        "type": "uint256",
3242        "internalType": "uint256"
3243      }
3244    ],
3245    "stateMutability": "view"
3246  },
3247  {
3248    "type": "function",
3249    "name": "validators",
3250    "inputs": [
3251      {
3252        "name": "account",
3253        "type": "address",
3254        "internalType": "address"
3255      }
3256    ],
3257    "outputs": [
3258      {
3259        "name": "delegatedAmount",
3260        "type": "uint256",
3261        "internalType": "uint256"
3262      },
3263      {
3264        "name": "status",
3265        "type": "uint8",
3266        "internalType": "enum StakeTable.ValidatorStatus"
3267      }
3268    ],
3269    "stateMutability": "view"
3270  },
3271  {
3272    "type": "function",
3273    "name": "x25519Keys",
3274    "inputs": [
3275      {
3276        "name": "x25519Key",
3277        "type": "bytes32",
3278        "internalType": "bytes32"
3279      }
3280    ],
3281    "outputs": [
3282      {
3283        "name": "used",
3284        "type": "bool",
3285        "internalType": "bool"
3286      }
3287    ],
3288    "stateMutability": "view"
3289  },
3290  {
3291    "type": "event",
3292    "name": "CommissionUpdated",
3293    "inputs": [
3294      {
3295        "name": "validator",
3296        "type": "address",
3297        "indexed": true,
3298        "internalType": "address"
3299      },
3300      {
3301        "name": "timestamp",
3302        "type": "uint256",
3303        "indexed": false,
3304        "internalType": "uint256"
3305      },
3306      {
3307        "name": "oldCommission",
3308        "type": "uint16",
3309        "indexed": false,
3310        "internalType": "uint16"
3311      },
3312      {
3313        "name": "newCommission",
3314        "type": "uint16",
3315        "indexed": false,
3316        "internalType": "uint16"
3317      }
3318    ],
3319    "anonymous": false
3320  },
3321  {
3322    "type": "event",
3323    "name": "ConsensusKeysUpdated",
3324    "inputs": [
3325      {
3326        "name": "account",
3327        "type": "address",
3328        "indexed": true,
3329        "internalType": "address"
3330      },
3331      {
3332        "name": "blsVK",
3333        "type": "tuple",
3334        "indexed": false,
3335        "internalType": "struct BN254.G2Point",
3336        "components": [
3337          {
3338            "name": "x0",
3339            "type": "uint256",
3340            "internalType": "BN254.BaseField"
3341          },
3342          {
3343            "name": "x1",
3344            "type": "uint256",
3345            "internalType": "BN254.BaseField"
3346          },
3347          {
3348            "name": "y0",
3349            "type": "uint256",
3350            "internalType": "BN254.BaseField"
3351          },
3352          {
3353            "name": "y1",
3354            "type": "uint256",
3355            "internalType": "BN254.BaseField"
3356          }
3357        ]
3358      },
3359      {
3360        "name": "schnorrVK",
3361        "type": "tuple",
3362        "indexed": false,
3363        "internalType": "struct EdOnBN254.EdOnBN254Point",
3364        "components": [
3365          {
3366            "name": "x",
3367            "type": "uint256",
3368            "internalType": "uint256"
3369          },
3370          {
3371            "name": "y",
3372            "type": "uint256",
3373            "internalType": "uint256"
3374          }
3375        ]
3376      }
3377    ],
3378    "anonymous": false
3379  },
3380  {
3381    "type": "event",
3382    "name": "ConsensusKeysUpdatedV2",
3383    "inputs": [
3384      {
3385        "name": "account",
3386        "type": "address",
3387        "indexed": true,
3388        "internalType": "address"
3389      },
3390      {
3391        "name": "blsVK",
3392        "type": "tuple",
3393        "indexed": false,
3394        "internalType": "struct BN254.G2Point",
3395        "components": [
3396          {
3397            "name": "x0",
3398            "type": "uint256",
3399            "internalType": "BN254.BaseField"
3400          },
3401          {
3402            "name": "x1",
3403            "type": "uint256",
3404            "internalType": "BN254.BaseField"
3405          },
3406          {
3407            "name": "y0",
3408            "type": "uint256",
3409            "internalType": "BN254.BaseField"
3410          },
3411          {
3412            "name": "y1",
3413            "type": "uint256",
3414            "internalType": "BN254.BaseField"
3415          }
3416        ]
3417      },
3418      {
3419        "name": "schnorrVK",
3420        "type": "tuple",
3421        "indexed": false,
3422        "internalType": "struct EdOnBN254.EdOnBN254Point",
3423        "components": [
3424          {
3425            "name": "x",
3426            "type": "uint256",
3427            "internalType": "uint256"
3428          },
3429          {
3430            "name": "y",
3431            "type": "uint256",
3432            "internalType": "uint256"
3433          }
3434        ]
3435      },
3436      {
3437        "name": "blsSig",
3438        "type": "tuple",
3439        "indexed": false,
3440        "internalType": "struct BN254.G1Point",
3441        "components": [
3442          {
3443            "name": "x",
3444            "type": "uint256",
3445            "internalType": "BN254.BaseField"
3446          },
3447          {
3448            "name": "y",
3449            "type": "uint256",
3450            "internalType": "BN254.BaseField"
3451          }
3452        ]
3453      },
3454      {
3455        "name": "schnorrSig",
3456        "type": "bytes",
3457        "indexed": false,
3458        "internalType": "bytes"
3459      }
3460    ],
3461    "anonymous": false
3462  },
3463  {
3464    "type": "event",
3465    "name": "Delegated",
3466    "inputs": [
3467      {
3468        "name": "delegator",
3469        "type": "address",
3470        "indexed": true,
3471        "internalType": "address"
3472      },
3473      {
3474        "name": "validator",
3475        "type": "address",
3476        "indexed": true,
3477        "internalType": "address"
3478      },
3479      {
3480        "name": "amount",
3481        "type": "uint256",
3482        "indexed": false,
3483        "internalType": "uint256"
3484      }
3485    ],
3486    "anonymous": false
3487  },
3488  {
3489    "type": "event",
3490    "name": "ExitEscrowPeriodUpdated",
3491    "inputs": [
3492      {
3493        "name": "newExitEscrowPeriod",
3494        "type": "uint64",
3495        "indexed": false,
3496        "internalType": "uint64"
3497      }
3498    ],
3499    "anonymous": false
3500  },
3501  {
3502    "type": "event",
3503    "name": "Initialized",
3504    "inputs": [
3505      {
3506        "name": "version",
3507        "type": "uint64",
3508        "indexed": false,
3509        "internalType": "uint64"
3510      }
3511    ],
3512    "anonymous": false
3513  },
3514  {
3515    "type": "event",
3516    "name": "MaxCommissionIncreaseUpdated",
3517    "inputs": [
3518      {
3519        "name": "newMaxIncrease",
3520        "type": "uint16",
3521        "indexed": false,
3522        "internalType": "uint16"
3523      }
3524    ],
3525    "anonymous": false
3526  },
3527  {
3528    "type": "event",
3529    "name": "MetadataUriUpdated",
3530    "inputs": [
3531      {
3532        "name": "validator",
3533        "type": "address",
3534        "indexed": true,
3535        "internalType": "address"
3536      },
3537      {
3538        "name": "metadataUri",
3539        "type": "string",
3540        "indexed": false,
3541        "internalType": "string"
3542      }
3543    ],
3544    "anonymous": false
3545  },
3546  {
3547    "type": "event",
3548    "name": "MinCommissionUpdateIntervalUpdated",
3549    "inputs": [
3550      {
3551        "name": "newInterval",
3552        "type": "uint256",
3553        "indexed": false,
3554        "internalType": "uint256"
3555      }
3556    ],
3557    "anonymous": false
3558  },
3559  {
3560    "type": "event",
3561    "name": "MinDelegateAmountUpdated",
3562    "inputs": [
3563      {
3564        "name": "newMinDelegateAmount",
3565        "type": "uint256",
3566        "indexed": false,
3567        "internalType": "uint256"
3568      }
3569    ],
3570    "anonymous": false
3571  },
3572  {
3573    "type": "event",
3574    "name": "OwnershipTransferred",
3575    "inputs": [
3576      {
3577        "name": "previousOwner",
3578        "type": "address",
3579        "indexed": true,
3580        "internalType": "address"
3581      },
3582      {
3583        "name": "newOwner",
3584        "type": "address",
3585        "indexed": true,
3586        "internalType": "address"
3587      }
3588    ],
3589    "anonymous": false
3590  },
3591  {
3592    "type": "event",
3593    "name": "P2pAddrUpdated",
3594    "inputs": [
3595      {
3596        "name": "validator",
3597        "type": "address",
3598        "indexed": true,
3599        "internalType": "address"
3600      },
3601      {
3602        "name": "p2pAddr",
3603        "type": "string",
3604        "indexed": false,
3605        "internalType": "string"
3606      }
3607    ],
3608    "anonymous": false
3609  },
3610  {
3611    "type": "event",
3612    "name": "Paused",
3613    "inputs": [
3614      {
3615        "name": "account",
3616        "type": "address",
3617        "indexed": false,
3618        "internalType": "address"
3619      }
3620    ],
3621    "anonymous": false
3622  },
3623  {
3624    "type": "event",
3625    "name": "RoleAdminChanged",
3626    "inputs": [
3627      {
3628        "name": "role",
3629        "type": "bytes32",
3630        "indexed": true,
3631        "internalType": "bytes32"
3632      },
3633      {
3634        "name": "previousAdminRole",
3635        "type": "bytes32",
3636        "indexed": true,
3637        "internalType": "bytes32"
3638      },
3639      {
3640        "name": "newAdminRole",
3641        "type": "bytes32",
3642        "indexed": true,
3643        "internalType": "bytes32"
3644      }
3645    ],
3646    "anonymous": false
3647  },
3648  {
3649    "type": "event",
3650    "name": "RoleGranted",
3651    "inputs": [
3652      {
3653        "name": "role",
3654        "type": "bytes32",
3655        "indexed": true,
3656        "internalType": "bytes32"
3657      },
3658      {
3659        "name": "account",
3660        "type": "address",
3661        "indexed": true,
3662        "internalType": "address"
3663      },
3664      {
3665        "name": "sender",
3666        "type": "address",
3667        "indexed": true,
3668        "internalType": "address"
3669      }
3670    ],
3671    "anonymous": false
3672  },
3673  {
3674    "type": "event",
3675    "name": "RoleRevoked",
3676    "inputs": [
3677      {
3678        "name": "role",
3679        "type": "bytes32",
3680        "indexed": true,
3681        "internalType": "bytes32"
3682      },
3683      {
3684        "name": "account",
3685        "type": "address",
3686        "indexed": true,
3687        "internalType": "address"
3688      },
3689      {
3690        "name": "sender",
3691        "type": "address",
3692        "indexed": true,
3693        "internalType": "address"
3694      }
3695    ],
3696    "anonymous": false
3697  },
3698  {
3699    "type": "event",
3700    "name": "Undelegated",
3701    "inputs": [
3702      {
3703        "name": "delegator",
3704        "type": "address",
3705        "indexed": true,
3706        "internalType": "address"
3707      },
3708      {
3709        "name": "validator",
3710        "type": "address",
3711        "indexed": true,
3712        "internalType": "address"
3713      },
3714      {
3715        "name": "amount",
3716        "type": "uint256",
3717        "indexed": false,
3718        "internalType": "uint256"
3719      }
3720    ],
3721    "anonymous": false
3722  },
3723  {
3724    "type": "event",
3725    "name": "UndelegatedV2",
3726    "inputs": [
3727      {
3728        "name": "delegator",
3729        "type": "address",
3730        "indexed": true,
3731        "internalType": "address"
3732      },
3733      {
3734        "name": "validator",
3735        "type": "address",
3736        "indexed": true,
3737        "internalType": "address"
3738      },
3739      {
3740        "name": "undelegationId",
3741        "type": "uint64",
3742        "indexed": true,
3743        "internalType": "uint64"
3744      },
3745      {
3746        "name": "amount",
3747        "type": "uint256",
3748        "indexed": false,
3749        "internalType": "uint256"
3750      },
3751      {
3752        "name": "unlocksAt",
3753        "type": "uint256",
3754        "indexed": false,
3755        "internalType": "uint256"
3756      }
3757    ],
3758    "anonymous": false
3759  },
3760  {
3761    "type": "event",
3762    "name": "Unpaused",
3763    "inputs": [
3764      {
3765        "name": "account",
3766        "type": "address",
3767        "indexed": false,
3768        "internalType": "address"
3769      }
3770    ],
3771    "anonymous": false
3772  },
3773  {
3774    "type": "event",
3775    "name": "Upgraded",
3776    "inputs": [
3777      {
3778        "name": "implementation",
3779        "type": "address",
3780        "indexed": true,
3781        "internalType": "address"
3782      }
3783    ],
3784    "anonymous": false
3785  },
3786  {
3787    "type": "event",
3788    "name": "ValidatorExit",
3789    "inputs": [
3790      {
3791        "name": "validator",
3792        "type": "address",
3793        "indexed": true,
3794        "internalType": "address"
3795      }
3796    ],
3797    "anonymous": false
3798  },
3799  {
3800    "type": "event",
3801    "name": "ValidatorExitClaimed",
3802    "inputs": [
3803      {
3804        "name": "delegator",
3805        "type": "address",
3806        "indexed": true,
3807        "internalType": "address"
3808      },
3809      {
3810        "name": "validator",
3811        "type": "address",
3812        "indexed": true,
3813        "internalType": "address"
3814      },
3815      {
3816        "name": "amount",
3817        "type": "uint256",
3818        "indexed": false,
3819        "internalType": "uint256"
3820      }
3821    ],
3822    "anonymous": false
3823  },
3824  {
3825    "type": "event",
3826    "name": "ValidatorExitV2",
3827    "inputs": [
3828      {
3829        "name": "validator",
3830        "type": "address",
3831        "indexed": true,
3832        "internalType": "address"
3833      },
3834      {
3835        "name": "unlocksAt",
3836        "type": "uint256",
3837        "indexed": false,
3838        "internalType": "uint256"
3839      }
3840    ],
3841    "anonymous": false
3842  },
3843  {
3844    "type": "event",
3845    "name": "ValidatorRegistered",
3846    "inputs": [
3847      {
3848        "name": "account",
3849        "type": "address",
3850        "indexed": true,
3851        "internalType": "address"
3852      },
3853      {
3854        "name": "blsVk",
3855        "type": "tuple",
3856        "indexed": false,
3857        "internalType": "struct BN254.G2Point",
3858        "components": [
3859          {
3860            "name": "x0",
3861            "type": "uint256",
3862            "internalType": "BN254.BaseField"
3863          },
3864          {
3865            "name": "x1",
3866            "type": "uint256",
3867            "internalType": "BN254.BaseField"
3868          },
3869          {
3870            "name": "y0",
3871            "type": "uint256",
3872            "internalType": "BN254.BaseField"
3873          },
3874          {
3875            "name": "y1",
3876            "type": "uint256",
3877            "internalType": "BN254.BaseField"
3878          }
3879        ]
3880      },
3881      {
3882        "name": "schnorrVk",
3883        "type": "tuple",
3884        "indexed": false,
3885        "internalType": "struct EdOnBN254.EdOnBN254Point",
3886        "components": [
3887          {
3888            "name": "x",
3889            "type": "uint256",
3890            "internalType": "uint256"
3891          },
3892          {
3893            "name": "y",
3894            "type": "uint256",
3895            "internalType": "uint256"
3896          }
3897        ]
3898      },
3899      {
3900        "name": "commission",
3901        "type": "uint16",
3902        "indexed": false,
3903        "internalType": "uint16"
3904      }
3905    ],
3906    "anonymous": false
3907  },
3908  {
3909    "type": "event",
3910    "name": "ValidatorRegisteredV2",
3911    "inputs": [
3912      {
3913        "name": "account",
3914        "type": "address",
3915        "indexed": true,
3916        "internalType": "address"
3917      },
3918      {
3919        "name": "blsVK",
3920        "type": "tuple",
3921        "indexed": false,
3922        "internalType": "struct BN254.G2Point",
3923        "components": [
3924          {
3925            "name": "x0",
3926            "type": "uint256",
3927            "internalType": "BN254.BaseField"
3928          },
3929          {
3930            "name": "x1",
3931            "type": "uint256",
3932            "internalType": "BN254.BaseField"
3933          },
3934          {
3935            "name": "y0",
3936            "type": "uint256",
3937            "internalType": "BN254.BaseField"
3938          },
3939          {
3940            "name": "y1",
3941            "type": "uint256",
3942            "internalType": "BN254.BaseField"
3943          }
3944        ]
3945      },
3946      {
3947        "name": "schnorrVK",
3948        "type": "tuple",
3949        "indexed": false,
3950        "internalType": "struct EdOnBN254.EdOnBN254Point",
3951        "components": [
3952          {
3953            "name": "x",
3954            "type": "uint256",
3955            "internalType": "uint256"
3956          },
3957          {
3958            "name": "y",
3959            "type": "uint256",
3960            "internalType": "uint256"
3961          }
3962        ]
3963      },
3964      {
3965        "name": "commission",
3966        "type": "uint16",
3967        "indexed": false,
3968        "internalType": "uint16"
3969      },
3970      {
3971        "name": "blsSig",
3972        "type": "tuple",
3973        "indexed": false,
3974        "internalType": "struct BN254.G1Point",
3975        "components": [
3976          {
3977            "name": "x",
3978            "type": "uint256",
3979            "internalType": "BN254.BaseField"
3980          },
3981          {
3982            "name": "y",
3983            "type": "uint256",
3984            "internalType": "BN254.BaseField"
3985          }
3986        ]
3987      },
3988      {
3989        "name": "schnorrSig",
3990        "type": "bytes",
3991        "indexed": false,
3992        "internalType": "bytes"
3993      },
3994      {
3995        "name": "metadataUri",
3996        "type": "string",
3997        "indexed": false,
3998        "internalType": "string"
3999      }
4000    ],
4001    "anonymous": false
4002  },
4003  {
4004    "type": "event",
4005    "name": "ValidatorRegisteredV3",
4006    "inputs": [
4007      {
4008        "name": "account",
4009        "type": "address",
4010        "indexed": true,
4011        "internalType": "address"
4012      },
4013      {
4014        "name": "blsVK",
4015        "type": "tuple",
4016        "indexed": false,
4017        "internalType": "struct BN254.G2Point",
4018        "components": [
4019          {
4020            "name": "x0",
4021            "type": "uint256",
4022            "internalType": "BN254.BaseField"
4023          },
4024          {
4025            "name": "x1",
4026            "type": "uint256",
4027            "internalType": "BN254.BaseField"
4028          },
4029          {
4030            "name": "y0",
4031            "type": "uint256",
4032            "internalType": "BN254.BaseField"
4033          },
4034          {
4035            "name": "y1",
4036            "type": "uint256",
4037            "internalType": "BN254.BaseField"
4038          }
4039        ]
4040      },
4041      {
4042        "name": "schnorrVK",
4043        "type": "tuple",
4044        "indexed": false,
4045        "internalType": "struct EdOnBN254.EdOnBN254Point",
4046        "components": [
4047          {
4048            "name": "x",
4049            "type": "uint256",
4050            "internalType": "uint256"
4051          },
4052          {
4053            "name": "y",
4054            "type": "uint256",
4055            "internalType": "uint256"
4056          }
4057        ]
4058      },
4059      {
4060        "name": "commission",
4061        "type": "uint16",
4062        "indexed": false,
4063        "internalType": "uint16"
4064      },
4065      {
4066        "name": "blsSig",
4067        "type": "tuple",
4068        "indexed": false,
4069        "internalType": "struct BN254.G1Point",
4070        "components": [
4071          {
4072            "name": "x",
4073            "type": "uint256",
4074            "internalType": "BN254.BaseField"
4075          },
4076          {
4077            "name": "y",
4078            "type": "uint256",
4079            "internalType": "BN254.BaseField"
4080          }
4081        ]
4082      },
4083      {
4084        "name": "schnorrSig",
4085        "type": "bytes",
4086        "indexed": false,
4087        "internalType": "bytes"
4088      },
4089      {
4090        "name": "metadataUri",
4091        "type": "string",
4092        "indexed": false,
4093        "internalType": "string"
4094      },
4095      {
4096        "name": "x25519Key",
4097        "type": "bytes32",
4098        "indexed": false,
4099        "internalType": "bytes32"
4100      },
4101      {
4102        "name": "p2pAddr",
4103        "type": "string",
4104        "indexed": false,
4105        "internalType": "string"
4106      }
4107    ],
4108    "anonymous": false
4109  },
4110  {
4111    "type": "event",
4112    "name": "Withdrawal",
4113    "inputs": [
4114      {
4115        "name": "account",
4116        "type": "address",
4117        "indexed": true,
4118        "internalType": "address"
4119      },
4120      {
4121        "name": "amount",
4122        "type": "uint256",
4123        "indexed": false,
4124        "internalType": "uint256"
4125      }
4126    ],
4127    "anonymous": false
4128  },
4129  {
4130    "type": "event",
4131    "name": "WithdrawalClaimed",
4132    "inputs": [
4133      {
4134        "name": "delegator",
4135        "type": "address",
4136        "indexed": true,
4137        "internalType": "address"
4138      },
4139      {
4140        "name": "validator",
4141        "type": "address",
4142        "indexed": true,
4143        "internalType": "address"
4144      },
4145      {
4146        "name": "undelegationId",
4147        "type": "uint64",
4148        "indexed": true,
4149        "internalType": "uint64"
4150      },
4151      {
4152        "name": "amount",
4153        "type": "uint256",
4154        "indexed": false,
4155        "internalType": "uint256"
4156      }
4157    ],
4158    "anonymous": false
4159  },
4160  {
4161    "type": "event",
4162    "name": "X25519KeyUpdated",
4163    "inputs": [
4164      {
4165        "name": "validator",
4166        "type": "address",
4167        "indexed": true,
4168        "internalType": "address"
4169      },
4170      {
4171        "name": "x25519Key",
4172        "type": "bytes32",
4173        "indexed": false,
4174        "internalType": "bytes32"
4175      }
4176    ],
4177    "anonymous": false
4178  },
4179  {
4180    "type": "error",
4181    "name": "AccessControlBadConfirmation",
4182    "inputs": []
4183  },
4184  {
4185    "type": "error",
4186    "name": "AccessControlUnauthorizedAccount",
4187    "inputs": [
4188      {
4189        "name": "account",
4190        "type": "address",
4191        "internalType": "address"
4192      },
4193      {
4194        "name": "neededRole",
4195        "type": "bytes32",
4196        "internalType": "bytes32"
4197      }
4198    ]
4199  },
4200  {
4201    "type": "error",
4202    "name": "AddressEmptyCode",
4203    "inputs": [
4204      {
4205        "name": "target",
4206        "type": "address",
4207        "internalType": "address"
4208      }
4209    ]
4210  },
4211  {
4212    "type": "error",
4213    "name": "BLSSigVerificationFailed",
4214    "inputs": []
4215  },
4216  {
4217    "type": "error",
4218    "name": "BN254PairingProdFailed",
4219    "inputs": []
4220  },
4221  {
4222    "type": "error",
4223    "name": "BlsKeyAlreadyUsed",
4224    "inputs": []
4225  },
4226  {
4227    "type": "error",
4228    "name": "CommissionAlreadyInitialized",
4229    "inputs": [
4230      {
4231        "name": "validator",
4232        "type": "address",
4233        "internalType": "address"
4234      }
4235    ]
4236  },
4237  {
4238    "type": "error",
4239    "name": "CommissionIncreaseExceedsMax",
4240    "inputs": []
4241  },
4242  {
4243    "type": "error",
4244    "name": "CommissionUnchanged",
4245    "inputs": []
4246  },
4247  {
4248    "type": "error",
4249    "name": "CommissionUpdateTooSoon",
4250    "inputs": []
4251  },
4252  {
4253    "type": "error",
4254    "name": "DefaultAdminCannotBeRenounced",
4255    "inputs": []
4256  },
4257  {
4258    "type": "error",
4259    "name": "DefaultAdminCannotBeRevoked",
4260    "inputs": []
4261  },
4262  {
4263    "type": "error",
4264    "name": "DelegateAmountTooSmall",
4265    "inputs": []
4266  },
4267  {
4268    "type": "error",
4269    "name": "DeprecatedFunction",
4270    "inputs": []
4271  },
4272  {
4273    "type": "error",
4274    "name": "ERC1967InvalidImplementation",
4275    "inputs": [
4276      {
4277        "name": "implementation",
4278        "type": "address",
4279        "internalType": "address"
4280      }
4281    ]
4282  },
4283  {
4284    "type": "error",
4285    "name": "ERC1967NonPayable",
4286    "inputs": []
4287  },
4288  {
4289    "type": "error",
4290    "name": "EnforcedPause",
4291    "inputs": []
4292  },
4293  {
4294    "type": "error",
4295    "name": "ExitEscrowPeriodInvalid",
4296    "inputs": []
4297  },
4298  {
4299    "type": "error",
4300    "name": "ExpectedPause",
4301    "inputs": []
4302  },
4303  {
4304    "type": "error",
4305    "name": "FailedInnerCall",
4306    "inputs": []
4307  },
4308  {
4309    "type": "error",
4310    "name": "InitialActiveStakeExceedsBalance",
4311    "inputs": []
4312  },
4313  {
4314    "type": "error",
4315    "name": "InsufficientAllowance",
4316    "inputs": [
4317      {
4318        "name": "",
4319        "type": "uint256",
4320        "internalType": "uint256"
4321      },
4322      {
4323        "name": "",
4324        "type": "uint256",
4325        "internalType": "uint256"
4326      }
4327    ]
4328  },
4329  {
4330    "type": "error",
4331    "name": "InsufficientBalance",
4332    "inputs": [
4333      {
4334        "name": "",
4335        "type": "uint256",
4336        "internalType": "uint256"
4337      }
4338    ]
4339  },
4340  {
4341    "type": "error",
4342    "name": "InvalidCommission",
4343    "inputs": []
4344  },
4345  {
4346    "type": "error",
4347    "name": "InvalidG1",
4348    "inputs": []
4349  },
4350  {
4351    "type": "error",
4352    "name": "InvalidInitialization",
4353    "inputs": []
4354  },
4355  {
4356    "type": "error",
4357    "name": "InvalidMetadataUriLength",
4358    "inputs": []
4359  },
4360  {
4361    "type": "error",
4362    "name": "InvalidP2pAddr",
4363    "inputs": []
4364  },
4365  {
4366    "type": "error",
4367    "name": "InvalidRateLimitParameters",
4368    "inputs": []
4369  },
4370  {
4371    "type": "error",
4372    "name": "InvalidSchnorrSig",
4373    "inputs": []
4374  },
4375  {
4376    "type": "error",
4377    "name": "InvalidSchnorrVK",
4378    "inputs": []
4379  },
4380  {
4381    "type": "error",
4382    "name": "InvalidX25519Key",
4383    "inputs": []
4384  },
4385  {
4386    "type": "error",
4387    "name": "MinDelegateAmountTooSmall",
4388    "inputs": []
4389  },
4390  {
4391    "type": "error",
4392    "name": "NoUndelegationFound",
4393    "inputs": []
4394  },
4395  {
4396    "type": "error",
4397    "name": "NotInitializing",
4398    "inputs": []
4399  },
4400  {
4401    "type": "error",
4402    "name": "NothingToWithdraw",
4403    "inputs": []
4404  },
4405  {
4406    "type": "error",
4407    "name": "OwnableInvalidOwner",
4408    "inputs": [
4409      {
4410        "name": "owner",
4411        "type": "address",
4412        "internalType": "address"
4413      }
4414    ]
4415  },
4416  {
4417    "type": "error",
4418    "name": "OwnableUnauthorizedAccount",
4419    "inputs": [
4420      {
4421        "name": "account",
4422        "type": "address",
4423        "internalType": "address"
4424      }
4425    ]
4426  },
4427  {
4428    "type": "error",
4429    "name": "OwnershipCannotBeRenounced",
4430    "inputs": []
4431  },
4432  {
4433    "type": "error",
4434    "name": "PowPrecompileFailed",
4435    "inputs": []
4436  },
4437  {
4438    "type": "error",
4439    "name": "PrematureWithdrawal",
4440    "inputs": []
4441  },
4442  {
4443    "type": "error",
4444    "name": "SchnorrKeyAlreadyUsed",
4445    "inputs": []
4446  },
4447  {
4448    "type": "error",
4449    "name": "UUPSUnauthorizedCallContext",
4450    "inputs": []
4451  },
4452  {
4453    "type": "error",
4454    "name": "UUPSUnsupportedProxiableUUID",
4455    "inputs": [
4456      {
4457        "name": "slot",
4458        "type": "bytes32",
4459        "internalType": "bytes32"
4460      }
4461    ]
4462  },
4463  {
4464    "type": "error",
4465    "name": "UndelegationAlreadyExists",
4466    "inputs": []
4467  },
4468  {
4469    "type": "error",
4470    "name": "ValidatorAlreadyExited",
4471    "inputs": []
4472  },
4473  {
4474    "type": "error",
4475    "name": "ValidatorAlreadyRegistered",
4476    "inputs": []
4477  },
4478  {
4479    "type": "error",
4480    "name": "ValidatorInactive",
4481    "inputs": []
4482  },
4483  {
4484    "type": "error",
4485    "name": "ValidatorNotExited",
4486    "inputs": []
4487  },
4488  {
4489    "type": "error",
4490    "name": "X25519KeyAlreadyUsed",
4491    "inputs": []
4492  },
4493  {
4494    "type": "error",
4495    "name": "ZeroAddress",
4496    "inputs": []
4497  },
4498  {
4499    "type": "error",
4500    "name": "ZeroAmount",
4501    "inputs": []
4502  }
4503]
4504```*/
4505#[allow(
4506    non_camel_case_types,
4507    non_snake_case,
4508    clippy::pub_underscore_fields,
4509    clippy::style,
4510    clippy::empty_structs_with_brackets
4511)]
4512pub mod StakeTableV3 {
4513    use super::*;
4514    use alloy::sol_types as alloy_sol_types;
4515    /// The creation / init bytecode of the contract.
4516    ///
4517    /// ```text
4518    ///0x60a060405230608052348015610013575f5ffd5b5061001c610039565b610024610039565b61002c610039565b610034610039565b6100eb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100895760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614be76101115f395f81816129540152818161297d0152612e0b0152614be75ff3fe6080604052600436106103be575f3560e01c80636a911ccf116101f4578063ad3cb1cc11610113578063d547741f116100a8578063e62977f811610078578063e62977f814610bab578063e63ab1e914610bc0578063f2fde38b14610be0578063fa52c7d814610bff578063fc0c546a14610c42575f5ffd5b8063d547741f14610b42578063d9cc7d2614610b61578063e3f237e614610b76578063e4d1fb9414610b95575f5ffd5b8063bb60bfb0116100e3578063bb60bfb014610a94578063bd49c35f14610ad8578063be20309414610aed578063c64814dd14610b0c575f5ffd5b8063ad3cb1cc146109df578063b3e6ebd514610a1c578063b5700e6814610a4a578063b5ecb34414610a69575f5ffd5b80639b30a5e611610189578063a217fddf11610159578063a217fddf1461093c578063a2d78dd51461094f578063a3066aab146109a1578063ac5c2ad0146109c0575f5ffd5b80639b30a5e6146108965780639e9a8f31146108b55780639ec9c138146108ca5780639ffb6b43146108e9575f5ffd5b80638456cb59116101c45780638456cb5914610818578063870c8f261461082c5780638da5cb5b1461084b57806391d1485414610877575f5ffd5b80636a911ccf146107ad5780636ad28e9f146107c1578063715018a6146107ef57806372e9c93414610803575f5ffd5b8063394b348f116102e057806352780b6e116102755780635c975abb116102455780635c975abb146107285780635f8754a61461074b578063617066e5146107795780636887cd361461078e575f5ffd5b806352780b6e146106ad57806352d1902d146106cc5780635544c2f1146106e05780635a2f51fd146106fa575f5ffd5b80633f3bb366116102b05780633f3bb3661461063a5780633f4ba83a146106675780634d99dd161461067b5780634f1ef2861461069a575f5ffd5b8063394b348f146105c95780633b2b7ffa146105e85780633e732eba146106075780633e9df9b514610626575f5ffd5b80632140fecd116103565780632f2ff15d116103265780632f2ff15d146105625780632fe287591461058157806336568abe1461059657806338e454b1146105b5575f5ffd5b80632140fecd146104dd578063248a9ca3146104fc5780632b9e5c8a146105295780632dc9bac614610543575f5ffd5b80630d8e6e2c116103915780630d8e6e2c1461045557806313b9057a1461048057806315f318351461049f5780631a20cd63146104be575f5ffd5b806301ffc9a7146103c2578063026e402b146103f6578063073d25fc146104175780630cb2976414610436575b5f5ffd5b3480156103cd575f5ffd5b506103e16103dc366004613f6c565b610c61565b60405190151581526020015b60405180910390f35b348015610401575f5ffd5b50610415610410366004613fae565b610c97565b005b348015610422575f5ffd5b50610415610431366004613fd6565b610e7d565b348015610441575f5ffd5b506104156104503660046140b8565b610f32565b348015610460575f5ffd5b5060408051600381525f60208201819052918101919091526060016103ed565b34801561048b575f5ffd5b5061041561049a36600461419b565b611032565b3480156104aa575f5ffd5b506104156104b93660046141f1565b61104b565b3480156104c9575f5ffd5b506104156104d836600461422a565b611281565b3480156104e8575f5ffd5b506104156104f7366004614250565b611315565b348015610507575f5ffd5b5061051b610516366004613fd6565b611465565b6040519081526020016103ed565b348015610534575f5ffd5b5061041561049a366004614269565b34801561054e575f5ffd5b5061041561055d366004614312565b611485565b34801561056d575f5ffd5b5061041561057c36600461432b565b611509565b34801561058c575f5ffd5b5061051b61080081565b3480156105a1575f5ffd5b506104156105b036600461432b565b611525565b3480156105c0575f5ffd5b5061041561154d565b3480156105d4575f5ffd5b506104156105e3366004613fd6565b6115f0565b3480156105f3575f5ffd5b50610415610602366004614312565b61165f565b348015610612575f5ffd5b50610415610621366004613fd6565b6117cb565b348015610631575f5ffd5b5061051b5f5481565b348015610645575f5ffd5b50600a546106549061ffff1681565b60405161ffff90911681526020016103ed565b348015610672575f5ffd5b5061041561182c565b348015610686575f5ffd5b50610415610695366004613fae565b61184e565b6104156106a8366004614355565b611abf565b3480156106b8575f5ffd5b506104156106c7366004614389565b611ada565b3480156106d7575f5ffd5b5061051b611c8c565b3480156106eb575f5ffd5b5061041561049a36600461441f565b348015610705575f5ffd5b506103e1610714366004613fd6565b60116020525f908152604090205460ff1681565b348015610733575f5ffd5b505f516020614b9b5f395f51905f525460ff166103e1565b348015610756575f5ffd5b506103e1610765366004613fd6565b600e6020525f908152604090205460ff1681565b348015610784575f5ffd5b5061051b61020081565b348015610799575f5ffd5b506104156107a8366004614463565b611ca7565b3480156107b8575f5ffd5b50610415611f28565b3480156107cc575f5ffd5b506107d76202a30081565b6040516001600160401b0390911681526020016103ed565b3480156107fa575f5ffd5b50610415611fe8565b34801561080e575f5ffd5b5061051b600c5481565b348015610823575f5ffd5b50610415612009565b348015610837575f5ffd5b506104156108463660046141f1565b612028565b348015610856575f5ffd5b5061085f61207c565b6040516001600160a01b0390911681526020016103ed565b348015610882575f5ffd5b506103e161089136600461432b565b6120aa565b3480156108a1575f5ffd5b5061051b6108b0366004614541565b6120e0565b3480156108c0575f5ffd5b5061051b60085481565b3480156108d5575f5ffd5b506104156108e43660046141f1565b61213a565b3480156108f4575f5ffd5b50610922610903366004614250565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103ed565b348015610947575f5ffd5b5061051b5f81565b34801561095a575f5ffd5b5061098c61096936600461455b565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ed565b3480156109ac575f5ffd5b506104156109bb366004614250565b61218d565b3480156109cb575f5ffd5b506104156109da366004614583565b6122f2565b3480156109ea575f5ffd5b50610a0f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103ed9190614620565b348015610a27575f5ffd5b506103e1610a36366004613fd6565b60046020525f908152604090205460ff1681565b348015610a55575f5ffd5b5060015461085f906001600160a01b031681565b348015610a74575f5ffd5b5061051b610a83366004614250565b60056020525f908152604090205481565b348015610a9f575f5ffd5b50610ab3610aae36600461455b565b61241c565b604080516001600160401b0390941684526020840192909252908201526060016103ed565b348015610ae3575f5ffd5b5061051b600b5481565b348015610af8575f5ffd5b50610415610b07366004614632565b6124ad565b348015610b17575f5ffd5b5061051b610b2636600461455b565b600660209081525f928352604080842090915290825290205481565b348015610b4d575f5ffd5b50610415610b5c36600461432b565b6125b1565b348015610b6c575f5ffd5b5061051b60095481565b348015610b81575f5ffd5b50610415610b903660046141f1565b6125d9565b348015610ba0575f5ffd5b506107d76212750081565b348015610bb6575f5ffd5b5061065461271081565b348015610bcb575f5ffd5b5061051b5f516020614b5b5f395f51905f5281565b348015610beb575f5ffd5b50610415610bfa366004614250565b6125fe565b348015610c0a575f5ffd5b50610c34610c19366004614250565b60036020525f90815260409020805460019091015460ff1682565b6040516103ed929190614685565b348015610c4d575f5ffd5b5060025461085f906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610c9157506301ffc9a760e01b6001600160e01b03198316145b92915050565b610c9f612686565b610ca8826126b8565b335f829003610cca57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ced57604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f91906146b5565b905082811015610d915760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610da9906001600160a01b0316833086612739565b6001600160a01b0384165f9081526003602052604081208054859290610dd09084906146e0565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e0b9084906146e0565b9250508190555082600b5f828254610e2391906146e0565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e6f91815260200190565b60405180910390a350505050565b610e85612686565b610e8e336126b8565b80610eac57604051633e4ba13f60e01b815260040160405180910390fd5b5f8181526011602052604090205460ff1615610edb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f279084815260200190565b60405180910390a250565b610f3a612686565b610f43336126b8565b81610f6157604051633e4ba13f60e01b815260040160405180910390fd5b5f8281526011602052604090205460ff1615610f9057604051632c8d903b60e21b815260040160405180910390fd5b610f998161104b565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe59085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb22826040516110269190614620565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b80518190158015906110605750610200815111155b61107d57604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110e257826110956001836146f3565b815181106110a5576110a5614706565b01602001516001600160f81b031916601d60f91b036110d0576110c96001826146f3565b91506110e2565b806110da8161471a565b915050611083565b505f1981141580156110f357505f81115b61111057604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161112091906146f3565b61112a91906146f3565b90505f8111801561113c575060058111155b61115957604051631e5e435f60e21b815260040160405180910390fd5b5f806111668460016146e0565b90505b84518110156111ef575f85828151811061118557611185614706565b016020015160f81c9050603081108015906111a4575060398160ff1611155b6111c157604051631e5e435f60e21b815260040160405180910390fd5b6111cc60308261472f565b60ff166111da84600a614748565b6111e491906146e0565b925050600101611169565b5060018211801561122e5750836112078460016146e0565b8151811061121757611217614706565b6020910101516001600160f81b031916600360fc1b145b1561124c57604051631e5e435f60e21b815260040160405180910390fd5b5f8111801561125d575061ffff8111155b61127a57604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128b816127d6565b6202a3006001600160401b03831610806112b05750621275006001600160401b038316115b156112ce5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131d612686565b6001600160a01b0381165f908152600560205260408120543391819003611357576040516379298a5360e11b815260040160405180910390fd5b8042101561137857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906114049084906146f3565b9091555050600254611420906001600160a01b031684836127e0565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e6f91815260200190565b5f9081525f516020614b7b5f395f51905f52602052604090206001015490565b5f61148f816127d6565b5f8261ffff161180156114a8575061271061ffff831611155b6114c55760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611309565b8161151b57611517816125fe565b5050565b6115178282612869565b8161154357604051638b78631d60e01b815260040160405180910390fd5b6115178282612885565b6115556128b8565b5f516020614bbb5f395f51905f52805460039190600160401b900460ff168061158b575080546001600160401b03808416911610155b156115a95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614b1b5f395f51905f5290602001611309565b5f6115fa816127d6565b5f8211801561160d57506301e133808211155b61162a5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611309565b611667612686565b33611671816126b8565b61271061ffff831611156116985760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116da57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff161115611766576001820154801580611708575060095461170490826146e0565b4210155b611725576040516316eb94cb60e01b815260040160405180910390fd5b600a546117369061ffff168361475f565b61ffff168561ffff16111561175e576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d5816127d6565b60018210156117f75760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611309565b5f516020614b5b5f395f51905f52611843816127d6565b61184b6128ea565b50565b611856612686565b61185f826126b8565b335f82900361188157604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118c45760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190d57604051639266535160e01b815260048101829052602401610d88565b600f80545f916001600160401b03909116908261192983614779565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119a291906146f3565b90915550506008545f906119b690426146e0565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a469084906146f3565b9250508190555084600b5f828254611a5e91906146f3565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac7612949565b611ad0826129ed565b61151782826129f7565b611ae26128b8565b5f516020614bbb5f395f51905f52805460029190600160401b900460ff1680611b18575080546001600160401b03808416911610155b15611b365760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b7e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba55760405163d92e233d60e01b815260040160405180910390fd5b611bad612ab3565b611bb5612abb565b611bcc5f516020614b5b5f395f51905f5288612acb565b50611bd75f87612acb565b505f611be161207c565b9050806001600160a01b0316876001600160a01b031614611c0557611c0587612b6c565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c458585612bdc565b611c4e86612d71565b50805460ff60401b191681556040516001600160401b03831681525f516020614b1b5f395f51905f529060200160405180910390a150505050505050565b5f611c95612e00565b505f516020614b3b5f395f51905f5290565b611caf612686565b33611cb981612e49565b611cc288612e96565b611ccc8989612f29565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cfe81898c612fa2565b8651604014611d2057604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d475760405163dc81db8560e01b815260040160405180910390fd5b611d50856125d9565b83611d6e57604051633e4ba13f60e01b815260040160405180910390fd5b5f8481526011602052604090205460ff1615611d9d57604051632c8d903b60e21b815260040160405180910390fd5b611da68361104b565b600160045f611db48d6120e0565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611de58c613037565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e2c57611e2c614671565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e7257611e72614671565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611f14908d908d908b908e908e908d908d908d906147a3565b60405180910390a250505050505050505050565b611f30612686565b33611f3a816126b8565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f6c90426146e0565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611fa89084906146f3565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611026565b611ff06128b8565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614b5b5f395f51905f52612020816127d6565b61184b61305b565b612030612686565b3361203a816126b8565b612043826125d9565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516110269190614620565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614b7b5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f015182602001518360400151846060015160405160200161211d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b612142612686565b61214b336126b8565b6121548161104b565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f279190614620565b612195612686565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121da57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561222257604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691612295911684846127e0565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122e491815260200190565b60405180910390a450505050565b6122fa612686565b33612304816126b8565b61230d84612e96565b6123178585612f29565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050612349818588612fa2565b825160401461236b57604051634247068760e01b815260040160405180910390fd5b600160045f612379896120e0565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f6123aa88613037565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e58787878760405161240c9493929190614848565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361246757604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614bbb5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124de5750825b90505f826001600160401b031660011480156124f95750303b155b905081158015612507575080155b156125255760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561254f57845460ff60401b1916600160401b1785555b612558866130a3565b612560612ab3565b6125686130b4565b612573898989613192565b83156125a657845460ff60401b19168555604051600181525f516020614b1b5f395f51905f529060200160405180910390a15b505050505050505050565b816125cf5760405163b0b5fb9960e01b815260040160405180910390fd5b611517828261323d565b80516108008111156115175760405163239ff57f60e01b815260040160405180910390fd5b5f612608816127d6565b6001600160a01b03821661263157604051631e4fbdf760e01b81525f6004820152602401610d88565b5f61263a61207c565b9050826001600160a01b0316816001600160a01b0316036126635761265e83613259565b505050565b61266d5f84612869565b61267683613259565b6126805f82613293565b50505050565b5f516020614b9b5f395f51905f525460ff16156126b65760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126e9576126e9614671565b036127075760405163508a793f60e01b815260040160405180910390fd5b600281600281111561271b5761271b614671565b036115175760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127925750833b153d17155b8061127a5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610d88565b61184b813361330c565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561282a5750823b153d17155b806126805760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610d88565b61287282611465565b61287b816127d6565b6126808383612acb565b6001600160a01b03811633146128ae5760405163334bd91960e11b815260040160405180910390fd5b61265e8282613293565b336128c161207c565b6001600160a01b0316146126b65760405163118cdaa760e01b8152336004820152602401610d88565b6128f2613345565b5f516020614b9b5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806129cf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129c35f516020614b3b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126b65760405163703e46dd60e11b815260040160405180910390fd5b5f611517816127d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a51575060408051601f3d908101601f19168201909252612a4e918101906146b5565b60015b612a7957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d88565b5f516020614b3b5f395f51905f528114612aa957604051632a87526960e21b815260048101829052602401610d88565b61265e8383613374565b6126b66133c9565b612ac36133c9565b6126b66133ff565b5f5f516020614b7b5f395f51905f52612ae484846120aa565b612b63575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b193390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610c91565b5f915050610c91565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b8181101561265e575f838383818110612bf957612bf9614706565b612c0f9260206040909202019081019150614250565b90505f848484818110612c2457612c24614706565b9050604002016020016020810190612c3c9190614312565b905061271061ffff82161115612c655760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612c9657612c96614671565b03612cb45760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612cf557506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d205760405163050814e160e41b81526001600160a01b039091166004820152602401610d88565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612bde565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612db7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ddb91906146b5565b811115612dfb57604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126b65760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612e7857612e78614671565b1461184b5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612eea57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f08576040516306cf438f60e01b815260040160405180910390fd5b80515f0361184b576040516306cf438f60e01b815260040160405180910390fd5b60045f612f35846120e0565b815260208101919091526040015f205460ff1615612f655760405162da8a5760e11b815260040160405180910390fd5b600e5f612f7183613037565b815260208101919091526040015f205460ff16156115175760405163ae493b0360e01b815260040160405180910390fd5b612fab8261341f565b5f604051806060016040528060248152602001614ad76024913990505f8482604051602001612fdb9291906148c5565b60405160208183030381529060405290505f612ff682613486565b9050613013818561300688613573565b61300e6135ea565b6136b7565b61302f5760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f0151826020015160405160200161211d929190918252602082015260400190565b613063612686565b5f516020614b9b5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361292b565b6130ab6133c9565b61184b81613766565b5f516020614bbb5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156130e55750825b90505f826001600160401b031660011480156131005750303b155b90508115801561310e575080155b1561312c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561315657845460ff60401b1916600160401b1785555b435f55831561127a57845460ff60401b19168555604051600181525f516020614b1b5f395f51905f529060200160405180910390a15050505050565b6001600160a01b0383166131b95760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166131e05760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156132355760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61324682611465565b61324f816127d6565b6126808383613293565b6132616128b8565b6001600160a01b03811661328a57604051631e4fbdf760e01b81525f6004820152602401610d88565b61184b81612b6c565b5f5f516020614b7b5f395f51905f526132ac84846120aa565b15612b63575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610c91565b61331682826120aa565b6115175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d88565b5f516020614b9b5f395f51905f525460ff166126b657604051638dfc202b60e01b815260040160405180910390fd5b61337d8261376e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133c15761265e82826137d1565b611517613843565b5f516020614bbb5f395f51905f5254600160401b900460ff166126b657604051631afcd79f60e31b815260040160405180910390fd5b6134076133c9565b5f516020614b9b5f395f51905f52805460ff19169055565b805160208201515f915f516020614afb5f395f51905f5291159015161561344557505050565b82516020840151826003848585860985090883828309148382108484101616935050508161265e5760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6134a383613862565b90505f516020614afb5f395f51905f5260035f82848509905082806134ca576134ca6148d9565b848209905082806134dd576134dd6148d9565b82820890505f5f6134ed83613a6a565b925090505b80613556578480613505576135056148d9565b6001870895508480613519576135196148d9565b8687099250848061352c5761352c6148d9565b8684099250848061353f5761353f6148d9565b848408925061354d83613a6a565b925090506134f2565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561359a575090565b6040518060400160405280835f015181526020015f516020614afb5f395f51905f5284602001516135cb91906148ed565b6135e2905f516020614afb5f395f51905f526146f3565b905292915050565b61361160405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061375a5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b6132616133c9565b806001600160a01b03163b5f036137a357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d88565b5f516020614b3b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516137ed919061490c565b5f60405180830381855af49150503d805f8114613825576040519150601f19603f3d011682016040523d82523d5f602084013e61382a565b606091505b509150915061383a858383613b32565b95945050505050565b34156126b65760405163b398979f60e01b815260040160405180910390fd5b5f5f61386d83613b91565b80519091506030811461388257613882614917565b5f816001600160401b0381111561389b5761389b613fed565b6040519080825280601f01601f1916602001820160405280156138c5576020820181803683370190505b5090505f5b82811015613934578360016138df83866146f3565b6138e991906146f3565b815181106138f9576138f9614706565b602001015160f81c60f81b82828151811061391657613916614706565b60200101906001600160f81b03191690815f1a9053506001016138ca565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156139c457838161397085886146f3565b61397a91906146e0565b8151811061398a5761398a614706565b602001015160f81c60f81b60f81c8282815181106139aa576139aa614706565b60ff9092166020928302919091019091015260010161395c565b505f6139cf82613edc565b90506101005f516020614afb5f395f51905f525f6139ed86896146f3565b90505f5b81811015613a5a575f886001613a0784866146f3565b613a1191906146f3565b81518110613a2157613a21614706565b016020015160f81c90508380613a3957613a396148d9565b85870995508380613a4c57613a4c6148d9565b8187089550506001016139f1565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614afb5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613af857604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613b1157613b0e83826146f3565b92505b8080613b1f57613b1f6148d9565b8384099690961496919550909350505050565b606082613b4757613b4282613f43565b613b8a565b8151158015613b5e57506001600160a01b0384163b155b15613b8757604051639996b31560e01b81526001600160a01b0385166004820152602401610d88565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613bd19291906148c5565b6040516020818303038152906040529050808460f81b604051602001613bf892919061492b565b604051602081830303815290604052905080604051602001613c1a9190614955565b60408051601f1981840301815290829052915061010160f01b90613c44908390839060200161496d565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613cb357613cb3613fed565b6040519080825280601f01601f191660200182016040528015613cdd576020820181803683370190505b5090505f82604051602001613cf491815260200190565b60408051601f1981840301815291905290505f5b8151811015613d5e57818181518110613d2357613d23614706565b602001015160f81c60f81b838281518110613d4057613d40614706565b60200101906001600160f81b03191690815f1a905350600101613d08565b505f84604051602001613d7391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613e05575f838281518110613dac57613dac614706565b602001015160f81c60f81b838381518110613dc957613dc9614706565b602001015160f81c60f81b1890508881604051602001613dea929190614991565b60408051601f19818403018152919052985050600101613d91565b50868887604051602001613e1b939291906149b5565b60405160208183030381529060405296508680519060200120935083604051602001613e4991815260200190565b60408051601f1981840301815291905291505f5b613e6a8a60ff8d166146f3565b811015613ecb57828181518110613e8357613e83614706565b01602001516001600160f81b03191684613e9d838d6146e0565b81518110613ead57613ead614706565b60200101906001600160f81b03191690815f1a905350600101613e5d565b50919b9a5050505050505050505050565b5f80805b8351811015613f3c57838181518110613efb57613efb614706565b602002602001015160ff16816008613f139190614748565b613f1e906002614acb565b613f289190614748565b613f3290836146e0565b9150600101613ee0565b5092915050565b805115613f535780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215613f7c575f5ffd5b81356001600160e01b031981168114613b8a575f5ffd5b80356001600160a01b0381168114613fa9575f5ffd5b919050565b5f5f60408385031215613fbf575f5ffd5b613fc883613f93565b946020939093013593505050565b5f60208284031215613fe6575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561402357614023613fed565b60405290565b5f82601f830112614038575f5ffd5b8135602083015f5f6001600160401b0384111561405757614057613fed565b50604051601f19601f85018116603f011681018181106001600160401b038211171561408557614085613fed565b60405283815290508082840187101561409c575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f604083850312156140c9575f5ffd5b8235915060208301356001600160401b038111156140e5575f5ffd5b6140f185828601614029565b9150509250929050565b5f6080828403121561410b575f5ffd5b604051608081016001600160401b038111828210171561412d5761412d613fed565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561416b575f5ffd5b614173614001565b823581526020928301359281019290925250919050565b803561ffff81168114613fa9575f5ffd5b5f5f5f5f61012085870312156141af575f5ffd5b6141b986866140fb565b93506141c8866080870161415b565b92506141d78660c0870161415b565b91506141e6610100860161418a565b905092959194509250565b5f60208284031215614201575f5ffd5b81356001600160401b03811115614216575f5ffd5b61422284828501614029565b949350505050565b5f6020828403121561423a575f5ffd5b81356001600160401b0381168114613b8a575f5ffd5b5f60208284031215614260575f5ffd5b613b8a82613f93565b5f5f5f5f5f5f610160878903121561427f575f5ffd5b61428988886140fb565b9550614298886080890161415b565b94506142a78860c0890161415b565b93506101008701356001600160401b038111156142c2575f5ffd5b6142ce89828a01614029565b9350506142de610120880161418a565b91506101408701356001600160401b038111156142f9575f5ffd5b61430589828a01614029565b9150509295509295509295565b5f60208284031215614322575f5ffd5b613b8a8261418a565b5f5f6040838503121561433c575f5ffd5b8235915061434c60208401613f93565b90509250929050565b5f5f60408385031215614366575f5ffd5b61436f83613f93565b915060208301356001600160401b038111156140e5575f5ffd5b5f5f5f5f5f6080868803121561439d575f5ffd5b6143a686613f93565b94506143b460208701613f93565b93506040860135925060608601356001600160401b038111156143d5575f5ffd5b8601601f810188136143e5575f5ffd5b80356001600160401b038111156143fa575f5ffd5b8860208260061b840101111561440e575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614432575f5ffd5b61443c85856140fb565b925061444b856080860161415b565b915061445a8560c0860161415b565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561447b575f5ffd5b6144858a8a6140fb565b97506144948a60808b0161415b565b96506144a38a60c08b0161415b565b95506101008901356001600160401b038111156144be575f5ffd5b6144ca8b828c01614029565b9550506144da6101208a0161418a565b93506101408901356001600160401b038111156144f5575f5ffd5b6145018b828c01614029565b93505061016089013591506101808901356001600160401b03811115614525575f5ffd5b6145318b828c01614029565b9150509295985092959890939650565b5f60808284031215614551575f5ffd5b613b8a83836140fb565b5f5f6040838503121561456c575f5ffd5b61457583613f93565b915061434c60208401613f93565b5f5f5f5f6101208587031215614597575f5ffd5b6145a186866140fb565b93506145b0866080870161415b565b92506145bf8660c0870161415b565b91506101008501356001600160401b038111156145da575f5ffd5b6145e687828801614029565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613b8a60208301846145f2565b5f5f5f5f60808587031215614645575f5ffd5b61464e85613f93565b935061465c60208601613f93565b9250604085013591506141e660608601613f93565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106146a857634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156146c5575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c9157610c916146cc565b81810381811115610c9157610c916146cc565b634e487b7160e01b5f52603260045260245ffd5b5f81614728576147286146cc565b505f190190565b60ff8281168282160390811115610c9157610c916146cc565b8082028115828204841417610c9157610c916146cc565b61ffff8181168382160190811115610c9157610c916146cc565b5f6001600160401b0382166001600160401b03810361479a5761479a6146cc565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f61480a6101a08301876145f2565b82810361014084015261481d81876145f2565b90508461016084015282810361018084015261483981856145f2565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6148a46101208301846145f2565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142226148d383866148ae565b846148ae565b634e487b7160e01b5f52601260045260245ffd5b5f8261490757634e487b7160e01b5f52601260045260245ffd5b500690565b5f613b8a82846148ae565b634e487b7160e01b5f52600160045260245ffd5b5f61493682856148ae565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61496082846148ae565b5f81526001019392505050565b5f61497882856148ae565b6001600160f01b03199390931683525050600201919050565b5f61499c82856148ae565b6001600160f81b03199390931683525050600101919050565b5f6149c082866148ae565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614a2357808504811115614a0757614a076146cc565b6001841615614a1557908102905b60019390931c9280026149ec565b935093915050565b5f82614a3957506001610c91565b81614a4557505f610c91565b8160018114614a5b5760028114614a6557614a81565b6001915050610c91565b60ff841115614a7657614a766146cc565b50506001821b610c91565b5060208310610133831016604e8410600b8410161715614aa4575081810a610c91565b614ab05f1984846149e8565b805f1904821115614ac357614ac36146cc565b029392505050565b5f613b8a8383614a2b56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
4519    /// ```
4520    #[rustfmt::skip]
4521    #[allow(clippy::all)]
4522    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4523        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\09V[a\0$a\09V[a\0,a\09V[a\x004a\09V[a\0\xEBV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x89W`@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\xE8W\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[`\x80QaK\xE7a\x01\x11_9_\x81\x81a)T\x01R\x81\x81a)}\x01Ra.\x0B\x01RaK\xE7_\xF3\xFE`\x80`@R`\x046\x10a\x03\xBEW_5`\xE0\x1C\x80cj\x91\x1C\xCF\x11a\x01\xF4W\x80c\xAD<\xB1\xCC\x11a\x01\x13W\x80c\xD5Gt\x1F\x11a\0\xA8W\x80c\xE6)w\xF8\x11a\0xW\x80c\xE6)w\xF8\x14a\x0B\xABW\x80c\xE6:\xB1\xE9\x14a\x0B\xC0W\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xE0W\x80c\xFAR\xC7\xD8\x14a\x0B\xFFW\x80c\xFC\x0CTj\x14a\x0CBW__\xFD[\x80c\xD5Gt\x1F\x14a\x0BBW\x80c\xD9\xCC}&\x14a\x0BaW\x80c\xE3\xF27\xE6\x14a\x0BvW\x80c\xE4\xD1\xFB\x94\x14a\x0B\x95W__\xFD[\x80c\xBB`\xBF\xB0\x11a\0\xE3W\x80c\xBB`\xBF\xB0\x14a\n\x94W\x80c\xBDI\xC3_\x14a\n\xD8W\x80c\xBE 0\x94\x14a\n\xEDW\x80c\xC6H\x14\xDD\x14a\x0B\x0CW__\xFD[\x80c\xAD<\xB1\xCC\x14a\t\xDFW\x80c\xB3\xE6\xEB\xD5\x14a\n\x1CW\x80c\xB5p\x0Eh\x14a\nJW\x80c\xB5\xEC\xB3D\x14a\niW__\xFD[\x80c\x9B0\xA5\xE6\x11a\x01\x89W\x80c\xA2\x17\xFD\xDF\x11a\x01YW\x80c\xA2\x17\xFD\xDF\x14a\t<W\x80c\xA2\xD7\x8D\xD5\x14a\tOW\x80c\xA3\x06j\xAB\x14a\t\xA1W\x80c\xAC\\*\xD0\x14a\t\xC0W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x08\x96W\x80c\x9E\x9A\x8F1\x14a\x08\xB5W\x80c\x9E\xC9\xC18\x14a\x08\xCAW\x80c\x9F\xFBkC\x14a\x08\xE9W__\xFD[\x80c\x84V\xCBY\x11a\x01\xC4W\x80c\x84V\xCBY\x14a\x08\x18W\x80c\x87\x0C\x8F&\x14a\x08,W\x80c\x8D\xA5\xCB[\x14a\x08KW\x80c\x91\xD1HT\x14a\x08wW__\xFD[\x80cj\x91\x1C\xCF\x14a\x07\xADW\x80cj\xD2\x8E\x9F\x14a\x07\xC1W\x80cqP\x18\xA6\x14a\x07\xEFW\x80cr\xE9\xC94\x14a\x08\x03W__\xFD[\x80c9K4\x8F\x11a\x02\xE0W\x80cRx\x0Bn\x11a\x02uW\x80c\\\x97Z\xBB\x11a\x02EW\x80c\\\x97Z\xBB\x14a\x07(W\x80c_\x87T\xA6\x14a\x07KW\x80capf\xE5\x14a\x07yW\x80ch\x87\xCD6\x14a\x07\x8EW__\xFD[\x80cRx\x0Bn\x14a\x06\xADW\x80cR\xD1\x90-\x14a\x06\xCCW\x80cUD\xC2\xF1\x14a\x06\xE0W\x80cZ/Q\xFD\x14a\x06\xFAW__\xFD[\x80c?;\xB3f\x11a\x02\xB0W\x80c?;\xB3f\x14a\x06:W\x80c?K\xA8:\x14a\x06gW\x80cM\x99\xDD\x16\x14a\x06{W\x80cO\x1E\xF2\x86\x14a\x06\x9AW__\xFD[\x80c9K4\x8F\x14a\x05\xC9W\x80c;+\x7F\xFA\x14a\x05\xE8W\x80c>s.\xBA\x14a\x06\x07W\x80c>\x9D\xF9\xB5\x14a\x06&W__\xFD[\x80c!@\xFE\xCD\x11a\x03VW\x80c//\xF1]\x11a\x03&W\x80c//\xF1]\x14a\x05bW\x80c/\xE2\x87Y\x14a\x05\x81W\x80c6V\x8A\xBE\x14a\x05\x96W\x80c8\xE4T\xB1\x14a\x05\xB5W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xDDW\x80c$\x8A\x9C\xA3\x14a\x04\xFCW\x80c+\x9E\\\x8A\x14a\x05)W\x80c-\xC9\xBA\xC6\x14a\x05CW__\xFD[\x80c\r\x8En,\x11a\x03\x91W\x80c\r\x8En,\x14a\x04UW\x80c\x13\xB9\x05z\x14a\x04\x80W\x80c\x15\xF3\x185\x14a\x04\x9FW\x80c\x1A \xCDc\x14a\x04\xBEW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xC2W\x80c\x02n@+\x14a\x03\xF6W\x80c\x07=%\xFC\x14a\x04\x17W\x80c\x0C\xB2\x97d\x14a\x046W[__\xFD[4\x80\x15a\x03\xCDW__\xFD[Pa\x03\xE1a\x03\xDC6`\x04a?lV[a\x0CaV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x01W__\xFD[Pa\x04\x15a\x04\x106`\x04a?\xAEV[a\x0C\x97V[\0[4\x80\x15a\x04\"W__\xFD[Pa\x04\x15a\x0416`\x04a?\xD6V[a\x0E}V[4\x80\x15a\x04AW__\xFD[Pa\x04\x15a\x04P6`\x04a@\xB8V[a\x0F2V[4\x80\x15a\x04`W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xEDV[4\x80\x15a\x04\x8BW__\xFD[Pa\x04\x15a\x04\x9A6`\x04aA\x9BV[a\x102V[4\x80\x15a\x04\xAAW__\xFD[Pa\x04\x15a\x04\xB96`\x04aA\xF1V[a\x10KV[4\x80\x15a\x04\xC9W__\xFD[Pa\x04\x15a\x04\xD86`\x04aB*V[a\x12\x81V[4\x80\x15a\x04\xE8W__\xFD[Pa\x04\x15a\x04\xF76`\x04aBPV[a\x13\x15V[4\x80\x15a\x05\x07W__\xFD[Pa\x05\x1Ba\x05\x166`\x04a?\xD6V[a\x14eV[`@Q\x90\x81R` \x01a\x03\xEDV[4\x80\x15a\x054W__\xFD[Pa\x04\x15a\x04\x9A6`\x04aBiV[4\x80\x15a\x05NW__\xFD[Pa\x04\x15a\x05]6`\x04aC\x12V[a\x14\x85V[4\x80\x15a\x05mW__\xFD[Pa\x04\x15a\x05|6`\x04aC+V[a\x15\tV[4\x80\x15a\x05\x8CW__\xFD[Pa\x05\x1Ba\x08\0\x81V[4\x80\x15a\x05\xA1W__\xFD[Pa\x04\x15a\x05\xB06`\x04aC+V[a\x15%V[4\x80\x15a\x05\xC0W__\xFD[Pa\x04\x15a\x15MV[4\x80\x15a\x05\xD4W__\xFD[Pa\x04\x15a\x05\xE36`\x04a?\xD6V[a\x15\xF0V[4\x80\x15a\x05\xF3W__\xFD[Pa\x04\x15a\x06\x026`\x04aC\x12V[a\x16_V[4\x80\x15a\x06\x12W__\xFD[Pa\x04\x15a\x06!6`\x04a?\xD6V[a\x17\xCBV[4\x80\x15a\x061W__\xFD[Pa\x05\x1B_T\x81V[4\x80\x15a\x06EW__\xFD[P`\nTa\x06T\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x06rW__\xFD[Pa\x04\x15a\x18,V[4\x80\x15a\x06\x86W__\xFD[Pa\x04\x15a\x06\x956`\x04a?\xAEV[a\x18NV[a\x04\x15a\x06\xA86`\x04aCUV[a\x1A\xBFV[4\x80\x15a\x06\xB8W__\xFD[Pa\x04\x15a\x06\xC76`\x04aC\x89V[a\x1A\xDAV[4\x80\x15a\x06\xD7W__\xFD[Pa\x05\x1Ba\x1C\x8CV[4\x80\x15a\x06\xEBW__\xFD[Pa\x04\x15a\x04\x9A6`\x04aD\x1FV[4\x80\x15a\x07\x05W__\xFD[Pa\x03\xE1a\x07\x146`\x04a?\xD6V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x073W__\xFD[P_Q` aK\x9B_9_Q\x90_RT`\xFF\x16a\x03\xE1V[4\x80\x15a\x07VW__\xFD[Pa\x03\xE1a\x07e6`\x04a?\xD6V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x84W__\xFD[Pa\x05\x1Ba\x02\0\x81V[4\x80\x15a\x07\x99W__\xFD[Pa\x04\x15a\x07\xA86`\x04aDcV[a\x1C\xA7V[4\x80\x15a\x07\xB8W__\xFD[Pa\x04\x15a\x1F(V[4\x80\x15a\x07\xCCW__\xFD[Pa\x07\xD7b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x07\xFAW__\xFD[Pa\x04\x15a\x1F\xE8V[4\x80\x15a\x08\x0EW__\xFD[Pa\x05\x1B`\x0CT\x81V[4\x80\x15a\x08#W__\xFD[Pa\x04\x15a \tV[4\x80\x15a\x087W__\xFD[Pa\x04\x15a\x08F6`\x04aA\xF1V[a (V[4\x80\x15a\x08VW__\xFD[Pa\x08_a |V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x08\x82W__\xFD[Pa\x03\xE1a\x08\x916`\x04aC+V[a \xAAV[4\x80\x15a\x08\xA1W__\xFD[Pa\x05\x1Ba\x08\xB06`\x04aEAV[a \xE0V[4\x80\x15a\x08\xC0W__\xFD[Pa\x05\x1B`\x08T\x81V[4\x80\x15a\x08\xD5W__\xFD[Pa\x04\x15a\x08\xE46`\x04aA\xF1V[a!:V[4\x80\x15a\x08\xF4W__\xFD[Pa\t\"a\t\x036`\x04aBPV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xEDV[4\x80\x15a\tGW__\xFD[Pa\x05\x1B_\x81V[4\x80\x15a\tZW__\xFD[Pa\t\x8Ca\ti6`\x04aE[V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xEDV[4\x80\x15a\t\xACW__\xFD[Pa\x04\x15a\t\xBB6`\x04aBPV[a!\x8DV[4\x80\x15a\t\xCBW__\xFD[Pa\x04\x15a\t\xDA6`\x04aE\x83V[a\"\xF2V[4\x80\x15a\t\xEAW__\xFD[Pa\n\x0F`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xED\x91\x90aF V[4\x80\x15a\n'W__\xFD[Pa\x03\xE1a\n66`\x04a?\xD6V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\nUW__\xFD[P`\x01Ta\x08_\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\ntW__\xFD[Pa\x05\x1Ba\n\x836`\x04aBPV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\x9FW__\xFD[Pa\n\xB3a\n\xAE6`\x04aE[V[a$\x1CV[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xEDV[4\x80\x15a\n\xE3W__\xFD[Pa\x05\x1B`\x0BT\x81V[4\x80\x15a\n\xF8W__\xFD[Pa\x04\x15a\x0B\x076`\x04aF2V[a$\xADV[4\x80\x15a\x0B\x17W__\xFD[Pa\x05\x1Ba\x0B&6`\x04aE[V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BMW__\xFD[Pa\x04\x15a\x0B\\6`\x04aC+V[a%\xB1V[4\x80\x15a\x0BlW__\xFD[Pa\x05\x1B`\tT\x81V[4\x80\x15a\x0B\x81W__\xFD[Pa\x04\x15a\x0B\x906`\x04aA\xF1V[a%\xD9V[4\x80\x15a\x0B\xA0W__\xFD[Pa\x07\xD7b\x12u\0\x81V[4\x80\x15a\x0B\xB6W__\xFD[Pa\x06Ta'\x10\x81V[4\x80\x15a\x0B\xCBW__\xFD[Pa\x05\x1B_Q` aK[_9_Q\x90_R\x81V[4\x80\x15a\x0B\xEBW__\xFD[Pa\x04\x15a\x0B\xFA6`\x04aBPV[a%\xFEV[4\x80\x15a\x0C\nW__\xFD[Pa\x0C4a\x0C\x196`\x04aBPV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xED\x92\x91\x90aF\x85V[4\x80\x15a\x0CMW__\xFD[P`\x02Ta\x08_\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\x91WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\x9Fa&\x86V[a\x0C\xA8\x82a&\xB8V[3_\x82\x90\x03a\x0C\xCAW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0C\xEDW`@Qc})\x871`\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\r;W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r_\x91\x90aF\xB5V[\x90P\x82\x81\x10\x15a\r\x91W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xA9\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'9V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xD0\x90\x84\x90aF\xE0V[\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\x0E\x0B\x90\x84\x90aF\xE0V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0E#\x91\x90aF\xE0V[\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\x0Eo\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\x85a&\x86V[a\x0E\x8E3a&\xB8V[\x80a\x0E\xACW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xDBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F'\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0F:a&\x86V[a\x0FC3a&\xB8V[\x81a\x0FaW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x90W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x99\x81a\x10KV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE5\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10&\x91\x90aF V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10`WPa\x02\0\x81Q\x11\x15[a\x10}W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xE2W\x82a\x10\x95`\x01\x83aF\xF3V[\x81Q\x81\x10a\x10\xA5Wa\x10\xA5aG\x06V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xD0Wa\x10\xC9`\x01\x82aF\xF3V[\x91Pa\x10\xE2V[\x80a\x10\xDA\x81aG\x1AV[\x91PPa\x10\x83V[P_\x19\x81\x14\x15\x80\x15a\x10\xF3WP_\x81\x11[a\x11\x10W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11 \x91\x90aF\xF3V[a\x11*\x91\x90aF\xF3V[\x90P_\x81\x11\x80\x15a\x11<WP`\x05\x81\x11\x15[a\x11YW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11f\x84`\x01aF\xE0V[\x90P[\x84Q\x81\x10\x15a\x11\xEFW_\x85\x82\x81Q\x81\x10a\x11\x85Wa\x11\x85aG\x06V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\xA4WP`9\x81`\xFF\x16\x11\x15[a\x11\xC1W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xCC`0\x82aG/V[`\xFF\x16a\x11\xDA\x84`\naGHV[a\x11\xE4\x91\x90aF\xE0V[\x92PP`\x01\x01a\x11iV[P`\x01\x82\x11\x80\x15a\x12.WP\x83a\x12\x07\x84`\x01aF\xE0V[\x81Q\x81\x10a\x12\x17Wa\x12\x17aG\x06V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12LW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12]WPa\xFF\xFF\x81\x11\x15[a\x12zW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x8B\x81a'\xD6V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xB0WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xCEW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x1Da&\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13WW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13xW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x14\x04\x90\x84\x90aF\xF3V[\x90\x91UPP`\x02Ta\x14 \x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a'\xE0V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0Eo\x91\x81R` \x01\x90V[_\x90\x81R_Q` aK{_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8F\x81a'\xD6V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA8WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC5W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\tV[\x81a\x15\x1BWa\x15\x17\x81a%\xFEV[PPV[a\x15\x17\x82\x82a(iV[\x81a\x15CW`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x17\x82\x82a(\x85V[a\x15Ua(\xB8V[_Q` aK\xBB_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x8BWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01a\x13\tV[_a\x15\xFA\x81a'\xD6V[_\x82\x11\x80\x15a\x16\rWPc\x01\xE13\x80\x82\x11\x15[a\x16*W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\tV[a\x16ga&\x86V[3a\x16q\x81a&\xB8V[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x98W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xDAW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17fW`\x01\x82\x01T\x80\x15\x80a\x17\x08WP`\tTa\x17\x04\x90\x82aF\xE0V[B\x10\x15[a\x17%W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x176\x90a\xFF\xFF\x16\x83aG_V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17^W`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD5\x81a'\xD6V[`\x01\x82\x10\x15a\x17\xF7W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\tV[_Q` aK[_9_Q\x90_Ra\x18C\x81a'\xD6V[a\x18Ka(\xEAV[PV[a\x18Va&\x86V[a\x18_\x82a&\xB8V[3_\x82\x90\x03a\x18\x81W`@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\x18\xC4W`@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\x19\rW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x88V[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19)\x83aGyV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\xA2\x91\x90aF\xF3V[\x90\x91UPP`\x08T_\x90a\x19\xB6\x90BaF\xE0V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AF\x90\x84\x90aF\xF3V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1A^\x91\x90aF\xF3V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC7a)IV[a\x1A\xD0\x82a)\xEDV[a\x15\x17\x82\x82a)\xF7V[a\x1A\xE2a(\xB8V[_Q` aK\xBB_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x18WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B6W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1B~W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA5W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xADa*\xB3V[a\x1B\xB5a*\xBBV[a\x1B\xCC_Q` aK[_9_Q\x90_R\x88a*\xCBV[Pa\x1B\xD7_\x87a*\xCBV[P_a\x1B\xE1a |V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\x05Wa\x1C\x05\x87a+lV[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1CE\x85\x85a+\xDCV[a\x1CN\x86a-qV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x95a.\0V[P_Q` aK;_9_Q\x90_R\x90V[a\x1C\xAFa&\x86V[3a\x1C\xB9\x81a.IV[a\x1C\xC2\x88a.\x96V[a\x1C\xCC\x89\x89a/)V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xFE\x81\x89\x8Ca/\xA2V[\x86Q`@\x14a\x1D W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DGW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DP\x85a%\xD9V[\x83a\x1DnW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x9DW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\xA6\x83a\x10KV[`\x01`\x04_a\x1D\xB4\x8Da \xE0V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xE5\x8Ca07V[\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\x1E,Wa\x1E,aFqV[\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\x1ErWa\x1EraFqV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1F\x14\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aG\xA3V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F0a&\x86V[3a\x1F:\x81a&\xB8V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1Fl\x90BaF\xE0V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\xA8\x90\x84\x90aF\xF3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10&V[a\x1F\xF0a(\xB8V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aK[_9_Q\x90_Ra  \x81a'\xD6V[a\x18Ka0[V[a 0a&\x86V[3a :\x81a&\xB8V[a C\x82a%\xD9V[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10&\x91\x90aF V[\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[_\x91\x82R_Q` aK{_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x1D\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!Ba&\x86V[a!K3a&\xB8V[a!T\x81a\x10KV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F'\x91\x90aF V[a!\x95a&\x86V[`\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!\xDAW`@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\"\"W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"\x95\x91\x16\x84\x84a'\xE0V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xE4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xFAa&\x86V[3a#\x04\x81a&\xB8V[a#\r\x84a.\x96V[a#\x17\x85\x85a/)V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#I\x81\x85\x88a/\xA2V[\x82Q`@\x14a#kW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#y\x89a \xE0V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\xAA\x88a07V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa$\x0C\x94\x93\x92\x91\x90aHHV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$gW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aK\xBB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xDEWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xF9WP0;\x15[\x90P\x81\x15\x80\x15a%\x07WP\x80\x15[\x15a%%W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%OW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%X\x86a0\xA3V[a%`a*\xB3V[a%ha0\xB4V[a%s\x89\x89\x89a1\x92V[\x83\x15a%\xA6W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xCFW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x17\x82\x82a2=V[\x80Qa\x08\0\x81\x11\x15a\x15\x17W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a&\x08\x81a'\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&1W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\x88V[_a&:a |V[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&cWa&^\x83a2YV[PPPV[a&m_\x84a(iV[a&v\x83a2YV[a&\x80_\x82a2\x93V[PPPPV[_Q` aK\x9B_9_Q\x90_RT`\xFF\x16\x15a&\xB6W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xE9Wa&\xE9aFqV[\x03a'\x07W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x1BWa'\x1BaFqV[\x03a\x15\x17W`@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'\x92WP\x83;\x15=\x17\x15[\x80a\x12zW`@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\r\x88V[a\x18K\x813a3\x0CV[_`@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(*WP\x82;\x15=\x17\x15[\x80a&\x80W`@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\r\x88V[a(r\x82a\x14eV[a({\x81a'\xD6V[a&\x80\x83\x83a*\xCBV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a(\xAEW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&^\x82\x82a2\x93V[3a(\xC1a |V[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\xB6W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x88V[a(\xF2a3EV[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[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)\xCFWP\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)\xC3_Q` aK;_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\xB6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x17\x81a'\xD6V[\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*QWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*N\x91\x81\x01\x90aF\xB5V[`\x01[a*yW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x88V[_Q` aK;_9_Q\x90_R\x81\x14a*\xA9W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x88V[a&^\x83\x83a3tV[a&\xB6a3\xC9V[a*\xC3a3\xC9V[a&\xB6a3\xFFV[__Q` aK{_9_Q\x90_Ra*\xE4\x84\x84a \xAAV[a+cW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+\x193\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\x91V[_\x91PPa\x0C\x91V[\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[_[\x81\x81\x10\x15a&^W_\x83\x83\x83\x81\x81\x10a+\xF9Wa+\xF9aG\x06V[a,\x0F\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaBPV[\x90P_\x84\x84\x84\x81\x81\x10a,$Wa,$aG\x06V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,<\x91\x90aC\x12V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,eW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\x96Wa,\x96aFqV[\x03a,\xB4W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a,\xF5WP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a- W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\x88V[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a+\xDEV[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\xB7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xDB\x91\x90aF\xB5V[\x81\x11\x15a-\xFBW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[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&\xB6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.xWa.xaFqV[\x14a\x18KW`@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.\xEAWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/\x08W`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18KW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/5\x84a \xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/eW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/q\x83a07V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x17W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a/\xAB\x82a4\x1FV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aJ\xD7`$\x919\x90P_\x84\x82`@Q` \x01a/\xDB\x92\x91\x90aH\xC5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a/\xF6\x82a4\x86V[\x90Pa0\x13\x81\x85a0\x06\x88a5sV[a0\x0Ea5\xEAV[a6\xB7V[a0/W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x1D\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a0ca&\x86V[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)+V[a0\xABa3\xC9V[a\x18K\x81a7fV[_Q` aK\xBB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a0\xE5WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\0WP0;\x15[\x90P\x81\x15\x80\x15a1\x0EWP\x80\x15[\x15a1,W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a1VW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12zW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a1\xB9W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a1\xE0W`@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\x15a25W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a2F\x82a\x14eV[a2O\x81a'\xD6V[a&\x80\x83\x83a2\x93V[a2aa(\xB8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a2\x8AW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\x88V[a\x18K\x81a+lV[__Q` aK{_9_Q\x90_Ra2\xAC\x84\x84a \xAAV[\x15a+cW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\x91V[a3\x16\x82\x82a \xAAV[a\x15\x17W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\x88V[_Q` aK\x9B_9_Q\x90_RT`\xFF\x16a&\xB6W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a3}\x82a7nV[`@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\x15a3\xC1Wa&^\x82\x82a7\xD1V[a\x15\x17a8CV[_Q` aK\xBB_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\xB6W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\x07a3\xC9V[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aJ\xFB_9_Q\x90_R\x91\x15\x90\x15\x16\x15a4EWPPPV[\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&^W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a4\xA3\x83a8bV[\x90P_Q` aJ\xFB_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a4\xCAWa4\xCAaH\xD9V[\x84\x82\t\x90P\x82\x80a4\xDDWa4\xDDaH\xD9V[\x82\x82\x08\x90P__a4\xED\x83a:jV[\x92P\x90P[\x80a5VW\x84\x80a5\x05Wa5\x05aH\xD9V[`\x01\x87\x08\x95P\x84\x80a5\x19Wa5\x19aH\xD9V[\x86\x87\t\x92P\x84\x80a5,Wa5,aH\xD9V[\x86\x84\t\x92P\x84\x80a5?Wa5?aH\xD9V[\x84\x84\x08\x92Pa5M\x83a:jV[\x92P\x90Pa4\xF2V[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\x15a5\x9AWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aJ\xFB_9_Q\x90_R\x84` \x01Qa5\xCB\x91\x90aH\xEDV[a5\xE2\x90_Q` aJ\xFB_9_Q\x90_RaF\xF3V[\x90R\x92\x91PPV[a6\x11`@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\x80a7ZW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a2aa3\xC9V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a7\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x88V[_Q` aK;_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`@Qa7\xED\x91\x90aI\x0CV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8%W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8*V[``\x91P[P\x91P\x91Pa8:\x85\x83\x83a;2V[\x95\x94PPPPPV[4\x15a&\xB6W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a8m\x83a;\x91V[\x80Q\x90\x91P`0\x81\x14a8\x82Wa8\x82aI\x17V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a8\x9BWa8\x9Ba?\xEDV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a8\xC5W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a94W\x83`\x01a8\xDF\x83\x86aF\xF3V[a8\xE9\x91\x90aF\xF3V[\x81Q\x81\x10a8\xF9Wa8\xF9aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\x16Wa9\x16aG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8\xCAV[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\x15a9\xC4W\x83\x81a9p\x85\x88aF\xF3V[a9z\x91\x90aF\xE0V[\x81Q\x81\x10a9\x8AWa9\x8AaG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a9\xAAWa9\xAAaG\x06V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a9\\V[P_a9\xCF\x82a>\xDCV[\x90Pa\x01\0_Q` aJ\xFB_9_Q\x90_R_a9\xED\x86\x89aF\xF3V[\x90P_[\x81\x81\x10\x15a:ZW_\x88`\x01a:\x07\x84\x86aF\xF3V[a:\x11\x91\x90aF\xF3V[\x81Q\x81\x10a:!Wa:!aG\x06V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a:9Wa:9aH\xD9V[\x85\x87\t\x95P\x83\x80a:LWa:LaH\xD9V[\x81\x87\x08\x95PP`\x01\x01a9\xF1V[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` aJ\xFB_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:\xF8W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\x11Wa;\x0E\x83\x82aF\xF3V[\x92P[\x80\x80a;\x1FWa;\x1FaH\xD9V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a;GWa;B\x82a?CV[a;\x8AV[\x81Q\x15\x80\x15a;^WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a;\x87W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x88V[P\x80[\x93\x92PPPV[`@\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;\xD1\x92\x91\x90aH\xC5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a;\xF8\x92\x91\x90aI+V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\x1A\x91\x90aIUV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a<D\x90\x83\x90\x83\x90` \x01aImV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xB3Wa<\xB3a?\xEDV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a<\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a<\xF4\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a=^W\x81\x81\x81Q\x81\x10a=#Wa=#aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a=@Wa=@aG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\x08V[P_\x84`@Q` \x01a=s\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>\x05W_\x83\x82\x81Q\x81\x10a=\xACWa=\xACaG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a=\xC9Wa=\xC9aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a=\xEA\x92\x91\x90aI\x91V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a=\x91V[P\x86\x88\x87`@Q` \x01a>\x1B\x93\x92\x91\x90aI\xB5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a>I\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a>j\x8A`\xFF\x8D\x16aF\xF3V[\x81\x10\x15a>\xCBW\x82\x81\x81Q\x81\x10a>\x83Wa>\x83aG\x06V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a>\x9D\x83\x8DaF\xE0V[\x81Q\x81\x10a>\xADWa>\xADaG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a>]V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a?<W\x83\x81\x81Q\x81\x10a>\xFBWa>\xFBaG\x06V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\x13\x91\x90aGHV[a?\x1E\x90`\x02aJ\xCBV[a?(\x91\x90aGHV[a?2\x90\x83aF\xE0V[\x91P`\x01\x01a>\xE0V[P\x92\x91PPV[\x80Q\x15a?SW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a?|W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a;\x8AW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a?\xA9W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a?\xBFW__\xFD[a?\xC8\x83a?\x93V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a?\xE6W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@#Wa@#a?\xEDV[`@R\x90V[_\x82`\x1F\x83\x01\x12a@8W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a@WWa@Wa?\xEDV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a@\x85Wa@\x85a?\xEDV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a@\x9CW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a@\xC9W__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a@\xE5W__\xFD[a@\xF1\x85\x82\x86\x01a@)V[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\x0BW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA-WaA-a?\xEDV[`@\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\x15aAkW__\xFD[aAsa@\x01V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a?\xA9W__\xFD[____a\x01 \x85\x87\x03\x12\x15aA\xAFW__\xFD[aA\xB9\x86\x86a@\xFBV[\x93PaA\xC8\x86`\x80\x87\x01aA[V[\x92PaA\xD7\x86`\xC0\x87\x01aA[V[\x91PaA\xE6a\x01\0\x86\x01aA\x8AV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\x16W__\xFD[aB\"\x84\x82\x85\x01a@)V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aB:W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;\x8AW__\xFD[_` \x82\x84\x03\x12\x15aB`W__\xFD[a;\x8A\x82a?\x93V[______a\x01`\x87\x89\x03\x12\x15aB\x7FW__\xFD[aB\x89\x88\x88a@\xFBV[\x95PaB\x98\x88`\x80\x89\x01aA[V[\x94PaB\xA7\x88`\xC0\x89\x01aA[V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xC2W__\xFD[aB\xCE\x89\x82\x8A\x01a@)V[\x93PPaB\xDEa\x01 \x88\x01aA\x8AV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xF9W__\xFD[aC\x05\x89\x82\x8A\x01a@)V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\"W__\xFD[a;\x8A\x82aA\x8AV[__`@\x83\x85\x03\x12\x15aC<W__\xFD[\x825\x91PaCL` \x84\x01a?\x93V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aCfW__\xFD[aCo\x83a?\x93V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a@\xE5W__\xFD[_____`\x80\x86\x88\x03\x12\x15aC\x9DW__\xFD[aC\xA6\x86a?\x93V[\x94PaC\xB4` \x87\x01a?\x93V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xD5W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aC\xE5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xFAW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\x0EW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aD2W__\xFD[aD<\x85\x85a@\xFBV[\x92PaDK\x85`\x80\x86\x01aA[V[\x91PaDZ\x85`\xC0\x86\x01aA[V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aD{W__\xFD[aD\x85\x8A\x8Aa@\xFBV[\x97PaD\x94\x8A`\x80\x8B\x01aA[V[\x96PaD\xA3\x8A`\xC0\x8B\x01aA[V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xBEW__\xFD[aD\xCA\x8B\x82\x8C\x01a@)V[\x95PPaD\xDAa\x01 \x8A\x01aA\x8AV[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xF5W__\xFD[aE\x01\x8B\x82\x8C\x01a@)V[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE%W__\xFD[aE1\x8B\x82\x8C\x01a@)V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aEQW__\xFD[a;\x8A\x83\x83a@\xFBV[__`@\x83\x85\x03\x12\x15aElW__\xFD[aEu\x83a?\x93V[\x91PaCL` \x84\x01a?\x93V[____a\x01 \x85\x87\x03\x12\x15aE\x97W__\xFD[aE\xA1\x86\x86a@\xFBV[\x93PaE\xB0\x86`\x80\x87\x01aA[V[\x92PaE\xBF\x86`\xC0\x87\x01aA[V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xDAW__\xFD[aE\xE6\x87\x82\x88\x01a@)V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a;\x8A` \x83\x01\x84aE\xF2V[____`\x80\x85\x87\x03\x12\x15aFEW__\xFD[aFN\x85a?\x93V[\x93PaF\\` \x86\x01a?\x93V[\x92P`@\x85\x015\x91PaA\xE6``\x86\x01a?\x93V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aF\xA8WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aF\xC5W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[\x81\x81\x03\x81\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG(WaG(aF\xCCV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x91Wa\x0C\x91aF\xCCV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aG\x9AWaG\x9AaF\xCCV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\na\x01\xA0\x83\x01\x87aE\xF2V[\x82\x81\x03a\x01@\x84\x01RaH\x1D\x81\x87aE\xF2V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaH9\x81\x85aE\xF2V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aH\xA4a\x01 \x83\x01\x84aE\xF2V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\"aH\xD3\x83\x86aH\xAEV[\x84aH\xAEV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\x07WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a;\x8A\x82\x84aH\xAEV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aI6\x82\x85aH\xAEV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aI`\x82\x84aH\xAEV[_\x81R`\x01\x01\x93\x92PPPV[_aIx\x82\x85aH\xAEV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aI\x9C\x82\x85aH\xAEV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aI\xC0\x82\x86aH\xAEV[`\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[`\x01\x81[`\x01\x84\x11\x15aJ#W\x80\x85\x04\x81\x11\x15aJ\x07WaJ\x07aF\xCCV[`\x01\x84\x16\x15aJ\x15W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aI\xECV[\x93P\x93\x91PPV[_\x82aJ9WP`\x01a\x0C\x91V[\x81aJEWP_a\x0C\x91V[\x81`\x01\x81\x14aJ[W`\x02\x81\x14aJeWaJ\x81V[`\x01\x91PPa\x0C\x91V[`\xFF\x84\x11\x15aJvWaJvaF\xCCV[PP`\x01\x82\x1Ba\x0C\x91V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aJ\xA4WP\x81\x81\na\x0C\x91V[aJ\xB0_\x19\x84\x84aI\xE8V[\x80_\x19\x04\x82\x11\x15aJ\xC3WaJ\xC3aF\xCCV[\x02\x93\x92PPPV[_a;\x8A\x83\x83aJ+V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
4524    );
4525    /// The runtime bytecode of the contract, as deployed on the network.
4526    ///
4527    /// ```text
4528    ///0x6080604052600436106103be575f3560e01c80636a911ccf116101f4578063ad3cb1cc11610113578063d547741f116100a8578063e62977f811610078578063e62977f814610bab578063e63ab1e914610bc0578063f2fde38b14610be0578063fa52c7d814610bff578063fc0c546a14610c42575f5ffd5b8063d547741f14610b42578063d9cc7d2614610b61578063e3f237e614610b76578063e4d1fb9414610b95575f5ffd5b8063bb60bfb0116100e3578063bb60bfb014610a94578063bd49c35f14610ad8578063be20309414610aed578063c64814dd14610b0c575f5ffd5b8063ad3cb1cc146109df578063b3e6ebd514610a1c578063b5700e6814610a4a578063b5ecb34414610a69575f5ffd5b80639b30a5e611610189578063a217fddf11610159578063a217fddf1461093c578063a2d78dd51461094f578063a3066aab146109a1578063ac5c2ad0146109c0575f5ffd5b80639b30a5e6146108965780639e9a8f31146108b55780639ec9c138146108ca5780639ffb6b43146108e9575f5ffd5b80638456cb59116101c45780638456cb5914610818578063870c8f261461082c5780638da5cb5b1461084b57806391d1485414610877575f5ffd5b80636a911ccf146107ad5780636ad28e9f146107c1578063715018a6146107ef57806372e9c93414610803575f5ffd5b8063394b348f116102e057806352780b6e116102755780635c975abb116102455780635c975abb146107285780635f8754a61461074b578063617066e5146107795780636887cd361461078e575f5ffd5b806352780b6e146106ad57806352d1902d146106cc5780635544c2f1146106e05780635a2f51fd146106fa575f5ffd5b80633f3bb366116102b05780633f3bb3661461063a5780633f4ba83a146106675780634d99dd161461067b5780634f1ef2861461069a575f5ffd5b8063394b348f146105c95780633b2b7ffa146105e85780633e732eba146106075780633e9df9b514610626575f5ffd5b80632140fecd116103565780632f2ff15d116103265780632f2ff15d146105625780632fe287591461058157806336568abe1461059657806338e454b1146105b5575f5ffd5b80632140fecd146104dd578063248a9ca3146104fc5780632b9e5c8a146105295780632dc9bac614610543575f5ffd5b80630d8e6e2c116103915780630d8e6e2c1461045557806313b9057a1461048057806315f318351461049f5780631a20cd63146104be575f5ffd5b806301ffc9a7146103c2578063026e402b146103f6578063073d25fc146104175780630cb2976414610436575b5f5ffd5b3480156103cd575f5ffd5b506103e16103dc366004613f6c565b610c61565b60405190151581526020015b60405180910390f35b348015610401575f5ffd5b50610415610410366004613fae565b610c97565b005b348015610422575f5ffd5b50610415610431366004613fd6565b610e7d565b348015610441575f5ffd5b506104156104503660046140b8565b610f32565b348015610460575f5ffd5b5060408051600381525f60208201819052918101919091526060016103ed565b34801561048b575f5ffd5b5061041561049a36600461419b565b611032565b3480156104aa575f5ffd5b506104156104b93660046141f1565b61104b565b3480156104c9575f5ffd5b506104156104d836600461422a565b611281565b3480156104e8575f5ffd5b506104156104f7366004614250565b611315565b348015610507575f5ffd5b5061051b610516366004613fd6565b611465565b6040519081526020016103ed565b348015610534575f5ffd5b5061041561049a366004614269565b34801561054e575f5ffd5b5061041561055d366004614312565b611485565b34801561056d575f5ffd5b5061041561057c36600461432b565b611509565b34801561058c575f5ffd5b5061051b61080081565b3480156105a1575f5ffd5b506104156105b036600461432b565b611525565b3480156105c0575f5ffd5b5061041561154d565b3480156105d4575f5ffd5b506104156105e3366004613fd6565b6115f0565b3480156105f3575f5ffd5b50610415610602366004614312565b61165f565b348015610612575f5ffd5b50610415610621366004613fd6565b6117cb565b348015610631575f5ffd5b5061051b5f5481565b348015610645575f5ffd5b50600a546106549061ffff1681565b60405161ffff90911681526020016103ed565b348015610672575f5ffd5b5061041561182c565b348015610686575f5ffd5b50610415610695366004613fae565b61184e565b6104156106a8366004614355565b611abf565b3480156106b8575f5ffd5b506104156106c7366004614389565b611ada565b3480156106d7575f5ffd5b5061051b611c8c565b3480156106eb575f5ffd5b5061041561049a36600461441f565b348015610705575f5ffd5b506103e1610714366004613fd6565b60116020525f908152604090205460ff1681565b348015610733575f5ffd5b505f516020614b9b5f395f51905f525460ff166103e1565b348015610756575f5ffd5b506103e1610765366004613fd6565b600e6020525f908152604090205460ff1681565b348015610784575f5ffd5b5061051b61020081565b348015610799575f5ffd5b506104156107a8366004614463565b611ca7565b3480156107b8575f5ffd5b50610415611f28565b3480156107cc575f5ffd5b506107d76202a30081565b6040516001600160401b0390911681526020016103ed565b3480156107fa575f5ffd5b50610415611fe8565b34801561080e575f5ffd5b5061051b600c5481565b348015610823575f5ffd5b50610415612009565b348015610837575f5ffd5b506104156108463660046141f1565b612028565b348015610856575f5ffd5b5061085f61207c565b6040516001600160a01b0390911681526020016103ed565b348015610882575f5ffd5b506103e161089136600461432b565b6120aa565b3480156108a1575f5ffd5b5061051b6108b0366004614541565b6120e0565b3480156108c0575f5ffd5b5061051b60085481565b3480156108d5575f5ffd5b506104156108e43660046141f1565b61213a565b3480156108f4575f5ffd5b50610922610903366004614250565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016103ed565b348015610947575f5ffd5b5061051b5f81565b34801561095a575f5ffd5b5061098c61096936600461455b565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ed565b3480156109ac575f5ffd5b506104156109bb366004614250565b61218d565b3480156109cb575f5ffd5b506104156109da366004614583565b6122f2565b3480156109ea575f5ffd5b50610a0f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103ed9190614620565b348015610a27575f5ffd5b506103e1610a36366004613fd6565b60046020525f908152604090205460ff1681565b348015610a55575f5ffd5b5060015461085f906001600160a01b031681565b348015610a74575f5ffd5b5061051b610a83366004614250565b60056020525f908152604090205481565b348015610a9f575f5ffd5b50610ab3610aae36600461455b565b61241c565b604080516001600160401b0390941684526020840192909252908201526060016103ed565b348015610ae3575f5ffd5b5061051b600b5481565b348015610af8575f5ffd5b50610415610b07366004614632565b6124ad565b348015610b17575f5ffd5b5061051b610b2636600461455b565b600660209081525f928352604080842090915290825290205481565b348015610b4d575f5ffd5b50610415610b5c36600461432b565b6125b1565b348015610b6c575f5ffd5b5061051b60095481565b348015610b81575f5ffd5b50610415610b903660046141f1565b6125d9565b348015610ba0575f5ffd5b506107d76212750081565b348015610bb6575f5ffd5b5061065461271081565b348015610bcb575f5ffd5b5061051b5f516020614b5b5f395f51905f5281565b348015610beb575f5ffd5b50610415610bfa366004614250565b6125fe565b348015610c0a575f5ffd5b50610c34610c19366004614250565b60036020525f90815260409020805460019091015460ff1682565b6040516103ed929190614685565b348015610c4d575f5ffd5b5060025461085f906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610c9157506301ffc9a760e01b6001600160e01b03198316145b92915050565b610c9f612686565b610ca8826126b8565b335f829003610cca57604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ced57604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610d3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f91906146b5565b905082811015610d915760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610da9906001600160a01b0316833086612739565b6001600160a01b0384165f9081526003602052604081208054859290610dd09084906146e0565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610e0b9084906146e0565b9250508190555082600b5f828254610e2391906146e0565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610e6f91815260200190565b60405180910390a350505050565b610e85612686565b610e8e336126b8565b80610eac57604051633e4ba13f60e01b815260040160405180910390fd5b5f8181526011602052604090205460ff1615610edb57604051632c8d903b60e21b815260040160405180910390fd5b5f8181526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610f279084815260200190565b60405180910390a250565b610f3a612686565b610f43336126b8565b81610f6157604051633e4ba13f60e01b815260040160405180910390fd5b5f8281526011602052604090205460ff1615610f9057604051632c8d903b60e21b815260040160405180910390fd5b610f998161104b565b5f8281526011602052604090819020805460ff191660011790555133907f3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df90610fe59085815260200190565b60405180910390a2336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb22826040516110269190614620565b60405180910390a25050565b60405163c2d7f81360e01b815260040160405180910390fd5b80518190158015906110605750610200815111155b61107d57604051631e5e435f60e21b815260040160405180910390fd5b80515f19905b80156110e257826110956001836146f3565b815181106110a5576110a5614706565b01602001516001600160f81b031916601d60f91b036110d0576110c96001826146f3565b91506110e2565b806110da8161471a565b915050611083565b505f1981141580156110f357505f81115b61111057604051631e5e435f60e21b815260040160405180910390fd5b5f600182845161112091906146f3565b61112a91906146f3565b90505f8111801561113c575060058111155b61115957604051631e5e435f60e21b815260040160405180910390fd5b5f806111668460016146e0565b90505b84518110156111ef575f85828151811061118557611185614706565b016020015160f81c9050603081108015906111a4575060398160ff1611155b6111c157604051631e5e435f60e21b815260040160405180910390fd5b6111cc60308261472f565b60ff166111da84600a614748565b6111e491906146e0565b925050600101611169565b5060018211801561122e5750836112078460016146e0565b8151811061121757611217614706565b6020910101516001600160f81b031916600360fc1b145b1561124c57604051631e5e435f60e21b815260040160405180910390fd5b5f8111801561125d575061ffff8111155b61127a57604051631e5e435f60e21b815260040160405180910390fd5b5050505050565b5f61128b816127d6565b6202a3006001600160401b03831610806112b05750621275006001600160401b038316115b156112ce5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b61131d612686565b6001600160a01b0381165f908152600560205260408120543391819003611357576040516379298a5360e11b815260040160405180910390fd5b8042101561137857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938616835292905290812054908190036113c057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f8181526006602090815260408083209488168352938152838220829055918152600390915290812080548392906114049084906146f3565b9091555050600254611420906001600160a01b031684836127e0565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610e6f91815260200190565b5f9081525f516020614b7b5f395f51905f52602052604090206001015490565b5f61148f816127d6565b5f8261ffff161180156114a8575061271061ffff831611155b6114c55760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001611309565b8161151b57611517816125fe565b5050565b6115178282612869565b8161154357604051638b78631d60e01b815260040160405180910390fd5b6115178282612885565b6115556128b8565b5f516020614bbb5f395f51905f52805460039190600160401b900460ff168061158b575080546001600160401b03808416911610155b156115a95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b038316908117600160401b1760ff60401b191682556040519081525f516020614b1b5f395f51905f5290602001611309565b5f6115fa816127d6565b5f8211801561160d57506301e133808211155b61162a5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001611309565b611667612686565b33611671816126b8565b61271061ffff831611156116985760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff9081169084168190036116da57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff161115611766576001820154801580611708575060095461170490826146e0565b4210155b611725576040516316eb94cb60e01b815260040160405180910390fd5b600a546117369061ffff168361475f565b61ffff168561ffff16111561175e576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f6117d5816127d6565b60018210156117f75760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001611309565b5f516020614b5b5f395f51905f52611843816127d6565b61184b6128ea565b50565b611856612686565b61185f826126b8565b335f82900361188157604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156118c45760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561190d57604051639266535160e01b815260048101829052602401610d88565b600f80545f916001600160401b03909116908261192983614779565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119a291906146f3565b90915550506008545f906119b690426146e0565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611a469084906146f3565b9250508190555084600b5f828254611a5e91906146f3565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611ac7612949565b611ad0826129ed565b61151782826129f7565b611ae26128b8565b5f516020614bbb5f395f51905f52805460029190600160401b900460ff1680611b18575080546001600160401b03808416911610155b15611b365760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b038616611b7e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038716611ba55760405163d92e233d60e01b815260040160405180910390fd5b611bad612ab3565b611bb5612abb565b611bcc5f516020614b5b5f395f51905f5288612acb565b50611bd75f87612acb565b505f611be161207c565b9050806001600160a01b0316876001600160a01b031614611c0557611c0587612b6c565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c55611c458585612bdc565b611c4e86612d71565b50805460ff60401b191681556040516001600160401b03831681525f516020614b1b5f395f51905f529060200160405180910390a150505050505050565b5f611c95612e00565b505f516020614b3b5f395f51905f5290565b611caf612686565b33611cb981612e49565b611cc288612e96565b611ccc8989612f29565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cfe81898c612fa2565b8651604014611d2057604051634247068760e01b815260040160405180910390fd5b61271061ffff87161115611d475760405163dc81db8560e01b815260040160405180910390fd5b611d50856125d9565b83611d6e57604051633e4ba13f60e01b815260040160405180910390fd5b5f8481526011602052604090205460ff1615611d9d57604051632c8d903b60e21b815260040160405180910390fd5b611da68361104b565b600160045f611db48d6120e0565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611de58c613037565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115611e2c57611e2c614671565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e7257611e72614671565b02179055505060408051808201825261ffff89811682525f60208084018281526001600160a01b038916808452600d83528684209551865461ffff191695169490941785555160019485015589825260119052839020805460ff191690921790915590519091507fbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec1490611f14908d908d908b908e908e908d908d908d906147a3565b60405180910390a250505050505050505050565b611f30612686565b33611f3a816126b8565b6001600160a01b0381165f908152600360205260408120600101805460ff19166002179055600854611f6c90426146e0565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b80549394509092909190611fa89084906146f3565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab90602001611026565b611ff06128b8565b6040516317d5c96560e11b815260040160405180910390fd5b5f516020614b5b5f395f51905f52612020816127d6565b61184b61305b565b612030612686565b3361203a816126b8565b612043826125d9565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516110269190614620565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f516020614b7b5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f015182602001518360400151846060015160405160200161211d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b612142612686565b61214b336126b8565b6121548161104b565b336001600160a01b03167f43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb2282604051610f279190614620565b612195612686565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036121da57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561222257604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691612295911684846127e0565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522856040516122e491815260200190565b60405180910390a450505050565b6122fa612686565b33612304816126b8565b61230d84612e96565b6123178585612f29565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050612349818588612fa2565b825160401461236b57604051634247068760e01b815260040160405180910390fd5b600160045f612379896120e0565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f6123aa88613037565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e58787878760405161240c9493929190614848565b60405180910390a2505050505050565b6001600160a01b038083165f9081526007602090815260408083209385168352929052908120805482918291820361246757604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f516020614bbb5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156124de5750825b90505f826001600160401b031660011480156124f95750303b155b905081158015612507575080155b156125255760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561254f57845460ff60401b1916600160401b1785555b612558866130a3565b612560612ab3565b6125686130b4565b612573898989613192565b83156125a657845460ff60401b19168555604051600181525f516020614b1b5f395f51905f529060200160405180910390a15b505050505050505050565b816125cf5760405163b0b5fb9960e01b815260040160405180910390fd5b611517828261323d565b80516108008111156115175760405163239ff57f60e01b815260040160405180910390fd5b5f612608816127d6565b6001600160a01b03821661263157604051631e4fbdf760e01b81525f6004820152602401610d88565b5f61263a61207c565b9050826001600160a01b0316816001600160a01b0316036126635761265e83613259565b505050565b61266d5f84612869565b61267683613259565b6126805f82613293565b50505050565b5f516020614b9b5f395f51905f525460ff16156126b65760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff16908160028111156126e9576126e9614671565b036127075760405163508a793f60e01b815260040160405180910390fd5b600281600281111561271b5761271b614671565b036115175760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156127925750833b153d17155b8061127a5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610d88565b61184b813361330c565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561282a5750823b153d17155b806126805760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610d88565b61287282611465565b61287b816127d6565b6126808383612acb565b6001600160a01b03811633146128ae5760405163334bd91960e11b815260040160405180910390fd5b61265e8282613293565b336128c161207c565b6001600160a01b0316146126b65760405163118cdaa760e01b8152336004820152602401610d88565b6128f2613345565b5f516020614b9b5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806129cf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129c35f516020614b3b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126b65760405163703e46dd60e11b815260040160405180910390fd5b5f611517816127d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a51575060408051601f3d908101601f19168201909252612a4e918101906146b5565b60015b612a7957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d88565b5f516020614b3b5f395f51905f528114612aa957604051632a87526960e21b815260048101829052602401610d88565b61265e8383613374565b6126b66133c9565b612ac36133c9565b6126b66133ff565b5f5f516020614b7b5f395f51905f52612ae484846120aa565b612b63575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612b193390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610c91565b5f915050610c91565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b8181101561265e575f838383818110612bf957612bf9614706565b612c0f9260206040909202019081019150614250565b90505f848484818110612c2457612c24614706565b9050604002016020016020810190612c3c9190614312565b905061271061ffff82161115612c655760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff1690816002811115612c9657612c96614671565b03612cb45760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d6020526040902060010154158015612cf557506001600160a01b0383165f908152600d602052604090205461ffff16155b8390612d205760405163050814e160e41b81526001600160a01b039091166004820152602401610d88565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612bde565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612db7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ddb91906146b5565b811115612dfb57604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126b65760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115612e7857612e78614671565b1461184b5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111580612eea57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b15612f08576040516306cf438f60e01b815260040160405180910390fd5b80515f0361184b576040516306cf438f60e01b815260040160405180910390fd5b60045f612f35846120e0565b815260208101919091526040015f205460ff1615612f655760405162da8a5760e11b815260040160405180910390fd5b600e5f612f7183613037565b815260208101919091526040015f205460ff16156115175760405163ae493b0360e01b815260040160405180910390fd5b612fab8261341f565b5f604051806060016040528060248152602001614ad76024913990505f8482604051602001612fdb9291906148c5565b60405160208183030381529060405290505f612ff682613486565b9050613013818561300688613573565b61300e6135ea565b6136b7565b61302f5760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f0151826020015160405160200161211d929190918252602082015260400190565b613063612686565b5f516020614b9b5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361292b565b6130ab6133c9565b61184b81613766565b5f516020614bbb5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156130e55750825b90505f826001600160401b031660011480156131005750303b155b90508115801561310e575080155b1561312c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561315657845460ff60401b1916600160401b1785555b435f55831561127a57845460ff60401b19168555604051600181525f516020614b1b5f395f51905f529060200160405180910390a15050505050565b6001600160a01b0383166131b95760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166131e05760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156132355760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b61324682611465565b61324f816127d6565b6126808383613293565b6132616128b8565b6001600160a01b03811661328a57604051631e4fbdf760e01b81525f6004820152602401610d88565b61184b81612b6c565b5f5f516020614b7b5f395f51905f526132ac84846120aa565b15612b63575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610c91565b61331682826120aa565b6115175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d88565b5f516020614b9b5f395f51905f525460ff166126b657604051638dfc202b60e01b815260040160405180910390fd5b61337d8261376e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133c15761265e82826137d1565b611517613843565b5f516020614bbb5f395f51905f5254600160401b900460ff166126b657604051631afcd79f60e31b815260040160405180910390fd5b6134076133c9565b5f516020614b9b5f395f51905f52805460ff19169055565b805160208201515f915f516020614afb5f395f51905f5291159015161561344557505050565b82516020840151826003848585860985090883828309148382108484101616935050508161265e5760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6134a383613862565b90505f516020614afb5f395f51905f5260035f82848509905082806134ca576134ca6148d9565b848209905082806134dd576134dd6148d9565b82820890505f5f6134ed83613a6a565b925090505b80613556578480613505576135056148d9565b6001870895508480613519576135196148d9565b8687099250848061352c5761352c6148d9565b8684099250848061353f5761353f6148d9565b848408925061354d83613a6a565b925090506134f2565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561359a575090565b6040518060400160405280835f015181526020015f516020614afb5f395f51905f5284602001516135cb91906148ed565b6135e2905f516020614afb5f395f51905f526146f3565b905292915050565b61361160405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061375a5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b6132616133c9565b806001600160a01b03163b5f036137a357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d88565b5f516020614b3b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516137ed919061490c565b5f60405180830381855af49150503d805f8114613825576040519150601f19603f3d011682016040523d82523d5f602084013e61382a565b606091505b509150915061383a858383613b32565b95945050505050565b34156126b65760405163b398979f60e01b815260040160405180910390fd5b5f5f61386d83613b91565b80519091506030811461388257613882614917565b5f816001600160401b0381111561389b5761389b613fed565b6040519080825280601f01601f1916602001820160405280156138c5576020820181803683370190505b5090505f5b82811015613934578360016138df83866146f3565b6138e991906146f3565b815181106138f9576138f9614706565b602001015160f81c60f81b82828151811061391657613916614706565b60200101906001600160f81b03191690815f1a9053506001016138ca565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156139c457838161397085886146f3565b61397a91906146e0565b8151811061398a5761398a614706565b602001015160f81c60f81b60f81c8282815181106139aa576139aa614706565b60ff9092166020928302919091019091015260010161395c565b505f6139cf82613edc565b90506101005f516020614afb5f395f51905f525f6139ed86896146f3565b90505f5b81811015613a5a575f886001613a0784866146f3565b613a1191906146f3565b81518110613a2157613a21614706565b016020015160f81c90508380613a3957613a396148d9565b85870995508380613a4c57613a4c6148d9565b8187089550506001016139f1565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020614afb5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083613af857604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613b1157613b0e83826146f3565b92505b8080613b1f57613b1f6148d9565b8384099690961496919550909350505050565b606082613b4757613b4282613f43565b613b8a565b8151158015613b5e57506001600160a01b0384163b155b15613b8757604051639996b31560e01b81526001600160a01b0385166004820152602401610d88565b50805b9392505050565b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001613bd19291906148c5565b6040516020818303038152906040529050808460f81b604051602001613bf892919061492b565b604051602081830303815290604052905080604051602001613c1a9190614955565b60408051601f1981840301815290829052915061010160f01b90613c44908390839060200161496d565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115613cb357613cb3613fed565b6040519080825280601f01601f191660200182016040528015613cdd576020820181803683370190505b5090505f82604051602001613cf491815260200190565b60408051601f1981840301815291905290505f5b8151811015613d5e57818181518110613d2357613d23614706565b602001015160f81c60f81b838281518110613d4057613d40614706565b60200101906001600160f81b03191690815f1a905350600101613d08565b505f84604051602001613d7391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613e05575f838281518110613dac57613dac614706565b602001015160f81c60f81b838381518110613dc957613dc9614706565b602001015160f81c60f81b1890508881604051602001613dea929190614991565b60408051601f19818403018152919052985050600101613d91565b50868887604051602001613e1b939291906149b5565b60405160208183030381529060405296508680519060200120935083604051602001613e4991815260200190565b60408051601f1981840301815291905291505f5b613e6a8a60ff8d166146f3565b811015613ecb57828181518110613e8357613e83614706565b01602001516001600160f81b03191684613e9d838d6146e0565b81518110613ead57613ead614706565b60200101906001600160f81b03191690815f1a905350600101613e5d565b50919b9a5050505050505050505050565b5f80805b8351811015613f3c57838181518110613efb57613efb614706565b602002602001015160ff16816008613f139190614748565b613f1e906002614acb565b613f289190614748565b613f3290836146e0565b9150600101613ee0565b5092915050565b805115613f535780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215613f7c575f5ffd5b81356001600160e01b031981168114613b8a575f5ffd5b80356001600160a01b0381168114613fa9575f5ffd5b919050565b5f5f60408385031215613fbf575f5ffd5b613fc883613f93565b946020939093013593505050565b5f60208284031215613fe6575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561402357614023613fed565b60405290565b5f82601f830112614038575f5ffd5b8135602083015f5f6001600160401b0384111561405757614057613fed565b50604051601f19601f85018116603f011681018181106001600160401b038211171561408557614085613fed565b60405283815290508082840187101561409c575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f604083850312156140c9575f5ffd5b8235915060208301356001600160401b038111156140e5575f5ffd5b6140f185828601614029565b9150509250929050565b5f6080828403121561410b575f5ffd5b604051608081016001600160401b038111828210171561412d5761412d613fed565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561416b575f5ffd5b614173614001565b823581526020928301359281019290925250919050565b803561ffff81168114613fa9575f5ffd5b5f5f5f5f61012085870312156141af575f5ffd5b6141b986866140fb565b93506141c8866080870161415b565b92506141d78660c0870161415b565b91506141e6610100860161418a565b905092959194509250565b5f60208284031215614201575f5ffd5b81356001600160401b03811115614216575f5ffd5b61422284828501614029565b949350505050565b5f6020828403121561423a575f5ffd5b81356001600160401b0381168114613b8a575f5ffd5b5f60208284031215614260575f5ffd5b613b8a82613f93565b5f5f5f5f5f5f610160878903121561427f575f5ffd5b61428988886140fb565b9550614298886080890161415b565b94506142a78860c0890161415b565b93506101008701356001600160401b038111156142c2575f5ffd5b6142ce89828a01614029565b9350506142de610120880161418a565b91506101408701356001600160401b038111156142f9575f5ffd5b61430589828a01614029565b9150509295509295509295565b5f60208284031215614322575f5ffd5b613b8a8261418a565b5f5f6040838503121561433c575f5ffd5b8235915061434c60208401613f93565b90509250929050565b5f5f60408385031215614366575f5ffd5b61436f83613f93565b915060208301356001600160401b038111156140e5575f5ffd5b5f5f5f5f5f6080868803121561439d575f5ffd5b6143a686613f93565b94506143b460208701613f93565b93506040860135925060608601356001600160401b038111156143d5575f5ffd5b8601601f810188136143e5575f5ffd5b80356001600160401b038111156143fa575f5ffd5b8860208260061b840101111561440e575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215614432575f5ffd5b61443c85856140fb565b925061444b856080860161415b565b915061445a8560c0860161415b565b90509250925092565b5f5f5f5f5f5f5f5f6101a0898b03121561447b575f5ffd5b6144858a8a6140fb565b97506144948a60808b0161415b565b96506144a38a60c08b0161415b565b95506101008901356001600160401b038111156144be575f5ffd5b6144ca8b828c01614029565b9550506144da6101208a0161418a565b93506101408901356001600160401b038111156144f5575f5ffd5b6145018b828c01614029565b93505061016089013591506101808901356001600160401b03811115614525575f5ffd5b6145318b828c01614029565b9150509295985092959890939650565b5f60808284031215614551575f5ffd5b613b8a83836140fb565b5f5f6040838503121561456c575f5ffd5b61457583613f93565b915061434c60208401613f93565b5f5f5f5f6101208587031215614597575f5ffd5b6145a186866140fb565b93506145b0866080870161415b565b92506145bf8660c0870161415b565b91506101008501356001600160401b038111156145da575f5ffd5b6145e687828801614029565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613b8a60208301846145f2565b5f5f5f5f60808587031215614645575f5ffd5b61464e85613f93565b935061465c60208601613f93565b9250604085013591506141e660608601613f93565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106146a857634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156146c5575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c9157610c916146cc565b81810381811115610c9157610c916146cc565b634e487b7160e01b5f52603260045260245ffd5b5f81614728576147286146cc565b505f190190565b60ff8281168282160390811115610c9157610c916146cc565b8082028115828204841417610c9157610c916146cc565b61ffff8181168382160190811115610c9157610c916146cc565b5f6001600160401b0382166001600160401b03810361479a5761479a6146cc565b60010192915050565b885181526020808a0151908201526040808a0151908201526060808a01519082015287516080820152602088015160a082015261ffff871660c0820152855160e082015260208601516101008201526101a06101208201525f61480a6101a08301876145f2565b82810361014084015261481d81876145f2565b90508461016084015282810361018084015261483981856145f2565b9b9a5050505050505050505050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6148a46101208301846145f2565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6142226148d383866148ae565b846148ae565b634e487b7160e01b5f52601260045260245ffd5b5f8261490757634e487b7160e01b5f52601260045260245ffd5b500690565b5f613b8a82846148ae565b634e487b7160e01b5f52600160045260245ffd5b5f61493682856148ae565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61496082846148ae565b5f81526001019392505050565b5f61497882856148ae565b6001600160f01b03199390931683525050600201919050565b5f61499c82856148ae565b6001600160f81b03199390931683525050600101919050565b5f6149c082866148ae565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b6001815b6001841115614a2357808504811115614a0757614a076146cc565b6001841615614a1557908102905b60019390931c9280026149ec565b935093915050565b5f82614a3957506001610c91565b81614a4557505f610c91565b8160018114614a5b5760028114614a6557614a81565b6001915050610c91565b60ff841115614a7657614a766146cc565b50506001821b610c91565b5060208310610133831016604e8410600b8410161715614aa4575081810a610c91565b614ab05f1984846149e8565b805f1904821115614ac357614ac36146cc565b029392505050565b5f613b8a8383614a2b56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
4529    /// ```
4530    #[rustfmt::skip]
4531    #[allow(clippy::all)]
4532    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4533        b"`\x80`@R`\x046\x10a\x03\xBEW_5`\xE0\x1C\x80cj\x91\x1C\xCF\x11a\x01\xF4W\x80c\xAD<\xB1\xCC\x11a\x01\x13W\x80c\xD5Gt\x1F\x11a\0\xA8W\x80c\xE6)w\xF8\x11a\0xW\x80c\xE6)w\xF8\x14a\x0B\xABW\x80c\xE6:\xB1\xE9\x14a\x0B\xC0W\x80c\xF2\xFD\xE3\x8B\x14a\x0B\xE0W\x80c\xFAR\xC7\xD8\x14a\x0B\xFFW\x80c\xFC\x0CTj\x14a\x0CBW__\xFD[\x80c\xD5Gt\x1F\x14a\x0BBW\x80c\xD9\xCC}&\x14a\x0BaW\x80c\xE3\xF27\xE6\x14a\x0BvW\x80c\xE4\xD1\xFB\x94\x14a\x0B\x95W__\xFD[\x80c\xBB`\xBF\xB0\x11a\0\xE3W\x80c\xBB`\xBF\xB0\x14a\n\x94W\x80c\xBDI\xC3_\x14a\n\xD8W\x80c\xBE 0\x94\x14a\n\xEDW\x80c\xC6H\x14\xDD\x14a\x0B\x0CW__\xFD[\x80c\xAD<\xB1\xCC\x14a\t\xDFW\x80c\xB3\xE6\xEB\xD5\x14a\n\x1CW\x80c\xB5p\x0Eh\x14a\nJW\x80c\xB5\xEC\xB3D\x14a\niW__\xFD[\x80c\x9B0\xA5\xE6\x11a\x01\x89W\x80c\xA2\x17\xFD\xDF\x11a\x01YW\x80c\xA2\x17\xFD\xDF\x14a\t<W\x80c\xA2\xD7\x8D\xD5\x14a\tOW\x80c\xA3\x06j\xAB\x14a\t\xA1W\x80c\xAC\\*\xD0\x14a\t\xC0W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x08\x96W\x80c\x9E\x9A\x8F1\x14a\x08\xB5W\x80c\x9E\xC9\xC18\x14a\x08\xCAW\x80c\x9F\xFBkC\x14a\x08\xE9W__\xFD[\x80c\x84V\xCBY\x11a\x01\xC4W\x80c\x84V\xCBY\x14a\x08\x18W\x80c\x87\x0C\x8F&\x14a\x08,W\x80c\x8D\xA5\xCB[\x14a\x08KW\x80c\x91\xD1HT\x14a\x08wW__\xFD[\x80cj\x91\x1C\xCF\x14a\x07\xADW\x80cj\xD2\x8E\x9F\x14a\x07\xC1W\x80cqP\x18\xA6\x14a\x07\xEFW\x80cr\xE9\xC94\x14a\x08\x03W__\xFD[\x80c9K4\x8F\x11a\x02\xE0W\x80cRx\x0Bn\x11a\x02uW\x80c\\\x97Z\xBB\x11a\x02EW\x80c\\\x97Z\xBB\x14a\x07(W\x80c_\x87T\xA6\x14a\x07KW\x80capf\xE5\x14a\x07yW\x80ch\x87\xCD6\x14a\x07\x8EW__\xFD[\x80cRx\x0Bn\x14a\x06\xADW\x80cR\xD1\x90-\x14a\x06\xCCW\x80cUD\xC2\xF1\x14a\x06\xE0W\x80cZ/Q\xFD\x14a\x06\xFAW__\xFD[\x80c?;\xB3f\x11a\x02\xB0W\x80c?;\xB3f\x14a\x06:W\x80c?K\xA8:\x14a\x06gW\x80cM\x99\xDD\x16\x14a\x06{W\x80cO\x1E\xF2\x86\x14a\x06\x9AW__\xFD[\x80c9K4\x8F\x14a\x05\xC9W\x80c;+\x7F\xFA\x14a\x05\xE8W\x80c>s.\xBA\x14a\x06\x07W\x80c>\x9D\xF9\xB5\x14a\x06&W__\xFD[\x80c!@\xFE\xCD\x11a\x03VW\x80c//\xF1]\x11a\x03&W\x80c//\xF1]\x14a\x05bW\x80c/\xE2\x87Y\x14a\x05\x81W\x80c6V\x8A\xBE\x14a\x05\x96W\x80c8\xE4T\xB1\x14a\x05\xB5W__\xFD[\x80c!@\xFE\xCD\x14a\x04\xDDW\x80c$\x8A\x9C\xA3\x14a\x04\xFCW\x80c+\x9E\\\x8A\x14a\x05)W\x80c-\xC9\xBA\xC6\x14a\x05CW__\xFD[\x80c\r\x8En,\x11a\x03\x91W\x80c\r\x8En,\x14a\x04UW\x80c\x13\xB9\x05z\x14a\x04\x80W\x80c\x15\xF3\x185\x14a\x04\x9FW\x80c\x1A \xCDc\x14a\x04\xBEW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03\xC2W\x80c\x02n@+\x14a\x03\xF6W\x80c\x07=%\xFC\x14a\x04\x17W\x80c\x0C\xB2\x97d\x14a\x046W[__\xFD[4\x80\x15a\x03\xCDW__\xFD[Pa\x03\xE1a\x03\xDC6`\x04a?lV[a\x0CaV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x04\x01W__\xFD[Pa\x04\x15a\x04\x106`\x04a?\xAEV[a\x0C\x97V[\0[4\x80\x15a\x04\"W__\xFD[Pa\x04\x15a\x0416`\x04a?\xD6V[a\x0E}V[4\x80\x15a\x04AW__\xFD[Pa\x04\x15a\x04P6`\x04a@\xB8V[a\x0F2V[4\x80\x15a\x04`W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\xEDV[4\x80\x15a\x04\x8BW__\xFD[Pa\x04\x15a\x04\x9A6`\x04aA\x9BV[a\x102V[4\x80\x15a\x04\xAAW__\xFD[Pa\x04\x15a\x04\xB96`\x04aA\xF1V[a\x10KV[4\x80\x15a\x04\xC9W__\xFD[Pa\x04\x15a\x04\xD86`\x04aB*V[a\x12\x81V[4\x80\x15a\x04\xE8W__\xFD[Pa\x04\x15a\x04\xF76`\x04aBPV[a\x13\x15V[4\x80\x15a\x05\x07W__\xFD[Pa\x05\x1Ba\x05\x166`\x04a?\xD6V[a\x14eV[`@Q\x90\x81R` \x01a\x03\xEDV[4\x80\x15a\x054W__\xFD[Pa\x04\x15a\x04\x9A6`\x04aBiV[4\x80\x15a\x05NW__\xFD[Pa\x04\x15a\x05]6`\x04aC\x12V[a\x14\x85V[4\x80\x15a\x05mW__\xFD[Pa\x04\x15a\x05|6`\x04aC+V[a\x15\tV[4\x80\x15a\x05\x8CW__\xFD[Pa\x05\x1Ba\x08\0\x81V[4\x80\x15a\x05\xA1W__\xFD[Pa\x04\x15a\x05\xB06`\x04aC+V[a\x15%V[4\x80\x15a\x05\xC0W__\xFD[Pa\x04\x15a\x15MV[4\x80\x15a\x05\xD4W__\xFD[Pa\x04\x15a\x05\xE36`\x04a?\xD6V[a\x15\xF0V[4\x80\x15a\x05\xF3W__\xFD[Pa\x04\x15a\x06\x026`\x04aC\x12V[a\x16_V[4\x80\x15a\x06\x12W__\xFD[Pa\x04\x15a\x06!6`\x04a?\xD6V[a\x17\xCBV[4\x80\x15a\x061W__\xFD[Pa\x05\x1B_T\x81V[4\x80\x15a\x06EW__\xFD[P`\nTa\x06T\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x06rW__\xFD[Pa\x04\x15a\x18,V[4\x80\x15a\x06\x86W__\xFD[Pa\x04\x15a\x06\x956`\x04a?\xAEV[a\x18NV[a\x04\x15a\x06\xA86`\x04aCUV[a\x1A\xBFV[4\x80\x15a\x06\xB8W__\xFD[Pa\x04\x15a\x06\xC76`\x04aC\x89V[a\x1A\xDAV[4\x80\x15a\x06\xD7W__\xFD[Pa\x05\x1Ba\x1C\x8CV[4\x80\x15a\x06\xEBW__\xFD[Pa\x04\x15a\x04\x9A6`\x04aD\x1FV[4\x80\x15a\x07\x05W__\xFD[Pa\x03\xE1a\x07\x146`\x04a?\xD6V[`\x11` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x073W__\xFD[P_Q` aK\x9B_9_Q\x90_RT`\xFF\x16a\x03\xE1V[4\x80\x15a\x07VW__\xFD[Pa\x03\xE1a\x07e6`\x04a?\xD6V[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x84W__\xFD[Pa\x05\x1Ba\x02\0\x81V[4\x80\x15a\x07\x99W__\xFD[Pa\x04\x15a\x07\xA86`\x04aDcV[a\x1C\xA7V[4\x80\x15a\x07\xB8W__\xFD[Pa\x04\x15a\x1F(V[4\x80\x15a\x07\xCCW__\xFD[Pa\x07\xD7b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x07\xFAW__\xFD[Pa\x04\x15a\x1F\xE8V[4\x80\x15a\x08\x0EW__\xFD[Pa\x05\x1B`\x0CT\x81V[4\x80\x15a\x08#W__\xFD[Pa\x04\x15a \tV[4\x80\x15a\x087W__\xFD[Pa\x04\x15a\x08F6`\x04aA\xF1V[a (V[4\x80\x15a\x08VW__\xFD[Pa\x08_a |V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\xEDV[4\x80\x15a\x08\x82W__\xFD[Pa\x03\xE1a\x08\x916`\x04aC+V[a \xAAV[4\x80\x15a\x08\xA1W__\xFD[Pa\x05\x1Ba\x08\xB06`\x04aEAV[a \xE0V[4\x80\x15a\x08\xC0W__\xFD[Pa\x05\x1B`\x08T\x81V[4\x80\x15a\x08\xD5W__\xFD[Pa\x04\x15a\x08\xE46`\x04aA\xF1V[a!:V[4\x80\x15a\x08\xF4W__\xFD[Pa\t\"a\t\x036`\x04aBPV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xEDV[4\x80\x15a\tGW__\xFD[Pa\x05\x1B_\x81V[4\x80\x15a\tZW__\xFD[Pa\t\x8Ca\ti6`\x04aE[V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\xEDV[4\x80\x15a\t\xACW__\xFD[Pa\x04\x15a\t\xBB6`\x04aBPV[a!\x8DV[4\x80\x15a\t\xCBW__\xFD[Pa\x04\x15a\t\xDA6`\x04aE\x83V[a\"\xF2V[4\x80\x15a\t\xEAW__\xFD[Pa\n\x0F`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\xED\x91\x90aF V[4\x80\x15a\n'W__\xFD[Pa\x03\xE1a\n66`\x04a?\xD6V[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\nUW__\xFD[P`\x01Ta\x08_\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\ntW__\xFD[Pa\x05\x1Ba\n\x836`\x04aBPV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\n\x9FW__\xFD[Pa\n\xB3a\n\xAE6`\x04aE[V[a$\x1CV[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\xEDV[4\x80\x15a\n\xE3W__\xFD[Pa\x05\x1B`\x0BT\x81V[4\x80\x15a\n\xF8W__\xFD[Pa\x04\x15a\x0B\x076`\x04aF2V[a$\xADV[4\x80\x15a\x0B\x17W__\xFD[Pa\x05\x1Ba\x0B&6`\x04aE[V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x0BMW__\xFD[Pa\x04\x15a\x0B\\6`\x04aC+V[a%\xB1V[4\x80\x15a\x0BlW__\xFD[Pa\x05\x1B`\tT\x81V[4\x80\x15a\x0B\x81W__\xFD[Pa\x04\x15a\x0B\x906`\x04aA\xF1V[a%\xD9V[4\x80\x15a\x0B\xA0W__\xFD[Pa\x07\xD7b\x12u\0\x81V[4\x80\x15a\x0B\xB6W__\xFD[Pa\x06Ta'\x10\x81V[4\x80\x15a\x0B\xCBW__\xFD[Pa\x05\x1B_Q` aK[_9_Q\x90_R\x81V[4\x80\x15a\x0B\xEBW__\xFD[Pa\x04\x15a\x0B\xFA6`\x04aBPV[a%\xFEV[4\x80\x15a\x0C\nW__\xFD[Pa\x0C4a\x0C\x196`\x04aBPV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\xED\x92\x91\x90aF\x85V[4\x80\x15a\x0CMW__\xFD[P`\x02Ta\x08_\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0C\x91WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0C\x9Fa&\x86V[a\x0C\xA8\x82a&\xB8V[3_\x82\x90\x03a\x0C\xCAW`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0C\xEDW`@Qc})\x871`\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\r;W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r_\x91\x90aF\xB5V[\x90P\x82\x81\x10\x15a\r\x91W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\r\xA9\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a'9V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\r\xD0\x90\x84\x90aF\xE0V[\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\x0E\x0B\x90\x84\x90aF\xE0V[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0E#\x91\x90aF\xE0V[\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\x0Eo\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[a\x0E\x85a&\x86V[a\x0E\x8E3a&\xB8V[\x80a\x0E\xACW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0E\xDBW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F'\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PV[a\x0F:a&\x86V[a\x0FC3a&\xB8V[\x81a\x0FaW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x0F\x90W`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x99\x81a\x10KV[_\x82\x81R`\x11` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ3\x90\x7F;L\xC8\x8A\xFE>\\\xE6\xBE\xEAy\t\xDE \x0B\xF2\x18\x9E\xEE\xCC\xB3\x96W\x1F\x1F\x94\xD5\x185\xF2G\xDF\x90a\x0F\xE5\x90\x85\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x10&\x91\x90aF V[`@Q\x80\x91\x03\x90\xA2PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x81\x90\x15\x80\x15\x90a\x10`WPa\x02\0\x81Q\x11\x15[a\x10}W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x19\x90[\x80\x15a\x10\xE2W\x82a\x10\x95`\x01\x83aF\xF3V[\x81Q\x81\x10a\x10\xA5Wa\x10\xA5aG\x06V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x1D`\xF9\x1B\x03a\x10\xD0Wa\x10\xC9`\x01\x82aF\xF3V[\x91Pa\x10\xE2V[\x80a\x10\xDA\x81aG\x1AV[\x91PPa\x10\x83V[P_\x19\x81\x14\x15\x80\x15a\x10\xF3WP_\x81\x11[a\x11\x10W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01\x82\x84Qa\x11 \x91\x90aF\xF3V[a\x11*\x91\x90aF\xF3V[\x90P_\x81\x11\x80\x15a\x11<WP`\x05\x81\x11\x15[a\x11YW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80a\x11f\x84`\x01aF\xE0V[\x90P[\x84Q\x81\x10\x15a\x11\xEFW_\x85\x82\x81Q\x81\x10a\x11\x85Wa\x11\x85aG\x06V[\x01` \x01Q`\xF8\x1C\x90P`0\x81\x10\x80\x15\x90a\x11\xA4WP`9\x81`\xFF\x16\x11\x15[a\x11\xC1W`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xCC`0\x82aG/V[`\xFF\x16a\x11\xDA\x84`\naGHV[a\x11\xE4\x91\x90aF\xE0V[\x92PP`\x01\x01a\x11iV[P`\x01\x82\x11\x80\x15a\x12.WP\x83a\x12\x07\x84`\x01aF\xE0V[\x81Q\x81\x10a\x12\x17Wa\x12\x17aG\x06V[` \x91\x01\x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16`\x03`\xFC\x1B\x14[\x15a\x12LW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x11\x80\x15a\x12]WPa\xFF\xFF\x81\x11\x15[a\x12zW`@Qc\x1E^C_`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[_a\x12\x8B\x81a'\xD6V[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\x12\xB0WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\x12\xCEW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x1Da&\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x13WW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x13xW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x13\xC0W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x14\x04\x90\x84\x90aF\xF3V[\x90\x91UPP`\x02Ta\x14 \x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a'\xE0V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\x0Eo\x91\x81R` \x01\x90V[_\x90\x81R_Q` aK{_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[_a\x14\x8F\x81a'\xD6V[_\x82a\xFF\xFF\x16\x11\x80\x15a\x14\xA8WPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x14\xC5W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\x13\tV[\x81a\x15\x1BWa\x15\x17\x81a%\xFEV[PPV[a\x15\x17\x82\x82a(iV[\x81a\x15CW`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x17\x82\x82a(\x85V[a\x15Ua(\xB8V[_Q` aK\xBB_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x15\x8BWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x15\xA9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x90\x81\x17`\x01`@\x1B\x17`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01a\x13\tV[_a\x15\xFA\x81a'\xD6V[_\x82\x11\x80\x15a\x16\rWPc\x01\xE13\x80\x82\x11\x15[a\x16*W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x13\tV[a\x16ga&\x86V[3a\x16q\x81a&\xB8V[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x16\x98W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x16\xDAW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x17fW`\x01\x82\x01T\x80\x15\x80a\x17\x08WP`\tTa\x17\x04\x90\x82aF\xE0V[B\x10\x15[a\x17%W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x176\x90a\xFF\xFF\x16\x83aG_V[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x17^W`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x17\xD5\x81a'\xD6V[`\x01\x82\x10\x15a\x17\xF7W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\x13\tV[_Q` aK[_9_Q\x90_Ra\x18C\x81a'\xD6V[a\x18Ka(\xEAV[PV[a\x18Va&\x86V[a\x18_\x82a&\xB8V[3_\x82\x90\x03a\x18\x81W`@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\x18\xC4W`@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\x19\rW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x88V[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x19)\x83aGyV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x19\xA2\x91\x90aF\xF3V[\x90\x91UPP`\x08T_\x90a\x19\xB6\x90BaF\xE0V[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x1AF\x90\x84\x90aF\xF3V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x1A^\x91\x90aF\xF3V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x1A\xC7a)IV[a\x1A\xD0\x82a)\xEDV[a\x15\x17\x82\x82a)\xF7V[a\x1A\xE2a(\xB8V[_Q` aK\xBB_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1B\x18WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1B6W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x1B~W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1B\xA5W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xADa*\xB3V[a\x1B\xB5a*\xBBV[a\x1B\xCC_Q` aK[_9_Q\x90_R\x88a*\xCBV[Pa\x1B\xD7_\x87a*\xCBV[P_a\x1B\xE1a |V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1C\x05Wa\x1C\x05\x87a+lV[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x1CE\x85\x85a+\xDCV[a\x1CN\x86a-qV[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x1C\x95a.\0V[P_Q` aK;_9_Q\x90_R\x90V[a\x1C\xAFa&\x86V[3a\x1C\xB9\x81a.IV[a\x1C\xC2\x88a.\x96V[a\x1C\xCC\x89\x89a/)V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xFE\x81\x89\x8Ca/\xA2V[\x86Q`@\x14a\x1D W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x87\x16\x11\x15a\x1DGW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1DP\x85a%\xD9V[\x83a\x1DnW`@Qc>K\xA1?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84\x81R`\x11` R`@\x90 T`\xFF\x16\x15a\x1D\x9DW`@Qc,\x8D\x90;`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\xA6\x83a\x10KV[`\x01`\x04_a\x1D\xB4\x8Da \xE0V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D\xE5\x8Ca07V[\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\x1E,Wa\x1E,aFqV[\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\x1ErWa\x1EraFqV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x89\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x83R\x86\x84 \x95Q\x86Ta\xFF\xFF\x19\x16\x95\x16\x94\x90\x94\x17\x85UQ`\x01\x94\x85\x01U\x89\x82R`\x11\x90R\x83\x90 \x80T`\xFF\x19\x16\x90\x92\x17\x90\x91U\x90Q\x90\x91P\x7F\xBF\x14\xCD\x7F\xEApC]BO\x92\xF7\xA3\xD0\x11\t\xA5\x83D\x9Dq\x88\x98\xA6\xA9i\x87\x9CTv\xEC\x14\x90a\x1F\x14\x90\x8D\x90\x8D\x90\x8B\x90\x8E\x90\x8E\x90\x8D\x90\x8D\x90\x8D\x90aG\xA3V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPPPV[a\x1F0a&\x86V[3a\x1F:\x81a&\xB8V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x1Fl\x90BaF\xE0V[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x1F\xA8\x90\x84\x90aF\xF3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01a\x10&V[a\x1F\xF0a(\xB8V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aK[_9_Q\x90_Ra  \x81a'\xD6V[a\x18Ka0[V[a 0a&\x86V[3a :\x81a&\xB8V[a C\x82a%\xD9V[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x10&\x91\x90aF V[\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[_\x91\x82R_Q` aK{_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a!\x1D\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a!Ba&\x86V[a!K3a&\xB8V[a!T\x81a\x10KV[3`\x01`\x01`\xA0\x1B\x03\x16\x7FC\x06a\x82\xAF\x89\xF20E\"\x07\x1AW\xC0`c\xE1\x1B&Y\x1Dm\x9C3\xF1\x87L-\n\x14\xBB\"\x82`@Qa\x0F'\x91\x90aF V[a!\x95a&\x86V[`\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!\xDAW`@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\"\"W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\"\x95\x91\x16\x84\x84a'\xE0V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\"\xE4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\"\xFAa&\x86V[3a#\x04\x81a&\xB8V[a#\r\x84a.\x96V[a#\x17\x85\x85a/)V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa#I\x81\x85\x88a/\xA2V[\x82Q`@\x14a#kW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a#y\x89a \xE0V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a#\xAA\x88a07V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa$\x0C\x94\x93\x92\x91\x90aHHV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a$gW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aK\xBB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a$\xDEWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a$\xF9WP0;\x15[\x90P\x81\x15\x80\x15a%\x07WP\x80\x15[\x15a%%W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a%OW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a%X\x86a0\xA3V[a%`a*\xB3V[a%ha0\xB4V[a%s\x89\x89\x89a1\x92V[\x83\x15a%\xA6W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a%\xCFW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x17\x82\x82a2=V[\x80Qa\x08\0\x81\x11\x15a\x15\x17W`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a&\x08\x81a'\xD6V[`\x01`\x01`\xA0\x1B\x03\x82\x16a&1W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\x88V[_a&:a |V[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a&cWa&^\x83a2YV[PPPV[a&m_\x84a(iV[a&v\x83a2YV[a&\x80_\x82a2\x93V[PPPPV[_Q` aK\x9B_9_Q\x90_RT`\xFF\x16\x15a&\xB6W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a&\xE9Wa&\xE9aFqV[\x03a'\x07W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a'\x1BWa'\x1BaFqV[\x03a\x15\x17W`@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'\x92WP\x83;\x15=\x17\x15[\x80a\x12zW`@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\r\x88V[a\x18K\x813a3\x0CV[_`@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(*WP\x82;\x15=\x17\x15[\x80a&\x80W`@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\r\x88V[a(r\x82a\x14eV[a({\x81a'\xD6V[a&\x80\x83\x83a*\xCBV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a(\xAEW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a&^\x82\x82a2\x93V[3a(\xC1a |V[`\x01`\x01`\xA0\x1B\x03\x16\x14a&\xB6W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x88V[a(\xF2a3EV[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[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)\xCFWP\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)\xC3_Q` aK;_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a&\xB6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15\x17\x81a'\xD6V[\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*QWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra*N\x91\x81\x01\x90aF\xB5V[`\x01[a*yW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x88V[_Q` aK;_9_Q\x90_R\x81\x14a*\xA9W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x88V[a&^\x83\x83a3tV[a&\xB6a3\xC9V[a*\xC3a3\xC9V[a&\xB6a3\xFFV[__Q` aK{_9_Q\x90_Ra*\xE4\x84\x84a \xAAV[a+cW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua+\x193\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0C\x91V[_\x91PPa\x0C\x91V[\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[_[\x81\x81\x10\x15a&^W_\x83\x83\x83\x81\x81\x10a+\xF9Wa+\xF9aG\x06V[a,\x0F\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91PaBPV[\x90P_\x84\x84\x84\x81\x81\x10a,$Wa,$aG\x06V[\x90P`@\x02\x01` \x01` \x81\x01\x90a,<\x91\x90aC\x12V[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a,eW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a,\x96Wa,\x96aFqV[\x03a,\xB4W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a,\xF5WP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a- W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\r\x88V[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a+\xDEV[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\xB7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a-\xDB\x91\x90aF\xB5V[\x81\x11\x15a-\xFBW`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[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&\xB6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a.xWa.xaFqV[\x14a\x18KW`@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.\xEAWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a/\x08W`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x18KW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a/5\x84a \xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a/eW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a/q\x83a07V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x15\x17W`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a/\xAB\x82a4\x1FV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aJ\xD7`$\x919\x90P_\x84\x82`@Q` \x01a/\xDB\x92\x91\x90aH\xC5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a/\xF6\x82a4\x86V[\x90Pa0\x13\x81\x85a0\x06\x88a5sV[a0\x0Ea5\xEAV[a6\xB7V[a0/W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a!\x1D\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a0ca&\x86V[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a)+V[a0\xABa3\xC9V[a\x18K\x81a7fV[_Q` aK\xBB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a0\xE5WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a1\0WP0;\x15[\x90P\x81\x15\x80\x15a1\x0EWP\x80\x15[\x15a1,W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a1VW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x12zW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R_Q` aK\x1B_9_Q\x90_R\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a1\xB9W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a1\xE0W`@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\x15a25W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a2F\x82a\x14eV[a2O\x81a'\xD6V[a&\x80\x83\x83a2\x93V[a2aa(\xB8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a2\x8AW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\r\x88V[a\x18K\x81a+lV[__Q` aK{_9_Q\x90_Ra2\xAC\x84\x84a \xAAV[\x15a+cW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0C\x91V[a3\x16\x82\x82a \xAAV[a\x15\x17W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\r\x88V[_Q` aK\x9B_9_Q\x90_RT`\xFF\x16a&\xB6W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a3}\x82a7nV[`@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\x15a3\xC1Wa&^\x82\x82a7\xD1V[a\x15\x17a8CV[_Q` aK\xBB_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a&\xB6W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a4\x07a3\xC9V[_Q` aK\x9B_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[\x80Q` \x82\x01Q_\x91_Q` aJ\xFB_9_Q\x90_R\x91\x15\x90\x15\x16\x15a4EWPPPV[\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&^W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a4\xA3\x83a8bV[\x90P_Q` aJ\xFB_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a4\xCAWa4\xCAaH\xD9V[\x84\x82\t\x90P\x82\x80a4\xDDWa4\xDDaH\xD9V[\x82\x82\x08\x90P__a4\xED\x83a:jV[\x92P\x90P[\x80a5VW\x84\x80a5\x05Wa5\x05aH\xD9V[`\x01\x87\x08\x95P\x84\x80a5\x19Wa5\x19aH\xD9V[\x86\x87\t\x92P\x84\x80a5,Wa5,aH\xD9V[\x86\x84\t\x92P\x84\x80a5?Wa5?aH\xD9V[\x84\x84\x08\x92Pa5M\x83a:jV[\x92P\x90Pa4\xF2V[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\x15a5\x9AWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aJ\xFB_9_Q\x90_R\x84` \x01Qa5\xCB\x91\x90aH\xEDV[a5\xE2\x90_Q` aJ\xFB_9_Q\x90_RaF\xF3V[\x90R\x92\x91PPV[a6\x11`@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\x80a7ZW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a2aa3\xC9V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a7\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x88V[_Q` aK;_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`@Qa7\xED\x91\x90aI\x0CV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a8%W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a8*V[``\x91P[P\x91P\x91Pa8:\x85\x83\x83a;2V[\x95\x94PPPPPV[4\x15a&\xB6W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a8m\x83a;\x91V[\x80Q\x90\x91P`0\x81\x14a8\x82Wa8\x82aI\x17V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a8\x9BWa8\x9Ba?\xEDV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a8\xC5W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a94W\x83`\x01a8\xDF\x83\x86aF\xF3V[a8\xE9\x91\x90aF\xF3V[\x81Q\x81\x10a8\xF9Wa8\xF9aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a9\x16Wa9\x16aG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8\xCAV[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\x15a9\xC4W\x83\x81a9p\x85\x88aF\xF3V[a9z\x91\x90aF\xE0V[\x81Q\x81\x10a9\x8AWa9\x8AaG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a9\xAAWa9\xAAaG\x06V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a9\\V[P_a9\xCF\x82a>\xDCV[\x90Pa\x01\0_Q` aJ\xFB_9_Q\x90_R_a9\xED\x86\x89aF\xF3V[\x90P_[\x81\x81\x10\x15a:ZW_\x88`\x01a:\x07\x84\x86aF\xF3V[a:\x11\x91\x90aF\xF3V[\x81Q\x81\x10a:!Wa:!aG\x06V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a:9Wa:9aH\xD9V[\x85\x87\t\x95P\x83\x80a:LWa:LaH\xD9V[\x81\x87\x08\x95PP`\x01\x01a9\xF1V[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` aJ\xFB_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:\xF8W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a;\x11Wa;\x0E\x83\x82aF\xF3V[\x92P[\x80\x80a;\x1FWa;\x1FaH\xD9V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[``\x82a;GWa;B\x82a?CV[a;\x8AV[\x81Q\x15\x80\x15a;^WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a;\x87W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x88V[P\x80[\x93\x92PPPV[`@\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;\xD1\x92\x91\x90aH\xC5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a;\xF8\x92\x91\x90aI+V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a<\x1A\x91\x90aIUV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a<D\x90\x83\x90\x83\x90` \x01aImV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xB3Wa<\xB3a?\xEDV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a<\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a<\xF4\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a=^W\x81\x81\x81Q\x81\x10a=#Wa=#aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a=@Wa=@aG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a=\x08V[P_\x84`@Q` \x01a=s\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>\x05W_\x83\x82\x81Q\x81\x10a=\xACWa=\xACaG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a=\xC9Wa=\xC9aG\x06V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a=\xEA\x92\x91\x90aI\x91V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a=\x91V[P\x86\x88\x87`@Q` \x01a>\x1B\x93\x92\x91\x90aI\xB5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a>I\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a>j\x8A`\xFF\x8D\x16aF\xF3V[\x81\x10\x15a>\xCBW\x82\x81\x81Q\x81\x10a>\x83Wa>\x83aG\x06V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a>\x9D\x83\x8DaF\xE0V[\x81Q\x81\x10a>\xADWa>\xADaG\x06V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a>]V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a?<W\x83\x81\x81Q\x81\x10a>\xFBWa>\xFBaG\x06V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a?\x13\x91\x90aGHV[a?\x1E\x90`\x02aJ\xCBV[a?(\x91\x90aGHV[a?2\x90\x83aF\xE0V[\x91P`\x01\x01a>\xE0V[P\x92\x91PPV[\x80Q\x15a?SW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a?|W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a;\x8AW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a?\xA9W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a?\xBFW__\xFD[a?\xC8\x83a?\x93V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a?\xE6W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a@#Wa@#a?\xEDV[`@R\x90V[_\x82`\x1F\x83\x01\x12a@8W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a@WWa@Wa?\xEDV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a@\x85Wa@\x85a?\xEDV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a@\x9CW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a@\xC9W__\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a@\xE5W__\xFD[a@\xF1\x85\x82\x86\x01a@)V[\x91PP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15aA\x0BW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aA-WaA-a?\xEDV[`@\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\x15aAkW__\xFD[aAsa@\x01V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a?\xA9W__\xFD[____a\x01 \x85\x87\x03\x12\x15aA\xAFW__\xFD[aA\xB9\x86\x86a@\xFBV[\x93PaA\xC8\x86`\x80\x87\x01aA[V[\x92PaA\xD7\x86`\xC0\x87\x01aA[V[\x91PaA\xE6a\x01\0\x86\x01aA\x8AV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15aB\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aB\x16W__\xFD[aB\"\x84\x82\x85\x01a@)V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15aB:W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a;\x8AW__\xFD[_` \x82\x84\x03\x12\x15aB`W__\xFD[a;\x8A\x82a?\x93V[______a\x01`\x87\x89\x03\x12\x15aB\x7FW__\xFD[aB\x89\x88\x88a@\xFBV[\x95PaB\x98\x88`\x80\x89\x01aA[V[\x94PaB\xA7\x88`\xC0\x89\x01aA[V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xC2W__\xFD[aB\xCE\x89\x82\x8A\x01a@)V[\x93PPaB\xDEa\x01 \x88\x01aA\x8AV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aB\xF9W__\xFD[aC\x05\x89\x82\x8A\x01a@)V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15aC\"W__\xFD[a;\x8A\x82aA\x8AV[__`@\x83\x85\x03\x12\x15aC<W__\xFD[\x825\x91PaCL` \x84\x01a?\x93V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15aCfW__\xFD[aCo\x83a?\x93V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a@\xE5W__\xFD[_____`\x80\x86\x88\x03\x12\x15aC\x9DW__\xFD[aC\xA6\x86a?\x93V[\x94PaC\xB4` \x87\x01a?\x93V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xD5W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13aC\xE5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aC\xFAW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15aD\x0EW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15aD2W__\xFD[aD<\x85\x85a@\xFBV[\x92PaDK\x85`\x80\x86\x01aA[V[\x91PaDZ\x85`\xC0\x86\x01aA[V[\x90P\x92P\x92P\x92V[________a\x01\xA0\x89\x8B\x03\x12\x15aD{W__\xFD[aD\x85\x8A\x8Aa@\xFBV[\x97PaD\x94\x8A`\x80\x8B\x01aA[V[\x96PaD\xA3\x8A`\xC0\x8B\x01aA[V[\x95Pa\x01\0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xBEW__\xFD[aD\xCA\x8B\x82\x8C\x01a@)V[\x95PPaD\xDAa\x01 \x8A\x01aA\x8AV[\x93Pa\x01@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aD\xF5W__\xFD[aE\x01\x8B\x82\x8C\x01a@)V[\x93PPa\x01`\x89\x015\x91Pa\x01\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE%W__\xFD[aE1\x8B\x82\x8C\x01a@)V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[_`\x80\x82\x84\x03\x12\x15aEQW__\xFD[a;\x8A\x83\x83a@\xFBV[__`@\x83\x85\x03\x12\x15aElW__\xFD[aEu\x83a?\x93V[\x91PaCL` \x84\x01a?\x93V[____a\x01 \x85\x87\x03\x12\x15aE\x97W__\xFD[aE\xA1\x86\x86a@\xFBV[\x93PaE\xB0\x86`\x80\x87\x01aA[V[\x92PaE\xBF\x86`\xC0\x87\x01aA[V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aE\xDAW__\xFD[aE\xE6\x87\x82\x88\x01a@)V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a;\x8A` \x83\x01\x84aE\xF2V[____`\x80\x85\x87\x03\x12\x15aFEW__\xFD[aFN\x85a?\x93V[\x93PaF\\` \x86\x01a?\x93V[\x92P`@\x85\x015\x91PaA\xE6``\x86\x01a?\x93V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10aF\xA8WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15aF\xC5W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[\x81\x81\x03\x81\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81aG(WaG(aF\xCCV[P_\x19\x01\x90V[`\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x91Wa\x0C\x91aF\xCCV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\x91Wa\x0C\x91aF\xCCV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03aG\x9AWaG\x9AaF\xCCV[`\x01\x01\x92\x91PPV[\x88Q\x81R` \x80\x8A\x01Q\x90\x82\x01R`@\x80\x8A\x01Q\x90\x82\x01R``\x80\x8A\x01Q\x90\x82\x01R\x87Q`\x80\x82\x01R` \x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x87\x16`\xC0\x82\x01R\x85Q`\xE0\x82\x01R` \x86\x01Qa\x01\0\x82\x01Ra\x01\xA0a\x01 \x82\x01R_aH\na\x01\xA0\x83\x01\x87aE\xF2V[\x82\x81\x03a\x01@\x84\x01RaH\x1D\x81\x87aE\xF2V[\x90P\x84a\x01`\x84\x01R\x82\x81\x03a\x01\x80\x84\x01RaH9\x81\x85aE\xF2V[\x9B\x9APPPPPPPPPPPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aH\xA4a\x01 \x83\x01\x84aE\xF2V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_aB\"aH\xD3\x83\x86aH\xAEV[\x84aH\xAEV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aI\x07WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_a;\x8A\x82\x84aH\xAEV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_aI6\x82\x85aH\xAEV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aI`\x82\x84aH\xAEV[_\x81R`\x01\x01\x93\x92PPPV[_aIx\x82\x85aH\xAEV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aI\x9C\x82\x85aH\xAEV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aI\xC0\x82\x86aH\xAEV[`\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[`\x01\x81[`\x01\x84\x11\x15aJ#W\x80\x85\x04\x81\x11\x15aJ\x07WaJ\x07aF\xCCV[`\x01\x84\x16\x15aJ\x15W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aI\xECV[\x93P\x93\x91PPV[_\x82aJ9WP`\x01a\x0C\x91V[\x81aJEWP_a\x0C\x91V[\x81`\x01\x81\x14aJ[W`\x02\x81\x14aJeWaJ\x81V[`\x01\x91PPa\x0C\x91V[`\xFF\x84\x11\x15aJvWaJvaF\xCCV[PP`\x01\x82\x1Ba\x0C\x91V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aJ\xA4WP\x81\x81\na\x0C\x91V[aJ\xB0_\x19\x84\x84aI\xE8V[\x80_\x19\x04\x82\x11\x15aJ\xC3WaJ\xC3aF\xCCV[\x02\x93\x92PPPV[_a;\x8A\x83\x83aJ+V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD26\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
4534    );
4535    #[derive(serde::Serialize, serde::Deserialize)]
4536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4537    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4538```solidity
4539error AccessControlBadConfirmation();
4540```*/
4541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4542    #[derive(Clone)]
4543    pub struct AccessControlBadConfirmation;
4544    #[allow(
4545        non_camel_case_types,
4546        non_snake_case,
4547        clippy::pub_underscore_fields,
4548        clippy::style
4549    )]
4550    const _: () = {
4551        use alloy::sol_types as alloy_sol_types;
4552        #[doc(hidden)]
4553        #[allow(dead_code)]
4554        type UnderlyingSolTuple<'a> = ();
4555        #[doc(hidden)]
4556        type UnderlyingRustTuple<'a> = ();
4557        #[cfg(test)]
4558        #[allow(dead_code, unreachable_patterns)]
4559        fn _type_assertion(
4560            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4561        ) {
4562            match _t {
4563                alloy_sol_types::private::AssertTypeEq::<
4564                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4565                >(_) => {}
4566            }
4567        }
4568        #[automatically_derived]
4569        #[doc(hidden)]
4570        impl ::core::convert::From<AccessControlBadConfirmation>
4571        for UnderlyingRustTuple<'_> {
4572            fn from(value: AccessControlBadConfirmation) -> Self {
4573                ()
4574            }
4575        }
4576        #[automatically_derived]
4577        #[doc(hidden)]
4578        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4579        for AccessControlBadConfirmation {
4580            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4581                Self
4582            }
4583        }
4584        #[automatically_derived]
4585        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4586            type Parameters<'a> = UnderlyingSolTuple<'a>;
4587            type Token<'a> = <Self::Parameters<
4588                'a,
4589            > as alloy_sol_types::SolType>::Token<'a>;
4590            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4591            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4592            #[inline]
4593            fn new<'a>(
4594                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4595            ) -> Self {
4596                tuple.into()
4597            }
4598            #[inline]
4599            fn tokenize(&self) -> Self::Token<'_> {
4600                ()
4601            }
4602            #[inline]
4603            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4604                <Self::Parameters<
4605                    '_,
4606                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4607                    .map(Self::new)
4608            }
4609        }
4610    };
4611    #[derive(serde::Serialize, serde::Deserialize)]
4612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4613    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4614```solidity
4615error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4616```*/
4617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4618    #[derive(Clone)]
4619    pub struct AccessControlUnauthorizedAccount {
4620        #[allow(missing_docs)]
4621        pub account: alloy::sol_types::private::Address,
4622        #[allow(missing_docs)]
4623        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4624    }
4625    #[allow(
4626        non_camel_case_types,
4627        non_snake_case,
4628        clippy::pub_underscore_fields,
4629        clippy::style
4630    )]
4631    const _: () = {
4632        use alloy::sol_types as alloy_sol_types;
4633        #[doc(hidden)]
4634        #[allow(dead_code)]
4635        type UnderlyingSolTuple<'a> = (
4636            alloy::sol_types::sol_data::Address,
4637            alloy::sol_types::sol_data::FixedBytes<32>,
4638        );
4639        #[doc(hidden)]
4640        type UnderlyingRustTuple<'a> = (
4641            alloy::sol_types::private::Address,
4642            alloy::sol_types::private::FixedBytes<32>,
4643        );
4644        #[cfg(test)]
4645        #[allow(dead_code, unreachable_patterns)]
4646        fn _type_assertion(
4647            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4648        ) {
4649            match _t {
4650                alloy_sol_types::private::AssertTypeEq::<
4651                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4652                >(_) => {}
4653            }
4654        }
4655        #[automatically_derived]
4656        #[doc(hidden)]
4657        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4658        for UnderlyingRustTuple<'_> {
4659            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4660                (value.account, value.neededRole)
4661            }
4662        }
4663        #[automatically_derived]
4664        #[doc(hidden)]
4665        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4666        for AccessControlUnauthorizedAccount {
4667            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4668                Self {
4669                    account: tuple.0,
4670                    neededRole: tuple.1,
4671                }
4672            }
4673        }
4674        #[automatically_derived]
4675        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4676            type Parameters<'a> = UnderlyingSolTuple<'a>;
4677            type Token<'a> = <Self::Parameters<
4678                'a,
4679            > as alloy_sol_types::SolType>::Token<'a>;
4680            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4681            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4682            #[inline]
4683            fn new<'a>(
4684                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4685            ) -> Self {
4686                tuple.into()
4687            }
4688            #[inline]
4689            fn tokenize(&self) -> Self::Token<'_> {
4690                (
4691                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4692                        &self.account,
4693                    ),
4694                    <alloy::sol_types::sol_data::FixedBytes<
4695                        32,
4696                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4697                )
4698            }
4699            #[inline]
4700            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4701                <Self::Parameters<
4702                    '_,
4703                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4704                    .map(Self::new)
4705            }
4706        }
4707    };
4708    #[derive(serde::Serialize, serde::Deserialize)]
4709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4710    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4711```solidity
4712error AddressEmptyCode(address target);
4713```*/
4714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4715    #[derive(Clone)]
4716    pub struct AddressEmptyCode {
4717        #[allow(missing_docs)]
4718        pub target: alloy::sol_types::private::Address,
4719    }
4720    #[allow(
4721        non_camel_case_types,
4722        non_snake_case,
4723        clippy::pub_underscore_fields,
4724        clippy::style
4725    )]
4726    const _: () = {
4727        use alloy::sol_types as alloy_sol_types;
4728        #[doc(hidden)]
4729        #[allow(dead_code)]
4730        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4731        #[doc(hidden)]
4732        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4733        #[cfg(test)]
4734        #[allow(dead_code, unreachable_patterns)]
4735        fn _type_assertion(
4736            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4737        ) {
4738            match _t {
4739                alloy_sol_types::private::AssertTypeEq::<
4740                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4741                >(_) => {}
4742            }
4743        }
4744        #[automatically_derived]
4745        #[doc(hidden)]
4746        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4747            fn from(value: AddressEmptyCode) -> Self {
4748                (value.target,)
4749            }
4750        }
4751        #[automatically_derived]
4752        #[doc(hidden)]
4753        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4754            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4755                Self { target: tuple.0 }
4756            }
4757        }
4758        #[automatically_derived]
4759        impl alloy_sol_types::SolError for AddressEmptyCode {
4760            type Parameters<'a> = UnderlyingSolTuple<'a>;
4761            type Token<'a> = <Self::Parameters<
4762                'a,
4763            > as alloy_sol_types::SolType>::Token<'a>;
4764            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4765            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4766            #[inline]
4767            fn new<'a>(
4768                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4769            ) -> Self {
4770                tuple.into()
4771            }
4772            #[inline]
4773            fn tokenize(&self) -> Self::Token<'_> {
4774                (
4775                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4776                        &self.target,
4777                    ),
4778                )
4779            }
4780            #[inline]
4781            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4782                <Self::Parameters<
4783                    '_,
4784                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4785                    .map(Self::new)
4786            }
4787        }
4788    };
4789    #[derive(serde::Serialize, serde::Deserialize)]
4790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4791    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4792```solidity
4793error BLSSigVerificationFailed();
4794```*/
4795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4796    #[derive(Clone)]
4797    pub struct BLSSigVerificationFailed;
4798    #[allow(
4799        non_camel_case_types,
4800        non_snake_case,
4801        clippy::pub_underscore_fields,
4802        clippy::style
4803    )]
4804    const _: () = {
4805        use alloy::sol_types as alloy_sol_types;
4806        #[doc(hidden)]
4807        #[allow(dead_code)]
4808        type UnderlyingSolTuple<'a> = ();
4809        #[doc(hidden)]
4810        type UnderlyingRustTuple<'a> = ();
4811        #[cfg(test)]
4812        #[allow(dead_code, unreachable_patterns)]
4813        fn _type_assertion(
4814            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4815        ) {
4816            match _t {
4817                alloy_sol_types::private::AssertTypeEq::<
4818                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4819                >(_) => {}
4820            }
4821        }
4822        #[automatically_derived]
4823        #[doc(hidden)]
4824        impl ::core::convert::From<BLSSigVerificationFailed>
4825        for UnderlyingRustTuple<'_> {
4826            fn from(value: BLSSigVerificationFailed) -> Self {
4827                ()
4828            }
4829        }
4830        #[automatically_derived]
4831        #[doc(hidden)]
4832        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4833        for BLSSigVerificationFailed {
4834            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4835                Self
4836            }
4837        }
4838        #[automatically_derived]
4839        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4840            type Parameters<'a> = UnderlyingSolTuple<'a>;
4841            type Token<'a> = <Self::Parameters<
4842                'a,
4843            > as alloy_sol_types::SolType>::Token<'a>;
4844            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4845            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4846            #[inline]
4847            fn new<'a>(
4848                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4849            ) -> Self {
4850                tuple.into()
4851            }
4852            #[inline]
4853            fn tokenize(&self) -> Self::Token<'_> {
4854                ()
4855            }
4856            #[inline]
4857            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4858                <Self::Parameters<
4859                    '_,
4860                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4861                    .map(Self::new)
4862            }
4863        }
4864    };
4865    #[derive(serde::Serialize, serde::Deserialize)]
4866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4867    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
4868```solidity
4869error BN254PairingProdFailed();
4870```*/
4871    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4872    #[derive(Clone)]
4873    pub struct BN254PairingProdFailed;
4874    #[allow(
4875        non_camel_case_types,
4876        non_snake_case,
4877        clippy::pub_underscore_fields,
4878        clippy::style
4879    )]
4880    const _: () = {
4881        use alloy::sol_types as alloy_sol_types;
4882        #[doc(hidden)]
4883        #[allow(dead_code)]
4884        type UnderlyingSolTuple<'a> = ();
4885        #[doc(hidden)]
4886        type UnderlyingRustTuple<'a> = ();
4887        #[cfg(test)]
4888        #[allow(dead_code, unreachable_patterns)]
4889        fn _type_assertion(
4890            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4891        ) {
4892            match _t {
4893                alloy_sol_types::private::AssertTypeEq::<
4894                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4895                >(_) => {}
4896            }
4897        }
4898        #[automatically_derived]
4899        #[doc(hidden)]
4900        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4901            fn from(value: BN254PairingProdFailed) -> Self {
4902                ()
4903            }
4904        }
4905        #[automatically_derived]
4906        #[doc(hidden)]
4907        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4908            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4909                Self
4910            }
4911        }
4912        #[automatically_derived]
4913        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4914            type Parameters<'a> = UnderlyingSolTuple<'a>;
4915            type Token<'a> = <Self::Parameters<
4916                'a,
4917            > as alloy_sol_types::SolType>::Token<'a>;
4918            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4919            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4920            #[inline]
4921            fn new<'a>(
4922                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4923            ) -> Self {
4924                tuple.into()
4925            }
4926            #[inline]
4927            fn tokenize(&self) -> Self::Token<'_> {
4928                ()
4929            }
4930            #[inline]
4931            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4932                <Self::Parameters<
4933                    '_,
4934                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4935                    .map(Self::new)
4936            }
4937        }
4938    };
4939    #[derive(serde::Serialize, serde::Deserialize)]
4940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4941    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4942```solidity
4943error BlsKeyAlreadyUsed();
4944```*/
4945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4946    #[derive(Clone)]
4947    pub struct BlsKeyAlreadyUsed;
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        #[doc(hidden)]
4957        #[allow(dead_code)]
4958        type UnderlyingSolTuple<'a> = ();
4959        #[doc(hidden)]
4960        type UnderlyingRustTuple<'a> = ();
4961        #[cfg(test)]
4962        #[allow(dead_code, unreachable_patterns)]
4963        fn _type_assertion(
4964            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4965        ) {
4966            match _t {
4967                alloy_sol_types::private::AssertTypeEq::<
4968                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4969                >(_) => {}
4970            }
4971        }
4972        #[automatically_derived]
4973        #[doc(hidden)]
4974        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4975            fn from(value: BlsKeyAlreadyUsed) -> Self {
4976                ()
4977            }
4978        }
4979        #[automatically_derived]
4980        #[doc(hidden)]
4981        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4982            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4983                Self
4984            }
4985        }
4986        #[automatically_derived]
4987        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4988            type Parameters<'a> = UnderlyingSolTuple<'a>;
4989            type Token<'a> = <Self::Parameters<
4990                'a,
4991            > as alloy_sol_types::SolType>::Token<'a>;
4992            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4993            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4994            #[inline]
4995            fn new<'a>(
4996                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4997            ) -> Self {
4998                tuple.into()
4999            }
5000            #[inline]
5001            fn tokenize(&self) -> Self::Token<'_> {
5002                ()
5003            }
5004            #[inline]
5005            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5006                <Self::Parameters<
5007                    '_,
5008                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5009                    .map(Self::new)
5010            }
5011        }
5012    };
5013    #[derive(serde::Serialize, serde::Deserialize)]
5014    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5015    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
5016```solidity
5017error CommissionAlreadyInitialized(address validator);
5018```*/
5019    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5020    #[derive(Clone)]
5021    pub struct CommissionAlreadyInitialized {
5022        #[allow(missing_docs)]
5023        pub validator: alloy::sol_types::private::Address,
5024    }
5025    #[allow(
5026        non_camel_case_types,
5027        non_snake_case,
5028        clippy::pub_underscore_fields,
5029        clippy::style
5030    )]
5031    const _: () = {
5032        use alloy::sol_types as alloy_sol_types;
5033        #[doc(hidden)]
5034        #[allow(dead_code)]
5035        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5036        #[doc(hidden)]
5037        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5038        #[cfg(test)]
5039        #[allow(dead_code, unreachable_patterns)]
5040        fn _type_assertion(
5041            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5042        ) {
5043            match _t {
5044                alloy_sol_types::private::AssertTypeEq::<
5045                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5046                >(_) => {}
5047            }
5048        }
5049        #[automatically_derived]
5050        #[doc(hidden)]
5051        impl ::core::convert::From<CommissionAlreadyInitialized>
5052        for UnderlyingRustTuple<'_> {
5053            fn from(value: CommissionAlreadyInitialized) -> Self {
5054                (value.validator,)
5055            }
5056        }
5057        #[automatically_derived]
5058        #[doc(hidden)]
5059        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5060        for CommissionAlreadyInitialized {
5061            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5062                Self { validator: tuple.0 }
5063            }
5064        }
5065        #[automatically_derived]
5066        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
5067            type Parameters<'a> = UnderlyingSolTuple<'a>;
5068            type Token<'a> = <Self::Parameters<
5069                'a,
5070            > as alloy_sol_types::SolType>::Token<'a>;
5071            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
5072            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
5073            #[inline]
5074            fn new<'a>(
5075                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5076            ) -> Self {
5077                tuple.into()
5078            }
5079            #[inline]
5080            fn tokenize(&self) -> Self::Token<'_> {
5081                (
5082                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5083                        &self.validator,
5084                    ),
5085                )
5086            }
5087            #[inline]
5088            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5089                <Self::Parameters<
5090                    '_,
5091                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5092                    .map(Self::new)
5093            }
5094        }
5095    };
5096    #[derive(serde::Serialize, serde::Deserialize)]
5097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5098    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
5099```solidity
5100error CommissionIncreaseExceedsMax();
5101```*/
5102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5103    #[derive(Clone)]
5104    pub struct CommissionIncreaseExceedsMax;
5105    #[allow(
5106        non_camel_case_types,
5107        non_snake_case,
5108        clippy::pub_underscore_fields,
5109        clippy::style
5110    )]
5111    const _: () = {
5112        use alloy::sol_types as alloy_sol_types;
5113        #[doc(hidden)]
5114        #[allow(dead_code)]
5115        type UnderlyingSolTuple<'a> = ();
5116        #[doc(hidden)]
5117        type UnderlyingRustTuple<'a> = ();
5118        #[cfg(test)]
5119        #[allow(dead_code, unreachable_patterns)]
5120        fn _type_assertion(
5121            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5122        ) {
5123            match _t {
5124                alloy_sol_types::private::AssertTypeEq::<
5125                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5126                >(_) => {}
5127            }
5128        }
5129        #[automatically_derived]
5130        #[doc(hidden)]
5131        impl ::core::convert::From<CommissionIncreaseExceedsMax>
5132        for UnderlyingRustTuple<'_> {
5133            fn from(value: CommissionIncreaseExceedsMax) -> Self {
5134                ()
5135            }
5136        }
5137        #[automatically_derived]
5138        #[doc(hidden)]
5139        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5140        for CommissionIncreaseExceedsMax {
5141            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5142                Self
5143            }
5144        }
5145        #[automatically_derived]
5146        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
5147            type Parameters<'a> = UnderlyingSolTuple<'a>;
5148            type Token<'a> = <Self::Parameters<
5149                'a,
5150            > as alloy_sol_types::SolType>::Token<'a>;
5151            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
5152            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
5153            #[inline]
5154            fn new<'a>(
5155                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5156            ) -> Self {
5157                tuple.into()
5158            }
5159            #[inline]
5160            fn tokenize(&self) -> Self::Token<'_> {
5161                ()
5162            }
5163            #[inline]
5164            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5165                <Self::Parameters<
5166                    '_,
5167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5168                    .map(Self::new)
5169            }
5170        }
5171    };
5172    #[derive(serde::Serialize, serde::Deserialize)]
5173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5174    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
5175```solidity
5176error CommissionUnchanged();
5177```*/
5178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5179    #[derive(Clone)]
5180    pub struct CommissionUnchanged;
5181    #[allow(
5182        non_camel_case_types,
5183        non_snake_case,
5184        clippy::pub_underscore_fields,
5185        clippy::style
5186    )]
5187    const _: () = {
5188        use alloy::sol_types as alloy_sol_types;
5189        #[doc(hidden)]
5190        #[allow(dead_code)]
5191        type UnderlyingSolTuple<'a> = ();
5192        #[doc(hidden)]
5193        type UnderlyingRustTuple<'a> = ();
5194        #[cfg(test)]
5195        #[allow(dead_code, unreachable_patterns)]
5196        fn _type_assertion(
5197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5198        ) {
5199            match _t {
5200                alloy_sol_types::private::AssertTypeEq::<
5201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5202                >(_) => {}
5203            }
5204        }
5205        #[automatically_derived]
5206        #[doc(hidden)]
5207        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
5208            fn from(value: CommissionUnchanged) -> Self {
5209                ()
5210            }
5211        }
5212        #[automatically_derived]
5213        #[doc(hidden)]
5214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
5215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5216                Self
5217            }
5218        }
5219        #[automatically_derived]
5220        impl alloy_sol_types::SolError for CommissionUnchanged {
5221            type Parameters<'a> = UnderlyingSolTuple<'a>;
5222            type Token<'a> = <Self::Parameters<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            const SIGNATURE: &'static str = "CommissionUnchanged()";
5226            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
5227            #[inline]
5228            fn new<'a>(
5229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5230            ) -> Self {
5231                tuple.into()
5232            }
5233            #[inline]
5234            fn tokenize(&self) -> Self::Token<'_> {
5235                ()
5236            }
5237            #[inline]
5238            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5239                <Self::Parameters<
5240                    '_,
5241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5242                    .map(Self::new)
5243            }
5244        }
5245    };
5246    #[derive(serde::Serialize, serde::Deserialize)]
5247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5248    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
5249```solidity
5250error CommissionUpdateTooSoon();
5251```*/
5252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5253    #[derive(Clone)]
5254    pub struct CommissionUpdateTooSoon;
5255    #[allow(
5256        non_camel_case_types,
5257        non_snake_case,
5258        clippy::pub_underscore_fields,
5259        clippy::style
5260    )]
5261    const _: () = {
5262        use alloy::sol_types as alloy_sol_types;
5263        #[doc(hidden)]
5264        #[allow(dead_code)]
5265        type UnderlyingSolTuple<'a> = ();
5266        #[doc(hidden)]
5267        type UnderlyingRustTuple<'a> = ();
5268        #[cfg(test)]
5269        #[allow(dead_code, unreachable_patterns)]
5270        fn _type_assertion(
5271            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5272        ) {
5273            match _t {
5274                alloy_sol_types::private::AssertTypeEq::<
5275                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5276                >(_) => {}
5277            }
5278        }
5279        #[automatically_derived]
5280        #[doc(hidden)]
5281        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
5282            fn from(value: CommissionUpdateTooSoon) -> Self {
5283                ()
5284            }
5285        }
5286        #[automatically_derived]
5287        #[doc(hidden)]
5288        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
5289            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5290                Self
5291            }
5292        }
5293        #[automatically_derived]
5294        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
5295            type Parameters<'a> = UnderlyingSolTuple<'a>;
5296            type Token<'a> = <Self::Parameters<
5297                'a,
5298            > as alloy_sol_types::SolType>::Token<'a>;
5299            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
5300            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
5301            #[inline]
5302            fn new<'a>(
5303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5304            ) -> Self {
5305                tuple.into()
5306            }
5307            #[inline]
5308            fn tokenize(&self) -> Self::Token<'_> {
5309                ()
5310            }
5311            #[inline]
5312            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5313                <Self::Parameters<
5314                    '_,
5315                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5316                    .map(Self::new)
5317            }
5318        }
5319    };
5320    #[derive(serde::Serialize, serde::Deserialize)]
5321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5322    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
5323```solidity
5324error DefaultAdminCannotBeRenounced();
5325```*/
5326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5327    #[derive(Clone)]
5328    pub struct DefaultAdminCannotBeRenounced;
5329    #[allow(
5330        non_camel_case_types,
5331        non_snake_case,
5332        clippy::pub_underscore_fields,
5333        clippy::style
5334    )]
5335    const _: () = {
5336        use alloy::sol_types as alloy_sol_types;
5337        #[doc(hidden)]
5338        #[allow(dead_code)]
5339        type UnderlyingSolTuple<'a> = ();
5340        #[doc(hidden)]
5341        type UnderlyingRustTuple<'a> = ();
5342        #[cfg(test)]
5343        #[allow(dead_code, unreachable_patterns)]
5344        fn _type_assertion(
5345            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5346        ) {
5347            match _t {
5348                alloy_sol_types::private::AssertTypeEq::<
5349                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5350                >(_) => {}
5351            }
5352        }
5353        #[automatically_derived]
5354        #[doc(hidden)]
5355        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
5356        for UnderlyingRustTuple<'_> {
5357            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
5358                ()
5359            }
5360        }
5361        #[automatically_derived]
5362        #[doc(hidden)]
5363        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5364        for DefaultAdminCannotBeRenounced {
5365            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5366                Self
5367            }
5368        }
5369        #[automatically_derived]
5370        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
5371            type Parameters<'a> = UnderlyingSolTuple<'a>;
5372            type Token<'a> = <Self::Parameters<
5373                'a,
5374            > as alloy_sol_types::SolType>::Token<'a>;
5375            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
5376            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
5377            #[inline]
5378            fn new<'a>(
5379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5380            ) -> Self {
5381                tuple.into()
5382            }
5383            #[inline]
5384            fn tokenize(&self) -> Self::Token<'_> {
5385                ()
5386            }
5387            #[inline]
5388            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5389                <Self::Parameters<
5390                    '_,
5391                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5392                    .map(Self::new)
5393            }
5394        }
5395    };
5396    #[derive(serde::Serialize, serde::Deserialize)]
5397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5398    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
5399```solidity
5400error DefaultAdminCannotBeRevoked();
5401```*/
5402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5403    #[derive(Clone)]
5404    pub struct DefaultAdminCannotBeRevoked;
5405    #[allow(
5406        non_camel_case_types,
5407        non_snake_case,
5408        clippy::pub_underscore_fields,
5409        clippy::style
5410    )]
5411    const _: () = {
5412        use alloy::sol_types as alloy_sol_types;
5413        #[doc(hidden)]
5414        #[allow(dead_code)]
5415        type UnderlyingSolTuple<'a> = ();
5416        #[doc(hidden)]
5417        type UnderlyingRustTuple<'a> = ();
5418        #[cfg(test)]
5419        #[allow(dead_code, unreachable_patterns)]
5420        fn _type_assertion(
5421            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5422        ) {
5423            match _t {
5424                alloy_sol_types::private::AssertTypeEq::<
5425                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5426                >(_) => {}
5427            }
5428        }
5429        #[automatically_derived]
5430        #[doc(hidden)]
5431        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
5432        for UnderlyingRustTuple<'_> {
5433            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
5434                ()
5435            }
5436        }
5437        #[automatically_derived]
5438        #[doc(hidden)]
5439        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5440        for DefaultAdminCannotBeRevoked {
5441            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5442                Self
5443            }
5444        }
5445        #[automatically_derived]
5446        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
5447            type Parameters<'a> = UnderlyingSolTuple<'a>;
5448            type Token<'a> = <Self::Parameters<
5449                'a,
5450            > as alloy_sol_types::SolType>::Token<'a>;
5451            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
5452            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
5453            #[inline]
5454            fn new<'a>(
5455                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5456            ) -> Self {
5457                tuple.into()
5458            }
5459            #[inline]
5460            fn tokenize(&self) -> Self::Token<'_> {
5461                ()
5462            }
5463            #[inline]
5464            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5465                <Self::Parameters<
5466                    '_,
5467                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5468                    .map(Self::new)
5469            }
5470        }
5471    };
5472    #[derive(serde::Serialize, serde::Deserialize)]
5473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5474    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
5475```solidity
5476error DelegateAmountTooSmall();
5477```*/
5478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5479    #[derive(Clone)]
5480    pub struct DelegateAmountTooSmall;
5481    #[allow(
5482        non_camel_case_types,
5483        non_snake_case,
5484        clippy::pub_underscore_fields,
5485        clippy::style
5486    )]
5487    const _: () = {
5488        use alloy::sol_types as alloy_sol_types;
5489        #[doc(hidden)]
5490        #[allow(dead_code)]
5491        type UnderlyingSolTuple<'a> = ();
5492        #[doc(hidden)]
5493        type UnderlyingRustTuple<'a> = ();
5494        #[cfg(test)]
5495        #[allow(dead_code, unreachable_patterns)]
5496        fn _type_assertion(
5497            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5498        ) {
5499            match _t {
5500                alloy_sol_types::private::AssertTypeEq::<
5501                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5502                >(_) => {}
5503            }
5504        }
5505        #[automatically_derived]
5506        #[doc(hidden)]
5507        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5508            fn from(value: DelegateAmountTooSmall) -> Self {
5509                ()
5510            }
5511        }
5512        #[automatically_derived]
5513        #[doc(hidden)]
5514        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5515            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5516                Self
5517            }
5518        }
5519        #[automatically_derived]
5520        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5521            type Parameters<'a> = UnderlyingSolTuple<'a>;
5522            type Token<'a> = <Self::Parameters<
5523                'a,
5524            > as alloy_sol_types::SolType>::Token<'a>;
5525            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5526            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5527            #[inline]
5528            fn new<'a>(
5529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5530            ) -> Self {
5531                tuple.into()
5532            }
5533            #[inline]
5534            fn tokenize(&self) -> Self::Token<'_> {
5535                ()
5536            }
5537            #[inline]
5538            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5539                <Self::Parameters<
5540                    '_,
5541                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5542                    .map(Self::new)
5543            }
5544        }
5545    };
5546    #[derive(serde::Serialize, serde::Deserialize)]
5547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5548    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5549```solidity
5550error DeprecatedFunction();
5551```*/
5552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5553    #[derive(Clone)]
5554    pub struct DeprecatedFunction;
5555    #[allow(
5556        non_camel_case_types,
5557        non_snake_case,
5558        clippy::pub_underscore_fields,
5559        clippy::style
5560    )]
5561    const _: () = {
5562        use alloy::sol_types as alloy_sol_types;
5563        #[doc(hidden)]
5564        #[allow(dead_code)]
5565        type UnderlyingSolTuple<'a> = ();
5566        #[doc(hidden)]
5567        type UnderlyingRustTuple<'a> = ();
5568        #[cfg(test)]
5569        #[allow(dead_code, unreachable_patterns)]
5570        fn _type_assertion(
5571            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5572        ) {
5573            match _t {
5574                alloy_sol_types::private::AssertTypeEq::<
5575                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5576                >(_) => {}
5577            }
5578        }
5579        #[automatically_derived]
5580        #[doc(hidden)]
5581        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5582            fn from(value: DeprecatedFunction) -> Self {
5583                ()
5584            }
5585        }
5586        #[automatically_derived]
5587        #[doc(hidden)]
5588        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5589            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5590                Self
5591            }
5592        }
5593        #[automatically_derived]
5594        impl alloy_sol_types::SolError for DeprecatedFunction {
5595            type Parameters<'a> = UnderlyingSolTuple<'a>;
5596            type Token<'a> = <Self::Parameters<
5597                'a,
5598            > as alloy_sol_types::SolType>::Token<'a>;
5599            const SIGNATURE: &'static str = "DeprecatedFunction()";
5600            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5601            #[inline]
5602            fn new<'a>(
5603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5604            ) -> Self {
5605                tuple.into()
5606            }
5607            #[inline]
5608            fn tokenize(&self) -> Self::Token<'_> {
5609                ()
5610            }
5611            #[inline]
5612            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5613                <Self::Parameters<
5614                    '_,
5615                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5616                    .map(Self::new)
5617            }
5618        }
5619    };
5620    #[derive(serde::Serialize, serde::Deserialize)]
5621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5622    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5623```solidity
5624error ERC1967InvalidImplementation(address implementation);
5625```*/
5626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5627    #[derive(Clone)]
5628    pub struct ERC1967InvalidImplementation {
5629        #[allow(missing_docs)]
5630        pub implementation: alloy::sol_types::private::Address,
5631    }
5632    #[allow(
5633        non_camel_case_types,
5634        non_snake_case,
5635        clippy::pub_underscore_fields,
5636        clippy::style
5637    )]
5638    const _: () = {
5639        use alloy::sol_types as alloy_sol_types;
5640        #[doc(hidden)]
5641        #[allow(dead_code)]
5642        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5643        #[doc(hidden)]
5644        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5645        #[cfg(test)]
5646        #[allow(dead_code, unreachable_patterns)]
5647        fn _type_assertion(
5648            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5649        ) {
5650            match _t {
5651                alloy_sol_types::private::AssertTypeEq::<
5652                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5653                >(_) => {}
5654            }
5655        }
5656        #[automatically_derived]
5657        #[doc(hidden)]
5658        impl ::core::convert::From<ERC1967InvalidImplementation>
5659        for UnderlyingRustTuple<'_> {
5660            fn from(value: ERC1967InvalidImplementation) -> Self {
5661                (value.implementation,)
5662            }
5663        }
5664        #[automatically_derived]
5665        #[doc(hidden)]
5666        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5667        for ERC1967InvalidImplementation {
5668            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5669                Self { implementation: tuple.0 }
5670            }
5671        }
5672        #[automatically_derived]
5673        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5674            type Parameters<'a> = UnderlyingSolTuple<'a>;
5675            type Token<'a> = <Self::Parameters<
5676                'a,
5677            > as alloy_sol_types::SolType>::Token<'a>;
5678            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5679            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5680            #[inline]
5681            fn new<'a>(
5682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5683            ) -> Self {
5684                tuple.into()
5685            }
5686            #[inline]
5687            fn tokenize(&self) -> Self::Token<'_> {
5688                (
5689                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5690                        &self.implementation,
5691                    ),
5692                )
5693            }
5694            #[inline]
5695            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5696                <Self::Parameters<
5697                    '_,
5698                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5699                    .map(Self::new)
5700            }
5701        }
5702    };
5703    #[derive(serde::Serialize, serde::Deserialize)]
5704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5705    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5706```solidity
5707error ERC1967NonPayable();
5708```*/
5709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5710    #[derive(Clone)]
5711    pub struct ERC1967NonPayable;
5712    #[allow(
5713        non_camel_case_types,
5714        non_snake_case,
5715        clippy::pub_underscore_fields,
5716        clippy::style
5717    )]
5718    const _: () = {
5719        use alloy::sol_types as alloy_sol_types;
5720        #[doc(hidden)]
5721        #[allow(dead_code)]
5722        type UnderlyingSolTuple<'a> = ();
5723        #[doc(hidden)]
5724        type UnderlyingRustTuple<'a> = ();
5725        #[cfg(test)]
5726        #[allow(dead_code, unreachable_patterns)]
5727        fn _type_assertion(
5728            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5729        ) {
5730            match _t {
5731                alloy_sol_types::private::AssertTypeEq::<
5732                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5733                >(_) => {}
5734            }
5735        }
5736        #[automatically_derived]
5737        #[doc(hidden)]
5738        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5739            fn from(value: ERC1967NonPayable) -> Self {
5740                ()
5741            }
5742        }
5743        #[automatically_derived]
5744        #[doc(hidden)]
5745        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5746            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5747                Self
5748            }
5749        }
5750        #[automatically_derived]
5751        impl alloy_sol_types::SolError for ERC1967NonPayable {
5752            type Parameters<'a> = UnderlyingSolTuple<'a>;
5753            type Token<'a> = <Self::Parameters<
5754                'a,
5755            > as alloy_sol_types::SolType>::Token<'a>;
5756            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5757            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5758            #[inline]
5759            fn new<'a>(
5760                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5761            ) -> Self {
5762                tuple.into()
5763            }
5764            #[inline]
5765            fn tokenize(&self) -> Self::Token<'_> {
5766                ()
5767            }
5768            #[inline]
5769            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5770                <Self::Parameters<
5771                    '_,
5772                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5773                    .map(Self::new)
5774            }
5775        }
5776    };
5777    #[derive(serde::Serialize, serde::Deserialize)]
5778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5779    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5780```solidity
5781error EnforcedPause();
5782```*/
5783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5784    #[derive(Clone)]
5785    pub struct EnforcedPause;
5786    #[allow(
5787        non_camel_case_types,
5788        non_snake_case,
5789        clippy::pub_underscore_fields,
5790        clippy::style
5791    )]
5792    const _: () = {
5793        use alloy::sol_types as alloy_sol_types;
5794        #[doc(hidden)]
5795        #[allow(dead_code)]
5796        type UnderlyingSolTuple<'a> = ();
5797        #[doc(hidden)]
5798        type UnderlyingRustTuple<'a> = ();
5799        #[cfg(test)]
5800        #[allow(dead_code, unreachable_patterns)]
5801        fn _type_assertion(
5802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5803        ) {
5804            match _t {
5805                alloy_sol_types::private::AssertTypeEq::<
5806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5807                >(_) => {}
5808            }
5809        }
5810        #[automatically_derived]
5811        #[doc(hidden)]
5812        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5813            fn from(value: EnforcedPause) -> Self {
5814                ()
5815            }
5816        }
5817        #[automatically_derived]
5818        #[doc(hidden)]
5819        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5820            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5821                Self
5822            }
5823        }
5824        #[automatically_derived]
5825        impl alloy_sol_types::SolError for EnforcedPause {
5826            type Parameters<'a> = UnderlyingSolTuple<'a>;
5827            type Token<'a> = <Self::Parameters<
5828                'a,
5829            > as alloy_sol_types::SolType>::Token<'a>;
5830            const SIGNATURE: &'static str = "EnforcedPause()";
5831            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
5832            #[inline]
5833            fn new<'a>(
5834                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5835            ) -> Self {
5836                tuple.into()
5837            }
5838            #[inline]
5839            fn tokenize(&self) -> Self::Token<'_> {
5840                ()
5841            }
5842            #[inline]
5843            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5844                <Self::Parameters<
5845                    '_,
5846                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5847                    .map(Self::new)
5848            }
5849        }
5850    };
5851    #[derive(serde::Serialize, serde::Deserialize)]
5852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5853    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
5854```solidity
5855error ExitEscrowPeriodInvalid();
5856```*/
5857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5858    #[derive(Clone)]
5859    pub struct ExitEscrowPeriodInvalid;
5860    #[allow(
5861        non_camel_case_types,
5862        non_snake_case,
5863        clippy::pub_underscore_fields,
5864        clippy::style
5865    )]
5866    const _: () = {
5867        use alloy::sol_types as alloy_sol_types;
5868        #[doc(hidden)]
5869        #[allow(dead_code)]
5870        type UnderlyingSolTuple<'a> = ();
5871        #[doc(hidden)]
5872        type UnderlyingRustTuple<'a> = ();
5873        #[cfg(test)]
5874        #[allow(dead_code, unreachable_patterns)]
5875        fn _type_assertion(
5876            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5877        ) {
5878            match _t {
5879                alloy_sol_types::private::AssertTypeEq::<
5880                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5881                >(_) => {}
5882            }
5883        }
5884        #[automatically_derived]
5885        #[doc(hidden)]
5886        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
5887            fn from(value: ExitEscrowPeriodInvalid) -> Self {
5888                ()
5889            }
5890        }
5891        #[automatically_derived]
5892        #[doc(hidden)]
5893        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
5894            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5895                Self
5896            }
5897        }
5898        #[automatically_derived]
5899        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
5900            type Parameters<'a> = UnderlyingSolTuple<'a>;
5901            type Token<'a> = <Self::Parameters<
5902                'a,
5903            > as alloy_sol_types::SolType>::Token<'a>;
5904            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
5905            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
5906            #[inline]
5907            fn new<'a>(
5908                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5909            ) -> Self {
5910                tuple.into()
5911            }
5912            #[inline]
5913            fn tokenize(&self) -> Self::Token<'_> {
5914                ()
5915            }
5916            #[inline]
5917            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5918                <Self::Parameters<
5919                    '_,
5920                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5921                    .map(Self::new)
5922            }
5923        }
5924    };
5925    #[derive(serde::Serialize, serde::Deserialize)]
5926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5927    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
5928```solidity
5929error ExpectedPause();
5930```*/
5931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5932    #[derive(Clone)]
5933    pub struct ExpectedPause;
5934    #[allow(
5935        non_camel_case_types,
5936        non_snake_case,
5937        clippy::pub_underscore_fields,
5938        clippy::style
5939    )]
5940    const _: () = {
5941        use alloy::sol_types as alloy_sol_types;
5942        #[doc(hidden)]
5943        #[allow(dead_code)]
5944        type UnderlyingSolTuple<'a> = ();
5945        #[doc(hidden)]
5946        type UnderlyingRustTuple<'a> = ();
5947        #[cfg(test)]
5948        #[allow(dead_code, unreachable_patterns)]
5949        fn _type_assertion(
5950            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5951        ) {
5952            match _t {
5953                alloy_sol_types::private::AssertTypeEq::<
5954                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5955                >(_) => {}
5956            }
5957        }
5958        #[automatically_derived]
5959        #[doc(hidden)]
5960        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
5961            fn from(value: ExpectedPause) -> Self {
5962                ()
5963            }
5964        }
5965        #[automatically_derived]
5966        #[doc(hidden)]
5967        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
5968            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5969                Self
5970            }
5971        }
5972        #[automatically_derived]
5973        impl alloy_sol_types::SolError for ExpectedPause {
5974            type Parameters<'a> = UnderlyingSolTuple<'a>;
5975            type Token<'a> = <Self::Parameters<
5976                'a,
5977            > as alloy_sol_types::SolType>::Token<'a>;
5978            const SIGNATURE: &'static str = "ExpectedPause()";
5979            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
5980            #[inline]
5981            fn new<'a>(
5982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5983            ) -> Self {
5984                tuple.into()
5985            }
5986            #[inline]
5987            fn tokenize(&self) -> Self::Token<'_> {
5988                ()
5989            }
5990            #[inline]
5991            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5992                <Self::Parameters<
5993                    '_,
5994                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5995                    .map(Self::new)
5996            }
5997        }
5998    };
5999    #[derive(serde::Serialize, serde::Deserialize)]
6000    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6001    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6002```solidity
6003error FailedInnerCall();
6004```*/
6005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6006    #[derive(Clone)]
6007    pub struct FailedInnerCall;
6008    #[allow(
6009        non_camel_case_types,
6010        non_snake_case,
6011        clippy::pub_underscore_fields,
6012        clippy::style
6013    )]
6014    const _: () = {
6015        use alloy::sol_types as alloy_sol_types;
6016        #[doc(hidden)]
6017        #[allow(dead_code)]
6018        type UnderlyingSolTuple<'a> = ();
6019        #[doc(hidden)]
6020        type UnderlyingRustTuple<'a> = ();
6021        #[cfg(test)]
6022        #[allow(dead_code, unreachable_patterns)]
6023        fn _type_assertion(
6024            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6025        ) {
6026            match _t {
6027                alloy_sol_types::private::AssertTypeEq::<
6028                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6029                >(_) => {}
6030            }
6031        }
6032        #[automatically_derived]
6033        #[doc(hidden)]
6034        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6035            fn from(value: FailedInnerCall) -> Self {
6036                ()
6037            }
6038        }
6039        #[automatically_derived]
6040        #[doc(hidden)]
6041        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6042            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6043                Self
6044            }
6045        }
6046        #[automatically_derived]
6047        impl alloy_sol_types::SolError for FailedInnerCall {
6048            type Parameters<'a> = UnderlyingSolTuple<'a>;
6049            type Token<'a> = <Self::Parameters<
6050                'a,
6051            > as alloy_sol_types::SolType>::Token<'a>;
6052            const SIGNATURE: &'static str = "FailedInnerCall()";
6053            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6054            #[inline]
6055            fn new<'a>(
6056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6057            ) -> Self {
6058                tuple.into()
6059            }
6060            #[inline]
6061            fn tokenize(&self) -> Self::Token<'_> {
6062                ()
6063            }
6064            #[inline]
6065            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6066                <Self::Parameters<
6067                    '_,
6068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6069                    .map(Self::new)
6070            }
6071        }
6072    };
6073    #[derive(serde::Serialize, serde::Deserialize)]
6074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6075    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
6076```solidity
6077error InitialActiveStakeExceedsBalance();
6078```*/
6079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6080    #[derive(Clone)]
6081    pub struct InitialActiveStakeExceedsBalance;
6082    #[allow(
6083        non_camel_case_types,
6084        non_snake_case,
6085        clippy::pub_underscore_fields,
6086        clippy::style
6087    )]
6088    const _: () = {
6089        use alloy::sol_types as alloy_sol_types;
6090        #[doc(hidden)]
6091        #[allow(dead_code)]
6092        type UnderlyingSolTuple<'a> = ();
6093        #[doc(hidden)]
6094        type UnderlyingRustTuple<'a> = ();
6095        #[cfg(test)]
6096        #[allow(dead_code, unreachable_patterns)]
6097        fn _type_assertion(
6098            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6099        ) {
6100            match _t {
6101                alloy_sol_types::private::AssertTypeEq::<
6102                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6103                >(_) => {}
6104            }
6105        }
6106        #[automatically_derived]
6107        #[doc(hidden)]
6108        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
6109        for UnderlyingRustTuple<'_> {
6110            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
6111                ()
6112            }
6113        }
6114        #[automatically_derived]
6115        #[doc(hidden)]
6116        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6117        for InitialActiveStakeExceedsBalance {
6118            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6119                Self
6120            }
6121        }
6122        #[automatically_derived]
6123        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
6124            type Parameters<'a> = UnderlyingSolTuple<'a>;
6125            type Token<'a> = <Self::Parameters<
6126                'a,
6127            > as alloy_sol_types::SolType>::Token<'a>;
6128            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
6129            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
6130            #[inline]
6131            fn new<'a>(
6132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6133            ) -> Self {
6134                tuple.into()
6135            }
6136            #[inline]
6137            fn tokenize(&self) -> Self::Token<'_> {
6138                ()
6139            }
6140            #[inline]
6141            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6142                <Self::Parameters<
6143                    '_,
6144                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6145                    .map(Self::new)
6146            }
6147        }
6148    };
6149    #[derive(serde::Serialize, serde::Deserialize)]
6150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6151    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
6152```solidity
6153error InsufficientAllowance(uint256, uint256);
6154```*/
6155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6156    #[derive(Clone)]
6157    pub struct InsufficientAllowance {
6158        #[allow(missing_docs)]
6159        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6160        #[allow(missing_docs)]
6161        pub _1: alloy::sol_types::private::primitives::aliases::U256,
6162    }
6163    #[allow(
6164        non_camel_case_types,
6165        non_snake_case,
6166        clippy::pub_underscore_fields,
6167        clippy::style
6168    )]
6169    const _: () = {
6170        use alloy::sol_types as alloy_sol_types;
6171        #[doc(hidden)]
6172        #[allow(dead_code)]
6173        type UnderlyingSolTuple<'a> = (
6174            alloy::sol_types::sol_data::Uint<256>,
6175            alloy::sol_types::sol_data::Uint<256>,
6176        );
6177        #[doc(hidden)]
6178        type UnderlyingRustTuple<'a> = (
6179            alloy::sol_types::private::primitives::aliases::U256,
6180            alloy::sol_types::private::primitives::aliases::U256,
6181        );
6182        #[cfg(test)]
6183        #[allow(dead_code, unreachable_patterns)]
6184        fn _type_assertion(
6185            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6186        ) {
6187            match _t {
6188                alloy_sol_types::private::AssertTypeEq::<
6189                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6190                >(_) => {}
6191            }
6192        }
6193        #[automatically_derived]
6194        #[doc(hidden)]
6195        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
6196            fn from(value: InsufficientAllowance) -> Self {
6197                (value._0, value._1)
6198            }
6199        }
6200        #[automatically_derived]
6201        #[doc(hidden)]
6202        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
6203            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6204                Self { _0: tuple.0, _1: tuple.1 }
6205            }
6206        }
6207        #[automatically_derived]
6208        impl alloy_sol_types::SolError for InsufficientAllowance {
6209            type Parameters<'a> = UnderlyingSolTuple<'a>;
6210            type Token<'a> = <Self::Parameters<
6211                'a,
6212            > as alloy_sol_types::SolType>::Token<'a>;
6213            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
6214            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
6215            #[inline]
6216            fn new<'a>(
6217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6218            ) -> Self {
6219                tuple.into()
6220            }
6221            #[inline]
6222            fn tokenize(&self) -> Self::Token<'_> {
6223                (
6224                    <alloy::sol_types::sol_data::Uint<
6225                        256,
6226                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6227                    <alloy::sol_types::sol_data::Uint<
6228                        256,
6229                    > as alloy_sol_types::SolType>::tokenize(&self._1),
6230                )
6231            }
6232            #[inline]
6233            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6234                <Self::Parameters<
6235                    '_,
6236                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6237                    .map(Self::new)
6238            }
6239        }
6240    };
6241    #[derive(serde::Serialize, serde::Deserialize)]
6242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6243    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
6244```solidity
6245error InsufficientBalance(uint256);
6246```*/
6247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6248    #[derive(Clone)]
6249    pub struct InsufficientBalance(
6250        pub alloy::sol_types::private::primitives::aliases::U256,
6251    );
6252    #[allow(
6253        non_camel_case_types,
6254        non_snake_case,
6255        clippy::pub_underscore_fields,
6256        clippy::style
6257    )]
6258    const _: () = {
6259        use alloy::sol_types as alloy_sol_types;
6260        #[doc(hidden)]
6261        #[allow(dead_code)]
6262        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6263        #[doc(hidden)]
6264        type UnderlyingRustTuple<'a> = (
6265            alloy::sol_types::private::primitives::aliases::U256,
6266        );
6267        #[cfg(test)]
6268        #[allow(dead_code, unreachable_patterns)]
6269        fn _type_assertion(
6270            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6271        ) {
6272            match _t {
6273                alloy_sol_types::private::AssertTypeEq::<
6274                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6275                >(_) => {}
6276            }
6277        }
6278        #[automatically_derived]
6279        #[doc(hidden)]
6280        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
6281            fn from(value: InsufficientBalance) -> Self {
6282                (value.0,)
6283            }
6284        }
6285        #[automatically_derived]
6286        #[doc(hidden)]
6287        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
6288            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6289                Self(tuple.0)
6290            }
6291        }
6292        #[automatically_derived]
6293        impl alloy_sol_types::SolError for InsufficientBalance {
6294            type Parameters<'a> = UnderlyingSolTuple<'a>;
6295            type Token<'a> = <Self::Parameters<
6296                'a,
6297            > as alloy_sol_types::SolType>::Token<'a>;
6298            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
6299            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
6300            #[inline]
6301            fn new<'a>(
6302                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6303            ) -> Self {
6304                tuple.into()
6305            }
6306            #[inline]
6307            fn tokenize(&self) -> Self::Token<'_> {
6308                (
6309                    <alloy::sol_types::sol_data::Uint<
6310                        256,
6311                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6312                )
6313            }
6314            #[inline]
6315            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6316                <Self::Parameters<
6317                    '_,
6318                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6319                    .map(Self::new)
6320            }
6321        }
6322    };
6323    #[derive(serde::Serialize, serde::Deserialize)]
6324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6325    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
6326```solidity
6327error InvalidCommission();
6328```*/
6329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6330    #[derive(Clone)]
6331    pub struct InvalidCommission;
6332    #[allow(
6333        non_camel_case_types,
6334        non_snake_case,
6335        clippy::pub_underscore_fields,
6336        clippy::style
6337    )]
6338    const _: () = {
6339        use alloy::sol_types as alloy_sol_types;
6340        #[doc(hidden)]
6341        #[allow(dead_code)]
6342        type UnderlyingSolTuple<'a> = ();
6343        #[doc(hidden)]
6344        type UnderlyingRustTuple<'a> = ();
6345        #[cfg(test)]
6346        #[allow(dead_code, unreachable_patterns)]
6347        fn _type_assertion(
6348            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6349        ) {
6350            match _t {
6351                alloy_sol_types::private::AssertTypeEq::<
6352                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6353                >(_) => {}
6354            }
6355        }
6356        #[automatically_derived]
6357        #[doc(hidden)]
6358        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
6359            fn from(value: InvalidCommission) -> Self {
6360                ()
6361            }
6362        }
6363        #[automatically_derived]
6364        #[doc(hidden)]
6365        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
6366            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6367                Self
6368            }
6369        }
6370        #[automatically_derived]
6371        impl alloy_sol_types::SolError for InvalidCommission {
6372            type Parameters<'a> = UnderlyingSolTuple<'a>;
6373            type Token<'a> = <Self::Parameters<
6374                'a,
6375            > as alloy_sol_types::SolType>::Token<'a>;
6376            const SIGNATURE: &'static str = "InvalidCommission()";
6377            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
6378            #[inline]
6379            fn new<'a>(
6380                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6381            ) -> Self {
6382                tuple.into()
6383            }
6384            #[inline]
6385            fn tokenize(&self) -> Self::Token<'_> {
6386                ()
6387            }
6388            #[inline]
6389            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6390                <Self::Parameters<
6391                    '_,
6392                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6393                    .map(Self::new)
6394            }
6395        }
6396    };
6397    #[derive(serde::Serialize, serde::Deserialize)]
6398    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6399    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
6400```solidity
6401error InvalidG1();
6402```*/
6403    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6404    #[derive(Clone)]
6405    pub struct InvalidG1;
6406    #[allow(
6407        non_camel_case_types,
6408        non_snake_case,
6409        clippy::pub_underscore_fields,
6410        clippy::style
6411    )]
6412    const _: () = {
6413        use alloy::sol_types as alloy_sol_types;
6414        #[doc(hidden)]
6415        #[allow(dead_code)]
6416        type UnderlyingSolTuple<'a> = ();
6417        #[doc(hidden)]
6418        type UnderlyingRustTuple<'a> = ();
6419        #[cfg(test)]
6420        #[allow(dead_code, unreachable_patterns)]
6421        fn _type_assertion(
6422            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6423        ) {
6424            match _t {
6425                alloy_sol_types::private::AssertTypeEq::<
6426                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6427                >(_) => {}
6428            }
6429        }
6430        #[automatically_derived]
6431        #[doc(hidden)]
6432        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
6433            fn from(value: InvalidG1) -> Self {
6434                ()
6435            }
6436        }
6437        #[automatically_derived]
6438        #[doc(hidden)]
6439        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
6440            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6441                Self
6442            }
6443        }
6444        #[automatically_derived]
6445        impl alloy_sol_types::SolError for InvalidG1 {
6446            type Parameters<'a> = UnderlyingSolTuple<'a>;
6447            type Token<'a> = <Self::Parameters<
6448                'a,
6449            > as alloy_sol_types::SolType>::Token<'a>;
6450            const SIGNATURE: &'static str = "InvalidG1()";
6451            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
6452            #[inline]
6453            fn new<'a>(
6454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6455            ) -> Self {
6456                tuple.into()
6457            }
6458            #[inline]
6459            fn tokenize(&self) -> Self::Token<'_> {
6460                ()
6461            }
6462            #[inline]
6463            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6464                <Self::Parameters<
6465                    '_,
6466                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6467                    .map(Self::new)
6468            }
6469        }
6470    };
6471    #[derive(serde::Serialize, serde::Deserialize)]
6472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6473    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6474```solidity
6475error InvalidInitialization();
6476```*/
6477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6478    #[derive(Clone)]
6479    pub struct InvalidInitialization;
6480    #[allow(
6481        non_camel_case_types,
6482        non_snake_case,
6483        clippy::pub_underscore_fields,
6484        clippy::style
6485    )]
6486    const _: () = {
6487        use alloy::sol_types as alloy_sol_types;
6488        #[doc(hidden)]
6489        #[allow(dead_code)]
6490        type UnderlyingSolTuple<'a> = ();
6491        #[doc(hidden)]
6492        type UnderlyingRustTuple<'a> = ();
6493        #[cfg(test)]
6494        #[allow(dead_code, unreachable_patterns)]
6495        fn _type_assertion(
6496            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6497        ) {
6498            match _t {
6499                alloy_sol_types::private::AssertTypeEq::<
6500                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6501                >(_) => {}
6502            }
6503        }
6504        #[automatically_derived]
6505        #[doc(hidden)]
6506        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6507            fn from(value: InvalidInitialization) -> Self {
6508                ()
6509            }
6510        }
6511        #[automatically_derived]
6512        #[doc(hidden)]
6513        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6514            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6515                Self
6516            }
6517        }
6518        #[automatically_derived]
6519        impl alloy_sol_types::SolError for InvalidInitialization {
6520            type Parameters<'a> = UnderlyingSolTuple<'a>;
6521            type Token<'a> = <Self::Parameters<
6522                'a,
6523            > as alloy_sol_types::SolType>::Token<'a>;
6524            const SIGNATURE: &'static str = "InvalidInitialization()";
6525            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6526            #[inline]
6527            fn new<'a>(
6528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6529            ) -> Self {
6530                tuple.into()
6531            }
6532            #[inline]
6533            fn tokenize(&self) -> Self::Token<'_> {
6534                ()
6535            }
6536            #[inline]
6537            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6538                <Self::Parameters<
6539                    '_,
6540                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6541                    .map(Self::new)
6542            }
6543        }
6544    };
6545    #[derive(serde::Serialize, serde::Deserialize)]
6546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6547    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6548```solidity
6549error InvalidMetadataUriLength();
6550```*/
6551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6552    #[derive(Clone)]
6553    pub struct InvalidMetadataUriLength;
6554    #[allow(
6555        non_camel_case_types,
6556        non_snake_case,
6557        clippy::pub_underscore_fields,
6558        clippy::style
6559    )]
6560    const _: () = {
6561        use alloy::sol_types as alloy_sol_types;
6562        #[doc(hidden)]
6563        #[allow(dead_code)]
6564        type UnderlyingSolTuple<'a> = ();
6565        #[doc(hidden)]
6566        type UnderlyingRustTuple<'a> = ();
6567        #[cfg(test)]
6568        #[allow(dead_code, unreachable_patterns)]
6569        fn _type_assertion(
6570            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6571        ) {
6572            match _t {
6573                alloy_sol_types::private::AssertTypeEq::<
6574                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6575                >(_) => {}
6576            }
6577        }
6578        #[automatically_derived]
6579        #[doc(hidden)]
6580        impl ::core::convert::From<InvalidMetadataUriLength>
6581        for UnderlyingRustTuple<'_> {
6582            fn from(value: InvalidMetadataUriLength) -> Self {
6583                ()
6584            }
6585        }
6586        #[automatically_derived]
6587        #[doc(hidden)]
6588        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6589        for InvalidMetadataUriLength {
6590            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6591                Self
6592            }
6593        }
6594        #[automatically_derived]
6595        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6596            type Parameters<'a> = UnderlyingSolTuple<'a>;
6597            type Token<'a> = <Self::Parameters<
6598                'a,
6599            > as alloy_sol_types::SolType>::Token<'a>;
6600            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6601            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6602            #[inline]
6603            fn new<'a>(
6604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6605            ) -> Self {
6606                tuple.into()
6607            }
6608            #[inline]
6609            fn tokenize(&self) -> Self::Token<'_> {
6610                ()
6611            }
6612            #[inline]
6613            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6614                <Self::Parameters<
6615                    '_,
6616                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6617                    .map(Self::new)
6618            }
6619        }
6620    };
6621    #[derive(serde::Serialize, serde::Deserialize)]
6622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6623    /**Custom error with signature `InvalidP2pAddr()` and selector `0x79790d7c`.
6624```solidity
6625error InvalidP2pAddr();
6626```*/
6627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6628    #[derive(Clone)]
6629    pub struct InvalidP2pAddr;
6630    #[allow(
6631        non_camel_case_types,
6632        non_snake_case,
6633        clippy::pub_underscore_fields,
6634        clippy::style
6635    )]
6636    const _: () = {
6637        use alloy::sol_types as alloy_sol_types;
6638        #[doc(hidden)]
6639        #[allow(dead_code)]
6640        type UnderlyingSolTuple<'a> = ();
6641        #[doc(hidden)]
6642        type UnderlyingRustTuple<'a> = ();
6643        #[cfg(test)]
6644        #[allow(dead_code, unreachable_patterns)]
6645        fn _type_assertion(
6646            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6647        ) {
6648            match _t {
6649                alloy_sol_types::private::AssertTypeEq::<
6650                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6651                >(_) => {}
6652            }
6653        }
6654        #[automatically_derived]
6655        #[doc(hidden)]
6656        impl ::core::convert::From<InvalidP2pAddr> for UnderlyingRustTuple<'_> {
6657            fn from(value: InvalidP2pAddr) -> Self {
6658                ()
6659            }
6660        }
6661        #[automatically_derived]
6662        #[doc(hidden)]
6663        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidP2pAddr {
6664            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6665                Self
6666            }
6667        }
6668        #[automatically_derived]
6669        impl alloy_sol_types::SolError for InvalidP2pAddr {
6670            type Parameters<'a> = UnderlyingSolTuple<'a>;
6671            type Token<'a> = <Self::Parameters<
6672                'a,
6673            > as alloy_sol_types::SolType>::Token<'a>;
6674            const SIGNATURE: &'static str = "InvalidP2pAddr()";
6675            const SELECTOR: [u8; 4] = [121u8, 121u8, 13u8, 124u8];
6676            #[inline]
6677            fn new<'a>(
6678                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6679            ) -> Self {
6680                tuple.into()
6681            }
6682            #[inline]
6683            fn tokenize(&self) -> Self::Token<'_> {
6684                ()
6685            }
6686            #[inline]
6687            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6688                <Self::Parameters<
6689                    '_,
6690                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6691                    .map(Self::new)
6692            }
6693        }
6694    };
6695    #[derive(serde::Serialize, serde::Deserialize)]
6696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6697    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6698```solidity
6699error InvalidRateLimitParameters();
6700```*/
6701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6702    #[derive(Clone)]
6703    pub struct InvalidRateLimitParameters;
6704    #[allow(
6705        non_camel_case_types,
6706        non_snake_case,
6707        clippy::pub_underscore_fields,
6708        clippy::style
6709    )]
6710    const _: () = {
6711        use alloy::sol_types as alloy_sol_types;
6712        #[doc(hidden)]
6713        #[allow(dead_code)]
6714        type UnderlyingSolTuple<'a> = ();
6715        #[doc(hidden)]
6716        type UnderlyingRustTuple<'a> = ();
6717        #[cfg(test)]
6718        #[allow(dead_code, unreachable_patterns)]
6719        fn _type_assertion(
6720            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6721        ) {
6722            match _t {
6723                alloy_sol_types::private::AssertTypeEq::<
6724                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6725                >(_) => {}
6726            }
6727        }
6728        #[automatically_derived]
6729        #[doc(hidden)]
6730        impl ::core::convert::From<InvalidRateLimitParameters>
6731        for UnderlyingRustTuple<'_> {
6732            fn from(value: InvalidRateLimitParameters) -> Self {
6733                ()
6734            }
6735        }
6736        #[automatically_derived]
6737        #[doc(hidden)]
6738        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6739        for InvalidRateLimitParameters {
6740            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6741                Self
6742            }
6743        }
6744        #[automatically_derived]
6745        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6746            type Parameters<'a> = UnderlyingSolTuple<'a>;
6747            type Token<'a> = <Self::Parameters<
6748                'a,
6749            > as alloy_sol_types::SolType>::Token<'a>;
6750            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6751            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6752            #[inline]
6753            fn new<'a>(
6754                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6755            ) -> Self {
6756                tuple.into()
6757            }
6758            #[inline]
6759            fn tokenize(&self) -> Self::Token<'_> {
6760                ()
6761            }
6762            #[inline]
6763            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6764                <Self::Parameters<
6765                    '_,
6766                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6767                    .map(Self::new)
6768            }
6769        }
6770    };
6771    #[derive(serde::Serialize, serde::Deserialize)]
6772    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6773    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6774```solidity
6775error InvalidSchnorrSig();
6776```*/
6777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6778    #[derive(Clone)]
6779    pub struct InvalidSchnorrSig;
6780    #[allow(
6781        non_camel_case_types,
6782        non_snake_case,
6783        clippy::pub_underscore_fields,
6784        clippy::style
6785    )]
6786    const _: () = {
6787        use alloy::sol_types as alloy_sol_types;
6788        #[doc(hidden)]
6789        #[allow(dead_code)]
6790        type UnderlyingSolTuple<'a> = ();
6791        #[doc(hidden)]
6792        type UnderlyingRustTuple<'a> = ();
6793        #[cfg(test)]
6794        #[allow(dead_code, unreachable_patterns)]
6795        fn _type_assertion(
6796            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6797        ) {
6798            match _t {
6799                alloy_sol_types::private::AssertTypeEq::<
6800                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6801                >(_) => {}
6802            }
6803        }
6804        #[automatically_derived]
6805        #[doc(hidden)]
6806        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6807            fn from(value: InvalidSchnorrSig) -> Self {
6808                ()
6809            }
6810        }
6811        #[automatically_derived]
6812        #[doc(hidden)]
6813        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6814            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6815                Self
6816            }
6817        }
6818        #[automatically_derived]
6819        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6820            type Parameters<'a> = UnderlyingSolTuple<'a>;
6821            type Token<'a> = <Self::Parameters<
6822                'a,
6823            > as alloy_sol_types::SolType>::Token<'a>;
6824            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6825            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
6826            #[inline]
6827            fn new<'a>(
6828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6829            ) -> Self {
6830                tuple.into()
6831            }
6832            #[inline]
6833            fn tokenize(&self) -> Self::Token<'_> {
6834                ()
6835            }
6836            #[inline]
6837            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6838                <Self::Parameters<
6839                    '_,
6840                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6841                    .map(Self::new)
6842            }
6843        }
6844    };
6845    #[derive(serde::Serialize, serde::Deserialize)]
6846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6847    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
6848```solidity
6849error InvalidSchnorrVK();
6850```*/
6851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6852    #[derive(Clone)]
6853    pub struct InvalidSchnorrVK;
6854    #[allow(
6855        non_camel_case_types,
6856        non_snake_case,
6857        clippy::pub_underscore_fields,
6858        clippy::style
6859    )]
6860    const _: () = {
6861        use alloy::sol_types as alloy_sol_types;
6862        #[doc(hidden)]
6863        #[allow(dead_code)]
6864        type UnderlyingSolTuple<'a> = ();
6865        #[doc(hidden)]
6866        type UnderlyingRustTuple<'a> = ();
6867        #[cfg(test)]
6868        #[allow(dead_code, unreachable_patterns)]
6869        fn _type_assertion(
6870            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6871        ) {
6872            match _t {
6873                alloy_sol_types::private::AssertTypeEq::<
6874                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6875                >(_) => {}
6876            }
6877        }
6878        #[automatically_derived]
6879        #[doc(hidden)]
6880        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
6881            fn from(value: InvalidSchnorrVK) -> Self {
6882                ()
6883            }
6884        }
6885        #[automatically_derived]
6886        #[doc(hidden)]
6887        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
6888            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6889                Self
6890            }
6891        }
6892        #[automatically_derived]
6893        impl alloy_sol_types::SolError for InvalidSchnorrVK {
6894            type Parameters<'a> = UnderlyingSolTuple<'a>;
6895            type Token<'a> = <Self::Parameters<
6896                'a,
6897            > as alloy_sol_types::SolType>::Token<'a>;
6898            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
6899            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
6900            #[inline]
6901            fn new<'a>(
6902                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6903            ) -> Self {
6904                tuple.into()
6905            }
6906            #[inline]
6907            fn tokenize(&self) -> Self::Token<'_> {
6908                ()
6909            }
6910            #[inline]
6911            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6912                <Self::Parameters<
6913                    '_,
6914                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6915                    .map(Self::new)
6916            }
6917        }
6918    };
6919    #[derive(serde::Serialize, serde::Deserialize)]
6920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6921    /**Custom error with signature `InvalidX25519Key()` and selector `0x3e4ba13f`.
6922```solidity
6923error InvalidX25519Key();
6924```*/
6925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6926    #[derive(Clone)]
6927    pub struct InvalidX25519Key;
6928    #[allow(
6929        non_camel_case_types,
6930        non_snake_case,
6931        clippy::pub_underscore_fields,
6932        clippy::style
6933    )]
6934    const _: () = {
6935        use alloy::sol_types as alloy_sol_types;
6936        #[doc(hidden)]
6937        #[allow(dead_code)]
6938        type UnderlyingSolTuple<'a> = ();
6939        #[doc(hidden)]
6940        type UnderlyingRustTuple<'a> = ();
6941        #[cfg(test)]
6942        #[allow(dead_code, unreachable_patterns)]
6943        fn _type_assertion(
6944            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6945        ) {
6946            match _t {
6947                alloy_sol_types::private::AssertTypeEq::<
6948                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6949                >(_) => {}
6950            }
6951        }
6952        #[automatically_derived]
6953        #[doc(hidden)]
6954        impl ::core::convert::From<InvalidX25519Key> for UnderlyingRustTuple<'_> {
6955            fn from(value: InvalidX25519Key) -> Self {
6956                ()
6957            }
6958        }
6959        #[automatically_derived]
6960        #[doc(hidden)]
6961        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidX25519Key {
6962            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6963                Self
6964            }
6965        }
6966        #[automatically_derived]
6967        impl alloy_sol_types::SolError for InvalidX25519Key {
6968            type Parameters<'a> = UnderlyingSolTuple<'a>;
6969            type Token<'a> = <Self::Parameters<
6970                'a,
6971            > as alloy_sol_types::SolType>::Token<'a>;
6972            const SIGNATURE: &'static str = "InvalidX25519Key()";
6973            const SELECTOR: [u8; 4] = [62u8, 75u8, 161u8, 63u8];
6974            #[inline]
6975            fn new<'a>(
6976                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6977            ) -> Self {
6978                tuple.into()
6979            }
6980            #[inline]
6981            fn tokenize(&self) -> Self::Token<'_> {
6982                ()
6983            }
6984            #[inline]
6985            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6986                <Self::Parameters<
6987                    '_,
6988                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6989                    .map(Self::new)
6990            }
6991        }
6992    };
6993    #[derive(serde::Serialize, serde::Deserialize)]
6994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6995    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
6996```solidity
6997error MinDelegateAmountTooSmall();
6998```*/
6999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7000    #[derive(Clone)]
7001    pub struct MinDelegateAmountTooSmall;
7002    #[allow(
7003        non_camel_case_types,
7004        non_snake_case,
7005        clippy::pub_underscore_fields,
7006        clippy::style
7007    )]
7008    const _: () = {
7009        use alloy::sol_types as alloy_sol_types;
7010        #[doc(hidden)]
7011        #[allow(dead_code)]
7012        type UnderlyingSolTuple<'a> = ();
7013        #[doc(hidden)]
7014        type UnderlyingRustTuple<'a> = ();
7015        #[cfg(test)]
7016        #[allow(dead_code, unreachable_patterns)]
7017        fn _type_assertion(
7018            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7019        ) {
7020            match _t {
7021                alloy_sol_types::private::AssertTypeEq::<
7022                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7023                >(_) => {}
7024            }
7025        }
7026        #[automatically_derived]
7027        #[doc(hidden)]
7028        impl ::core::convert::From<MinDelegateAmountTooSmall>
7029        for UnderlyingRustTuple<'_> {
7030            fn from(value: MinDelegateAmountTooSmall) -> Self {
7031                ()
7032            }
7033        }
7034        #[automatically_derived]
7035        #[doc(hidden)]
7036        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7037        for MinDelegateAmountTooSmall {
7038            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7039                Self
7040            }
7041        }
7042        #[automatically_derived]
7043        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
7044            type Parameters<'a> = UnderlyingSolTuple<'a>;
7045            type Token<'a> = <Self::Parameters<
7046                'a,
7047            > as alloy_sol_types::SolType>::Token<'a>;
7048            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
7049            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
7050            #[inline]
7051            fn new<'a>(
7052                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7053            ) -> Self {
7054                tuple.into()
7055            }
7056            #[inline]
7057            fn tokenize(&self) -> Self::Token<'_> {
7058                ()
7059            }
7060            #[inline]
7061            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7062                <Self::Parameters<
7063                    '_,
7064                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7065                    .map(Self::new)
7066            }
7067        }
7068    };
7069    #[derive(serde::Serialize, serde::Deserialize)]
7070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7071    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
7072```solidity
7073error NoUndelegationFound();
7074```*/
7075    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7076    #[derive(Clone)]
7077    pub struct NoUndelegationFound;
7078    #[allow(
7079        non_camel_case_types,
7080        non_snake_case,
7081        clippy::pub_underscore_fields,
7082        clippy::style
7083    )]
7084    const _: () = {
7085        use alloy::sol_types as alloy_sol_types;
7086        #[doc(hidden)]
7087        #[allow(dead_code)]
7088        type UnderlyingSolTuple<'a> = ();
7089        #[doc(hidden)]
7090        type UnderlyingRustTuple<'a> = ();
7091        #[cfg(test)]
7092        #[allow(dead_code, unreachable_patterns)]
7093        fn _type_assertion(
7094            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7095        ) {
7096            match _t {
7097                alloy_sol_types::private::AssertTypeEq::<
7098                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7099                >(_) => {}
7100            }
7101        }
7102        #[automatically_derived]
7103        #[doc(hidden)]
7104        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
7105            fn from(value: NoUndelegationFound) -> Self {
7106                ()
7107            }
7108        }
7109        #[automatically_derived]
7110        #[doc(hidden)]
7111        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
7112            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7113                Self
7114            }
7115        }
7116        #[automatically_derived]
7117        impl alloy_sol_types::SolError for NoUndelegationFound {
7118            type Parameters<'a> = UnderlyingSolTuple<'a>;
7119            type Token<'a> = <Self::Parameters<
7120                'a,
7121            > as alloy_sol_types::SolType>::Token<'a>;
7122            const SIGNATURE: &'static str = "NoUndelegationFound()";
7123            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
7124            #[inline]
7125            fn new<'a>(
7126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7127            ) -> Self {
7128                tuple.into()
7129            }
7130            #[inline]
7131            fn tokenize(&self) -> Self::Token<'_> {
7132                ()
7133            }
7134            #[inline]
7135            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7136                <Self::Parameters<
7137                    '_,
7138                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7139                    .map(Self::new)
7140            }
7141        }
7142    };
7143    #[derive(serde::Serialize, serde::Deserialize)]
7144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7145    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
7146```solidity
7147error NotInitializing();
7148```*/
7149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7150    #[derive(Clone)]
7151    pub struct NotInitializing;
7152    #[allow(
7153        non_camel_case_types,
7154        non_snake_case,
7155        clippy::pub_underscore_fields,
7156        clippy::style
7157    )]
7158    const _: () = {
7159        use alloy::sol_types as alloy_sol_types;
7160        #[doc(hidden)]
7161        #[allow(dead_code)]
7162        type UnderlyingSolTuple<'a> = ();
7163        #[doc(hidden)]
7164        type UnderlyingRustTuple<'a> = ();
7165        #[cfg(test)]
7166        #[allow(dead_code, unreachable_patterns)]
7167        fn _type_assertion(
7168            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7169        ) {
7170            match _t {
7171                alloy_sol_types::private::AssertTypeEq::<
7172                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7173                >(_) => {}
7174            }
7175        }
7176        #[automatically_derived]
7177        #[doc(hidden)]
7178        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
7179            fn from(value: NotInitializing) -> Self {
7180                ()
7181            }
7182        }
7183        #[automatically_derived]
7184        #[doc(hidden)]
7185        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
7186            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7187                Self
7188            }
7189        }
7190        #[automatically_derived]
7191        impl alloy_sol_types::SolError for NotInitializing {
7192            type Parameters<'a> = UnderlyingSolTuple<'a>;
7193            type Token<'a> = <Self::Parameters<
7194                'a,
7195            > as alloy_sol_types::SolType>::Token<'a>;
7196            const SIGNATURE: &'static str = "NotInitializing()";
7197            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
7198            #[inline]
7199            fn new<'a>(
7200                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7201            ) -> Self {
7202                tuple.into()
7203            }
7204            #[inline]
7205            fn tokenize(&self) -> Self::Token<'_> {
7206                ()
7207            }
7208            #[inline]
7209            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7210                <Self::Parameters<
7211                    '_,
7212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7213                    .map(Self::new)
7214            }
7215        }
7216    };
7217    #[derive(serde::Serialize, serde::Deserialize)]
7218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7219    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
7220```solidity
7221error NothingToWithdraw();
7222```*/
7223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7224    #[derive(Clone)]
7225    pub struct NothingToWithdraw;
7226    #[allow(
7227        non_camel_case_types,
7228        non_snake_case,
7229        clippy::pub_underscore_fields,
7230        clippy::style
7231    )]
7232    const _: () = {
7233        use alloy::sol_types as alloy_sol_types;
7234        #[doc(hidden)]
7235        #[allow(dead_code)]
7236        type UnderlyingSolTuple<'a> = ();
7237        #[doc(hidden)]
7238        type UnderlyingRustTuple<'a> = ();
7239        #[cfg(test)]
7240        #[allow(dead_code, unreachable_patterns)]
7241        fn _type_assertion(
7242            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7243        ) {
7244            match _t {
7245                alloy_sol_types::private::AssertTypeEq::<
7246                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7247                >(_) => {}
7248            }
7249        }
7250        #[automatically_derived]
7251        #[doc(hidden)]
7252        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
7253            fn from(value: NothingToWithdraw) -> Self {
7254                ()
7255            }
7256        }
7257        #[automatically_derived]
7258        #[doc(hidden)]
7259        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
7260            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7261                Self
7262            }
7263        }
7264        #[automatically_derived]
7265        impl alloy_sol_types::SolError for NothingToWithdraw {
7266            type Parameters<'a> = UnderlyingSolTuple<'a>;
7267            type Token<'a> = <Self::Parameters<
7268                'a,
7269            > as alloy_sol_types::SolType>::Token<'a>;
7270            const SIGNATURE: &'static str = "NothingToWithdraw()";
7271            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
7272            #[inline]
7273            fn new<'a>(
7274                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7275            ) -> Self {
7276                tuple.into()
7277            }
7278            #[inline]
7279            fn tokenize(&self) -> Self::Token<'_> {
7280                ()
7281            }
7282            #[inline]
7283            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7284                <Self::Parameters<
7285                    '_,
7286                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7287                    .map(Self::new)
7288            }
7289        }
7290    };
7291    #[derive(serde::Serialize, serde::Deserialize)]
7292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7293    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7294```solidity
7295error OwnableInvalidOwner(address owner);
7296```*/
7297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7298    #[derive(Clone)]
7299    pub struct OwnableInvalidOwner {
7300        #[allow(missing_docs)]
7301        pub owner: alloy::sol_types::private::Address,
7302    }
7303    #[allow(
7304        non_camel_case_types,
7305        non_snake_case,
7306        clippy::pub_underscore_fields,
7307        clippy::style
7308    )]
7309    const _: () = {
7310        use alloy::sol_types as alloy_sol_types;
7311        #[doc(hidden)]
7312        #[allow(dead_code)]
7313        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7314        #[doc(hidden)]
7315        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7316        #[cfg(test)]
7317        #[allow(dead_code, unreachable_patterns)]
7318        fn _type_assertion(
7319            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7320        ) {
7321            match _t {
7322                alloy_sol_types::private::AssertTypeEq::<
7323                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7324                >(_) => {}
7325            }
7326        }
7327        #[automatically_derived]
7328        #[doc(hidden)]
7329        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7330            fn from(value: OwnableInvalidOwner) -> Self {
7331                (value.owner,)
7332            }
7333        }
7334        #[automatically_derived]
7335        #[doc(hidden)]
7336        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7337            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7338                Self { owner: tuple.0 }
7339            }
7340        }
7341        #[automatically_derived]
7342        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7343            type Parameters<'a> = UnderlyingSolTuple<'a>;
7344            type Token<'a> = <Self::Parameters<
7345                'a,
7346            > as alloy_sol_types::SolType>::Token<'a>;
7347            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7348            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7349            #[inline]
7350            fn new<'a>(
7351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7352            ) -> Self {
7353                tuple.into()
7354            }
7355            #[inline]
7356            fn tokenize(&self) -> Self::Token<'_> {
7357                (
7358                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7359                        &self.owner,
7360                    ),
7361                )
7362            }
7363            #[inline]
7364            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7365                <Self::Parameters<
7366                    '_,
7367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7368                    .map(Self::new)
7369            }
7370        }
7371    };
7372    #[derive(serde::Serialize, serde::Deserialize)]
7373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7374    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7375```solidity
7376error OwnableUnauthorizedAccount(address account);
7377```*/
7378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7379    #[derive(Clone)]
7380    pub struct OwnableUnauthorizedAccount {
7381        #[allow(missing_docs)]
7382        pub account: alloy::sol_types::private::Address,
7383    }
7384    #[allow(
7385        non_camel_case_types,
7386        non_snake_case,
7387        clippy::pub_underscore_fields,
7388        clippy::style
7389    )]
7390    const _: () = {
7391        use alloy::sol_types as alloy_sol_types;
7392        #[doc(hidden)]
7393        #[allow(dead_code)]
7394        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7395        #[doc(hidden)]
7396        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7397        #[cfg(test)]
7398        #[allow(dead_code, unreachable_patterns)]
7399        fn _type_assertion(
7400            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7401        ) {
7402            match _t {
7403                alloy_sol_types::private::AssertTypeEq::<
7404                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7405                >(_) => {}
7406            }
7407        }
7408        #[automatically_derived]
7409        #[doc(hidden)]
7410        impl ::core::convert::From<OwnableUnauthorizedAccount>
7411        for UnderlyingRustTuple<'_> {
7412            fn from(value: OwnableUnauthorizedAccount) -> Self {
7413                (value.account,)
7414            }
7415        }
7416        #[automatically_derived]
7417        #[doc(hidden)]
7418        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7419        for OwnableUnauthorizedAccount {
7420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7421                Self { account: tuple.0 }
7422            }
7423        }
7424        #[automatically_derived]
7425        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7426            type Parameters<'a> = UnderlyingSolTuple<'a>;
7427            type Token<'a> = <Self::Parameters<
7428                'a,
7429            > as alloy_sol_types::SolType>::Token<'a>;
7430            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7431            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7432            #[inline]
7433            fn new<'a>(
7434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7435            ) -> Self {
7436                tuple.into()
7437            }
7438            #[inline]
7439            fn tokenize(&self) -> Self::Token<'_> {
7440                (
7441                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7442                        &self.account,
7443                    ),
7444                )
7445            }
7446            #[inline]
7447            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7448                <Self::Parameters<
7449                    '_,
7450                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7451                    .map(Self::new)
7452            }
7453        }
7454    };
7455    #[derive(serde::Serialize, serde::Deserialize)]
7456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7457    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
7458```solidity
7459error OwnershipCannotBeRenounced();
7460```*/
7461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7462    #[derive(Clone)]
7463    pub struct OwnershipCannotBeRenounced;
7464    #[allow(
7465        non_camel_case_types,
7466        non_snake_case,
7467        clippy::pub_underscore_fields,
7468        clippy::style
7469    )]
7470    const _: () = {
7471        use alloy::sol_types as alloy_sol_types;
7472        #[doc(hidden)]
7473        #[allow(dead_code)]
7474        type UnderlyingSolTuple<'a> = ();
7475        #[doc(hidden)]
7476        type UnderlyingRustTuple<'a> = ();
7477        #[cfg(test)]
7478        #[allow(dead_code, unreachable_patterns)]
7479        fn _type_assertion(
7480            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7481        ) {
7482            match _t {
7483                alloy_sol_types::private::AssertTypeEq::<
7484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7485                >(_) => {}
7486            }
7487        }
7488        #[automatically_derived]
7489        #[doc(hidden)]
7490        impl ::core::convert::From<OwnershipCannotBeRenounced>
7491        for UnderlyingRustTuple<'_> {
7492            fn from(value: OwnershipCannotBeRenounced) -> Self {
7493                ()
7494            }
7495        }
7496        #[automatically_derived]
7497        #[doc(hidden)]
7498        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7499        for OwnershipCannotBeRenounced {
7500            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7501                Self
7502            }
7503        }
7504        #[automatically_derived]
7505        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7506            type Parameters<'a> = UnderlyingSolTuple<'a>;
7507            type Token<'a> = <Self::Parameters<
7508                'a,
7509            > as alloy_sol_types::SolType>::Token<'a>;
7510            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7511            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7512            #[inline]
7513            fn new<'a>(
7514                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7515            ) -> Self {
7516                tuple.into()
7517            }
7518            #[inline]
7519            fn tokenize(&self) -> Self::Token<'_> {
7520                ()
7521            }
7522            #[inline]
7523            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7524                <Self::Parameters<
7525                    '_,
7526                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7527                    .map(Self::new)
7528            }
7529        }
7530    };
7531    #[derive(serde::Serialize, serde::Deserialize)]
7532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7533    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
7534```solidity
7535error PowPrecompileFailed();
7536```*/
7537    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7538    #[derive(Clone)]
7539    pub struct PowPrecompileFailed;
7540    #[allow(
7541        non_camel_case_types,
7542        non_snake_case,
7543        clippy::pub_underscore_fields,
7544        clippy::style
7545    )]
7546    const _: () = {
7547        use alloy::sol_types as alloy_sol_types;
7548        #[doc(hidden)]
7549        #[allow(dead_code)]
7550        type UnderlyingSolTuple<'a> = ();
7551        #[doc(hidden)]
7552        type UnderlyingRustTuple<'a> = ();
7553        #[cfg(test)]
7554        #[allow(dead_code, unreachable_patterns)]
7555        fn _type_assertion(
7556            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7557        ) {
7558            match _t {
7559                alloy_sol_types::private::AssertTypeEq::<
7560                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7561                >(_) => {}
7562            }
7563        }
7564        #[automatically_derived]
7565        #[doc(hidden)]
7566        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
7567            fn from(value: PowPrecompileFailed) -> Self {
7568                ()
7569            }
7570        }
7571        #[automatically_derived]
7572        #[doc(hidden)]
7573        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
7574            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7575                Self
7576            }
7577        }
7578        #[automatically_derived]
7579        impl alloy_sol_types::SolError for PowPrecompileFailed {
7580            type Parameters<'a> = UnderlyingSolTuple<'a>;
7581            type Token<'a> = <Self::Parameters<
7582                'a,
7583            > as alloy_sol_types::SolType>::Token<'a>;
7584            const SIGNATURE: &'static str = "PowPrecompileFailed()";
7585            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
7586            #[inline]
7587            fn new<'a>(
7588                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7589            ) -> Self {
7590                tuple.into()
7591            }
7592            #[inline]
7593            fn tokenize(&self) -> Self::Token<'_> {
7594                ()
7595            }
7596            #[inline]
7597            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7598                <Self::Parameters<
7599                    '_,
7600                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7601                    .map(Self::new)
7602            }
7603        }
7604    };
7605    #[derive(serde::Serialize, serde::Deserialize)]
7606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7607    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
7608```solidity
7609error PrematureWithdrawal();
7610```*/
7611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7612    #[derive(Clone)]
7613    pub struct PrematureWithdrawal;
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        #[doc(hidden)]
7623        #[allow(dead_code)]
7624        type UnderlyingSolTuple<'a> = ();
7625        #[doc(hidden)]
7626        type UnderlyingRustTuple<'a> = ();
7627        #[cfg(test)]
7628        #[allow(dead_code, unreachable_patterns)]
7629        fn _type_assertion(
7630            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7631        ) {
7632            match _t {
7633                alloy_sol_types::private::AssertTypeEq::<
7634                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7635                >(_) => {}
7636            }
7637        }
7638        #[automatically_derived]
7639        #[doc(hidden)]
7640        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
7641            fn from(value: PrematureWithdrawal) -> Self {
7642                ()
7643            }
7644        }
7645        #[automatically_derived]
7646        #[doc(hidden)]
7647        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
7648            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7649                Self
7650            }
7651        }
7652        #[automatically_derived]
7653        impl alloy_sol_types::SolError for PrematureWithdrawal {
7654            type Parameters<'a> = UnderlyingSolTuple<'a>;
7655            type Token<'a> = <Self::Parameters<
7656                'a,
7657            > as alloy_sol_types::SolType>::Token<'a>;
7658            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7659            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7660            #[inline]
7661            fn new<'a>(
7662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7663            ) -> Self {
7664                tuple.into()
7665            }
7666            #[inline]
7667            fn tokenize(&self) -> Self::Token<'_> {
7668                ()
7669            }
7670            #[inline]
7671            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7672                <Self::Parameters<
7673                    '_,
7674                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7675                    .map(Self::new)
7676            }
7677        }
7678    };
7679    #[derive(serde::Serialize, serde::Deserialize)]
7680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7681    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7682```solidity
7683error SchnorrKeyAlreadyUsed();
7684```*/
7685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7686    #[derive(Clone)]
7687    pub struct SchnorrKeyAlreadyUsed;
7688    #[allow(
7689        non_camel_case_types,
7690        non_snake_case,
7691        clippy::pub_underscore_fields,
7692        clippy::style
7693    )]
7694    const _: () = {
7695        use alloy::sol_types as alloy_sol_types;
7696        #[doc(hidden)]
7697        #[allow(dead_code)]
7698        type UnderlyingSolTuple<'a> = ();
7699        #[doc(hidden)]
7700        type UnderlyingRustTuple<'a> = ();
7701        #[cfg(test)]
7702        #[allow(dead_code, unreachable_patterns)]
7703        fn _type_assertion(
7704            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705        ) {
7706            match _t {
7707                alloy_sol_types::private::AssertTypeEq::<
7708                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                >(_) => {}
7710            }
7711        }
7712        #[automatically_derived]
7713        #[doc(hidden)]
7714        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7715            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7716                ()
7717            }
7718        }
7719        #[automatically_derived]
7720        #[doc(hidden)]
7721        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7722            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7723                Self
7724            }
7725        }
7726        #[automatically_derived]
7727        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7728            type Parameters<'a> = UnderlyingSolTuple<'a>;
7729            type Token<'a> = <Self::Parameters<
7730                'a,
7731            > as alloy_sol_types::SolType>::Token<'a>;
7732            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7733            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7734            #[inline]
7735            fn new<'a>(
7736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7737            ) -> Self {
7738                tuple.into()
7739            }
7740            #[inline]
7741            fn tokenize(&self) -> Self::Token<'_> {
7742                ()
7743            }
7744            #[inline]
7745            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7746                <Self::Parameters<
7747                    '_,
7748                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7749                    .map(Self::new)
7750            }
7751        }
7752    };
7753    #[derive(serde::Serialize, serde::Deserialize)]
7754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7755    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7756```solidity
7757error UUPSUnauthorizedCallContext();
7758```*/
7759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7760    #[derive(Clone)]
7761    pub struct UUPSUnauthorizedCallContext;
7762    #[allow(
7763        non_camel_case_types,
7764        non_snake_case,
7765        clippy::pub_underscore_fields,
7766        clippy::style
7767    )]
7768    const _: () = {
7769        use alloy::sol_types as alloy_sol_types;
7770        #[doc(hidden)]
7771        #[allow(dead_code)]
7772        type UnderlyingSolTuple<'a> = ();
7773        #[doc(hidden)]
7774        type UnderlyingRustTuple<'a> = ();
7775        #[cfg(test)]
7776        #[allow(dead_code, unreachable_patterns)]
7777        fn _type_assertion(
7778            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7779        ) {
7780            match _t {
7781                alloy_sol_types::private::AssertTypeEq::<
7782                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7783                >(_) => {}
7784            }
7785        }
7786        #[automatically_derived]
7787        #[doc(hidden)]
7788        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7789        for UnderlyingRustTuple<'_> {
7790            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7791                ()
7792            }
7793        }
7794        #[automatically_derived]
7795        #[doc(hidden)]
7796        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7797        for UUPSUnauthorizedCallContext {
7798            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7799                Self
7800            }
7801        }
7802        #[automatically_derived]
7803        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7804            type Parameters<'a> = UnderlyingSolTuple<'a>;
7805            type Token<'a> = <Self::Parameters<
7806                'a,
7807            > as alloy_sol_types::SolType>::Token<'a>;
7808            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7809            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7810            #[inline]
7811            fn new<'a>(
7812                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7813            ) -> Self {
7814                tuple.into()
7815            }
7816            #[inline]
7817            fn tokenize(&self) -> Self::Token<'_> {
7818                ()
7819            }
7820            #[inline]
7821            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7822                <Self::Parameters<
7823                    '_,
7824                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7825                    .map(Self::new)
7826            }
7827        }
7828    };
7829    #[derive(serde::Serialize, serde::Deserialize)]
7830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7831    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7832```solidity
7833error UUPSUnsupportedProxiableUUID(bytes32 slot);
7834```*/
7835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7836    #[derive(Clone)]
7837    pub struct UUPSUnsupportedProxiableUUID {
7838        #[allow(missing_docs)]
7839        pub slot: alloy::sol_types::private::FixedBytes<32>,
7840    }
7841    #[allow(
7842        non_camel_case_types,
7843        non_snake_case,
7844        clippy::pub_underscore_fields,
7845        clippy::style
7846    )]
7847    const _: () = {
7848        use alloy::sol_types as alloy_sol_types;
7849        #[doc(hidden)]
7850        #[allow(dead_code)]
7851        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7852        #[doc(hidden)]
7853        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7854        #[cfg(test)]
7855        #[allow(dead_code, unreachable_patterns)]
7856        fn _type_assertion(
7857            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7858        ) {
7859            match _t {
7860                alloy_sol_types::private::AssertTypeEq::<
7861                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7862                >(_) => {}
7863            }
7864        }
7865        #[automatically_derived]
7866        #[doc(hidden)]
7867        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7868        for UnderlyingRustTuple<'_> {
7869            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7870                (value.slot,)
7871            }
7872        }
7873        #[automatically_derived]
7874        #[doc(hidden)]
7875        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7876        for UUPSUnsupportedProxiableUUID {
7877            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7878                Self { slot: tuple.0 }
7879            }
7880        }
7881        #[automatically_derived]
7882        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7883            type Parameters<'a> = UnderlyingSolTuple<'a>;
7884            type Token<'a> = <Self::Parameters<
7885                'a,
7886            > as alloy_sol_types::SolType>::Token<'a>;
7887            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7888            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7889            #[inline]
7890            fn new<'a>(
7891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7892            ) -> Self {
7893                tuple.into()
7894            }
7895            #[inline]
7896            fn tokenize(&self) -> Self::Token<'_> {
7897                (
7898                    <alloy::sol_types::sol_data::FixedBytes<
7899                        32,
7900                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7901                )
7902            }
7903            #[inline]
7904            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7905                <Self::Parameters<
7906                    '_,
7907                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7908                    .map(Self::new)
7909            }
7910        }
7911    };
7912    #[derive(serde::Serialize, serde::Deserialize)]
7913    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7914    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
7915```solidity
7916error UndelegationAlreadyExists();
7917```*/
7918    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7919    #[derive(Clone)]
7920    pub struct UndelegationAlreadyExists;
7921    #[allow(
7922        non_camel_case_types,
7923        non_snake_case,
7924        clippy::pub_underscore_fields,
7925        clippy::style
7926    )]
7927    const _: () = {
7928        use alloy::sol_types as alloy_sol_types;
7929        #[doc(hidden)]
7930        #[allow(dead_code)]
7931        type UnderlyingSolTuple<'a> = ();
7932        #[doc(hidden)]
7933        type UnderlyingRustTuple<'a> = ();
7934        #[cfg(test)]
7935        #[allow(dead_code, unreachable_patterns)]
7936        fn _type_assertion(
7937            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7938        ) {
7939            match _t {
7940                alloy_sol_types::private::AssertTypeEq::<
7941                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7942                >(_) => {}
7943            }
7944        }
7945        #[automatically_derived]
7946        #[doc(hidden)]
7947        impl ::core::convert::From<UndelegationAlreadyExists>
7948        for UnderlyingRustTuple<'_> {
7949            fn from(value: UndelegationAlreadyExists) -> Self {
7950                ()
7951            }
7952        }
7953        #[automatically_derived]
7954        #[doc(hidden)]
7955        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7956        for UndelegationAlreadyExists {
7957            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7958                Self
7959            }
7960        }
7961        #[automatically_derived]
7962        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
7963            type Parameters<'a> = UnderlyingSolTuple<'a>;
7964            type Token<'a> = <Self::Parameters<
7965                'a,
7966            > as alloy_sol_types::SolType>::Token<'a>;
7967            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
7968            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
7969            #[inline]
7970            fn new<'a>(
7971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7972            ) -> Self {
7973                tuple.into()
7974            }
7975            #[inline]
7976            fn tokenize(&self) -> Self::Token<'_> {
7977                ()
7978            }
7979            #[inline]
7980            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7981                <Self::Parameters<
7982                    '_,
7983                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7984                    .map(Self::new)
7985            }
7986        }
7987    };
7988    #[derive(serde::Serialize, serde::Deserialize)]
7989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7990    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
7991```solidity
7992error ValidatorAlreadyExited();
7993```*/
7994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7995    #[derive(Clone)]
7996    pub struct ValidatorAlreadyExited;
7997    #[allow(
7998        non_camel_case_types,
7999        non_snake_case,
8000        clippy::pub_underscore_fields,
8001        clippy::style
8002    )]
8003    const _: () = {
8004        use alloy::sol_types as alloy_sol_types;
8005        #[doc(hidden)]
8006        #[allow(dead_code)]
8007        type UnderlyingSolTuple<'a> = ();
8008        #[doc(hidden)]
8009        type UnderlyingRustTuple<'a> = ();
8010        #[cfg(test)]
8011        #[allow(dead_code, unreachable_patterns)]
8012        fn _type_assertion(
8013            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8014        ) {
8015            match _t {
8016                alloy_sol_types::private::AssertTypeEq::<
8017                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8018                >(_) => {}
8019            }
8020        }
8021        #[automatically_derived]
8022        #[doc(hidden)]
8023        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
8024            fn from(value: ValidatorAlreadyExited) -> Self {
8025                ()
8026            }
8027        }
8028        #[automatically_derived]
8029        #[doc(hidden)]
8030        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
8031            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8032                Self
8033            }
8034        }
8035        #[automatically_derived]
8036        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
8037            type Parameters<'a> = UnderlyingSolTuple<'a>;
8038            type Token<'a> = <Self::Parameters<
8039                'a,
8040            > as alloy_sol_types::SolType>::Token<'a>;
8041            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
8042            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
8043            #[inline]
8044            fn new<'a>(
8045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8046            ) -> Self {
8047                tuple.into()
8048            }
8049            #[inline]
8050            fn tokenize(&self) -> Self::Token<'_> {
8051                ()
8052            }
8053            #[inline]
8054            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8055                <Self::Parameters<
8056                    '_,
8057                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8058                    .map(Self::new)
8059            }
8060        }
8061    };
8062    #[derive(serde::Serialize, serde::Deserialize)]
8063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8064    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
8065```solidity
8066error ValidatorAlreadyRegistered();
8067```*/
8068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8069    #[derive(Clone)]
8070    pub struct ValidatorAlreadyRegistered;
8071    #[allow(
8072        non_camel_case_types,
8073        non_snake_case,
8074        clippy::pub_underscore_fields,
8075        clippy::style
8076    )]
8077    const _: () = {
8078        use alloy::sol_types as alloy_sol_types;
8079        #[doc(hidden)]
8080        #[allow(dead_code)]
8081        type UnderlyingSolTuple<'a> = ();
8082        #[doc(hidden)]
8083        type UnderlyingRustTuple<'a> = ();
8084        #[cfg(test)]
8085        #[allow(dead_code, unreachable_patterns)]
8086        fn _type_assertion(
8087            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8088        ) {
8089            match _t {
8090                alloy_sol_types::private::AssertTypeEq::<
8091                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8092                >(_) => {}
8093            }
8094        }
8095        #[automatically_derived]
8096        #[doc(hidden)]
8097        impl ::core::convert::From<ValidatorAlreadyRegistered>
8098        for UnderlyingRustTuple<'_> {
8099            fn from(value: ValidatorAlreadyRegistered) -> Self {
8100                ()
8101            }
8102        }
8103        #[automatically_derived]
8104        #[doc(hidden)]
8105        impl ::core::convert::From<UnderlyingRustTuple<'_>>
8106        for ValidatorAlreadyRegistered {
8107            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8108                Self
8109            }
8110        }
8111        #[automatically_derived]
8112        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
8113            type Parameters<'a> = UnderlyingSolTuple<'a>;
8114            type Token<'a> = <Self::Parameters<
8115                'a,
8116            > as alloy_sol_types::SolType>::Token<'a>;
8117            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
8118            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
8119            #[inline]
8120            fn new<'a>(
8121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8122            ) -> Self {
8123                tuple.into()
8124            }
8125            #[inline]
8126            fn tokenize(&self) -> Self::Token<'_> {
8127                ()
8128            }
8129            #[inline]
8130            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8131                <Self::Parameters<
8132                    '_,
8133                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8134                    .map(Self::new)
8135            }
8136        }
8137    };
8138    #[derive(serde::Serialize, serde::Deserialize)]
8139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8140    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
8141```solidity
8142error ValidatorInactive();
8143```*/
8144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8145    #[derive(Clone)]
8146    pub struct ValidatorInactive;
8147    #[allow(
8148        non_camel_case_types,
8149        non_snake_case,
8150        clippy::pub_underscore_fields,
8151        clippy::style
8152    )]
8153    const _: () = {
8154        use alloy::sol_types as alloy_sol_types;
8155        #[doc(hidden)]
8156        #[allow(dead_code)]
8157        type UnderlyingSolTuple<'a> = ();
8158        #[doc(hidden)]
8159        type UnderlyingRustTuple<'a> = ();
8160        #[cfg(test)]
8161        #[allow(dead_code, unreachable_patterns)]
8162        fn _type_assertion(
8163            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8164        ) {
8165            match _t {
8166                alloy_sol_types::private::AssertTypeEq::<
8167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8168                >(_) => {}
8169            }
8170        }
8171        #[automatically_derived]
8172        #[doc(hidden)]
8173        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
8174            fn from(value: ValidatorInactive) -> Self {
8175                ()
8176            }
8177        }
8178        #[automatically_derived]
8179        #[doc(hidden)]
8180        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
8181            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8182                Self
8183            }
8184        }
8185        #[automatically_derived]
8186        impl alloy_sol_types::SolError for ValidatorInactive {
8187            type Parameters<'a> = UnderlyingSolTuple<'a>;
8188            type Token<'a> = <Self::Parameters<
8189                'a,
8190            > as alloy_sol_types::SolType>::Token<'a>;
8191            const SIGNATURE: &'static str = "ValidatorInactive()";
8192            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
8193            #[inline]
8194            fn new<'a>(
8195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8196            ) -> Self {
8197                tuple.into()
8198            }
8199            #[inline]
8200            fn tokenize(&self) -> Self::Token<'_> {
8201                ()
8202            }
8203            #[inline]
8204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8205                <Self::Parameters<
8206                    '_,
8207                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8208                    .map(Self::new)
8209            }
8210        }
8211    };
8212    #[derive(serde::Serialize, serde::Deserialize)]
8213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8214    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
8215```solidity
8216error ValidatorNotExited();
8217```*/
8218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8219    #[derive(Clone)]
8220    pub struct ValidatorNotExited;
8221    #[allow(
8222        non_camel_case_types,
8223        non_snake_case,
8224        clippy::pub_underscore_fields,
8225        clippy::style
8226    )]
8227    const _: () = {
8228        use alloy::sol_types as alloy_sol_types;
8229        #[doc(hidden)]
8230        #[allow(dead_code)]
8231        type UnderlyingSolTuple<'a> = ();
8232        #[doc(hidden)]
8233        type UnderlyingRustTuple<'a> = ();
8234        #[cfg(test)]
8235        #[allow(dead_code, unreachable_patterns)]
8236        fn _type_assertion(
8237            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8238        ) {
8239            match _t {
8240                alloy_sol_types::private::AssertTypeEq::<
8241                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8242                >(_) => {}
8243            }
8244        }
8245        #[automatically_derived]
8246        #[doc(hidden)]
8247        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
8248            fn from(value: ValidatorNotExited) -> Self {
8249                ()
8250            }
8251        }
8252        #[automatically_derived]
8253        #[doc(hidden)]
8254        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
8255            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8256                Self
8257            }
8258        }
8259        #[automatically_derived]
8260        impl alloy_sol_types::SolError for ValidatorNotExited {
8261            type Parameters<'a> = UnderlyingSolTuple<'a>;
8262            type Token<'a> = <Self::Parameters<
8263                'a,
8264            > as alloy_sol_types::SolType>::Token<'a>;
8265            const SIGNATURE: &'static str = "ValidatorNotExited()";
8266            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
8267            #[inline]
8268            fn new<'a>(
8269                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8270            ) -> Self {
8271                tuple.into()
8272            }
8273            #[inline]
8274            fn tokenize(&self) -> Self::Token<'_> {
8275                ()
8276            }
8277            #[inline]
8278            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8279                <Self::Parameters<
8280                    '_,
8281                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8282                    .map(Self::new)
8283            }
8284        }
8285    };
8286    #[derive(serde::Serialize, serde::Deserialize)]
8287    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8288    /**Custom error with signature `X25519KeyAlreadyUsed()` and selector `0xb23640ec`.
8289```solidity
8290error X25519KeyAlreadyUsed();
8291```*/
8292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8293    #[derive(Clone)]
8294    pub struct X25519KeyAlreadyUsed;
8295    #[allow(
8296        non_camel_case_types,
8297        non_snake_case,
8298        clippy::pub_underscore_fields,
8299        clippy::style
8300    )]
8301    const _: () = {
8302        use alloy::sol_types as alloy_sol_types;
8303        #[doc(hidden)]
8304        #[allow(dead_code)]
8305        type UnderlyingSolTuple<'a> = ();
8306        #[doc(hidden)]
8307        type UnderlyingRustTuple<'a> = ();
8308        #[cfg(test)]
8309        #[allow(dead_code, unreachable_patterns)]
8310        fn _type_assertion(
8311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8312        ) {
8313            match _t {
8314                alloy_sol_types::private::AssertTypeEq::<
8315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8316                >(_) => {}
8317            }
8318        }
8319        #[automatically_derived]
8320        #[doc(hidden)]
8321        impl ::core::convert::From<X25519KeyAlreadyUsed> for UnderlyingRustTuple<'_> {
8322            fn from(value: X25519KeyAlreadyUsed) -> Self {
8323                ()
8324            }
8325        }
8326        #[automatically_derived]
8327        #[doc(hidden)]
8328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for X25519KeyAlreadyUsed {
8329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8330                Self
8331            }
8332        }
8333        #[automatically_derived]
8334        impl alloy_sol_types::SolError for X25519KeyAlreadyUsed {
8335            type Parameters<'a> = UnderlyingSolTuple<'a>;
8336            type Token<'a> = <Self::Parameters<
8337                'a,
8338            > as alloy_sol_types::SolType>::Token<'a>;
8339            const SIGNATURE: &'static str = "X25519KeyAlreadyUsed()";
8340            const SELECTOR: [u8; 4] = [178u8, 54u8, 64u8, 236u8];
8341            #[inline]
8342            fn new<'a>(
8343                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8344            ) -> Self {
8345                tuple.into()
8346            }
8347            #[inline]
8348            fn tokenize(&self) -> Self::Token<'_> {
8349                ()
8350            }
8351            #[inline]
8352            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8353                <Self::Parameters<
8354                    '_,
8355                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8356                    .map(Self::new)
8357            }
8358        }
8359    };
8360    #[derive(serde::Serialize, serde::Deserialize)]
8361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8362    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
8363```solidity
8364error ZeroAddress();
8365```*/
8366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8367    #[derive(Clone)]
8368    pub struct ZeroAddress;
8369    #[allow(
8370        non_camel_case_types,
8371        non_snake_case,
8372        clippy::pub_underscore_fields,
8373        clippy::style
8374    )]
8375    const _: () = {
8376        use alloy::sol_types as alloy_sol_types;
8377        #[doc(hidden)]
8378        #[allow(dead_code)]
8379        type UnderlyingSolTuple<'a> = ();
8380        #[doc(hidden)]
8381        type UnderlyingRustTuple<'a> = ();
8382        #[cfg(test)]
8383        #[allow(dead_code, unreachable_patterns)]
8384        fn _type_assertion(
8385            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8386        ) {
8387            match _t {
8388                alloy_sol_types::private::AssertTypeEq::<
8389                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8390                >(_) => {}
8391            }
8392        }
8393        #[automatically_derived]
8394        #[doc(hidden)]
8395        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
8396            fn from(value: ZeroAddress) -> Self {
8397                ()
8398            }
8399        }
8400        #[automatically_derived]
8401        #[doc(hidden)]
8402        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
8403            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8404                Self
8405            }
8406        }
8407        #[automatically_derived]
8408        impl alloy_sol_types::SolError for ZeroAddress {
8409            type Parameters<'a> = UnderlyingSolTuple<'a>;
8410            type Token<'a> = <Self::Parameters<
8411                'a,
8412            > as alloy_sol_types::SolType>::Token<'a>;
8413            const SIGNATURE: &'static str = "ZeroAddress()";
8414            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
8415            #[inline]
8416            fn new<'a>(
8417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8418            ) -> Self {
8419                tuple.into()
8420            }
8421            #[inline]
8422            fn tokenize(&self) -> Self::Token<'_> {
8423                ()
8424            }
8425            #[inline]
8426            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8427                <Self::Parameters<
8428                    '_,
8429                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8430                    .map(Self::new)
8431            }
8432        }
8433    };
8434    #[derive(serde::Serialize, serde::Deserialize)]
8435    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8436    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
8437```solidity
8438error ZeroAmount();
8439```*/
8440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8441    #[derive(Clone)]
8442    pub struct ZeroAmount;
8443    #[allow(
8444        non_camel_case_types,
8445        non_snake_case,
8446        clippy::pub_underscore_fields,
8447        clippy::style
8448    )]
8449    const _: () = {
8450        use alloy::sol_types as alloy_sol_types;
8451        #[doc(hidden)]
8452        #[allow(dead_code)]
8453        type UnderlyingSolTuple<'a> = ();
8454        #[doc(hidden)]
8455        type UnderlyingRustTuple<'a> = ();
8456        #[cfg(test)]
8457        #[allow(dead_code, unreachable_patterns)]
8458        fn _type_assertion(
8459            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8460        ) {
8461            match _t {
8462                alloy_sol_types::private::AssertTypeEq::<
8463                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8464                >(_) => {}
8465            }
8466        }
8467        #[automatically_derived]
8468        #[doc(hidden)]
8469        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
8470            fn from(value: ZeroAmount) -> Self {
8471                ()
8472            }
8473        }
8474        #[automatically_derived]
8475        #[doc(hidden)]
8476        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
8477            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8478                Self
8479            }
8480        }
8481        #[automatically_derived]
8482        impl alloy_sol_types::SolError for ZeroAmount {
8483            type Parameters<'a> = UnderlyingSolTuple<'a>;
8484            type Token<'a> = <Self::Parameters<
8485                'a,
8486            > as alloy_sol_types::SolType>::Token<'a>;
8487            const SIGNATURE: &'static str = "ZeroAmount()";
8488            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
8489            #[inline]
8490            fn new<'a>(
8491                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8492            ) -> Self {
8493                tuple.into()
8494            }
8495            #[inline]
8496            fn tokenize(&self) -> Self::Token<'_> {
8497                ()
8498            }
8499            #[inline]
8500            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
8501                <Self::Parameters<
8502                    '_,
8503                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8504                    .map(Self::new)
8505            }
8506        }
8507    };
8508    #[derive(serde::Serialize, serde::Deserialize)]
8509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8510    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
8511```solidity
8512event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
8513```*/
8514    #[allow(
8515        non_camel_case_types,
8516        non_snake_case,
8517        clippy::pub_underscore_fields,
8518        clippy::style
8519    )]
8520    #[derive(Clone)]
8521    pub struct CommissionUpdated {
8522        #[allow(missing_docs)]
8523        pub validator: alloy::sol_types::private::Address,
8524        #[allow(missing_docs)]
8525        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
8526        #[allow(missing_docs)]
8527        pub oldCommission: u16,
8528        #[allow(missing_docs)]
8529        pub newCommission: u16,
8530    }
8531    #[allow(
8532        non_camel_case_types,
8533        non_snake_case,
8534        clippy::pub_underscore_fields,
8535        clippy::style
8536    )]
8537    const _: () = {
8538        use alloy::sol_types as alloy_sol_types;
8539        #[automatically_derived]
8540        impl alloy_sol_types::SolEvent for CommissionUpdated {
8541            type DataTuple<'a> = (
8542                alloy::sol_types::sol_data::Uint<256>,
8543                alloy::sol_types::sol_data::Uint<16>,
8544                alloy::sol_types::sol_data::Uint<16>,
8545            );
8546            type DataToken<'a> = <Self::DataTuple<
8547                'a,
8548            > as alloy_sol_types::SolType>::Token<'a>;
8549            type TopicList = (
8550                alloy_sol_types::sol_data::FixedBytes<32>,
8551                alloy::sol_types::sol_data::Address,
8552            );
8553            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
8554            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8555                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
8556                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
8557                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
8558            ]);
8559            const ANONYMOUS: bool = false;
8560            #[allow(unused_variables)]
8561            #[inline]
8562            fn new(
8563                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8564                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8565            ) -> Self {
8566                Self {
8567                    validator: topics.1,
8568                    timestamp: data.0,
8569                    oldCommission: data.1,
8570                    newCommission: data.2,
8571                }
8572            }
8573            #[inline]
8574            fn check_signature(
8575                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8576            ) -> alloy_sol_types::Result<()> {
8577                if topics.0 != Self::SIGNATURE_HASH {
8578                    return Err(
8579                        alloy_sol_types::Error::invalid_event_signature_hash(
8580                            Self::SIGNATURE,
8581                            topics.0,
8582                            Self::SIGNATURE_HASH,
8583                        ),
8584                    );
8585                }
8586                Ok(())
8587            }
8588            #[inline]
8589            fn tokenize_body(&self) -> Self::DataToken<'_> {
8590                (
8591                    <alloy::sol_types::sol_data::Uint<
8592                        256,
8593                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
8594                    <alloy::sol_types::sol_data::Uint<
8595                        16,
8596                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
8597                    <alloy::sol_types::sol_data::Uint<
8598                        16,
8599                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
8600                )
8601            }
8602            #[inline]
8603            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8604                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8605            }
8606            #[inline]
8607            fn encode_topics_raw(
8608                &self,
8609                out: &mut [alloy_sol_types::abi::token::WordToken],
8610            ) -> alloy_sol_types::Result<()> {
8611                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8612                    return Err(alloy_sol_types::Error::Overrun);
8613                }
8614                out[0usize] = alloy_sol_types::abi::token::WordToken(
8615                    Self::SIGNATURE_HASH,
8616                );
8617                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8618                    &self.validator,
8619                );
8620                Ok(())
8621            }
8622        }
8623        #[automatically_derived]
8624        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
8625            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8626                From::from(self)
8627            }
8628            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8629                From::from(&self)
8630            }
8631        }
8632        #[automatically_derived]
8633        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
8634            #[inline]
8635            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
8636                alloy_sol_types::SolEvent::encode_log_data(this)
8637            }
8638        }
8639    };
8640    #[derive(serde::Serialize, serde::Deserialize)]
8641    #[derive()]
8642    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
8643```solidity
8644event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
8645```*/
8646    #[allow(
8647        non_camel_case_types,
8648        non_snake_case,
8649        clippy::pub_underscore_fields,
8650        clippy::style
8651    )]
8652    #[derive(Clone)]
8653    pub struct ConsensusKeysUpdated {
8654        #[allow(missing_docs)]
8655        pub account: alloy::sol_types::private::Address,
8656        #[allow(missing_docs)]
8657        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8658        #[allow(missing_docs)]
8659        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8660    }
8661    #[allow(
8662        non_camel_case_types,
8663        non_snake_case,
8664        clippy::pub_underscore_fields,
8665        clippy::style
8666    )]
8667    const _: () = {
8668        use alloy::sol_types as alloy_sol_types;
8669        #[automatically_derived]
8670        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
8671            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
8672            type DataToken<'a> = <Self::DataTuple<
8673                'a,
8674            > as alloy_sol_types::SolType>::Token<'a>;
8675            type TopicList = (
8676                alloy_sol_types::sol_data::FixedBytes<32>,
8677                alloy::sol_types::sol_data::Address,
8678            );
8679            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
8680            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8681                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
8682                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
8683                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
8684            ]);
8685            const ANONYMOUS: bool = false;
8686            #[allow(unused_variables)]
8687            #[inline]
8688            fn new(
8689                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8690                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8691            ) -> Self {
8692                Self {
8693                    account: topics.1,
8694                    blsVK: data.0,
8695                    schnorrVK: data.1,
8696                }
8697            }
8698            #[inline]
8699            fn check_signature(
8700                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8701            ) -> alloy_sol_types::Result<()> {
8702                if topics.0 != Self::SIGNATURE_HASH {
8703                    return Err(
8704                        alloy_sol_types::Error::invalid_event_signature_hash(
8705                            Self::SIGNATURE,
8706                            topics.0,
8707                            Self::SIGNATURE_HASH,
8708                        ),
8709                    );
8710                }
8711                Ok(())
8712            }
8713            #[inline]
8714            fn tokenize_body(&self) -> Self::DataToken<'_> {
8715                (
8716                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8717                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8718                        &self.schnorrVK,
8719                    ),
8720                )
8721            }
8722            #[inline]
8723            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8724                (Self::SIGNATURE_HASH.into(), self.account.clone())
8725            }
8726            #[inline]
8727            fn encode_topics_raw(
8728                &self,
8729                out: &mut [alloy_sol_types::abi::token::WordToken],
8730            ) -> alloy_sol_types::Result<()> {
8731                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8732                    return Err(alloy_sol_types::Error::Overrun);
8733                }
8734                out[0usize] = alloy_sol_types::abi::token::WordToken(
8735                    Self::SIGNATURE_HASH,
8736                );
8737                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8738                    &self.account,
8739                );
8740                Ok(())
8741            }
8742        }
8743        #[automatically_derived]
8744        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8745            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8746                From::from(self)
8747            }
8748            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8749                From::from(&self)
8750            }
8751        }
8752        #[automatically_derived]
8753        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8754            #[inline]
8755            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8756                alloy_sol_types::SolEvent::encode_log_data(this)
8757            }
8758        }
8759    };
8760    #[derive(serde::Serialize, serde::Deserialize)]
8761    #[derive()]
8762    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8763```solidity
8764event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8765```*/
8766    #[allow(
8767        non_camel_case_types,
8768        non_snake_case,
8769        clippy::pub_underscore_fields,
8770        clippy::style
8771    )]
8772    #[derive(Clone)]
8773    pub struct ConsensusKeysUpdatedV2 {
8774        #[allow(missing_docs)]
8775        pub account: alloy::sol_types::private::Address,
8776        #[allow(missing_docs)]
8777        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8778        #[allow(missing_docs)]
8779        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8780        #[allow(missing_docs)]
8781        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8782        #[allow(missing_docs)]
8783        pub schnorrSig: alloy::sol_types::private::Bytes,
8784    }
8785    #[allow(
8786        non_camel_case_types,
8787        non_snake_case,
8788        clippy::pub_underscore_fields,
8789        clippy::style
8790    )]
8791    const _: () = {
8792        use alloy::sol_types as alloy_sol_types;
8793        #[automatically_derived]
8794        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8795            type DataTuple<'a> = (
8796                BN254::G2Point,
8797                EdOnBN254::EdOnBN254Point,
8798                BN254::G1Point,
8799                alloy::sol_types::sol_data::Bytes,
8800            );
8801            type DataToken<'a> = <Self::DataTuple<
8802                'a,
8803            > as alloy_sol_types::SolType>::Token<'a>;
8804            type TopicList = (
8805                alloy_sol_types::sol_data::FixedBytes<32>,
8806                alloy::sol_types::sol_data::Address,
8807            );
8808            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8809            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8810                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8811                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8812                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8813            ]);
8814            const ANONYMOUS: bool = false;
8815            #[allow(unused_variables)]
8816            #[inline]
8817            fn new(
8818                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8819                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8820            ) -> Self {
8821                Self {
8822                    account: topics.1,
8823                    blsVK: data.0,
8824                    schnorrVK: data.1,
8825                    blsSig: data.2,
8826                    schnorrSig: data.3,
8827                }
8828            }
8829            #[inline]
8830            fn check_signature(
8831                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8832            ) -> alloy_sol_types::Result<()> {
8833                if topics.0 != Self::SIGNATURE_HASH {
8834                    return Err(
8835                        alloy_sol_types::Error::invalid_event_signature_hash(
8836                            Self::SIGNATURE,
8837                            topics.0,
8838                            Self::SIGNATURE_HASH,
8839                        ),
8840                    );
8841                }
8842                Ok(())
8843            }
8844            #[inline]
8845            fn tokenize_body(&self) -> Self::DataToken<'_> {
8846                (
8847                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8848                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8849                        &self.schnorrVK,
8850                    ),
8851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8852                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8853                        &self.schnorrSig,
8854                    ),
8855                )
8856            }
8857            #[inline]
8858            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8859                (Self::SIGNATURE_HASH.into(), self.account.clone())
8860            }
8861            #[inline]
8862            fn encode_topics_raw(
8863                &self,
8864                out: &mut [alloy_sol_types::abi::token::WordToken],
8865            ) -> alloy_sol_types::Result<()> {
8866                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8867                    return Err(alloy_sol_types::Error::Overrun);
8868                }
8869                out[0usize] = alloy_sol_types::abi::token::WordToken(
8870                    Self::SIGNATURE_HASH,
8871                );
8872                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8873                    &self.account,
8874                );
8875                Ok(())
8876            }
8877        }
8878        #[automatically_derived]
8879        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
8880            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8881                From::from(self)
8882            }
8883            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8884                From::from(&self)
8885            }
8886        }
8887        #[automatically_derived]
8888        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
8889            #[inline]
8890            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
8891                alloy_sol_types::SolEvent::encode_log_data(this)
8892            }
8893        }
8894    };
8895    #[derive(serde::Serialize, serde::Deserialize)]
8896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8897    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
8898```solidity
8899event Delegated(address indexed delegator, address indexed validator, uint256 amount);
8900```*/
8901    #[allow(
8902        non_camel_case_types,
8903        non_snake_case,
8904        clippy::pub_underscore_fields,
8905        clippy::style
8906    )]
8907    #[derive(Clone)]
8908    pub struct Delegated {
8909        #[allow(missing_docs)]
8910        pub delegator: alloy::sol_types::private::Address,
8911        #[allow(missing_docs)]
8912        pub validator: alloy::sol_types::private::Address,
8913        #[allow(missing_docs)]
8914        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8915    }
8916    #[allow(
8917        non_camel_case_types,
8918        non_snake_case,
8919        clippy::pub_underscore_fields,
8920        clippy::style
8921    )]
8922    const _: () = {
8923        use alloy::sol_types as alloy_sol_types;
8924        #[automatically_derived]
8925        impl alloy_sol_types::SolEvent for Delegated {
8926            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8927            type DataToken<'a> = <Self::DataTuple<
8928                'a,
8929            > as alloy_sol_types::SolType>::Token<'a>;
8930            type TopicList = (
8931                alloy_sol_types::sol_data::FixedBytes<32>,
8932                alloy::sol_types::sol_data::Address,
8933                alloy::sol_types::sol_data::Address,
8934            );
8935            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
8936            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8937                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
8938                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
8939                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
8940            ]);
8941            const ANONYMOUS: bool = false;
8942            #[allow(unused_variables)]
8943            #[inline]
8944            fn new(
8945                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8946                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8947            ) -> Self {
8948                Self {
8949                    delegator: topics.1,
8950                    validator: topics.2,
8951                    amount: data.0,
8952                }
8953            }
8954            #[inline]
8955            fn check_signature(
8956                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8957            ) -> alloy_sol_types::Result<()> {
8958                if topics.0 != Self::SIGNATURE_HASH {
8959                    return Err(
8960                        alloy_sol_types::Error::invalid_event_signature_hash(
8961                            Self::SIGNATURE,
8962                            topics.0,
8963                            Self::SIGNATURE_HASH,
8964                        ),
8965                    );
8966                }
8967                Ok(())
8968            }
8969            #[inline]
8970            fn tokenize_body(&self) -> Self::DataToken<'_> {
8971                (
8972                    <alloy::sol_types::sol_data::Uint<
8973                        256,
8974                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8975                )
8976            }
8977            #[inline]
8978            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8979                (
8980                    Self::SIGNATURE_HASH.into(),
8981                    self.delegator.clone(),
8982                    self.validator.clone(),
8983                )
8984            }
8985            #[inline]
8986            fn encode_topics_raw(
8987                &self,
8988                out: &mut [alloy_sol_types::abi::token::WordToken],
8989            ) -> alloy_sol_types::Result<()> {
8990                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8991                    return Err(alloy_sol_types::Error::Overrun);
8992                }
8993                out[0usize] = alloy_sol_types::abi::token::WordToken(
8994                    Self::SIGNATURE_HASH,
8995                );
8996                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8997                    &self.delegator,
8998                );
8999                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9000                    &self.validator,
9001                );
9002                Ok(())
9003            }
9004        }
9005        #[automatically_derived]
9006        impl alloy_sol_types::private::IntoLogData for Delegated {
9007            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9008                From::from(self)
9009            }
9010            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9011                From::from(&self)
9012            }
9013        }
9014        #[automatically_derived]
9015        impl From<&Delegated> for alloy_sol_types::private::LogData {
9016            #[inline]
9017            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
9018                alloy_sol_types::SolEvent::encode_log_data(this)
9019            }
9020        }
9021    };
9022    #[derive(serde::Serialize, serde::Deserialize)]
9023    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9024    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
9025```solidity
9026event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
9027```*/
9028    #[allow(
9029        non_camel_case_types,
9030        non_snake_case,
9031        clippy::pub_underscore_fields,
9032        clippy::style
9033    )]
9034    #[derive(Clone)]
9035    pub struct ExitEscrowPeriodUpdated {
9036        #[allow(missing_docs)]
9037        pub newExitEscrowPeriod: u64,
9038    }
9039    #[allow(
9040        non_camel_case_types,
9041        non_snake_case,
9042        clippy::pub_underscore_fields,
9043        clippy::style
9044    )]
9045    const _: () = {
9046        use alloy::sol_types as alloy_sol_types;
9047        #[automatically_derived]
9048        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
9049            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9050            type DataToken<'a> = <Self::DataTuple<
9051                'a,
9052            > as alloy_sol_types::SolType>::Token<'a>;
9053            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9054            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
9055            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9056                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
9057                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
9058                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
9059            ]);
9060            const ANONYMOUS: bool = false;
9061            #[allow(unused_variables)]
9062            #[inline]
9063            fn new(
9064                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9065                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9066            ) -> Self {
9067                Self {
9068                    newExitEscrowPeriod: data.0,
9069                }
9070            }
9071            #[inline]
9072            fn check_signature(
9073                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9074            ) -> alloy_sol_types::Result<()> {
9075                if topics.0 != Self::SIGNATURE_HASH {
9076                    return Err(
9077                        alloy_sol_types::Error::invalid_event_signature_hash(
9078                            Self::SIGNATURE,
9079                            topics.0,
9080                            Self::SIGNATURE_HASH,
9081                        ),
9082                    );
9083                }
9084                Ok(())
9085            }
9086            #[inline]
9087            fn tokenize_body(&self) -> Self::DataToken<'_> {
9088                (
9089                    <alloy::sol_types::sol_data::Uint<
9090                        64,
9091                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
9092                )
9093            }
9094            #[inline]
9095            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9096                (Self::SIGNATURE_HASH.into(),)
9097            }
9098            #[inline]
9099            fn encode_topics_raw(
9100                &self,
9101                out: &mut [alloy_sol_types::abi::token::WordToken],
9102            ) -> alloy_sol_types::Result<()> {
9103                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9104                    return Err(alloy_sol_types::Error::Overrun);
9105                }
9106                out[0usize] = alloy_sol_types::abi::token::WordToken(
9107                    Self::SIGNATURE_HASH,
9108                );
9109                Ok(())
9110            }
9111        }
9112        #[automatically_derived]
9113        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
9114            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9115                From::from(self)
9116            }
9117            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9118                From::from(&self)
9119            }
9120        }
9121        #[automatically_derived]
9122        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
9123            #[inline]
9124            fn from(
9125                this: &ExitEscrowPeriodUpdated,
9126            ) -> alloy_sol_types::private::LogData {
9127                alloy_sol_types::SolEvent::encode_log_data(this)
9128            }
9129        }
9130    };
9131    #[derive(serde::Serialize, serde::Deserialize)]
9132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9133    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
9134```solidity
9135event Initialized(uint64 version);
9136```*/
9137    #[allow(
9138        non_camel_case_types,
9139        non_snake_case,
9140        clippy::pub_underscore_fields,
9141        clippy::style
9142    )]
9143    #[derive(Clone)]
9144    pub struct Initialized {
9145        #[allow(missing_docs)]
9146        pub version: u64,
9147    }
9148    #[allow(
9149        non_camel_case_types,
9150        non_snake_case,
9151        clippy::pub_underscore_fields,
9152        clippy::style
9153    )]
9154    const _: () = {
9155        use alloy::sol_types as alloy_sol_types;
9156        #[automatically_derived]
9157        impl alloy_sol_types::SolEvent for Initialized {
9158            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9159            type DataToken<'a> = <Self::DataTuple<
9160                'a,
9161            > as alloy_sol_types::SolType>::Token<'a>;
9162            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9163            const SIGNATURE: &'static str = "Initialized(uint64)";
9164            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9165                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
9166                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
9167                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
9168            ]);
9169            const ANONYMOUS: bool = false;
9170            #[allow(unused_variables)]
9171            #[inline]
9172            fn new(
9173                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9174                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9175            ) -> Self {
9176                Self { version: data.0 }
9177            }
9178            #[inline]
9179            fn check_signature(
9180                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9181            ) -> alloy_sol_types::Result<()> {
9182                if topics.0 != Self::SIGNATURE_HASH {
9183                    return Err(
9184                        alloy_sol_types::Error::invalid_event_signature_hash(
9185                            Self::SIGNATURE,
9186                            topics.0,
9187                            Self::SIGNATURE_HASH,
9188                        ),
9189                    );
9190                }
9191                Ok(())
9192            }
9193            #[inline]
9194            fn tokenize_body(&self) -> Self::DataToken<'_> {
9195                (
9196                    <alloy::sol_types::sol_data::Uint<
9197                        64,
9198                    > as alloy_sol_types::SolType>::tokenize(&self.version),
9199                )
9200            }
9201            #[inline]
9202            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9203                (Self::SIGNATURE_HASH.into(),)
9204            }
9205            #[inline]
9206            fn encode_topics_raw(
9207                &self,
9208                out: &mut [alloy_sol_types::abi::token::WordToken],
9209            ) -> alloy_sol_types::Result<()> {
9210                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9211                    return Err(alloy_sol_types::Error::Overrun);
9212                }
9213                out[0usize] = alloy_sol_types::abi::token::WordToken(
9214                    Self::SIGNATURE_HASH,
9215                );
9216                Ok(())
9217            }
9218        }
9219        #[automatically_derived]
9220        impl alloy_sol_types::private::IntoLogData for Initialized {
9221            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9222                From::from(self)
9223            }
9224            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9225                From::from(&self)
9226            }
9227        }
9228        #[automatically_derived]
9229        impl From<&Initialized> for alloy_sol_types::private::LogData {
9230            #[inline]
9231            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
9232                alloy_sol_types::SolEvent::encode_log_data(this)
9233            }
9234        }
9235    };
9236    #[derive(serde::Serialize, serde::Deserialize)]
9237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9238    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
9239```solidity
9240event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
9241```*/
9242    #[allow(
9243        non_camel_case_types,
9244        non_snake_case,
9245        clippy::pub_underscore_fields,
9246        clippy::style
9247    )]
9248    #[derive(Clone)]
9249    pub struct MaxCommissionIncreaseUpdated {
9250        #[allow(missing_docs)]
9251        pub newMaxIncrease: u16,
9252    }
9253    #[allow(
9254        non_camel_case_types,
9255        non_snake_case,
9256        clippy::pub_underscore_fields,
9257        clippy::style
9258    )]
9259    const _: () = {
9260        use alloy::sol_types as alloy_sol_types;
9261        #[automatically_derived]
9262        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
9263            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
9264            type DataToken<'a> = <Self::DataTuple<
9265                'a,
9266            > as alloy_sol_types::SolType>::Token<'a>;
9267            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9268            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
9269            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9270                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
9271                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
9272                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
9273            ]);
9274            const ANONYMOUS: bool = false;
9275            #[allow(unused_variables)]
9276            #[inline]
9277            fn new(
9278                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9279                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9280            ) -> Self {
9281                Self { newMaxIncrease: data.0 }
9282            }
9283            #[inline]
9284            fn check_signature(
9285                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9286            ) -> alloy_sol_types::Result<()> {
9287                if topics.0 != Self::SIGNATURE_HASH {
9288                    return Err(
9289                        alloy_sol_types::Error::invalid_event_signature_hash(
9290                            Self::SIGNATURE,
9291                            topics.0,
9292                            Self::SIGNATURE_HASH,
9293                        ),
9294                    );
9295                }
9296                Ok(())
9297            }
9298            #[inline]
9299            fn tokenize_body(&self) -> Self::DataToken<'_> {
9300                (
9301                    <alloy::sol_types::sol_data::Uint<
9302                        16,
9303                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
9304                )
9305            }
9306            #[inline]
9307            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9308                (Self::SIGNATURE_HASH.into(),)
9309            }
9310            #[inline]
9311            fn encode_topics_raw(
9312                &self,
9313                out: &mut [alloy_sol_types::abi::token::WordToken],
9314            ) -> alloy_sol_types::Result<()> {
9315                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9316                    return Err(alloy_sol_types::Error::Overrun);
9317                }
9318                out[0usize] = alloy_sol_types::abi::token::WordToken(
9319                    Self::SIGNATURE_HASH,
9320                );
9321                Ok(())
9322            }
9323        }
9324        #[automatically_derived]
9325        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
9326            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9327                From::from(self)
9328            }
9329            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9330                From::from(&self)
9331            }
9332        }
9333        #[automatically_derived]
9334        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
9335            #[inline]
9336            fn from(
9337                this: &MaxCommissionIncreaseUpdated,
9338            ) -> alloy_sol_types::private::LogData {
9339                alloy_sol_types::SolEvent::encode_log_data(this)
9340            }
9341        }
9342    };
9343    #[derive(serde::Serialize, serde::Deserialize)]
9344    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9345    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
9346```solidity
9347event MetadataUriUpdated(address indexed validator, string metadataUri);
9348```*/
9349    #[allow(
9350        non_camel_case_types,
9351        non_snake_case,
9352        clippy::pub_underscore_fields,
9353        clippy::style
9354    )]
9355    #[derive(Clone)]
9356    pub struct MetadataUriUpdated {
9357        #[allow(missing_docs)]
9358        pub validator: alloy::sol_types::private::Address,
9359        #[allow(missing_docs)]
9360        pub metadataUri: alloy::sol_types::private::String,
9361    }
9362    #[allow(
9363        non_camel_case_types,
9364        non_snake_case,
9365        clippy::pub_underscore_fields,
9366        clippy::style
9367    )]
9368    const _: () = {
9369        use alloy::sol_types as alloy_sol_types;
9370        #[automatically_derived]
9371        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
9372            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
9373            type DataToken<'a> = <Self::DataTuple<
9374                'a,
9375            > as alloy_sol_types::SolType>::Token<'a>;
9376            type TopicList = (
9377                alloy_sol_types::sol_data::FixedBytes<32>,
9378                alloy::sol_types::sol_data::Address,
9379            );
9380            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
9381            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9382                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
9383                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
9384                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
9385            ]);
9386            const ANONYMOUS: bool = false;
9387            #[allow(unused_variables)]
9388            #[inline]
9389            fn new(
9390                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9391                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9392            ) -> Self {
9393                Self {
9394                    validator: topics.1,
9395                    metadataUri: data.0,
9396                }
9397            }
9398            #[inline]
9399            fn check_signature(
9400                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9401            ) -> alloy_sol_types::Result<()> {
9402                if topics.0 != Self::SIGNATURE_HASH {
9403                    return Err(
9404                        alloy_sol_types::Error::invalid_event_signature_hash(
9405                            Self::SIGNATURE,
9406                            topics.0,
9407                            Self::SIGNATURE_HASH,
9408                        ),
9409                    );
9410                }
9411                Ok(())
9412            }
9413            #[inline]
9414            fn tokenize_body(&self) -> Self::DataToken<'_> {
9415                (
9416                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9417                        &self.metadataUri,
9418                    ),
9419                )
9420            }
9421            #[inline]
9422            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9423                (Self::SIGNATURE_HASH.into(), self.validator.clone())
9424            }
9425            #[inline]
9426            fn encode_topics_raw(
9427                &self,
9428                out: &mut [alloy_sol_types::abi::token::WordToken],
9429            ) -> alloy_sol_types::Result<()> {
9430                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9431                    return Err(alloy_sol_types::Error::Overrun);
9432                }
9433                out[0usize] = alloy_sol_types::abi::token::WordToken(
9434                    Self::SIGNATURE_HASH,
9435                );
9436                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9437                    &self.validator,
9438                );
9439                Ok(())
9440            }
9441        }
9442        #[automatically_derived]
9443        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
9444            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9445                From::from(self)
9446            }
9447            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9448                From::from(&self)
9449            }
9450        }
9451        #[automatically_derived]
9452        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
9453            #[inline]
9454            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
9455                alloy_sol_types::SolEvent::encode_log_data(this)
9456            }
9457        }
9458    };
9459    #[derive(serde::Serialize, serde::Deserialize)]
9460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9461    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
9462```solidity
9463event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
9464```*/
9465    #[allow(
9466        non_camel_case_types,
9467        non_snake_case,
9468        clippy::pub_underscore_fields,
9469        clippy::style
9470    )]
9471    #[derive(Clone)]
9472    pub struct MinCommissionUpdateIntervalUpdated {
9473        #[allow(missing_docs)]
9474        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
9475    }
9476    #[allow(
9477        non_camel_case_types,
9478        non_snake_case,
9479        clippy::pub_underscore_fields,
9480        clippy::style
9481    )]
9482    const _: () = {
9483        use alloy::sol_types as alloy_sol_types;
9484        #[automatically_derived]
9485        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
9486            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9487            type DataToken<'a> = <Self::DataTuple<
9488                'a,
9489            > as alloy_sol_types::SolType>::Token<'a>;
9490            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9491            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
9492            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9493                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
9494                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
9495                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
9496            ]);
9497            const ANONYMOUS: bool = false;
9498            #[allow(unused_variables)]
9499            #[inline]
9500            fn new(
9501                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9502                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9503            ) -> Self {
9504                Self { newInterval: data.0 }
9505            }
9506            #[inline]
9507            fn check_signature(
9508                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9509            ) -> alloy_sol_types::Result<()> {
9510                if topics.0 != Self::SIGNATURE_HASH {
9511                    return Err(
9512                        alloy_sol_types::Error::invalid_event_signature_hash(
9513                            Self::SIGNATURE,
9514                            topics.0,
9515                            Self::SIGNATURE_HASH,
9516                        ),
9517                    );
9518                }
9519                Ok(())
9520            }
9521            #[inline]
9522            fn tokenize_body(&self) -> Self::DataToken<'_> {
9523                (
9524                    <alloy::sol_types::sol_data::Uint<
9525                        256,
9526                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
9527                )
9528            }
9529            #[inline]
9530            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9531                (Self::SIGNATURE_HASH.into(),)
9532            }
9533            #[inline]
9534            fn encode_topics_raw(
9535                &self,
9536                out: &mut [alloy_sol_types::abi::token::WordToken],
9537            ) -> alloy_sol_types::Result<()> {
9538                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9539                    return Err(alloy_sol_types::Error::Overrun);
9540                }
9541                out[0usize] = alloy_sol_types::abi::token::WordToken(
9542                    Self::SIGNATURE_HASH,
9543                );
9544                Ok(())
9545            }
9546        }
9547        #[automatically_derived]
9548        impl alloy_sol_types::private::IntoLogData
9549        for MinCommissionUpdateIntervalUpdated {
9550            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9551                From::from(self)
9552            }
9553            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9554                From::from(&self)
9555            }
9556        }
9557        #[automatically_derived]
9558        impl From<&MinCommissionUpdateIntervalUpdated>
9559        for alloy_sol_types::private::LogData {
9560            #[inline]
9561            fn from(
9562                this: &MinCommissionUpdateIntervalUpdated,
9563            ) -> alloy_sol_types::private::LogData {
9564                alloy_sol_types::SolEvent::encode_log_data(this)
9565            }
9566        }
9567    };
9568    #[derive(serde::Serialize, serde::Deserialize)]
9569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9570    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
9571```solidity
9572event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
9573```*/
9574    #[allow(
9575        non_camel_case_types,
9576        non_snake_case,
9577        clippy::pub_underscore_fields,
9578        clippy::style
9579    )]
9580    #[derive(Clone)]
9581    pub struct MinDelegateAmountUpdated {
9582        #[allow(missing_docs)]
9583        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
9584    }
9585    #[allow(
9586        non_camel_case_types,
9587        non_snake_case,
9588        clippy::pub_underscore_fields,
9589        clippy::style
9590    )]
9591    const _: () = {
9592        use alloy::sol_types as alloy_sol_types;
9593        #[automatically_derived]
9594        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
9595            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9596            type DataToken<'a> = <Self::DataTuple<
9597                'a,
9598            > as alloy_sol_types::SolType>::Token<'a>;
9599            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9600            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
9601            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9602                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
9603                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
9604                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
9605            ]);
9606            const ANONYMOUS: bool = false;
9607            #[allow(unused_variables)]
9608            #[inline]
9609            fn new(
9610                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9611                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9612            ) -> Self {
9613                Self {
9614                    newMinDelegateAmount: data.0,
9615                }
9616            }
9617            #[inline]
9618            fn check_signature(
9619                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9620            ) -> alloy_sol_types::Result<()> {
9621                if topics.0 != Self::SIGNATURE_HASH {
9622                    return Err(
9623                        alloy_sol_types::Error::invalid_event_signature_hash(
9624                            Self::SIGNATURE,
9625                            topics.0,
9626                            Self::SIGNATURE_HASH,
9627                        ),
9628                    );
9629                }
9630                Ok(())
9631            }
9632            #[inline]
9633            fn tokenize_body(&self) -> Self::DataToken<'_> {
9634                (
9635                    <alloy::sol_types::sol_data::Uint<
9636                        256,
9637                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
9638                )
9639            }
9640            #[inline]
9641            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9642                (Self::SIGNATURE_HASH.into(),)
9643            }
9644            #[inline]
9645            fn encode_topics_raw(
9646                &self,
9647                out: &mut [alloy_sol_types::abi::token::WordToken],
9648            ) -> alloy_sol_types::Result<()> {
9649                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9650                    return Err(alloy_sol_types::Error::Overrun);
9651                }
9652                out[0usize] = alloy_sol_types::abi::token::WordToken(
9653                    Self::SIGNATURE_HASH,
9654                );
9655                Ok(())
9656            }
9657        }
9658        #[automatically_derived]
9659        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
9660            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9661                From::from(self)
9662            }
9663            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9664                From::from(&self)
9665            }
9666        }
9667        #[automatically_derived]
9668        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
9669            #[inline]
9670            fn from(
9671                this: &MinDelegateAmountUpdated,
9672            ) -> alloy_sol_types::private::LogData {
9673                alloy_sol_types::SolEvent::encode_log_data(this)
9674            }
9675        }
9676    };
9677    #[derive(serde::Serialize, serde::Deserialize)]
9678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9679    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
9680```solidity
9681event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
9682```*/
9683    #[allow(
9684        non_camel_case_types,
9685        non_snake_case,
9686        clippy::pub_underscore_fields,
9687        clippy::style
9688    )]
9689    #[derive(Clone)]
9690    pub struct OwnershipTransferred {
9691        #[allow(missing_docs)]
9692        pub previousOwner: alloy::sol_types::private::Address,
9693        #[allow(missing_docs)]
9694        pub newOwner: alloy::sol_types::private::Address,
9695    }
9696    #[allow(
9697        non_camel_case_types,
9698        non_snake_case,
9699        clippy::pub_underscore_fields,
9700        clippy::style
9701    )]
9702    const _: () = {
9703        use alloy::sol_types as alloy_sol_types;
9704        #[automatically_derived]
9705        impl alloy_sol_types::SolEvent for OwnershipTransferred {
9706            type DataTuple<'a> = ();
9707            type DataToken<'a> = <Self::DataTuple<
9708                'a,
9709            > as alloy_sol_types::SolType>::Token<'a>;
9710            type TopicList = (
9711                alloy_sol_types::sol_data::FixedBytes<32>,
9712                alloy::sol_types::sol_data::Address,
9713                alloy::sol_types::sol_data::Address,
9714            );
9715            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
9716            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9717                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9718                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9719                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9720            ]);
9721            const ANONYMOUS: bool = false;
9722            #[allow(unused_variables)]
9723            #[inline]
9724            fn new(
9725                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9726                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9727            ) -> Self {
9728                Self {
9729                    previousOwner: topics.1,
9730                    newOwner: topics.2,
9731                }
9732            }
9733            #[inline]
9734            fn check_signature(
9735                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9736            ) -> alloy_sol_types::Result<()> {
9737                if topics.0 != Self::SIGNATURE_HASH {
9738                    return Err(
9739                        alloy_sol_types::Error::invalid_event_signature_hash(
9740                            Self::SIGNATURE,
9741                            topics.0,
9742                            Self::SIGNATURE_HASH,
9743                        ),
9744                    );
9745                }
9746                Ok(())
9747            }
9748            #[inline]
9749            fn tokenize_body(&self) -> Self::DataToken<'_> {
9750                ()
9751            }
9752            #[inline]
9753            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9754                (
9755                    Self::SIGNATURE_HASH.into(),
9756                    self.previousOwner.clone(),
9757                    self.newOwner.clone(),
9758                )
9759            }
9760            #[inline]
9761            fn encode_topics_raw(
9762                &self,
9763                out: &mut [alloy_sol_types::abi::token::WordToken],
9764            ) -> alloy_sol_types::Result<()> {
9765                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9766                    return Err(alloy_sol_types::Error::Overrun);
9767                }
9768                out[0usize] = alloy_sol_types::abi::token::WordToken(
9769                    Self::SIGNATURE_HASH,
9770                );
9771                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9772                    &self.previousOwner,
9773                );
9774                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9775                    &self.newOwner,
9776                );
9777                Ok(())
9778            }
9779        }
9780        #[automatically_derived]
9781        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9782            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9783                From::from(self)
9784            }
9785            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9786                From::from(&self)
9787            }
9788        }
9789        #[automatically_derived]
9790        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9791            #[inline]
9792            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9793                alloy_sol_types::SolEvent::encode_log_data(this)
9794            }
9795        }
9796    };
9797    #[derive(serde::Serialize, serde::Deserialize)]
9798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9799    /**Event with signature `P2pAddrUpdated(address,string)` and selector `0x43066182af89f2304522071a57c06063e11b26591d6d9c33f1874c2d0a14bb22`.
9800```solidity
9801event P2pAddrUpdated(address indexed validator, string p2pAddr);
9802```*/
9803    #[allow(
9804        non_camel_case_types,
9805        non_snake_case,
9806        clippy::pub_underscore_fields,
9807        clippy::style
9808    )]
9809    #[derive(Clone)]
9810    pub struct P2pAddrUpdated {
9811        #[allow(missing_docs)]
9812        pub validator: alloy::sol_types::private::Address,
9813        #[allow(missing_docs)]
9814        pub p2pAddr: alloy::sol_types::private::String,
9815    }
9816    #[allow(
9817        non_camel_case_types,
9818        non_snake_case,
9819        clippy::pub_underscore_fields,
9820        clippy::style
9821    )]
9822    const _: () = {
9823        use alloy::sol_types as alloy_sol_types;
9824        #[automatically_derived]
9825        impl alloy_sol_types::SolEvent for P2pAddrUpdated {
9826            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
9827            type DataToken<'a> = <Self::DataTuple<
9828                'a,
9829            > as alloy_sol_types::SolType>::Token<'a>;
9830            type TopicList = (
9831                alloy_sol_types::sol_data::FixedBytes<32>,
9832                alloy::sol_types::sol_data::Address,
9833            );
9834            const SIGNATURE: &'static str = "P2pAddrUpdated(address,string)";
9835            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9836                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
9837                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
9838                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
9839            ]);
9840            const ANONYMOUS: bool = false;
9841            #[allow(unused_variables)]
9842            #[inline]
9843            fn new(
9844                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9845                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9846            ) -> Self {
9847                Self {
9848                    validator: topics.1,
9849                    p2pAddr: data.0,
9850                }
9851            }
9852            #[inline]
9853            fn check_signature(
9854                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9855            ) -> alloy_sol_types::Result<()> {
9856                if topics.0 != Self::SIGNATURE_HASH {
9857                    return Err(
9858                        alloy_sol_types::Error::invalid_event_signature_hash(
9859                            Self::SIGNATURE,
9860                            topics.0,
9861                            Self::SIGNATURE_HASH,
9862                        ),
9863                    );
9864                }
9865                Ok(())
9866            }
9867            #[inline]
9868            fn tokenize_body(&self) -> Self::DataToken<'_> {
9869                (
9870                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9871                        &self.p2pAddr,
9872                    ),
9873                )
9874            }
9875            #[inline]
9876            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9877                (Self::SIGNATURE_HASH.into(), self.validator.clone())
9878            }
9879            #[inline]
9880            fn encode_topics_raw(
9881                &self,
9882                out: &mut [alloy_sol_types::abi::token::WordToken],
9883            ) -> alloy_sol_types::Result<()> {
9884                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9885                    return Err(alloy_sol_types::Error::Overrun);
9886                }
9887                out[0usize] = alloy_sol_types::abi::token::WordToken(
9888                    Self::SIGNATURE_HASH,
9889                );
9890                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9891                    &self.validator,
9892                );
9893                Ok(())
9894            }
9895        }
9896        #[automatically_derived]
9897        impl alloy_sol_types::private::IntoLogData for P2pAddrUpdated {
9898            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9899                From::from(self)
9900            }
9901            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9902                From::from(&self)
9903            }
9904        }
9905        #[automatically_derived]
9906        impl From<&P2pAddrUpdated> for alloy_sol_types::private::LogData {
9907            #[inline]
9908            fn from(this: &P2pAddrUpdated) -> alloy_sol_types::private::LogData {
9909                alloy_sol_types::SolEvent::encode_log_data(this)
9910            }
9911        }
9912    };
9913    #[derive(serde::Serialize, serde::Deserialize)]
9914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9915    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
9916```solidity
9917event Paused(address account);
9918```*/
9919    #[allow(
9920        non_camel_case_types,
9921        non_snake_case,
9922        clippy::pub_underscore_fields,
9923        clippy::style
9924    )]
9925    #[derive(Clone)]
9926    pub struct Paused {
9927        #[allow(missing_docs)]
9928        pub account: alloy::sol_types::private::Address,
9929    }
9930    #[allow(
9931        non_camel_case_types,
9932        non_snake_case,
9933        clippy::pub_underscore_fields,
9934        clippy::style
9935    )]
9936    const _: () = {
9937        use alloy::sol_types as alloy_sol_types;
9938        #[automatically_derived]
9939        impl alloy_sol_types::SolEvent for Paused {
9940            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9941            type DataToken<'a> = <Self::DataTuple<
9942                'a,
9943            > as alloy_sol_types::SolType>::Token<'a>;
9944            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9945            const SIGNATURE: &'static str = "Paused(address)";
9946            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9947                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9948                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9949                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9950            ]);
9951            const ANONYMOUS: bool = false;
9952            #[allow(unused_variables)]
9953            #[inline]
9954            fn new(
9955                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9956                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9957            ) -> Self {
9958                Self { account: data.0 }
9959            }
9960            #[inline]
9961            fn check_signature(
9962                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9963            ) -> alloy_sol_types::Result<()> {
9964                if topics.0 != Self::SIGNATURE_HASH {
9965                    return Err(
9966                        alloy_sol_types::Error::invalid_event_signature_hash(
9967                            Self::SIGNATURE,
9968                            topics.0,
9969                            Self::SIGNATURE_HASH,
9970                        ),
9971                    );
9972                }
9973                Ok(())
9974            }
9975            #[inline]
9976            fn tokenize_body(&self) -> Self::DataToken<'_> {
9977                (
9978                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9979                        &self.account,
9980                    ),
9981                )
9982            }
9983            #[inline]
9984            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9985                (Self::SIGNATURE_HASH.into(),)
9986            }
9987            #[inline]
9988            fn encode_topics_raw(
9989                &self,
9990                out: &mut [alloy_sol_types::abi::token::WordToken],
9991            ) -> alloy_sol_types::Result<()> {
9992                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9993                    return Err(alloy_sol_types::Error::Overrun);
9994                }
9995                out[0usize] = alloy_sol_types::abi::token::WordToken(
9996                    Self::SIGNATURE_HASH,
9997                );
9998                Ok(())
9999            }
10000        }
10001        #[automatically_derived]
10002        impl alloy_sol_types::private::IntoLogData for Paused {
10003            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10004                From::from(self)
10005            }
10006            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10007                From::from(&self)
10008            }
10009        }
10010        #[automatically_derived]
10011        impl From<&Paused> for alloy_sol_types::private::LogData {
10012            #[inline]
10013            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
10014                alloy_sol_types::SolEvent::encode_log_data(this)
10015            }
10016        }
10017    };
10018    #[derive(serde::Serialize, serde::Deserialize)]
10019    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10020    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
10021```solidity
10022event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
10023```*/
10024    #[allow(
10025        non_camel_case_types,
10026        non_snake_case,
10027        clippy::pub_underscore_fields,
10028        clippy::style
10029    )]
10030    #[derive(Clone)]
10031    pub struct RoleAdminChanged {
10032        #[allow(missing_docs)]
10033        pub role: alloy::sol_types::private::FixedBytes<32>,
10034        #[allow(missing_docs)]
10035        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
10036        #[allow(missing_docs)]
10037        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
10038    }
10039    #[allow(
10040        non_camel_case_types,
10041        non_snake_case,
10042        clippy::pub_underscore_fields,
10043        clippy::style
10044    )]
10045    const _: () = {
10046        use alloy::sol_types as alloy_sol_types;
10047        #[automatically_derived]
10048        impl alloy_sol_types::SolEvent for RoleAdminChanged {
10049            type DataTuple<'a> = ();
10050            type DataToken<'a> = <Self::DataTuple<
10051                'a,
10052            > as alloy_sol_types::SolType>::Token<'a>;
10053            type TopicList = (
10054                alloy_sol_types::sol_data::FixedBytes<32>,
10055                alloy::sol_types::sol_data::FixedBytes<32>,
10056                alloy::sol_types::sol_data::FixedBytes<32>,
10057                alloy::sol_types::sol_data::FixedBytes<32>,
10058            );
10059            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
10060            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10061                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
10062                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
10063                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
10064            ]);
10065            const ANONYMOUS: bool = false;
10066            #[allow(unused_variables)]
10067            #[inline]
10068            fn new(
10069                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10070                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10071            ) -> Self {
10072                Self {
10073                    role: topics.1,
10074                    previousAdminRole: topics.2,
10075                    newAdminRole: topics.3,
10076                }
10077            }
10078            #[inline]
10079            fn check_signature(
10080                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10081            ) -> alloy_sol_types::Result<()> {
10082                if topics.0 != Self::SIGNATURE_HASH {
10083                    return Err(
10084                        alloy_sol_types::Error::invalid_event_signature_hash(
10085                            Self::SIGNATURE,
10086                            topics.0,
10087                            Self::SIGNATURE_HASH,
10088                        ),
10089                    );
10090                }
10091                Ok(())
10092            }
10093            #[inline]
10094            fn tokenize_body(&self) -> Self::DataToken<'_> {
10095                ()
10096            }
10097            #[inline]
10098            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10099                (
10100                    Self::SIGNATURE_HASH.into(),
10101                    self.role.clone(),
10102                    self.previousAdminRole.clone(),
10103                    self.newAdminRole.clone(),
10104                )
10105            }
10106            #[inline]
10107            fn encode_topics_raw(
10108                &self,
10109                out: &mut [alloy_sol_types::abi::token::WordToken],
10110            ) -> alloy_sol_types::Result<()> {
10111                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10112                    return Err(alloy_sol_types::Error::Overrun);
10113                }
10114                out[0usize] = alloy_sol_types::abi::token::WordToken(
10115                    Self::SIGNATURE_HASH,
10116                );
10117                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10118                    32,
10119                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10120                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
10121                    32,
10122                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
10123                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
10124                    32,
10125                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
10126                Ok(())
10127            }
10128        }
10129        #[automatically_derived]
10130        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
10131            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10132                From::from(self)
10133            }
10134            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10135                From::from(&self)
10136            }
10137        }
10138        #[automatically_derived]
10139        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
10140            #[inline]
10141            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
10142                alloy_sol_types::SolEvent::encode_log_data(this)
10143            }
10144        }
10145    };
10146    #[derive(serde::Serialize, serde::Deserialize)]
10147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10148    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
10149```solidity
10150event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
10151```*/
10152    #[allow(
10153        non_camel_case_types,
10154        non_snake_case,
10155        clippy::pub_underscore_fields,
10156        clippy::style
10157    )]
10158    #[derive(Clone)]
10159    pub struct RoleGranted {
10160        #[allow(missing_docs)]
10161        pub role: alloy::sol_types::private::FixedBytes<32>,
10162        #[allow(missing_docs)]
10163        pub account: alloy::sol_types::private::Address,
10164        #[allow(missing_docs)]
10165        pub sender: alloy::sol_types::private::Address,
10166    }
10167    #[allow(
10168        non_camel_case_types,
10169        non_snake_case,
10170        clippy::pub_underscore_fields,
10171        clippy::style
10172    )]
10173    const _: () = {
10174        use alloy::sol_types as alloy_sol_types;
10175        #[automatically_derived]
10176        impl alloy_sol_types::SolEvent for RoleGranted {
10177            type DataTuple<'a> = ();
10178            type DataToken<'a> = <Self::DataTuple<
10179                'a,
10180            > as alloy_sol_types::SolType>::Token<'a>;
10181            type TopicList = (
10182                alloy_sol_types::sol_data::FixedBytes<32>,
10183                alloy::sol_types::sol_data::FixedBytes<32>,
10184                alloy::sol_types::sol_data::Address,
10185                alloy::sol_types::sol_data::Address,
10186            );
10187            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
10188            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10189                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
10190                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
10191                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
10192            ]);
10193            const ANONYMOUS: bool = false;
10194            #[allow(unused_variables)]
10195            #[inline]
10196            fn new(
10197                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10198                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10199            ) -> Self {
10200                Self {
10201                    role: topics.1,
10202                    account: topics.2,
10203                    sender: topics.3,
10204                }
10205            }
10206            #[inline]
10207            fn check_signature(
10208                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10209            ) -> alloy_sol_types::Result<()> {
10210                if topics.0 != Self::SIGNATURE_HASH {
10211                    return Err(
10212                        alloy_sol_types::Error::invalid_event_signature_hash(
10213                            Self::SIGNATURE,
10214                            topics.0,
10215                            Self::SIGNATURE_HASH,
10216                        ),
10217                    );
10218                }
10219                Ok(())
10220            }
10221            #[inline]
10222            fn tokenize_body(&self) -> Self::DataToken<'_> {
10223                ()
10224            }
10225            #[inline]
10226            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10227                (
10228                    Self::SIGNATURE_HASH.into(),
10229                    self.role.clone(),
10230                    self.account.clone(),
10231                    self.sender.clone(),
10232                )
10233            }
10234            #[inline]
10235            fn encode_topics_raw(
10236                &self,
10237                out: &mut [alloy_sol_types::abi::token::WordToken],
10238            ) -> alloy_sol_types::Result<()> {
10239                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10240                    return Err(alloy_sol_types::Error::Overrun);
10241                }
10242                out[0usize] = alloy_sol_types::abi::token::WordToken(
10243                    Self::SIGNATURE_HASH,
10244                );
10245                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10246                    32,
10247                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10248                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10249                    &self.account,
10250                );
10251                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10252                    &self.sender,
10253                );
10254                Ok(())
10255            }
10256        }
10257        #[automatically_derived]
10258        impl alloy_sol_types::private::IntoLogData for RoleGranted {
10259            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10260                From::from(self)
10261            }
10262            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10263                From::from(&self)
10264            }
10265        }
10266        #[automatically_derived]
10267        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
10268            #[inline]
10269            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
10270                alloy_sol_types::SolEvent::encode_log_data(this)
10271            }
10272        }
10273    };
10274    #[derive(serde::Serialize, serde::Deserialize)]
10275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10276    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
10277```solidity
10278event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
10279```*/
10280    #[allow(
10281        non_camel_case_types,
10282        non_snake_case,
10283        clippy::pub_underscore_fields,
10284        clippy::style
10285    )]
10286    #[derive(Clone)]
10287    pub struct RoleRevoked {
10288        #[allow(missing_docs)]
10289        pub role: alloy::sol_types::private::FixedBytes<32>,
10290        #[allow(missing_docs)]
10291        pub account: alloy::sol_types::private::Address,
10292        #[allow(missing_docs)]
10293        pub sender: alloy::sol_types::private::Address,
10294    }
10295    #[allow(
10296        non_camel_case_types,
10297        non_snake_case,
10298        clippy::pub_underscore_fields,
10299        clippy::style
10300    )]
10301    const _: () = {
10302        use alloy::sol_types as alloy_sol_types;
10303        #[automatically_derived]
10304        impl alloy_sol_types::SolEvent for RoleRevoked {
10305            type DataTuple<'a> = ();
10306            type DataToken<'a> = <Self::DataTuple<
10307                'a,
10308            > as alloy_sol_types::SolType>::Token<'a>;
10309            type TopicList = (
10310                alloy_sol_types::sol_data::FixedBytes<32>,
10311                alloy::sol_types::sol_data::FixedBytes<32>,
10312                alloy::sol_types::sol_data::Address,
10313                alloy::sol_types::sol_data::Address,
10314            );
10315            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
10316            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10317                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
10318                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
10319                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
10320            ]);
10321            const ANONYMOUS: bool = false;
10322            #[allow(unused_variables)]
10323            #[inline]
10324            fn new(
10325                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10326                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10327            ) -> Self {
10328                Self {
10329                    role: topics.1,
10330                    account: topics.2,
10331                    sender: topics.3,
10332                }
10333            }
10334            #[inline]
10335            fn check_signature(
10336                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10337            ) -> alloy_sol_types::Result<()> {
10338                if topics.0 != Self::SIGNATURE_HASH {
10339                    return Err(
10340                        alloy_sol_types::Error::invalid_event_signature_hash(
10341                            Self::SIGNATURE,
10342                            topics.0,
10343                            Self::SIGNATURE_HASH,
10344                        ),
10345                    );
10346                }
10347                Ok(())
10348            }
10349            #[inline]
10350            fn tokenize_body(&self) -> Self::DataToken<'_> {
10351                ()
10352            }
10353            #[inline]
10354            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10355                (
10356                    Self::SIGNATURE_HASH.into(),
10357                    self.role.clone(),
10358                    self.account.clone(),
10359                    self.sender.clone(),
10360                )
10361            }
10362            #[inline]
10363            fn encode_topics_raw(
10364                &self,
10365                out: &mut [alloy_sol_types::abi::token::WordToken],
10366            ) -> alloy_sol_types::Result<()> {
10367                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10368                    return Err(alloy_sol_types::Error::Overrun);
10369                }
10370                out[0usize] = alloy_sol_types::abi::token::WordToken(
10371                    Self::SIGNATURE_HASH,
10372                );
10373                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
10374                    32,
10375                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
10376                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10377                    &self.account,
10378                );
10379                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10380                    &self.sender,
10381                );
10382                Ok(())
10383            }
10384        }
10385        #[automatically_derived]
10386        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
10387            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10388                From::from(self)
10389            }
10390            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10391                From::from(&self)
10392            }
10393        }
10394        #[automatically_derived]
10395        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
10396            #[inline]
10397            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
10398                alloy_sol_types::SolEvent::encode_log_data(this)
10399            }
10400        }
10401    };
10402    #[derive(serde::Serialize, serde::Deserialize)]
10403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10404    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
10405```solidity
10406event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
10407```*/
10408    #[allow(
10409        non_camel_case_types,
10410        non_snake_case,
10411        clippy::pub_underscore_fields,
10412        clippy::style
10413    )]
10414    #[derive(Clone)]
10415    pub struct Undelegated {
10416        #[allow(missing_docs)]
10417        pub delegator: alloy::sol_types::private::Address,
10418        #[allow(missing_docs)]
10419        pub validator: alloy::sol_types::private::Address,
10420        #[allow(missing_docs)]
10421        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10422    }
10423    #[allow(
10424        non_camel_case_types,
10425        non_snake_case,
10426        clippy::pub_underscore_fields,
10427        clippy::style
10428    )]
10429    const _: () = {
10430        use alloy::sol_types as alloy_sol_types;
10431        #[automatically_derived]
10432        impl alloy_sol_types::SolEvent for Undelegated {
10433            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10434            type DataToken<'a> = <Self::DataTuple<
10435                'a,
10436            > as alloy_sol_types::SolType>::Token<'a>;
10437            type TopicList = (
10438                alloy_sol_types::sol_data::FixedBytes<32>,
10439                alloy::sol_types::sol_data::Address,
10440                alloy::sol_types::sol_data::Address,
10441            );
10442            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
10443            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10444                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
10445                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
10446                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
10447            ]);
10448            const ANONYMOUS: bool = false;
10449            #[allow(unused_variables)]
10450            #[inline]
10451            fn new(
10452                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10453                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10454            ) -> Self {
10455                Self {
10456                    delegator: topics.1,
10457                    validator: topics.2,
10458                    amount: data.0,
10459                }
10460            }
10461            #[inline]
10462            fn check_signature(
10463                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10464            ) -> alloy_sol_types::Result<()> {
10465                if topics.0 != Self::SIGNATURE_HASH {
10466                    return Err(
10467                        alloy_sol_types::Error::invalid_event_signature_hash(
10468                            Self::SIGNATURE,
10469                            topics.0,
10470                            Self::SIGNATURE_HASH,
10471                        ),
10472                    );
10473                }
10474                Ok(())
10475            }
10476            #[inline]
10477            fn tokenize_body(&self) -> Self::DataToken<'_> {
10478                (
10479                    <alloy::sol_types::sol_data::Uint<
10480                        256,
10481                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10482                )
10483            }
10484            #[inline]
10485            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10486                (
10487                    Self::SIGNATURE_HASH.into(),
10488                    self.delegator.clone(),
10489                    self.validator.clone(),
10490                )
10491            }
10492            #[inline]
10493            fn encode_topics_raw(
10494                &self,
10495                out: &mut [alloy_sol_types::abi::token::WordToken],
10496            ) -> alloy_sol_types::Result<()> {
10497                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10498                    return Err(alloy_sol_types::Error::Overrun);
10499                }
10500                out[0usize] = alloy_sol_types::abi::token::WordToken(
10501                    Self::SIGNATURE_HASH,
10502                );
10503                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10504                    &self.delegator,
10505                );
10506                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10507                    &self.validator,
10508                );
10509                Ok(())
10510            }
10511        }
10512        #[automatically_derived]
10513        impl alloy_sol_types::private::IntoLogData for Undelegated {
10514            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10515                From::from(self)
10516            }
10517            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10518                From::from(&self)
10519            }
10520        }
10521        #[automatically_derived]
10522        impl From<&Undelegated> for alloy_sol_types::private::LogData {
10523            #[inline]
10524            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
10525                alloy_sol_types::SolEvent::encode_log_data(this)
10526            }
10527        }
10528    };
10529    #[derive(serde::Serialize, serde::Deserialize)]
10530    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10531    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
10532```solidity
10533event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
10534```*/
10535    #[allow(
10536        non_camel_case_types,
10537        non_snake_case,
10538        clippy::pub_underscore_fields,
10539        clippy::style
10540    )]
10541    #[derive(Clone)]
10542    pub struct UndelegatedV2 {
10543        #[allow(missing_docs)]
10544        pub delegator: alloy::sol_types::private::Address,
10545        #[allow(missing_docs)]
10546        pub validator: alloy::sol_types::private::Address,
10547        #[allow(missing_docs)]
10548        pub undelegationId: u64,
10549        #[allow(missing_docs)]
10550        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10551        #[allow(missing_docs)]
10552        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10553    }
10554    #[allow(
10555        non_camel_case_types,
10556        non_snake_case,
10557        clippy::pub_underscore_fields,
10558        clippy::style
10559    )]
10560    const _: () = {
10561        use alloy::sol_types as alloy_sol_types;
10562        #[automatically_derived]
10563        impl alloy_sol_types::SolEvent for UndelegatedV2 {
10564            type DataTuple<'a> = (
10565                alloy::sol_types::sol_data::Uint<256>,
10566                alloy::sol_types::sol_data::Uint<256>,
10567            );
10568            type DataToken<'a> = <Self::DataTuple<
10569                'a,
10570            > as alloy_sol_types::SolType>::Token<'a>;
10571            type TopicList = (
10572                alloy_sol_types::sol_data::FixedBytes<32>,
10573                alloy::sol_types::sol_data::Address,
10574                alloy::sol_types::sol_data::Address,
10575                alloy::sol_types::sol_data::Uint<64>,
10576            );
10577            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
10578            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10579                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
10580                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
10581                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
10582            ]);
10583            const ANONYMOUS: bool = false;
10584            #[allow(unused_variables)]
10585            #[inline]
10586            fn new(
10587                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10588                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10589            ) -> Self {
10590                Self {
10591                    delegator: topics.1,
10592                    validator: topics.2,
10593                    undelegationId: topics.3,
10594                    amount: data.0,
10595                    unlocksAt: data.1,
10596                }
10597            }
10598            #[inline]
10599            fn check_signature(
10600                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10601            ) -> alloy_sol_types::Result<()> {
10602                if topics.0 != Self::SIGNATURE_HASH {
10603                    return Err(
10604                        alloy_sol_types::Error::invalid_event_signature_hash(
10605                            Self::SIGNATURE,
10606                            topics.0,
10607                            Self::SIGNATURE_HASH,
10608                        ),
10609                    );
10610                }
10611                Ok(())
10612            }
10613            #[inline]
10614            fn tokenize_body(&self) -> Self::DataToken<'_> {
10615                (
10616                    <alloy::sol_types::sol_data::Uint<
10617                        256,
10618                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10619                    <alloy::sol_types::sol_data::Uint<
10620                        256,
10621                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10622                )
10623            }
10624            #[inline]
10625            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10626                (
10627                    Self::SIGNATURE_HASH.into(),
10628                    self.delegator.clone(),
10629                    self.validator.clone(),
10630                    self.undelegationId.clone(),
10631                )
10632            }
10633            #[inline]
10634            fn encode_topics_raw(
10635                &self,
10636                out: &mut [alloy_sol_types::abi::token::WordToken],
10637            ) -> alloy_sol_types::Result<()> {
10638                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10639                    return Err(alloy_sol_types::Error::Overrun);
10640                }
10641                out[0usize] = alloy_sol_types::abi::token::WordToken(
10642                    Self::SIGNATURE_HASH,
10643                );
10644                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10645                    &self.delegator,
10646                );
10647                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10648                    &self.validator,
10649                );
10650                out[3usize] = <alloy::sol_types::sol_data::Uint<
10651                    64,
10652                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
10653                Ok(())
10654            }
10655        }
10656        #[automatically_derived]
10657        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
10658            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10659                From::from(self)
10660            }
10661            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10662                From::from(&self)
10663            }
10664        }
10665        #[automatically_derived]
10666        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
10667            #[inline]
10668            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
10669                alloy_sol_types::SolEvent::encode_log_data(this)
10670            }
10671        }
10672    };
10673    #[derive(serde::Serialize, serde::Deserialize)]
10674    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10675    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
10676```solidity
10677event Unpaused(address account);
10678```*/
10679    #[allow(
10680        non_camel_case_types,
10681        non_snake_case,
10682        clippy::pub_underscore_fields,
10683        clippy::style
10684    )]
10685    #[derive(Clone)]
10686    pub struct Unpaused {
10687        #[allow(missing_docs)]
10688        pub account: alloy::sol_types::private::Address,
10689    }
10690    #[allow(
10691        non_camel_case_types,
10692        non_snake_case,
10693        clippy::pub_underscore_fields,
10694        clippy::style
10695    )]
10696    const _: () = {
10697        use alloy::sol_types as alloy_sol_types;
10698        #[automatically_derived]
10699        impl alloy_sol_types::SolEvent for Unpaused {
10700            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10701            type DataToken<'a> = <Self::DataTuple<
10702                'a,
10703            > as alloy_sol_types::SolType>::Token<'a>;
10704            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10705            const SIGNATURE: &'static str = "Unpaused(address)";
10706            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10707                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10708                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10709                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10710            ]);
10711            const ANONYMOUS: bool = false;
10712            #[allow(unused_variables)]
10713            #[inline]
10714            fn new(
10715                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10716                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10717            ) -> Self {
10718                Self { account: data.0 }
10719            }
10720            #[inline]
10721            fn check_signature(
10722                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10723            ) -> alloy_sol_types::Result<()> {
10724                if topics.0 != Self::SIGNATURE_HASH {
10725                    return Err(
10726                        alloy_sol_types::Error::invalid_event_signature_hash(
10727                            Self::SIGNATURE,
10728                            topics.0,
10729                            Self::SIGNATURE_HASH,
10730                        ),
10731                    );
10732                }
10733                Ok(())
10734            }
10735            #[inline]
10736            fn tokenize_body(&self) -> Self::DataToken<'_> {
10737                (
10738                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10739                        &self.account,
10740                    ),
10741                )
10742            }
10743            #[inline]
10744            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10745                (Self::SIGNATURE_HASH.into(),)
10746            }
10747            #[inline]
10748            fn encode_topics_raw(
10749                &self,
10750                out: &mut [alloy_sol_types::abi::token::WordToken],
10751            ) -> alloy_sol_types::Result<()> {
10752                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10753                    return Err(alloy_sol_types::Error::Overrun);
10754                }
10755                out[0usize] = alloy_sol_types::abi::token::WordToken(
10756                    Self::SIGNATURE_HASH,
10757                );
10758                Ok(())
10759            }
10760        }
10761        #[automatically_derived]
10762        impl alloy_sol_types::private::IntoLogData for Unpaused {
10763            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10764                From::from(self)
10765            }
10766            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10767                From::from(&self)
10768            }
10769        }
10770        #[automatically_derived]
10771        impl From<&Unpaused> for alloy_sol_types::private::LogData {
10772            #[inline]
10773            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
10774                alloy_sol_types::SolEvent::encode_log_data(this)
10775            }
10776        }
10777    };
10778    #[derive(serde::Serialize, serde::Deserialize)]
10779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10780    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
10781```solidity
10782event Upgraded(address indexed implementation);
10783```*/
10784    #[allow(
10785        non_camel_case_types,
10786        non_snake_case,
10787        clippy::pub_underscore_fields,
10788        clippy::style
10789    )]
10790    #[derive(Clone)]
10791    pub struct Upgraded {
10792        #[allow(missing_docs)]
10793        pub implementation: alloy::sol_types::private::Address,
10794    }
10795    #[allow(
10796        non_camel_case_types,
10797        non_snake_case,
10798        clippy::pub_underscore_fields,
10799        clippy::style
10800    )]
10801    const _: () = {
10802        use alloy::sol_types as alloy_sol_types;
10803        #[automatically_derived]
10804        impl alloy_sol_types::SolEvent for Upgraded {
10805            type DataTuple<'a> = ();
10806            type DataToken<'a> = <Self::DataTuple<
10807                'a,
10808            > as alloy_sol_types::SolType>::Token<'a>;
10809            type TopicList = (
10810                alloy_sol_types::sol_data::FixedBytes<32>,
10811                alloy::sol_types::sol_data::Address,
10812            );
10813            const SIGNATURE: &'static str = "Upgraded(address)";
10814            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10815                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10816                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10817                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10818            ]);
10819            const ANONYMOUS: bool = false;
10820            #[allow(unused_variables)]
10821            #[inline]
10822            fn new(
10823                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10824                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10825            ) -> Self {
10826                Self { implementation: topics.1 }
10827            }
10828            #[inline]
10829            fn check_signature(
10830                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10831            ) -> alloy_sol_types::Result<()> {
10832                if topics.0 != Self::SIGNATURE_HASH {
10833                    return Err(
10834                        alloy_sol_types::Error::invalid_event_signature_hash(
10835                            Self::SIGNATURE,
10836                            topics.0,
10837                            Self::SIGNATURE_HASH,
10838                        ),
10839                    );
10840                }
10841                Ok(())
10842            }
10843            #[inline]
10844            fn tokenize_body(&self) -> Self::DataToken<'_> {
10845                ()
10846            }
10847            #[inline]
10848            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10849                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
10850            }
10851            #[inline]
10852            fn encode_topics_raw(
10853                &self,
10854                out: &mut [alloy_sol_types::abi::token::WordToken],
10855            ) -> alloy_sol_types::Result<()> {
10856                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10857                    return Err(alloy_sol_types::Error::Overrun);
10858                }
10859                out[0usize] = alloy_sol_types::abi::token::WordToken(
10860                    Self::SIGNATURE_HASH,
10861                );
10862                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10863                    &self.implementation,
10864                );
10865                Ok(())
10866            }
10867        }
10868        #[automatically_derived]
10869        impl alloy_sol_types::private::IntoLogData for Upgraded {
10870            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10871                From::from(self)
10872            }
10873            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10874                From::from(&self)
10875            }
10876        }
10877        #[automatically_derived]
10878        impl From<&Upgraded> for alloy_sol_types::private::LogData {
10879            #[inline]
10880            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
10881                alloy_sol_types::SolEvent::encode_log_data(this)
10882            }
10883        }
10884    };
10885    #[derive(serde::Serialize, serde::Deserialize)]
10886    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10887    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
10888```solidity
10889event ValidatorExit(address indexed validator);
10890```*/
10891    #[allow(
10892        non_camel_case_types,
10893        non_snake_case,
10894        clippy::pub_underscore_fields,
10895        clippy::style
10896    )]
10897    #[derive(Clone)]
10898    pub struct ValidatorExit {
10899        #[allow(missing_docs)]
10900        pub validator: alloy::sol_types::private::Address,
10901    }
10902    #[allow(
10903        non_camel_case_types,
10904        non_snake_case,
10905        clippy::pub_underscore_fields,
10906        clippy::style
10907    )]
10908    const _: () = {
10909        use alloy::sol_types as alloy_sol_types;
10910        #[automatically_derived]
10911        impl alloy_sol_types::SolEvent for ValidatorExit {
10912            type DataTuple<'a> = ();
10913            type DataToken<'a> = <Self::DataTuple<
10914                'a,
10915            > as alloy_sol_types::SolType>::Token<'a>;
10916            type TopicList = (
10917                alloy_sol_types::sol_data::FixedBytes<32>,
10918                alloy::sol_types::sol_data::Address,
10919            );
10920            const SIGNATURE: &'static str = "ValidatorExit(address)";
10921            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10922                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10923                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10924                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10925            ]);
10926            const ANONYMOUS: bool = false;
10927            #[allow(unused_variables)]
10928            #[inline]
10929            fn new(
10930                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10931                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10932            ) -> Self {
10933                Self { validator: topics.1 }
10934            }
10935            #[inline]
10936            fn check_signature(
10937                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10938            ) -> alloy_sol_types::Result<()> {
10939                if topics.0 != Self::SIGNATURE_HASH {
10940                    return Err(
10941                        alloy_sol_types::Error::invalid_event_signature_hash(
10942                            Self::SIGNATURE,
10943                            topics.0,
10944                            Self::SIGNATURE_HASH,
10945                        ),
10946                    );
10947                }
10948                Ok(())
10949            }
10950            #[inline]
10951            fn tokenize_body(&self) -> Self::DataToken<'_> {
10952                ()
10953            }
10954            #[inline]
10955            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10956                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10957            }
10958            #[inline]
10959            fn encode_topics_raw(
10960                &self,
10961                out: &mut [alloy_sol_types::abi::token::WordToken],
10962            ) -> alloy_sol_types::Result<()> {
10963                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10964                    return Err(alloy_sol_types::Error::Overrun);
10965                }
10966                out[0usize] = alloy_sol_types::abi::token::WordToken(
10967                    Self::SIGNATURE_HASH,
10968                );
10969                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10970                    &self.validator,
10971                );
10972                Ok(())
10973            }
10974        }
10975        #[automatically_derived]
10976        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
10977            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10978                From::from(self)
10979            }
10980            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10981                From::from(&self)
10982            }
10983        }
10984        #[automatically_derived]
10985        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
10986            #[inline]
10987            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
10988                alloy_sol_types::SolEvent::encode_log_data(this)
10989            }
10990        }
10991    };
10992    #[derive(serde::Serialize, serde::Deserialize)]
10993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10994    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
10995```solidity
10996event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
10997```*/
10998    #[allow(
10999        non_camel_case_types,
11000        non_snake_case,
11001        clippy::pub_underscore_fields,
11002        clippy::style
11003    )]
11004    #[derive(Clone)]
11005    pub struct ValidatorExitClaimed {
11006        #[allow(missing_docs)]
11007        pub delegator: alloy::sol_types::private::Address,
11008        #[allow(missing_docs)]
11009        pub validator: alloy::sol_types::private::Address,
11010        #[allow(missing_docs)]
11011        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11012    }
11013    #[allow(
11014        non_camel_case_types,
11015        non_snake_case,
11016        clippy::pub_underscore_fields,
11017        clippy::style
11018    )]
11019    const _: () = {
11020        use alloy::sol_types as alloy_sol_types;
11021        #[automatically_derived]
11022        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
11023            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11024            type DataToken<'a> = <Self::DataTuple<
11025                'a,
11026            > as alloy_sol_types::SolType>::Token<'a>;
11027            type TopicList = (
11028                alloy_sol_types::sol_data::FixedBytes<32>,
11029                alloy::sol_types::sol_data::Address,
11030                alloy::sol_types::sol_data::Address,
11031            );
11032            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
11033            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11034                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
11035                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
11036                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
11037            ]);
11038            const ANONYMOUS: bool = false;
11039            #[allow(unused_variables)]
11040            #[inline]
11041            fn new(
11042                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11043                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11044            ) -> Self {
11045                Self {
11046                    delegator: topics.1,
11047                    validator: topics.2,
11048                    amount: data.0,
11049                }
11050            }
11051            #[inline]
11052            fn check_signature(
11053                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11054            ) -> alloy_sol_types::Result<()> {
11055                if topics.0 != Self::SIGNATURE_HASH {
11056                    return Err(
11057                        alloy_sol_types::Error::invalid_event_signature_hash(
11058                            Self::SIGNATURE,
11059                            topics.0,
11060                            Self::SIGNATURE_HASH,
11061                        ),
11062                    );
11063                }
11064                Ok(())
11065            }
11066            #[inline]
11067            fn tokenize_body(&self) -> Self::DataToken<'_> {
11068                (
11069                    <alloy::sol_types::sol_data::Uint<
11070                        256,
11071                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11072                )
11073            }
11074            #[inline]
11075            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11076                (
11077                    Self::SIGNATURE_HASH.into(),
11078                    self.delegator.clone(),
11079                    self.validator.clone(),
11080                )
11081            }
11082            #[inline]
11083            fn encode_topics_raw(
11084                &self,
11085                out: &mut [alloy_sol_types::abi::token::WordToken],
11086            ) -> alloy_sol_types::Result<()> {
11087                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11088                    return Err(alloy_sol_types::Error::Overrun);
11089                }
11090                out[0usize] = alloy_sol_types::abi::token::WordToken(
11091                    Self::SIGNATURE_HASH,
11092                );
11093                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11094                    &self.delegator,
11095                );
11096                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11097                    &self.validator,
11098                );
11099                Ok(())
11100            }
11101        }
11102        #[automatically_derived]
11103        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
11104            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11105                From::from(self)
11106            }
11107            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11108                From::from(&self)
11109            }
11110        }
11111        #[automatically_derived]
11112        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
11113            #[inline]
11114            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
11115                alloy_sol_types::SolEvent::encode_log_data(this)
11116            }
11117        }
11118    };
11119    #[derive(serde::Serialize, serde::Deserialize)]
11120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11121    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
11122```solidity
11123event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
11124```*/
11125    #[allow(
11126        non_camel_case_types,
11127        non_snake_case,
11128        clippy::pub_underscore_fields,
11129        clippy::style
11130    )]
11131    #[derive(Clone)]
11132    pub struct ValidatorExitV2 {
11133        #[allow(missing_docs)]
11134        pub validator: alloy::sol_types::private::Address,
11135        #[allow(missing_docs)]
11136        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
11137    }
11138    #[allow(
11139        non_camel_case_types,
11140        non_snake_case,
11141        clippy::pub_underscore_fields,
11142        clippy::style
11143    )]
11144    const _: () = {
11145        use alloy::sol_types as alloy_sol_types;
11146        #[automatically_derived]
11147        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
11148            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11149            type DataToken<'a> = <Self::DataTuple<
11150                'a,
11151            > as alloy_sol_types::SolType>::Token<'a>;
11152            type TopicList = (
11153                alloy_sol_types::sol_data::FixedBytes<32>,
11154                alloy::sol_types::sol_data::Address,
11155            );
11156            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
11157            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11158                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
11159                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
11160                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
11161            ]);
11162            const ANONYMOUS: bool = false;
11163            #[allow(unused_variables)]
11164            #[inline]
11165            fn new(
11166                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11167                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11168            ) -> Self {
11169                Self {
11170                    validator: topics.1,
11171                    unlocksAt: data.0,
11172                }
11173            }
11174            #[inline]
11175            fn check_signature(
11176                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11177            ) -> alloy_sol_types::Result<()> {
11178                if topics.0 != Self::SIGNATURE_HASH {
11179                    return Err(
11180                        alloy_sol_types::Error::invalid_event_signature_hash(
11181                            Self::SIGNATURE,
11182                            topics.0,
11183                            Self::SIGNATURE_HASH,
11184                        ),
11185                    );
11186                }
11187                Ok(())
11188            }
11189            #[inline]
11190            fn tokenize_body(&self) -> Self::DataToken<'_> {
11191                (
11192                    <alloy::sol_types::sol_data::Uint<
11193                        256,
11194                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
11195                )
11196            }
11197            #[inline]
11198            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11199                (Self::SIGNATURE_HASH.into(), self.validator.clone())
11200            }
11201            #[inline]
11202            fn encode_topics_raw(
11203                &self,
11204                out: &mut [alloy_sol_types::abi::token::WordToken],
11205            ) -> alloy_sol_types::Result<()> {
11206                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11207                    return Err(alloy_sol_types::Error::Overrun);
11208                }
11209                out[0usize] = alloy_sol_types::abi::token::WordToken(
11210                    Self::SIGNATURE_HASH,
11211                );
11212                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11213                    &self.validator,
11214                );
11215                Ok(())
11216            }
11217        }
11218        #[automatically_derived]
11219        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
11220            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11221                From::from(self)
11222            }
11223            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11224                From::from(&self)
11225            }
11226        }
11227        #[automatically_derived]
11228        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
11229            #[inline]
11230            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
11231                alloy_sol_types::SolEvent::encode_log_data(this)
11232            }
11233        }
11234    };
11235    #[derive(serde::Serialize, serde::Deserialize)]
11236    #[derive()]
11237    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
11238```solidity
11239event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
11240```*/
11241    #[allow(
11242        non_camel_case_types,
11243        non_snake_case,
11244        clippy::pub_underscore_fields,
11245        clippy::style
11246    )]
11247    #[derive(Clone)]
11248    pub struct ValidatorRegistered {
11249        #[allow(missing_docs)]
11250        pub account: alloy::sol_types::private::Address,
11251        #[allow(missing_docs)]
11252        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11253        #[allow(missing_docs)]
11254        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11255        #[allow(missing_docs)]
11256        pub commission: u16,
11257    }
11258    #[allow(
11259        non_camel_case_types,
11260        non_snake_case,
11261        clippy::pub_underscore_fields,
11262        clippy::style
11263    )]
11264    const _: () = {
11265        use alloy::sol_types as alloy_sol_types;
11266        #[automatically_derived]
11267        impl alloy_sol_types::SolEvent for ValidatorRegistered {
11268            type DataTuple<'a> = (
11269                BN254::G2Point,
11270                EdOnBN254::EdOnBN254Point,
11271                alloy::sol_types::sol_data::Uint<16>,
11272            );
11273            type DataToken<'a> = <Self::DataTuple<
11274                'a,
11275            > as alloy_sol_types::SolType>::Token<'a>;
11276            type TopicList = (
11277                alloy_sol_types::sol_data::FixedBytes<32>,
11278                alloy::sol_types::sol_data::Address,
11279            );
11280            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
11281            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11282                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
11283                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
11284                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
11285            ]);
11286            const ANONYMOUS: bool = false;
11287            #[allow(unused_variables)]
11288            #[inline]
11289            fn new(
11290                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11291                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11292            ) -> Self {
11293                Self {
11294                    account: topics.1,
11295                    blsVk: data.0,
11296                    schnorrVk: data.1,
11297                    commission: data.2,
11298                }
11299            }
11300            #[inline]
11301            fn check_signature(
11302                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11303            ) -> alloy_sol_types::Result<()> {
11304                if topics.0 != Self::SIGNATURE_HASH {
11305                    return Err(
11306                        alloy_sol_types::Error::invalid_event_signature_hash(
11307                            Self::SIGNATURE,
11308                            topics.0,
11309                            Self::SIGNATURE_HASH,
11310                        ),
11311                    );
11312                }
11313                Ok(())
11314            }
11315            #[inline]
11316            fn tokenize_body(&self) -> Self::DataToken<'_> {
11317                (
11318                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
11319                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11320                        &self.schnorrVk,
11321                    ),
11322                    <alloy::sol_types::sol_data::Uint<
11323                        16,
11324                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11325                )
11326            }
11327            #[inline]
11328            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11329                (Self::SIGNATURE_HASH.into(), self.account.clone())
11330            }
11331            #[inline]
11332            fn encode_topics_raw(
11333                &self,
11334                out: &mut [alloy_sol_types::abi::token::WordToken],
11335            ) -> alloy_sol_types::Result<()> {
11336                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11337                    return Err(alloy_sol_types::Error::Overrun);
11338                }
11339                out[0usize] = alloy_sol_types::abi::token::WordToken(
11340                    Self::SIGNATURE_HASH,
11341                );
11342                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11343                    &self.account,
11344                );
11345                Ok(())
11346            }
11347        }
11348        #[automatically_derived]
11349        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
11350            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11351                From::from(self)
11352            }
11353            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11354                From::from(&self)
11355            }
11356        }
11357        #[automatically_derived]
11358        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
11359            #[inline]
11360            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
11361                alloy_sol_types::SolEvent::encode_log_data(this)
11362            }
11363        }
11364    };
11365    #[derive(serde::Serialize, serde::Deserialize)]
11366    #[derive()]
11367    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
11368```solidity
11369event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
11370```*/
11371    #[allow(
11372        non_camel_case_types,
11373        non_snake_case,
11374        clippy::pub_underscore_fields,
11375        clippy::style
11376    )]
11377    #[derive(Clone)]
11378    pub struct ValidatorRegisteredV2 {
11379        #[allow(missing_docs)]
11380        pub account: alloy::sol_types::private::Address,
11381        #[allow(missing_docs)]
11382        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11383        #[allow(missing_docs)]
11384        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11385        #[allow(missing_docs)]
11386        pub commission: u16,
11387        #[allow(missing_docs)]
11388        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11389        #[allow(missing_docs)]
11390        pub schnorrSig: alloy::sol_types::private::Bytes,
11391        #[allow(missing_docs)]
11392        pub metadataUri: alloy::sol_types::private::String,
11393    }
11394    #[allow(
11395        non_camel_case_types,
11396        non_snake_case,
11397        clippy::pub_underscore_fields,
11398        clippy::style
11399    )]
11400    const _: () = {
11401        use alloy::sol_types as alloy_sol_types;
11402        #[automatically_derived]
11403        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
11404            type DataTuple<'a> = (
11405                BN254::G2Point,
11406                EdOnBN254::EdOnBN254Point,
11407                alloy::sol_types::sol_data::Uint<16>,
11408                BN254::G1Point,
11409                alloy::sol_types::sol_data::Bytes,
11410                alloy::sol_types::sol_data::String,
11411            );
11412            type DataToken<'a> = <Self::DataTuple<
11413                'a,
11414            > as alloy_sol_types::SolType>::Token<'a>;
11415            type TopicList = (
11416                alloy_sol_types::sol_data::FixedBytes<32>,
11417                alloy::sol_types::sol_data::Address,
11418            );
11419            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
11420            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11421                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
11422                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
11423                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
11424            ]);
11425            const ANONYMOUS: bool = false;
11426            #[allow(unused_variables)]
11427            #[inline]
11428            fn new(
11429                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11430                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11431            ) -> Self {
11432                Self {
11433                    account: topics.1,
11434                    blsVK: data.0,
11435                    schnorrVK: data.1,
11436                    commission: data.2,
11437                    blsSig: data.3,
11438                    schnorrSig: data.4,
11439                    metadataUri: data.5,
11440                }
11441            }
11442            #[inline]
11443            fn check_signature(
11444                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11445            ) -> alloy_sol_types::Result<()> {
11446                if topics.0 != Self::SIGNATURE_HASH {
11447                    return Err(
11448                        alloy_sol_types::Error::invalid_event_signature_hash(
11449                            Self::SIGNATURE,
11450                            topics.0,
11451                            Self::SIGNATURE_HASH,
11452                        ),
11453                    );
11454                }
11455                Ok(())
11456            }
11457            #[inline]
11458            fn tokenize_body(&self) -> Self::DataToken<'_> {
11459                (
11460                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11461                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11462                        &self.schnorrVK,
11463                    ),
11464                    <alloy::sol_types::sol_data::Uint<
11465                        16,
11466                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11467                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11468                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11469                        &self.schnorrSig,
11470                    ),
11471                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11472                        &self.metadataUri,
11473                    ),
11474                )
11475            }
11476            #[inline]
11477            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11478                (Self::SIGNATURE_HASH.into(), self.account.clone())
11479            }
11480            #[inline]
11481            fn encode_topics_raw(
11482                &self,
11483                out: &mut [alloy_sol_types::abi::token::WordToken],
11484            ) -> alloy_sol_types::Result<()> {
11485                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11486                    return Err(alloy_sol_types::Error::Overrun);
11487                }
11488                out[0usize] = alloy_sol_types::abi::token::WordToken(
11489                    Self::SIGNATURE_HASH,
11490                );
11491                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11492                    &self.account,
11493                );
11494                Ok(())
11495            }
11496        }
11497        #[automatically_derived]
11498        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
11499            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11500                From::from(self)
11501            }
11502            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11503                From::from(&self)
11504            }
11505        }
11506        #[automatically_derived]
11507        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
11508            #[inline]
11509            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
11510                alloy_sol_types::SolEvent::encode_log_data(this)
11511            }
11512        }
11513    };
11514    #[derive(serde::Serialize, serde::Deserialize)]
11515    #[derive()]
11516    /**Event with signature `ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)` and selector `0xbf14cd7fea70435d424f92f7a3d01109a583449d718898a6a969879c5476ec14`.
11517```solidity
11518event ValidatorRegisteredV3(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri, bytes32 x25519Key, string p2pAddr);
11519```*/
11520    #[allow(
11521        non_camel_case_types,
11522        non_snake_case,
11523        clippy::pub_underscore_fields,
11524        clippy::style
11525    )]
11526    #[derive(Clone)]
11527    pub struct ValidatorRegisteredV3 {
11528        #[allow(missing_docs)]
11529        pub account: alloy::sol_types::private::Address,
11530        #[allow(missing_docs)]
11531        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11532        #[allow(missing_docs)]
11533        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
11534        #[allow(missing_docs)]
11535        pub commission: u16,
11536        #[allow(missing_docs)]
11537        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11538        #[allow(missing_docs)]
11539        pub schnorrSig: alloy::sol_types::private::Bytes,
11540        #[allow(missing_docs)]
11541        pub metadataUri: alloy::sol_types::private::String,
11542        #[allow(missing_docs)]
11543        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
11544        #[allow(missing_docs)]
11545        pub p2pAddr: alloy::sol_types::private::String,
11546    }
11547    #[allow(
11548        non_camel_case_types,
11549        non_snake_case,
11550        clippy::pub_underscore_fields,
11551        clippy::style
11552    )]
11553    const _: () = {
11554        use alloy::sol_types as alloy_sol_types;
11555        #[automatically_derived]
11556        impl alloy_sol_types::SolEvent for ValidatorRegisteredV3 {
11557            type DataTuple<'a> = (
11558                BN254::G2Point,
11559                EdOnBN254::EdOnBN254Point,
11560                alloy::sol_types::sol_data::Uint<16>,
11561                BN254::G1Point,
11562                alloy::sol_types::sol_data::Bytes,
11563                alloy::sol_types::sol_data::String,
11564                alloy::sol_types::sol_data::FixedBytes<32>,
11565                alloy::sol_types::sol_data::String,
11566            );
11567            type DataToken<'a> = <Self::DataTuple<
11568                'a,
11569            > as alloy_sol_types::SolType>::Token<'a>;
11570            type TopicList = (
11571                alloy_sol_types::sol_data::FixedBytes<32>,
11572                alloy::sol_types::sol_data::Address,
11573            );
11574            const SIGNATURE: &'static str = "ValidatorRegisteredV3(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string,bytes32,string)";
11575            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11576                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
11577                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
11578                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
11579            ]);
11580            const ANONYMOUS: bool = false;
11581            #[allow(unused_variables)]
11582            #[inline]
11583            fn new(
11584                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11585                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11586            ) -> Self {
11587                Self {
11588                    account: topics.1,
11589                    blsVK: data.0,
11590                    schnorrVK: data.1,
11591                    commission: data.2,
11592                    blsSig: data.3,
11593                    schnorrSig: data.4,
11594                    metadataUri: data.5,
11595                    x25519Key: data.6,
11596                    p2pAddr: data.7,
11597                }
11598            }
11599            #[inline]
11600            fn check_signature(
11601                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11602            ) -> alloy_sol_types::Result<()> {
11603                if topics.0 != Self::SIGNATURE_HASH {
11604                    return Err(
11605                        alloy_sol_types::Error::invalid_event_signature_hash(
11606                            Self::SIGNATURE,
11607                            topics.0,
11608                            Self::SIGNATURE_HASH,
11609                        ),
11610                    );
11611                }
11612                Ok(())
11613            }
11614            #[inline]
11615            fn tokenize_body(&self) -> Self::DataToken<'_> {
11616                (
11617                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
11618                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
11619                        &self.schnorrVK,
11620                    ),
11621                    <alloy::sol_types::sol_data::Uint<
11622                        16,
11623                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
11624                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
11625                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11626                        &self.schnorrSig,
11627                    ),
11628                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11629                        &self.metadataUri,
11630                    ),
11631                    <alloy::sol_types::sol_data::FixedBytes<
11632                        32,
11633                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
11634                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11635                        &self.p2pAddr,
11636                    ),
11637                )
11638            }
11639            #[inline]
11640            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11641                (Self::SIGNATURE_HASH.into(), self.account.clone())
11642            }
11643            #[inline]
11644            fn encode_topics_raw(
11645                &self,
11646                out: &mut [alloy_sol_types::abi::token::WordToken],
11647            ) -> alloy_sol_types::Result<()> {
11648                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11649                    return Err(alloy_sol_types::Error::Overrun);
11650                }
11651                out[0usize] = alloy_sol_types::abi::token::WordToken(
11652                    Self::SIGNATURE_HASH,
11653                );
11654                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11655                    &self.account,
11656                );
11657                Ok(())
11658            }
11659        }
11660        #[automatically_derived]
11661        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV3 {
11662            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11663                From::from(self)
11664            }
11665            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11666                From::from(&self)
11667            }
11668        }
11669        #[automatically_derived]
11670        impl From<&ValidatorRegisteredV3> for alloy_sol_types::private::LogData {
11671            #[inline]
11672            fn from(this: &ValidatorRegisteredV3) -> alloy_sol_types::private::LogData {
11673                alloy_sol_types::SolEvent::encode_log_data(this)
11674            }
11675        }
11676    };
11677    #[derive(serde::Serialize, serde::Deserialize)]
11678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11679    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
11680```solidity
11681event Withdrawal(address indexed account, uint256 amount);
11682```*/
11683    #[allow(
11684        non_camel_case_types,
11685        non_snake_case,
11686        clippy::pub_underscore_fields,
11687        clippy::style
11688    )]
11689    #[derive(Clone)]
11690    pub struct Withdrawal {
11691        #[allow(missing_docs)]
11692        pub account: alloy::sol_types::private::Address,
11693        #[allow(missing_docs)]
11694        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11695    }
11696    #[allow(
11697        non_camel_case_types,
11698        non_snake_case,
11699        clippy::pub_underscore_fields,
11700        clippy::style
11701    )]
11702    const _: () = {
11703        use alloy::sol_types as alloy_sol_types;
11704        #[automatically_derived]
11705        impl alloy_sol_types::SolEvent for Withdrawal {
11706            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11707            type DataToken<'a> = <Self::DataTuple<
11708                'a,
11709            > as alloy_sol_types::SolType>::Token<'a>;
11710            type TopicList = (
11711                alloy_sol_types::sol_data::FixedBytes<32>,
11712                alloy::sol_types::sol_data::Address,
11713            );
11714            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
11715            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11716                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
11717                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
11718                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
11719            ]);
11720            const ANONYMOUS: bool = false;
11721            #[allow(unused_variables)]
11722            #[inline]
11723            fn new(
11724                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11725                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11726            ) -> Self {
11727                Self {
11728                    account: topics.1,
11729                    amount: data.0,
11730                }
11731            }
11732            #[inline]
11733            fn check_signature(
11734                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11735            ) -> alloy_sol_types::Result<()> {
11736                if topics.0 != Self::SIGNATURE_HASH {
11737                    return Err(
11738                        alloy_sol_types::Error::invalid_event_signature_hash(
11739                            Self::SIGNATURE,
11740                            topics.0,
11741                            Self::SIGNATURE_HASH,
11742                        ),
11743                    );
11744                }
11745                Ok(())
11746            }
11747            #[inline]
11748            fn tokenize_body(&self) -> Self::DataToken<'_> {
11749                (
11750                    <alloy::sol_types::sol_data::Uint<
11751                        256,
11752                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11753                )
11754            }
11755            #[inline]
11756            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11757                (Self::SIGNATURE_HASH.into(), self.account.clone())
11758            }
11759            #[inline]
11760            fn encode_topics_raw(
11761                &self,
11762                out: &mut [alloy_sol_types::abi::token::WordToken],
11763            ) -> alloy_sol_types::Result<()> {
11764                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11765                    return Err(alloy_sol_types::Error::Overrun);
11766                }
11767                out[0usize] = alloy_sol_types::abi::token::WordToken(
11768                    Self::SIGNATURE_HASH,
11769                );
11770                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11771                    &self.account,
11772                );
11773                Ok(())
11774            }
11775        }
11776        #[automatically_derived]
11777        impl alloy_sol_types::private::IntoLogData for Withdrawal {
11778            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11779                From::from(self)
11780            }
11781            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11782                From::from(&self)
11783            }
11784        }
11785        #[automatically_derived]
11786        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
11787            #[inline]
11788            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
11789                alloy_sol_types::SolEvent::encode_log_data(this)
11790            }
11791        }
11792    };
11793    #[derive(serde::Serialize, serde::Deserialize)]
11794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11795    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
11796```solidity
11797event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
11798```*/
11799    #[allow(
11800        non_camel_case_types,
11801        non_snake_case,
11802        clippy::pub_underscore_fields,
11803        clippy::style
11804    )]
11805    #[derive(Clone)]
11806    pub struct WithdrawalClaimed {
11807        #[allow(missing_docs)]
11808        pub delegator: alloy::sol_types::private::Address,
11809        #[allow(missing_docs)]
11810        pub validator: alloy::sol_types::private::Address,
11811        #[allow(missing_docs)]
11812        pub undelegationId: u64,
11813        #[allow(missing_docs)]
11814        pub amount: alloy::sol_types::private::primitives::aliases::U256,
11815    }
11816    #[allow(
11817        non_camel_case_types,
11818        non_snake_case,
11819        clippy::pub_underscore_fields,
11820        clippy::style
11821    )]
11822    const _: () = {
11823        use alloy::sol_types as alloy_sol_types;
11824        #[automatically_derived]
11825        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
11826            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11827            type DataToken<'a> = <Self::DataTuple<
11828                'a,
11829            > as alloy_sol_types::SolType>::Token<'a>;
11830            type TopicList = (
11831                alloy_sol_types::sol_data::FixedBytes<32>,
11832                alloy::sol_types::sol_data::Address,
11833                alloy::sol_types::sol_data::Address,
11834                alloy::sol_types::sol_data::Uint<64>,
11835            );
11836            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
11837            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11838                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
11839                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
11840                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
11841            ]);
11842            const ANONYMOUS: bool = false;
11843            #[allow(unused_variables)]
11844            #[inline]
11845            fn new(
11846                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11847                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11848            ) -> Self {
11849                Self {
11850                    delegator: topics.1,
11851                    validator: topics.2,
11852                    undelegationId: topics.3,
11853                    amount: data.0,
11854                }
11855            }
11856            #[inline]
11857            fn check_signature(
11858                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11859            ) -> alloy_sol_types::Result<()> {
11860                if topics.0 != Self::SIGNATURE_HASH {
11861                    return Err(
11862                        alloy_sol_types::Error::invalid_event_signature_hash(
11863                            Self::SIGNATURE,
11864                            topics.0,
11865                            Self::SIGNATURE_HASH,
11866                        ),
11867                    );
11868                }
11869                Ok(())
11870            }
11871            #[inline]
11872            fn tokenize_body(&self) -> Self::DataToken<'_> {
11873                (
11874                    <alloy::sol_types::sol_data::Uint<
11875                        256,
11876                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11877                )
11878            }
11879            #[inline]
11880            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11881                (
11882                    Self::SIGNATURE_HASH.into(),
11883                    self.delegator.clone(),
11884                    self.validator.clone(),
11885                    self.undelegationId.clone(),
11886                )
11887            }
11888            #[inline]
11889            fn encode_topics_raw(
11890                &self,
11891                out: &mut [alloy_sol_types::abi::token::WordToken],
11892            ) -> alloy_sol_types::Result<()> {
11893                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11894                    return Err(alloy_sol_types::Error::Overrun);
11895                }
11896                out[0usize] = alloy_sol_types::abi::token::WordToken(
11897                    Self::SIGNATURE_HASH,
11898                );
11899                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11900                    &self.delegator,
11901                );
11902                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11903                    &self.validator,
11904                );
11905                out[3usize] = <alloy::sol_types::sol_data::Uint<
11906                    64,
11907                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
11908                Ok(())
11909            }
11910        }
11911        #[automatically_derived]
11912        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
11913            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11914                From::from(self)
11915            }
11916            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11917                From::from(&self)
11918            }
11919        }
11920        #[automatically_derived]
11921        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
11922            #[inline]
11923            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
11924                alloy_sol_types::SolEvent::encode_log_data(this)
11925            }
11926        }
11927    };
11928    #[derive(serde::Serialize, serde::Deserialize)]
11929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11930    /**Event with signature `X25519KeyUpdated(address,bytes32)` and selector `0x3b4cc88afe3e5ce6beea7909de200bf2189eeeccb396571f1f94d51835f247df`.
11931```solidity
11932event X25519KeyUpdated(address indexed validator, bytes32 x25519Key);
11933```*/
11934    #[allow(
11935        non_camel_case_types,
11936        non_snake_case,
11937        clippy::pub_underscore_fields,
11938        clippy::style
11939    )]
11940    #[derive(Clone)]
11941    pub struct X25519KeyUpdated {
11942        #[allow(missing_docs)]
11943        pub validator: alloy::sol_types::private::Address,
11944        #[allow(missing_docs)]
11945        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
11946    }
11947    #[allow(
11948        non_camel_case_types,
11949        non_snake_case,
11950        clippy::pub_underscore_fields,
11951        clippy::style
11952    )]
11953    const _: () = {
11954        use alloy::sol_types as alloy_sol_types;
11955        #[automatically_derived]
11956        impl alloy_sol_types::SolEvent for X25519KeyUpdated {
11957            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11958            type DataToken<'a> = <Self::DataTuple<
11959                'a,
11960            > as alloy_sol_types::SolType>::Token<'a>;
11961            type TopicList = (
11962                alloy_sol_types::sol_data::FixedBytes<32>,
11963                alloy::sol_types::sol_data::Address,
11964            );
11965            const SIGNATURE: &'static str = "X25519KeyUpdated(address,bytes32)";
11966            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
11967                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
11968                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
11969                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
11970            ]);
11971            const ANONYMOUS: bool = false;
11972            #[allow(unused_variables)]
11973            #[inline]
11974            fn new(
11975                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11976                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11977            ) -> Self {
11978                Self {
11979                    validator: topics.1,
11980                    x25519Key: data.0,
11981                }
11982            }
11983            #[inline]
11984            fn check_signature(
11985                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11986            ) -> alloy_sol_types::Result<()> {
11987                if topics.0 != Self::SIGNATURE_HASH {
11988                    return Err(
11989                        alloy_sol_types::Error::invalid_event_signature_hash(
11990                            Self::SIGNATURE,
11991                            topics.0,
11992                            Self::SIGNATURE_HASH,
11993                        ),
11994                    );
11995                }
11996                Ok(())
11997            }
11998            #[inline]
11999            fn tokenize_body(&self) -> Self::DataToken<'_> {
12000                (
12001                    <alloy::sol_types::sol_data::FixedBytes<
12002                        32,
12003                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
12004                )
12005            }
12006            #[inline]
12007            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
12008                (Self::SIGNATURE_HASH.into(), self.validator.clone())
12009            }
12010            #[inline]
12011            fn encode_topics_raw(
12012                &self,
12013                out: &mut [alloy_sol_types::abi::token::WordToken],
12014            ) -> alloy_sol_types::Result<()> {
12015                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
12016                    return Err(alloy_sol_types::Error::Overrun);
12017                }
12018                out[0usize] = alloy_sol_types::abi::token::WordToken(
12019                    Self::SIGNATURE_HASH,
12020                );
12021                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
12022                    &self.validator,
12023                );
12024                Ok(())
12025            }
12026        }
12027        #[automatically_derived]
12028        impl alloy_sol_types::private::IntoLogData for X25519KeyUpdated {
12029            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12030                From::from(self)
12031            }
12032            fn into_log_data(self) -> alloy_sol_types::private::LogData {
12033                From::from(&self)
12034            }
12035        }
12036        #[automatically_derived]
12037        impl From<&X25519KeyUpdated> for alloy_sol_types::private::LogData {
12038            #[inline]
12039            fn from(this: &X25519KeyUpdated) -> alloy_sol_types::private::LogData {
12040                alloy_sol_types::SolEvent::encode_log_data(this)
12041            }
12042        }
12043    };
12044    /**Constructor`.
12045```solidity
12046constructor();
12047```*/
12048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12049    #[derive(Clone)]
12050    pub struct constructorCall {}
12051    const _: () = {
12052        use alloy::sol_types as alloy_sol_types;
12053        {
12054            #[doc(hidden)]
12055            #[allow(dead_code)]
12056            type UnderlyingSolTuple<'a> = ();
12057            #[doc(hidden)]
12058            type UnderlyingRustTuple<'a> = ();
12059            #[cfg(test)]
12060            #[allow(dead_code, unreachable_patterns)]
12061            fn _type_assertion(
12062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12063            ) {
12064                match _t {
12065                    alloy_sol_types::private::AssertTypeEq::<
12066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12067                    >(_) => {}
12068                }
12069            }
12070            #[automatically_derived]
12071            #[doc(hidden)]
12072            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
12073                fn from(value: constructorCall) -> Self {
12074                    ()
12075                }
12076            }
12077            #[automatically_derived]
12078            #[doc(hidden)]
12079            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
12080                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12081                    Self {}
12082                }
12083            }
12084        }
12085        #[automatically_derived]
12086        impl alloy_sol_types::SolConstructor for constructorCall {
12087            type Parameters<'a> = ();
12088            type Token<'a> = <Self::Parameters<
12089                'a,
12090            > as alloy_sol_types::SolType>::Token<'a>;
12091            #[inline]
12092            fn new<'a>(
12093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12094            ) -> Self {
12095                tuple.into()
12096            }
12097            #[inline]
12098            fn tokenize(&self) -> Self::Token<'_> {
12099                ()
12100            }
12101        }
12102    };
12103    #[derive(serde::Serialize, serde::Deserialize)]
12104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12105    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
12106```solidity
12107function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
12108```*/
12109    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12110    #[derive(Clone)]
12111    pub struct DEFAULT_ADMIN_ROLECall;
12112    #[derive(serde::Serialize, serde::Deserialize)]
12113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12114    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
12115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12116    #[derive(Clone)]
12117    pub struct DEFAULT_ADMIN_ROLEReturn {
12118        #[allow(missing_docs)]
12119        pub _0: alloy::sol_types::private::FixedBytes<32>,
12120    }
12121    #[allow(
12122        non_camel_case_types,
12123        non_snake_case,
12124        clippy::pub_underscore_fields,
12125        clippy::style
12126    )]
12127    const _: () = {
12128        use alloy::sol_types as alloy_sol_types;
12129        {
12130            #[doc(hidden)]
12131            #[allow(dead_code)]
12132            type UnderlyingSolTuple<'a> = ();
12133            #[doc(hidden)]
12134            type UnderlyingRustTuple<'a> = ();
12135            #[cfg(test)]
12136            #[allow(dead_code, unreachable_patterns)]
12137            fn _type_assertion(
12138                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12139            ) {
12140                match _t {
12141                    alloy_sol_types::private::AssertTypeEq::<
12142                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12143                    >(_) => {}
12144                }
12145            }
12146            #[automatically_derived]
12147            #[doc(hidden)]
12148            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
12149            for UnderlyingRustTuple<'_> {
12150                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
12151                    ()
12152                }
12153            }
12154            #[automatically_derived]
12155            #[doc(hidden)]
12156            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12157            for DEFAULT_ADMIN_ROLECall {
12158                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12159                    Self
12160                }
12161            }
12162        }
12163        {
12164            #[doc(hidden)]
12165            #[allow(dead_code)]
12166            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12167            #[doc(hidden)]
12168            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12169            #[cfg(test)]
12170            #[allow(dead_code, unreachable_patterns)]
12171            fn _type_assertion(
12172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12173            ) {
12174                match _t {
12175                    alloy_sol_types::private::AssertTypeEq::<
12176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12177                    >(_) => {}
12178                }
12179            }
12180            #[automatically_derived]
12181            #[doc(hidden)]
12182            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
12183            for UnderlyingRustTuple<'_> {
12184                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
12185                    (value._0,)
12186                }
12187            }
12188            #[automatically_derived]
12189            #[doc(hidden)]
12190            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12191            for DEFAULT_ADMIN_ROLEReturn {
12192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12193                    Self { _0: tuple.0 }
12194                }
12195            }
12196        }
12197        #[automatically_derived]
12198        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
12199            type Parameters<'a> = ();
12200            type Token<'a> = <Self::Parameters<
12201                'a,
12202            > as alloy_sol_types::SolType>::Token<'a>;
12203            type Return = alloy::sol_types::private::FixedBytes<32>;
12204            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12205            type ReturnToken<'a> = <Self::ReturnTuple<
12206                'a,
12207            > as alloy_sol_types::SolType>::Token<'a>;
12208            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
12209            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
12210            #[inline]
12211            fn new<'a>(
12212                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12213            ) -> Self {
12214                tuple.into()
12215            }
12216            #[inline]
12217            fn tokenize(&self) -> Self::Token<'_> {
12218                ()
12219            }
12220            #[inline]
12221            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12222                (
12223                    <alloy::sol_types::sol_data::FixedBytes<
12224                        32,
12225                    > as alloy_sol_types::SolType>::tokenize(ret),
12226                )
12227            }
12228            #[inline]
12229            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12230                <Self::ReturnTuple<
12231                    '_,
12232                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12233                    .map(|r| {
12234                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12235                        r._0
12236                    })
12237            }
12238            #[inline]
12239            fn abi_decode_returns_validate(
12240                data: &[u8],
12241            ) -> alloy_sol_types::Result<Self::Return> {
12242                <Self::ReturnTuple<
12243                    '_,
12244                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12245                    .map(|r| {
12246                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
12247                        r._0
12248                    })
12249            }
12250        }
12251    };
12252    #[derive(serde::Serialize, serde::Deserialize)]
12253    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12254    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
12255```solidity
12256function MAX_COMMISSION_BPS() external view returns (uint16);
12257```*/
12258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12259    #[derive(Clone)]
12260    pub struct MAX_COMMISSION_BPSCall;
12261    #[derive(serde::Serialize, serde::Deserialize)]
12262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12263    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
12264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12265    #[derive(Clone)]
12266    pub struct MAX_COMMISSION_BPSReturn {
12267        #[allow(missing_docs)]
12268        pub _0: u16,
12269    }
12270    #[allow(
12271        non_camel_case_types,
12272        non_snake_case,
12273        clippy::pub_underscore_fields,
12274        clippy::style
12275    )]
12276    const _: () = {
12277        use alloy::sol_types as alloy_sol_types;
12278        {
12279            #[doc(hidden)]
12280            #[allow(dead_code)]
12281            type UnderlyingSolTuple<'a> = ();
12282            #[doc(hidden)]
12283            type UnderlyingRustTuple<'a> = ();
12284            #[cfg(test)]
12285            #[allow(dead_code, unreachable_patterns)]
12286            fn _type_assertion(
12287                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12288            ) {
12289                match _t {
12290                    alloy_sol_types::private::AssertTypeEq::<
12291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12292                    >(_) => {}
12293                }
12294            }
12295            #[automatically_derived]
12296            #[doc(hidden)]
12297            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
12298            for UnderlyingRustTuple<'_> {
12299                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
12300                    ()
12301                }
12302            }
12303            #[automatically_derived]
12304            #[doc(hidden)]
12305            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12306            for MAX_COMMISSION_BPSCall {
12307                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12308                    Self
12309                }
12310            }
12311        }
12312        {
12313            #[doc(hidden)]
12314            #[allow(dead_code)]
12315            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12316            #[doc(hidden)]
12317            type UnderlyingRustTuple<'a> = (u16,);
12318            #[cfg(test)]
12319            #[allow(dead_code, unreachable_patterns)]
12320            fn _type_assertion(
12321                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12322            ) {
12323                match _t {
12324                    alloy_sol_types::private::AssertTypeEq::<
12325                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12326                    >(_) => {}
12327                }
12328            }
12329            #[automatically_derived]
12330            #[doc(hidden)]
12331            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
12332            for UnderlyingRustTuple<'_> {
12333                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
12334                    (value._0,)
12335                }
12336            }
12337            #[automatically_derived]
12338            #[doc(hidden)]
12339            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12340            for MAX_COMMISSION_BPSReturn {
12341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12342                    Self { _0: tuple.0 }
12343                }
12344            }
12345        }
12346        #[automatically_derived]
12347        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
12348            type Parameters<'a> = ();
12349            type Token<'a> = <Self::Parameters<
12350                'a,
12351            > as alloy_sol_types::SolType>::Token<'a>;
12352            type Return = u16;
12353            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12354            type ReturnToken<'a> = <Self::ReturnTuple<
12355                'a,
12356            > as alloy_sol_types::SolType>::Token<'a>;
12357            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
12358            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
12359            #[inline]
12360            fn new<'a>(
12361                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12362            ) -> Self {
12363                tuple.into()
12364            }
12365            #[inline]
12366            fn tokenize(&self) -> Self::Token<'_> {
12367                ()
12368            }
12369            #[inline]
12370            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12371                (
12372                    <alloy::sol_types::sol_data::Uint<
12373                        16,
12374                    > as alloy_sol_types::SolType>::tokenize(ret),
12375                )
12376            }
12377            #[inline]
12378            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12379                <Self::ReturnTuple<
12380                    '_,
12381                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12382                    .map(|r| {
12383                        let r: MAX_COMMISSION_BPSReturn = r.into();
12384                        r._0
12385                    })
12386            }
12387            #[inline]
12388            fn abi_decode_returns_validate(
12389                data: &[u8],
12390            ) -> alloy_sol_types::Result<Self::Return> {
12391                <Self::ReturnTuple<
12392                    '_,
12393                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12394                    .map(|r| {
12395                        let r: MAX_COMMISSION_BPSReturn = r.into();
12396                        r._0
12397                    })
12398            }
12399        }
12400    };
12401    #[derive(serde::Serialize, serde::Deserialize)]
12402    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12403    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
12404```solidity
12405function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
12406```*/
12407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12408    #[derive(Clone)]
12409    pub struct MAX_EXIT_ESCROW_PERIODCall;
12410    #[derive(serde::Serialize, serde::Deserialize)]
12411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12412    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
12413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12414    #[derive(Clone)]
12415    pub struct MAX_EXIT_ESCROW_PERIODReturn {
12416        #[allow(missing_docs)]
12417        pub _0: u64,
12418    }
12419    #[allow(
12420        non_camel_case_types,
12421        non_snake_case,
12422        clippy::pub_underscore_fields,
12423        clippy::style
12424    )]
12425    const _: () = {
12426        use alloy::sol_types as alloy_sol_types;
12427        {
12428            #[doc(hidden)]
12429            #[allow(dead_code)]
12430            type UnderlyingSolTuple<'a> = ();
12431            #[doc(hidden)]
12432            type UnderlyingRustTuple<'a> = ();
12433            #[cfg(test)]
12434            #[allow(dead_code, unreachable_patterns)]
12435            fn _type_assertion(
12436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12437            ) {
12438                match _t {
12439                    alloy_sol_types::private::AssertTypeEq::<
12440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12441                    >(_) => {}
12442                }
12443            }
12444            #[automatically_derived]
12445            #[doc(hidden)]
12446            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
12447            for UnderlyingRustTuple<'_> {
12448                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
12449                    ()
12450                }
12451            }
12452            #[automatically_derived]
12453            #[doc(hidden)]
12454            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12455            for MAX_EXIT_ESCROW_PERIODCall {
12456                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12457                    Self
12458                }
12459            }
12460        }
12461        {
12462            #[doc(hidden)]
12463            #[allow(dead_code)]
12464            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12465            #[doc(hidden)]
12466            type UnderlyingRustTuple<'a> = (u64,);
12467            #[cfg(test)]
12468            #[allow(dead_code, unreachable_patterns)]
12469            fn _type_assertion(
12470                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12471            ) {
12472                match _t {
12473                    alloy_sol_types::private::AssertTypeEq::<
12474                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12475                    >(_) => {}
12476                }
12477            }
12478            #[automatically_derived]
12479            #[doc(hidden)]
12480            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
12481            for UnderlyingRustTuple<'_> {
12482                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
12483                    (value._0,)
12484                }
12485            }
12486            #[automatically_derived]
12487            #[doc(hidden)]
12488            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12489            for MAX_EXIT_ESCROW_PERIODReturn {
12490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12491                    Self { _0: tuple.0 }
12492                }
12493            }
12494        }
12495        #[automatically_derived]
12496        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
12497            type Parameters<'a> = ();
12498            type Token<'a> = <Self::Parameters<
12499                'a,
12500            > as alloy_sol_types::SolType>::Token<'a>;
12501            type Return = u64;
12502            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12503            type ReturnToken<'a> = <Self::ReturnTuple<
12504                'a,
12505            > as alloy_sol_types::SolType>::Token<'a>;
12506            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
12507            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
12508            #[inline]
12509            fn new<'a>(
12510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12511            ) -> Self {
12512                tuple.into()
12513            }
12514            #[inline]
12515            fn tokenize(&self) -> Self::Token<'_> {
12516                ()
12517            }
12518            #[inline]
12519            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12520                (
12521                    <alloy::sol_types::sol_data::Uint<
12522                        64,
12523                    > as alloy_sol_types::SolType>::tokenize(ret),
12524                )
12525            }
12526            #[inline]
12527            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12528                <Self::ReturnTuple<
12529                    '_,
12530                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12531                    .map(|r| {
12532                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12533                        r._0
12534                    })
12535            }
12536            #[inline]
12537            fn abi_decode_returns_validate(
12538                data: &[u8],
12539            ) -> alloy_sol_types::Result<Self::Return> {
12540                <Self::ReturnTuple<
12541                    '_,
12542                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12543                    .map(|r| {
12544                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
12545                        r._0
12546                    })
12547            }
12548        }
12549    };
12550    #[derive(serde::Serialize, serde::Deserialize)]
12551    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12552    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
12553```solidity
12554function MAX_METADATA_URI_LENGTH() external view returns (uint256);
12555```*/
12556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12557    #[derive(Clone)]
12558    pub struct MAX_METADATA_URI_LENGTHCall;
12559    #[derive(serde::Serialize, serde::Deserialize)]
12560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12561    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
12562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12563    #[derive(Clone)]
12564    pub struct MAX_METADATA_URI_LENGTHReturn {
12565        #[allow(missing_docs)]
12566        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12567    }
12568    #[allow(
12569        non_camel_case_types,
12570        non_snake_case,
12571        clippy::pub_underscore_fields,
12572        clippy::style
12573    )]
12574    const _: () = {
12575        use alloy::sol_types as alloy_sol_types;
12576        {
12577            #[doc(hidden)]
12578            #[allow(dead_code)]
12579            type UnderlyingSolTuple<'a> = ();
12580            #[doc(hidden)]
12581            type UnderlyingRustTuple<'a> = ();
12582            #[cfg(test)]
12583            #[allow(dead_code, unreachable_patterns)]
12584            fn _type_assertion(
12585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12586            ) {
12587                match _t {
12588                    alloy_sol_types::private::AssertTypeEq::<
12589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12590                    >(_) => {}
12591                }
12592            }
12593            #[automatically_derived]
12594            #[doc(hidden)]
12595            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
12596            for UnderlyingRustTuple<'_> {
12597                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
12598                    ()
12599                }
12600            }
12601            #[automatically_derived]
12602            #[doc(hidden)]
12603            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12604            for MAX_METADATA_URI_LENGTHCall {
12605                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12606                    Self
12607                }
12608            }
12609        }
12610        {
12611            #[doc(hidden)]
12612            #[allow(dead_code)]
12613            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12614            #[doc(hidden)]
12615            type UnderlyingRustTuple<'a> = (
12616                alloy::sol_types::private::primitives::aliases::U256,
12617            );
12618            #[cfg(test)]
12619            #[allow(dead_code, unreachable_patterns)]
12620            fn _type_assertion(
12621                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12622            ) {
12623                match _t {
12624                    alloy_sol_types::private::AssertTypeEq::<
12625                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12626                    >(_) => {}
12627                }
12628            }
12629            #[automatically_derived]
12630            #[doc(hidden)]
12631            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
12632            for UnderlyingRustTuple<'_> {
12633                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
12634                    (value._0,)
12635                }
12636            }
12637            #[automatically_derived]
12638            #[doc(hidden)]
12639            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12640            for MAX_METADATA_URI_LENGTHReturn {
12641                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12642                    Self { _0: tuple.0 }
12643                }
12644            }
12645        }
12646        #[automatically_derived]
12647        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
12648            type Parameters<'a> = ();
12649            type Token<'a> = <Self::Parameters<
12650                'a,
12651            > as alloy_sol_types::SolType>::Token<'a>;
12652            type Return = alloy::sol_types::private::primitives::aliases::U256;
12653            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12654            type ReturnToken<'a> = <Self::ReturnTuple<
12655                'a,
12656            > as alloy_sol_types::SolType>::Token<'a>;
12657            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
12658            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
12659            #[inline]
12660            fn new<'a>(
12661                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12662            ) -> Self {
12663                tuple.into()
12664            }
12665            #[inline]
12666            fn tokenize(&self) -> Self::Token<'_> {
12667                ()
12668            }
12669            #[inline]
12670            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12671                (
12672                    <alloy::sol_types::sol_data::Uint<
12673                        256,
12674                    > as alloy_sol_types::SolType>::tokenize(ret),
12675                )
12676            }
12677            #[inline]
12678            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12679                <Self::ReturnTuple<
12680                    '_,
12681                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12682                    .map(|r| {
12683                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
12684                        r._0
12685                    })
12686            }
12687            #[inline]
12688            fn abi_decode_returns_validate(
12689                data: &[u8],
12690            ) -> alloy_sol_types::Result<Self::Return> {
12691                <Self::ReturnTuple<
12692                    '_,
12693                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12694                    .map(|r| {
12695                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
12696                        r._0
12697                    })
12698            }
12699        }
12700    };
12701    #[derive(serde::Serialize, serde::Deserialize)]
12702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12703    /**Function with signature `MAX_P2P_ADDR_LENGTH()` and selector `0x617066e5`.
12704```solidity
12705function MAX_P2P_ADDR_LENGTH() external view returns (uint256);
12706```*/
12707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12708    #[derive(Clone)]
12709    pub struct MAX_P2P_ADDR_LENGTHCall;
12710    #[derive(serde::Serialize, serde::Deserialize)]
12711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12712    ///Container type for the return parameters of the [`MAX_P2P_ADDR_LENGTH()`](MAX_P2P_ADDR_LENGTHCall) function.
12713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12714    #[derive(Clone)]
12715    pub struct MAX_P2P_ADDR_LENGTHReturn {
12716        #[allow(missing_docs)]
12717        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12718    }
12719    #[allow(
12720        non_camel_case_types,
12721        non_snake_case,
12722        clippy::pub_underscore_fields,
12723        clippy::style
12724    )]
12725    const _: () = {
12726        use alloy::sol_types as alloy_sol_types;
12727        {
12728            #[doc(hidden)]
12729            #[allow(dead_code)]
12730            type UnderlyingSolTuple<'a> = ();
12731            #[doc(hidden)]
12732            type UnderlyingRustTuple<'a> = ();
12733            #[cfg(test)]
12734            #[allow(dead_code, unreachable_patterns)]
12735            fn _type_assertion(
12736                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12737            ) {
12738                match _t {
12739                    alloy_sol_types::private::AssertTypeEq::<
12740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12741                    >(_) => {}
12742                }
12743            }
12744            #[automatically_derived]
12745            #[doc(hidden)]
12746            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHCall>
12747            for UnderlyingRustTuple<'_> {
12748                fn from(value: MAX_P2P_ADDR_LENGTHCall) -> Self {
12749                    ()
12750                }
12751            }
12752            #[automatically_derived]
12753            #[doc(hidden)]
12754            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12755            for MAX_P2P_ADDR_LENGTHCall {
12756                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12757                    Self
12758                }
12759            }
12760        }
12761        {
12762            #[doc(hidden)]
12763            #[allow(dead_code)]
12764            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12765            #[doc(hidden)]
12766            type UnderlyingRustTuple<'a> = (
12767                alloy::sol_types::private::primitives::aliases::U256,
12768            );
12769            #[cfg(test)]
12770            #[allow(dead_code, unreachable_patterns)]
12771            fn _type_assertion(
12772                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12773            ) {
12774                match _t {
12775                    alloy_sol_types::private::AssertTypeEq::<
12776                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12777                    >(_) => {}
12778                }
12779            }
12780            #[automatically_derived]
12781            #[doc(hidden)]
12782            impl ::core::convert::From<MAX_P2P_ADDR_LENGTHReturn>
12783            for UnderlyingRustTuple<'_> {
12784                fn from(value: MAX_P2P_ADDR_LENGTHReturn) -> Self {
12785                    (value._0,)
12786                }
12787            }
12788            #[automatically_derived]
12789            #[doc(hidden)]
12790            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12791            for MAX_P2P_ADDR_LENGTHReturn {
12792                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12793                    Self { _0: tuple.0 }
12794                }
12795            }
12796        }
12797        #[automatically_derived]
12798        impl alloy_sol_types::SolCall for MAX_P2P_ADDR_LENGTHCall {
12799            type Parameters<'a> = ();
12800            type Token<'a> = <Self::Parameters<
12801                'a,
12802            > as alloy_sol_types::SolType>::Token<'a>;
12803            type Return = alloy::sol_types::private::primitives::aliases::U256;
12804            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12805            type ReturnToken<'a> = <Self::ReturnTuple<
12806                'a,
12807            > as alloy_sol_types::SolType>::Token<'a>;
12808            const SIGNATURE: &'static str = "MAX_P2P_ADDR_LENGTH()";
12809            const SELECTOR: [u8; 4] = [97u8, 112u8, 102u8, 229u8];
12810            #[inline]
12811            fn new<'a>(
12812                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12813            ) -> Self {
12814                tuple.into()
12815            }
12816            #[inline]
12817            fn tokenize(&self) -> Self::Token<'_> {
12818                ()
12819            }
12820            #[inline]
12821            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12822                (
12823                    <alloy::sol_types::sol_data::Uint<
12824                        256,
12825                    > as alloy_sol_types::SolType>::tokenize(ret),
12826                )
12827            }
12828            #[inline]
12829            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12830                <Self::ReturnTuple<
12831                    '_,
12832                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12833                    .map(|r| {
12834                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
12835                        r._0
12836                    })
12837            }
12838            #[inline]
12839            fn abi_decode_returns_validate(
12840                data: &[u8],
12841            ) -> alloy_sol_types::Result<Self::Return> {
12842                <Self::ReturnTuple<
12843                    '_,
12844                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12845                    .map(|r| {
12846                        let r: MAX_P2P_ADDR_LENGTHReturn = r.into();
12847                        r._0
12848                    })
12849            }
12850        }
12851    };
12852    #[derive(serde::Serialize, serde::Deserialize)]
12853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12854    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
12855```solidity
12856function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
12857```*/
12858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12859    #[derive(Clone)]
12860    pub struct MIN_EXIT_ESCROW_PERIODCall;
12861    #[derive(serde::Serialize, serde::Deserialize)]
12862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12863    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
12864    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12865    #[derive(Clone)]
12866    pub struct MIN_EXIT_ESCROW_PERIODReturn {
12867        #[allow(missing_docs)]
12868        pub _0: u64,
12869    }
12870    #[allow(
12871        non_camel_case_types,
12872        non_snake_case,
12873        clippy::pub_underscore_fields,
12874        clippy::style
12875    )]
12876    const _: () = {
12877        use alloy::sol_types as alloy_sol_types;
12878        {
12879            #[doc(hidden)]
12880            #[allow(dead_code)]
12881            type UnderlyingSolTuple<'a> = ();
12882            #[doc(hidden)]
12883            type UnderlyingRustTuple<'a> = ();
12884            #[cfg(test)]
12885            #[allow(dead_code, unreachable_patterns)]
12886            fn _type_assertion(
12887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12888            ) {
12889                match _t {
12890                    alloy_sol_types::private::AssertTypeEq::<
12891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12892                    >(_) => {}
12893                }
12894            }
12895            #[automatically_derived]
12896            #[doc(hidden)]
12897            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
12898            for UnderlyingRustTuple<'_> {
12899                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
12900                    ()
12901                }
12902            }
12903            #[automatically_derived]
12904            #[doc(hidden)]
12905            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12906            for MIN_EXIT_ESCROW_PERIODCall {
12907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12908                    Self
12909                }
12910            }
12911        }
12912        {
12913            #[doc(hidden)]
12914            #[allow(dead_code)]
12915            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12916            #[doc(hidden)]
12917            type UnderlyingRustTuple<'a> = (u64,);
12918            #[cfg(test)]
12919            #[allow(dead_code, unreachable_patterns)]
12920            fn _type_assertion(
12921                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12922            ) {
12923                match _t {
12924                    alloy_sol_types::private::AssertTypeEq::<
12925                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12926                    >(_) => {}
12927                }
12928            }
12929            #[automatically_derived]
12930            #[doc(hidden)]
12931            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
12932            for UnderlyingRustTuple<'_> {
12933                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
12934                    (value._0,)
12935                }
12936            }
12937            #[automatically_derived]
12938            #[doc(hidden)]
12939            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12940            for MIN_EXIT_ESCROW_PERIODReturn {
12941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12942                    Self { _0: tuple.0 }
12943                }
12944            }
12945        }
12946        #[automatically_derived]
12947        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
12948            type Parameters<'a> = ();
12949            type Token<'a> = <Self::Parameters<
12950                'a,
12951            > as alloy_sol_types::SolType>::Token<'a>;
12952            type Return = u64;
12953            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12954            type ReturnToken<'a> = <Self::ReturnTuple<
12955                'a,
12956            > as alloy_sol_types::SolType>::Token<'a>;
12957            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
12958            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
12959            #[inline]
12960            fn new<'a>(
12961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12962            ) -> Self {
12963                tuple.into()
12964            }
12965            #[inline]
12966            fn tokenize(&self) -> Self::Token<'_> {
12967                ()
12968            }
12969            #[inline]
12970            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12971                (
12972                    <alloy::sol_types::sol_data::Uint<
12973                        64,
12974                    > as alloy_sol_types::SolType>::tokenize(ret),
12975                )
12976            }
12977            #[inline]
12978            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12979                <Self::ReturnTuple<
12980                    '_,
12981                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12982                    .map(|r| {
12983                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
12984                        r._0
12985                    })
12986            }
12987            #[inline]
12988            fn abi_decode_returns_validate(
12989                data: &[u8],
12990            ) -> alloy_sol_types::Result<Self::Return> {
12991                <Self::ReturnTuple<
12992                    '_,
12993                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12994                    .map(|r| {
12995                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
12996                        r._0
12997                    })
12998            }
12999        }
13000    };
13001    #[derive(serde::Serialize, serde::Deserialize)]
13002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13003    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
13004```solidity
13005function PAUSER_ROLE() external view returns (bytes32);
13006```*/
13007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13008    #[derive(Clone)]
13009    pub struct PAUSER_ROLECall;
13010    #[derive(serde::Serialize, serde::Deserialize)]
13011    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13012    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
13013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13014    #[derive(Clone)]
13015    pub struct PAUSER_ROLEReturn {
13016        #[allow(missing_docs)]
13017        pub _0: alloy::sol_types::private::FixedBytes<32>,
13018    }
13019    #[allow(
13020        non_camel_case_types,
13021        non_snake_case,
13022        clippy::pub_underscore_fields,
13023        clippy::style
13024    )]
13025    const _: () = {
13026        use alloy::sol_types as alloy_sol_types;
13027        {
13028            #[doc(hidden)]
13029            #[allow(dead_code)]
13030            type UnderlyingSolTuple<'a> = ();
13031            #[doc(hidden)]
13032            type UnderlyingRustTuple<'a> = ();
13033            #[cfg(test)]
13034            #[allow(dead_code, unreachable_patterns)]
13035            fn _type_assertion(
13036                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13037            ) {
13038                match _t {
13039                    alloy_sol_types::private::AssertTypeEq::<
13040                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13041                    >(_) => {}
13042                }
13043            }
13044            #[automatically_derived]
13045            #[doc(hidden)]
13046            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
13047                fn from(value: PAUSER_ROLECall) -> Self {
13048                    ()
13049                }
13050            }
13051            #[automatically_derived]
13052            #[doc(hidden)]
13053            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
13054                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13055                    Self
13056                }
13057            }
13058        }
13059        {
13060            #[doc(hidden)]
13061            #[allow(dead_code)]
13062            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13063            #[doc(hidden)]
13064            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13065            #[cfg(test)]
13066            #[allow(dead_code, unreachable_patterns)]
13067            fn _type_assertion(
13068                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13069            ) {
13070                match _t {
13071                    alloy_sol_types::private::AssertTypeEq::<
13072                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13073                    >(_) => {}
13074                }
13075            }
13076            #[automatically_derived]
13077            #[doc(hidden)]
13078            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
13079                fn from(value: PAUSER_ROLEReturn) -> Self {
13080                    (value._0,)
13081                }
13082            }
13083            #[automatically_derived]
13084            #[doc(hidden)]
13085            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
13086                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13087                    Self { _0: tuple.0 }
13088                }
13089            }
13090        }
13091        #[automatically_derived]
13092        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
13093            type Parameters<'a> = ();
13094            type Token<'a> = <Self::Parameters<
13095                'a,
13096            > as alloy_sol_types::SolType>::Token<'a>;
13097            type Return = alloy::sol_types::private::FixedBytes<32>;
13098            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13099            type ReturnToken<'a> = <Self::ReturnTuple<
13100                'a,
13101            > as alloy_sol_types::SolType>::Token<'a>;
13102            const SIGNATURE: &'static str = "PAUSER_ROLE()";
13103            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
13104            #[inline]
13105            fn new<'a>(
13106                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13107            ) -> Self {
13108                tuple.into()
13109            }
13110            #[inline]
13111            fn tokenize(&self) -> Self::Token<'_> {
13112                ()
13113            }
13114            #[inline]
13115            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13116                (
13117                    <alloy::sol_types::sol_data::FixedBytes<
13118                        32,
13119                    > as alloy_sol_types::SolType>::tokenize(ret),
13120                )
13121            }
13122            #[inline]
13123            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13124                <Self::ReturnTuple<
13125                    '_,
13126                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13127                    .map(|r| {
13128                        let r: PAUSER_ROLEReturn = r.into();
13129                        r._0
13130                    })
13131            }
13132            #[inline]
13133            fn abi_decode_returns_validate(
13134                data: &[u8],
13135            ) -> alloy_sol_types::Result<Self::Return> {
13136                <Self::ReturnTuple<
13137                    '_,
13138                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13139                    .map(|r| {
13140                        let r: PAUSER_ROLEReturn = r.into();
13141                        r._0
13142                    })
13143            }
13144        }
13145    };
13146    #[derive(serde::Serialize, serde::Deserialize)]
13147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13148    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
13149```solidity
13150function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
13151```*/
13152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13153    #[derive(Clone)]
13154    pub struct UPGRADE_INTERFACE_VERSIONCall;
13155    #[derive(serde::Serialize, serde::Deserialize)]
13156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13157    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
13158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13159    #[derive(Clone)]
13160    pub struct UPGRADE_INTERFACE_VERSIONReturn {
13161        #[allow(missing_docs)]
13162        pub _0: alloy::sol_types::private::String,
13163    }
13164    #[allow(
13165        non_camel_case_types,
13166        non_snake_case,
13167        clippy::pub_underscore_fields,
13168        clippy::style
13169    )]
13170    const _: () = {
13171        use alloy::sol_types as alloy_sol_types;
13172        {
13173            #[doc(hidden)]
13174            #[allow(dead_code)]
13175            type UnderlyingSolTuple<'a> = ();
13176            #[doc(hidden)]
13177            type UnderlyingRustTuple<'a> = ();
13178            #[cfg(test)]
13179            #[allow(dead_code, unreachable_patterns)]
13180            fn _type_assertion(
13181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13182            ) {
13183                match _t {
13184                    alloy_sol_types::private::AssertTypeEq::<
13185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13186                    >(_) => {}
13187                }
13188            }
13189            #[automatically_derived]
13190            #[doc(hidden)]
13191            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
13192            for UnderlyingRustTuple<'_> {
13193                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
13194                    ()
13195                }
13196            }
13197            #[automatically_derived]
13198            #[doc(hidden)]
13199            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13200            for UPGRADE_INTERFACE_VERSIONCall {
13201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13202                    Self
13203                }
13204            }
13205        }
13206        {
13207            #[doc(hidden)]
13208            #[allow(dead_code)]
13209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
13210            #[doc(hidden)]
13211            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
13212            #[cfg(test)]
13213            #[allow(dead_code, unreachable_patterns)]
13214            fn _type_assertion(
13215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13216            ) {
13217                match _t {
13218                    alloy_sol_types::private::AssertTypeEq::<
13219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13220                    >(_) => {}
13221                }
13222            }
13223            #[automatically_derived]
13224            #[doc(hidden)]
13225            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
13226            for UnderlyingRustTuple<'_> {
13227                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
13228                    (value._0,)
13229                }
13230            }
13231            #[automatically_derived]
13232            #[doc(hidden)]
13233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13234            for UPGRADE_INTERFACE_VERSIONReturn {
13235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13236                    Self { _0: tuple.0 }
13237                }
13238            }
13239        }
13240        #[automatically_derived]
13241        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
13242            type Parameters<'a> = ();
13243            type Token<'a> = <Self::Parameters<
13244                'a,
13245            > as alloy_sol_types::SolType>::Token<'a>;
13246            type Return = alloy::sol_types::private::String;
13247            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
13248            type ReturnToken<'a> = <Self::ReturnTuple<
13249                'a,
13250            > as alloy_sol_types::SolType>::Token<'a>;
13251            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
13252            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
13253            #[inline]
13254            fn new<'a>(
13255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13256            ) -> Self {
13257                tuple.into()
13258            }
13259            #[inline]
13260            fn tokenize(&self) -> Self::Token<'_> {
13261                ()
13262            }
13263            #[inline]
13264            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13265                (
13266                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
13267                        ret,
13268                    ),
13269                )
13270            }
13271            #[inline]
13272            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13273                <Self::ReturnTuple<
13274                    '_,
13275                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13276                    .map(|r| {
13277                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13278                        r._0
13279                    })
13280            }
13281            #[inline]
13282            fn abi_decode_returns_validate(
13283                data: &[u8],
13284            ) -> alloy_sol_types::Result<Self::Return> {
13285                <Self::ReturnTuple<
13286                    '_,
13287                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13288                    .map(|r| {
13289                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
13290                        r._0
13291                    })
13292            }
13293        }
13294    };
13295    #[derive(serde::Serialize, serde::Deserialize)]
13296    #[derive()]
13297    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
13298```solidity
13299function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
13300```*/
13301    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13302    #[derive(Clone)]
13303    pub struct _hashBlsKeyCall {
13304        #[allow(missing_docs)]
13305        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13306    }
13307    #[derive(serde::Serialize, serde::Deserialize)]
13308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13309    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
13310    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13311    #[derive(Clone)]
13312    pub struct _hashBlsKeyReturn {
13313        #[allow(missing_docs)]
13314        pub _0: alloy::sol_types::private::FixedBytes<32>,
13315    }
13316    #[allow(
13317        non_camel_case_types,
13318        non_snake_case,
13319        clippy::pub_underscore_fields,
13320        clippy::style
13321    )]
13322    const _: () = {
13323        use alloy::sol_types as alloy_sol_types;
13324        {
13325            #[doc(hidden)]
13326            #[allow(dead_code)]
13327            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
13328            #[doc(hidden)]
13329            type UnderlyingRustTuple<'a> = (
13330                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13331            );
13332            #[cfg(test)]
13333            #[allow(dead_code, unreachable_patterns)]
13334            fn _type_assertion(
13335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13336            ) {
13337                match _t {
13338                    alloy_sol_types::private::AssertTypeEq::<
13339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13340                    >(_) => {}
13341                }
13342            }
13343            #[automatically_derived]
13344            #[doc(hidden)]
13345            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
13346                fn from(value: _hashBlsKeyCall) -> Self {
13347                    (value.blsVK,)
13348                }
13349            }
13350            #[automatically_derived]
13351            #[doc(hidden)]
13352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
13353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13354                    Self { blsVK: tuple.0 }
13355                }
13356            }
13357        }
13358        {
13359            #[doc(hidden)]
13360            #[allow(dead_code)]
13361            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13362            #[doc(hidden)]
13363            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13364            #[cfg(test)]
13365            #[allow(dead_code, unreachable_patterns)]
13366            fn _type_assertion(
13367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13368            ) {
13369                match _t {
13370                    alloy_sol_types::private::AssertTypeEq::<
13371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13372                    >(_) => {}
13373                }
13374            }
13375            #[automatically_derived]
13376            #[doc(hidden)]
13377            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
13378                fn from(value: _hashBlsKeyReturn) -> Self {
13379                    (value._0,)
13380                }
13381            }
13382            #[automatically_derived]
13383            #[doc(hidden)]
13384            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
13385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13386                    Self { _0: tuple.0 }
13387                }
13388            }
13389        }
13390        #[automatically_derived]
13391        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
13392            type Parameters<'a> = (BN254::G2Point,);
13393            type Token<'a> = <Self::Parameters<
13394                'a,
13395            > as alloy_sol_types::SolType>::Token<'a>;
13396            type Return = alloy::sol_types::private::FixedBytes<32>;
13397            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13398            type ReturnToken<'a> = <Self::ReturnTuple<
13399                'a,
13400            > as alloy_sol_types::SolType>::Token<'a>;
13401            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
13402            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
13403            #[inline]
13404            fn new<'a>(
13405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13406            ) -> Self {
13407                tuple.into()
13408            }
13409            #[inline]
13410            fn tokenize(&self) -> Self::Token<'_> {
13411                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
13412            }
13413            #[inline]
13414            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13415                (
13416                    <alloy::sol_types::sol_data::FixedBytes<
13417                        32,
13418                    > as alloy_sol_types::SolType>::tokenize(ret),
13419                )
13420            }
13421            #[inline]
13422            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13423                <Self::ReturnTuple<
13424                    '_,
13425                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13426                    .map(|r| {
13427                        let r: _hashBlsKeyReturn = r.into();
13428                        r._0
13429                    })
13430            }
13431            #[inline]
13432            fn abi_decode_returns_validate(
13433                data: &[u8],
13434            ) -> alloy_sol_types::Result<Self::Return> {
13435                <Self::ReturnTuple<
13436                    '_,
13437                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13438                    .map(|r| {
13439                        let r: _hashBlsKeyReturn = r.into();
13440                        r._0
13441                    })
13442            }
13443        }
13444    };
13445    #[derive(serde::Serialize, serde::Deserialize)]
13446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13447    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
13448```solidity
13449function activeStake() external view returns (uint256);
13450```*/
13451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13452    #[derive(Clone)]
13453    pub struct activeStakeCall;
13454    #[derive(serde::Serialize, serde::Deserialize)]
13455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13456    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
13457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13458    #[derive(Clone)]
13459    pub struct activeStakeReturn {
13460        #[allow(missing_docs)]
13461        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13462    }
13463    #[allow(
13464        non_camel_case_types,
13465        non_snake_case,
13466        clippy::pub_underscore_fields,
13467        clippy::style
13468    )]
13469    const _: () = {
13470        use alloy::sol_types as alloy_sol_types;
13471        {
13472            #[doc(hidden)]
13473            #[allow(dead_code)]
13474            type UnderlyingSolTuple<'a> = ();
13475            #[doc(hidden)]
13476            type UnderlyingRustTuple<'a> = ();
13477            #[cfg(test)]
13478            #[allow(dead_code, unreachable_patterns)]
13479            fn _type_assertion(
13480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13481            ) {
13482                match _t {
13483                    alloy_sol_types::private::AssertTypeEq::<
13484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13485                    >(_) => {}
13486                }
13487            }
13488            #[automatically_derived]
13489            #[doc(hidden)]
13490            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
13491                fn from(value: activeStakeCall) -> Self {
13492                    ()
13493                }
13494            }
13495            #[automatically_derived]
13496            #[doc(hidden)]
13497            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
13498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13499                    Self
13500                }
13501            }
13502        }
13503        {
13504            #[doc(hidden)]
13505            #[allow(dead_code)]
13506            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13507            #[doc(hidden)]
13508            type UnderlyingRustTuple<'a> = (
13509                alloy::sol_types::private::primitives::aliases::U256,
13510            );
13511            #[cfg(test)]
13512            #[allow(dead_code, unreachable_patterns)]
13513            fn _type_assertion(
13514                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13515            ) {
13516                match _t {
13517                    alloy_sol_types::private::AssertTypeEq::<
13518                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13519                    >(_) => {}
13520                }
13521            }
13522            #[automatically_derived]
13523            #[doc(hidden)]
13524            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
13525                fn from(value: activeStakeReturn) -> Self {
13526                    (value._0,)
13527                }
13528            }
13529            #[automatically_derived]
13530            #[doc(hidden)]
13531            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
13532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13533                    Self { _0: tuple.0 }
13534                }
13535            }
13536        }
13537        #[automatically_derived]
13538        impl alloy_sol_types::SolCall for activeStakeCall {
13539            type Parameters<'a> = ();
13540            type Token<'a> = <Self::Parameters<
13541                'a,
13542            > as alloy_sol_types::SolType>::Token<'a>;
13543            type Return = alloy::sol_types::private::primitives::aliases::U256;
13544            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13545            type ReturnToken<'a> = <Self::ReturnTuple<
13546                'a,
13547            > as alloy_sol_types::SolType>::Token<'a>;
13548            const SIGNATURE: &'static str = "activeStake()";
13549            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
13550            #[inline]
13551            fn new<'a>(
13552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13553            ) -> Self {
13554                tuple.into()
13555            }
13556            #[inline]
13557            fn tokenize(&self) -> Self::Token<'_> {
13558                ()
13559            }
13560            #[inline]
13561            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13562                (
13563                    <alloy::sol_types::sol_data::Uint<
13564                        256,
13565                    > as alloy_sol_types::SolType>::tokenize(ret),
13566                )
13567            }
13568            #[inline]
13569            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13570                <Self::ReturnTuple<
13571                    '_,
13572                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13573                    .map(|r| {
13574                        let r: activeStakeReturn = r.into();
13575                        r._0
13576                    })
13577            }
13578            #[inline]
13579            fn abi_decode_returns_validate(
13580                data: &[u8],
13581            ) -> alloy_sol_types::Result<Self::Return> {
13582                <Self::ReturnTuple<
13583                    '_,
13584                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13585                    .map(|r| {
13586                        let r: activeStakeReturn = r.into();
13587                        r._0
13588                    })
13589            }
13590        }
13591    };
13592    #[derive(serde::Serialize, serde::Deserialize)]
13593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13594    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
13595```solidity
13596function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
13597```*/
13598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13599    #[derive(Clone)]
13600    pub struct blsKeysCall {
13601        #[allow(missing_docs)]
13602        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
13603    }
13604    #[derive(serde::Serialize, serde::Deserialize)]
13605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13606    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
13607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13608    #[derive(Clone)]
13609    pub struct blsKeysReturn {
13610        #[allow(missing_docs)]
13611        pub used: bool,
13612    }
13613    #[allow(
13614        non_camel_case_types,
13615        non_snake_case,
13616        clippy::pub_underscore_fields,
13617        clippy::style
13618    )]
13619    const _: () = {
13620        use alloy::sol_types as alloy_sol_types;
13621        {
13622            #[doc(hidden)]
13623            #[allow(dead_code)]
13624            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13625            #[doc(hidden)]
13626            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13627            #[cfg(test)]
13628            #[allow(dead_code, unreachable_patterns)]
13629            fn _type_assertion(
13630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13631            ) {
13632                match _t {
13633                    alloy_sol_types::private::AssertTypeEq::<
13634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13635                    >(_) => {}
13636                }
13637            }
13638            #[automatically_derived]
13639            #[doc(hidden)]
13640            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
13641                fn from(value: blsKeysCall) -> Self {
13642                    (value.blsKeyHash,)
13643                }
13644            }
13645            #[automatically_derived]
13646            #[doc(hidden)]
13647            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
13648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13649                    Self { blsKeyHash: tuple.0 }
13650                }
13651            }
13652        }
13653        {
13654            #[doc(hidden)]
13655            #[allow(dead_code)]
13656            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13657            #[doc(hidden)]
13658            type UnderlyingRustTuple<'a> = (bool,);
13659            #[cfg(test)]
13660            #[allow(dead_code, unreachable_patterns)]
13661            fn _type_assertion(
13662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13663            ) {
13664                match _t {
13665                    alloy_sol_types::private::AssertTypeEq::<
13666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13667                    >(_) => {}
13668                }
13669            }
13670            #[automatically_derived]
13671            #[doc(hidden)]
13672            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
13673                fn from(value: blsKeysReturn) -> Self {
13674                    (value.used,)
13675                }
13676            }
13677            #[automatically_derived]
13678            #[doc(hidden)]
13679            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
13680                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13681                    Self { used: tuple.0 }
13682                }
13683            }
13684        }
13685        #[automatically_derived]
13686        impl alloy_sol_types::SolCall for blsKeysCall {
13687            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13688            type Token<'a> = <Self::Parameters<
13689                'a,
13690            > as alloy_sol_types::SolType>::Token<'a>;
13691            type Return = bool;
13692            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13693            type ReturnToken<'a> = <Self::ReturnTuple<
13694                'a,
13695            > as alloy_sol_types::SolType>::Token<'a>;
13696            const SIGNATURE: &'static str = "blsKeys(bytes32)";
13697            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
13698            #[inline]
13699            fn new<'a>(
13700                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13701            ) -> Self {
13702                tuple.into()
13703            }
13704            #[inline]
13705            fn tokenize(&self) -> Self::Token<'_> {
13706                (
13707                    <alloy::sol_types::sol_data::FixedBytes<
13708                        32,
13709                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
13710                )
13711            }
13712            #[inline]
13713            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13714                (
13715                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
13716                        ret,
13717                    ),
13718                )
13719            }
13720            #[inline]
13721            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13722                <Self::ReturnTuple<
13723                    '_,
13724                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13725                    .map(|r| {
13726                        let r: blsKeysReturn = r.into();
13727                        r.used
13728                    })
13729            }
13730            #[inline]
13731            fn abi_decode_returns_validate(
13732                data: &[u8],
13733            ) -> alloy_sol_types::Result<Self::Return> {
13734                <Self::ReturnTuple<
13735                    '_,
13736                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13737                    .map(|r| {
13738                        let r: blsKeysReturn = r.into();
13739                        r.used
13740                    })
13741            }
13742        }
13743    };
13744    #[derive(serde::Serialize, serde::Deserialize)]
13745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13746    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
13747```solidity
13748function claimValidatorExit(address validator) external;
13749```*/
13750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13751    #[derive(Clone)]
13752    pub struct claimValidatorExitCall {
13753        #[allow(missing_docs)]
13754        pub validator: alloy::sol_types::private::Address,
13755    }
13756    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
13757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13758    #[derive(Clone)]
13759    pub struct claimValidatorExitReturn {}
13760    #[allow(
13761        non_camel_case_types,
13762        non_snake_case,
13763        clippy::pub_underscore_fields,
13764        clippy::style
13765    )]
13766    const _: () = {
13767        use alloy::sol_types as alloy_sol_types;
13768        {
13769            #[doc(hidden)]
13770            #[allow(dead_code)]
13771            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13772            #[doc(hidden)]
13773            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13774            #[cfg(test)]
13775            #[allow(dead_code, unreachable_patterns)]
13776            fn _type_assertion(
13777                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13778            ) {
13779                match _t {
13780                    alloy_sol_types::private::AssertTypeEq::<
13781                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13782                    >(_) => {}
13783                }
13784            }
13785            #[automatically_derived]
13786            #[doc(hidden)]
13787            impl ::core::convert::From<claimValidatorExitCall>
13788            for UnderlyingRustTuple<'_> {
13789                fn from(value: claimValidatorExitCall) -> Self {
13790                    (value.validator,)
13791                }
13792            }
13793            #[automatically_derived]
13794            #[doc(hidden)]
13795            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13796            for claimValidatorExitCall {
13797                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13798                    Self { validator: tuple.0 }
13799                }
13800            }
13801        }
13802        {
13803            #[doc(hidden)]
13804            #[allow(dead_code)]
13805            type UnderlyingSolTuple<'a> = ();
13806            #[doc(hidden)]
13807            type UnderlyingRustTuple<'a> = ();
13808            #[cfg(test)]
13809            #[allow(dead_code, unreachable_patterns)]
13810            fn _type_assertion(
13811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13812            ) {
13813                match _t {
13814                    alloy_sol_types::private::AssertTypeEq::<
13815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13816                    >(_) => {}
13817                }
13818            }
13819            #[automatically_derived]
13820            #[doc(hidden)]
13821            impl ::core::convert::From<claimValidatorExitReturn>
13822            for UnderlyingRustTuple<'_> {
13823                fn from(value: claimValidatorExitReturn) -> Self {
13824                    ()
13825                }
13826            }
13827            #[automatically_derived]
13828            #[doc(hidden)]
13829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13830            for claimValidatorExitReturn {
13831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13832                    Self {}
13833                }
13834            }
13835        }
13836        impl claimValidatorExitReturn {
13837            fn _tokenize(
13838                &self,
13839            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13840                ()
13841            }
13842        }
13843        #[automatically_derived]
13844        impl alloy_sol_types::SolCall for claimValidatorExitCall {
13845            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13846            type Token<'a> = <Self::Parameters<
13847                'a,
13848            > as alloy_sol_types::SolType>::Token<'a>;
13849            type Return = claimValidatorExitReturn;
13850            type ReturnTuple<'a> = ();
13851            type ReturnToken<'a> = <Self::ReturnTuple<
13852                'a,
13853            > as alloy_sol_types::SolType>::Token<'a>;
13854            const SIGNATURE: &'static str = "claimValidatorExit(address)";
13855            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
13856            #[inline]
13857            fn new<'a>(
13858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13859            ) -> Self {
13860                tuple.into()
13861            }
13862            #[inline]
13863            fn tokenize(&self) -> Self::Token<'_> {
13864                (
13865                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13866                        &self.validator,
13867                    ),
13868                )
13869            }
13870            #[inline]
13871            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13872                claimValidatorExitReturn::_tokenize(ret)
13873            }
13874            #[inline]
13875            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13876                <Self::ReturnTuple<
13877                    '_,
13878                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13879                    .map(Into::into)
13880            }
13881            #[inline]
13882            fn abi_decode_returns_validate(
13883                data: &[u8],
13884            ) -> alloy_sol_types::Result<Self::Return> {
13885                <Self::ReturnTuple<
13886                    '_,
13887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13888                    .map(Into::into)
13889            }
13890        }
13891    };
13892    #[derive(serde::Serialize, serde::Deserialize)]
13893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13894    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
13895```solidity
13896function claimWithdrawal(address validator) external;
13897```*/
13898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13899    #[derive(Clone)]
13900    pub struct claimWithdrawalCall {
13901        #[allow(missing_docs)]
13902        pub validator: alloy::sol_types::private::Address,
13903    }
13904    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
13905    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13906    #[derive(Clone)]
13907    pub struct claimWithdrawalReturn {}
13908    #[allow(
13909        non_camel_case_types,
13910        non_snake_case,
13911        clippy::pub_underscore_fields,
13912        clippy::style
13913    )]
13914    const _: () = {
13915        use alloy::sol_types as alloy_sol_types;
13916        {
13917            #[doc(hidden)]
13918            #[allow(dead_code)]
13919            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13920            #[doc(hidden)]
13921            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13922            #[cfg(test)]
13923            #[allow(dead_code, unreachable_patterns)]
13924            fn _type_assertion(
13925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13926            ) {
13927                match _t {
13928                    alloy_sol_types::private::AssertTypeEq::<
13929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13930                    >(_) => {}
13931                }
13932            }
13933            #[automatically_derived]
13934            #[doc(hidden)]
13935            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
13936                fn from(value: claimWithdrawalCall) -> Self {
13937                    (value.validator,)
13938                }
13939            }
13940            #[automatically_derived]
13941            #[doc(hidden)]
13942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
13943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13944                    Self { validator: tuple.0 }
13945                }
13946            }
13947        }
13948        {
13949            #[doc(hidden)]
13950            #[allow(dead_code)]
13951            type UnderlyingSolTuple<'a> = ();
13952            #[doc(hidden)]
13953            type UnderlyingRustTuple<'a> = ();
13954            #[cfg(test)]
13955            #[allow(dead_code, unreachable_patterns)]
13956            fn _type_assertion(
13957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13958            ) {
13959                match _t {
13960                    alloy_sol_types::private::AssertTypeEq::<
13961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13962                    >(_) => {}
13963                }
13964            }
13965            #[automatically_derived]
13966            #[doc(hidden)]
13967            impl ::core::convert::From<claimWithdrawalReturn>
13968            for UnderlyingRustTuple<'_> {
13969                fn from(value: claimWithdrawalReturn) -> Self {
13970                    ()
13971                }
13972            }
13973            #[automatically_derived]
13974            #[doc(hidden)]
13975            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13976            for claimWithdrawalReturn {
13977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13978                    Self {}
13979                }
13980            }
13981        }
13982        impl claimWithdrawalReturn {
13983            fn _tokenize(
13984                &self,
13985            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13986                ()
13987            }
13988        }
13989        #[automatically_derived]
13990        impl alloy_sol_types::SolCall for claimWithdrawalCall {
13991            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13992            type Token<'a> = <Self::Parameters<
13993                'a,
13994            > as alloy_sol_types::SolType>::Token<'a>;
13995            type Return = claimWithdrawalReturn;
13996            type ReturnTuple<'a> = ();
13997            type ReturnToken<'a> = <Self::ReturnTuple<
13998                'a,
13999            > as alloy_sol_types::SolType>::Token<'a>;
14000            const SIGNATURE: &'static str = "claimWithdrawal(address)";
14001            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
14002            #[inline]
14003            fn new<'a>(
14004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14005            ) -> Self {
14006                tuple.into()
14007            }
14008            #[inline]
14009            fn tokenize(&self) -> Self::Token<'_> {
14010                (
14011                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14012                        &self.validator,
14013                    ),
14014                )
14015            }
14016            #[inline]
14017            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14018                claimWithdrawalReturn::_tokenize(ret)
14019            }
14020            #[inline]
14021            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14022                <Self::ReturnTuple<
14023                    '_,
14024                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14025                    .map(Into::into)
14026            }
14027            #[inline]
14028            fn abi_decode_returns_validate(
14029                data: &[u8],
14030            ) -> alloy_sol_types::Result<Self::Return> {
14031                <Self::ReturnTuple<
14032                    '_,
14033                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14034                    .map(Into::into)
14035            }
14036        }
14037    };
14038    #[derive(serde::Serialize, serde::Deserialize)]
14039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14040    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
14041```solidity
14042function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
14043```*/
14044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14045    #[derive(Clone)]
14046    pub struct commissionTrackingCall {
14047        #[allow(missing_docs)]
14048        pub validator: alloy::sol_types::private::Address,
14049    }
14050    #[derive(serde::Serialize, serde::Deserialize)]
14051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14052    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
14053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14054    #[derive(Clone)]
14055    pub struct commissionTrackingReturn {
14056        #[allow(missing_docs)]
14057        pub commission: u16,
14058        #[allow(missing_docs)]
14059        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
14060    }
14061    #[allow(
14062        non_camel_case_types,
14063        non_snake_case,
14064        clippy::pub_underscore_fields,
14065        clippy::style
14066    )]
14067    const _: () = {
14068        use alloy::sol_types as alloy_sol_types;
14069        {
14070            #[doc(hidden)]
14071            #[allow(dead_code)]
14072            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14073            #[doc(hidden)]
14074            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14075            #[cfg(test)]
14076            #[allow(dead_code, unreachable_patterns)]
14077            fn _type_assertion(
14078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14079            ) {
14080                match _t {
14081                    alloy_sol_types::private::AssertTypeEq::<
14082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14083                    >(_) => {}
14084                }
14085            }
14086            #[automatically_derived]
14087            #[doc(hidden)]
14088            impl ::core::convert::From<commissionTrackingCall>
14089            for UnderlyingRustTuple<'_> {
14090                fn from(value: commissionTrackingCall) -> Self {
14091                    (value.validator,)
14092                }
14093            }
14094            #[automatically_derived]
14095            #[doc(hidden)]
14096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14097            for commissionTrackingCall {
14098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14099                    Self { validator: tuple.0 }
14100                }
14101            }
14102        }
14103        {
14104            #[doc(hidden)]
14105            #[allow(dead_code)]
14106            type UnderlyingSolTuple<'a> = (
14107                alloy::sol_types::sol_data::Uint<16>,
14108                alloy::sol_types::sol_data::Uint<256>,
14109            );
14110            #[doc(hidden)]
14111            type UnderlyingRustTuple<'a> = (
14112                u16,
14113                alloy::sol_types::private::primitives::aliases::U256,
14114            );
14115            #[cfg(test)]
14116            #[allow(dead_code, unreachable_patterns)]
14117            fn _type_assertion(
14118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14119            ) {
14120                match _t {
14121                    alloy_sol_types::private::AssertTypeEq::<
14122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14123                    >(_) => {}
14124                }
14125            }
14126            #[automatically_derived]
14127            #[doc(hidden)]
14128            impl ::core::convert::From<commissionTrackingReturn>
14129            for UnderlyingRustTuple<'_> {
14130                fn from(value: commissionTrackingReturn) -> Self {
14131                    (value.commission, value.lastIncreaseTime)
14132                }
14133            }
14134            #[automatically_derived]
14135            #[doc(hidden)]
14136            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14137            for commissionTrackingReturn {
14138                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14139                    Self {
14140                        commission: tuple.0,
14141                        lastIncreaseTime: tuple.1,
14142                    }
14143                }
14144            }
14145        }
14146        impl commissionTrackingReturn {
14147            fn _tokenize(
14148                &self,
14149            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14150                (
14151                    <alloy::sol_types::sol_data::Uint<
14152                        16,
14153                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
14154                    <alloy::sol_types::sol_data::Uint<
14155                        256,
14156                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
14157                )
14158            }
14159        }
14160        #[automatically_derived]
14161        impl alloy_sol_types::SolCall for commissionTrackingCall {
14162            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14163            type Token<'a> = <Self::Parameters<
14164                'a,
14165            > as alloy_sol_types::SolType>::Token<'a>;
14166            type Return = commissionTrackingReturn;
14167            type ReturnTuple<'a> = (
14168                alloy::sol_types::sol_data::Uint<16>,
14169                alloy::sol_types::sol_data::Uint<256>,
14170            );
14171            type ReturnToken<'a> = <Self::ReturnTuple<
14172                'a,
14173            > as alloy_sol_types::SolType>::Token<'a>;
14174            const SIGNATURE: &'static str = "commissionTracking(address)";
14175            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
14176            #[inline]
14177            fn new<'a>(
14178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14179            ) -> Self {
14180                tuple.into()
14181            }
14182            #[inline]
14183            fn tokenize(&self) -> Self::Token<'_> {
14184                (
14185                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14186                        &self.validator,
14187                    ),
14188                )
14189            }
14190            #[inline]
14191            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14192                commissionTrackingReturn::_tokenize(ret)
14193            }
14194            #[inline]
14195            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14196                <Self::ReturnTuple<
14197                    '_,
14198                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14199                    .map(Into::into)
14200            }
14201            #[inline]
14202            fn abi_decode_returns_validate(
14203                data: &[u8],
14204            ) -> alloy_sol_types::Result<Self::Return> {
14205                <Self::ReturnTuple<
14206                    '_,
14207                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14208                    .map(Into::into)
14209            }
14210        }
14211    };
14212    #[derive(serde::Serialize, serde::Deserialize)]
14213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14214    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
14215```solidity
14216function delegate(address validator, uint256 amount) external;
14217```*/
14218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14219    #[derive(Clone)]
14220    pub struct delegateCall {
14221        #[allow(missing_docs)]
14222        pub validator: alloy::sol_types::private::Address,
14223        #[allow(missing_docs)]
14224        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14225    }
14226    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
14227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14228    #[derive(Clone)]
14229    pub struct delegateReturn {}
14230    #[allow(
14231        non_camel_case_types,
14232        non_snake_case,
14233        clippy::pub_underscore_fields,
14234        clippy::style
14235    )]
14236    const _: () = {
14237        use alloy::sol_types as alloy_sol_types;
14238        {
14239            #[doc(hidden)]
14240            #[allow(dead_code)]
14241            type UnderlyingSolTuple<'a> = (
14242                alloy::sol_types::sol_data::Address,
14243                alloy::sol_types::sol_data::Uint<256>,
14244            );
14245            #[doc(hidden)]
14246            type UnderlyingRustTuple<'a> = (
14247                alloy::sol_types::private::Address,
14248                alloy::sol_types::private::primitives::aliases::U256,
14249            );
14250            #[cfg(test)]
14251            #[allow(dead_code, unreachable_patterns)]
14252            fn _type_assertion(
14253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14254            ) {
14255                match _t {
14256                    alloy_sol_types::private::AssertTypeEq::<
14257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14258                    >(_) => {}
14259                }
14260            }
14261            #[automatically_derived]
14262            #[doc(hidden)]
14263            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
14264                fn from(value: delegateCall) -> Self {
14265                    (value.validator, value.amount)
14266                }
14267            }
14268            #[automatically_derived]
14269            #[doc(hidden)]
14270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
14271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14272                    Self {
14273                        validator: tuple.0,
14274                        amount: tuple.1,
14275                    }
14276                }
14277            }
14278        }
14279        {
14280            #[doc(hidden)]
14281            #[allow(dead_code)]
14282            type UnderlyingSolTuple<'a> = ();
14283            #[doc(hidden)]
14284            type UnderlyingRustTuple<'a> = ();
14285            #[cfg(test)]
14286            #[allow(dead_code, unreachable_patterns)]
14287            fn _type_assertion(
14288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14289            ) {
14290                match _t {
14291                    alloy_sol_types::private::AssertTypeEq::<
14292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14293                    >(_) => {}
14294                }
14295            }
14296            #[automatically_derived]
14297            #[doc(hidden)]
14298            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
14299                fn from(value: delegateReturn) -> Self {
14300                    ()
14301                }
14302            }
14303            #[automatically_derived]
14304            #[doc(hidden)]
14305            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
14306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14307                    Self {}
14308                }
14309            }
14310        }
14311        impl delegateReturn {
14312            fn _tokenize(
14313                &self,
14314            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14315                ()
14316            }
14317        }
14318        #[automatically_derived]
14319        impl alloy_sol_types::SolCall for delegateCall {
14320            type Parameters<'a> = (
14321                alloy::sol_types::sol_data::Address,
14322                alloy::sol_types::sol_data::Uint<256>,
14323            );
14324            type Token<'a> = <Self::Parameters<
14325                'a,
14326            > as alloy_sol_types::SolType>::Token<'a>;
14327            type Return = delegateReturn;
14328            type ReturnTuple<'a> = ();
14329            type ReturnToken<'a> = <Self::ReturnTuple<
14330                'a,
14331            > as alloy_sol_types::SolType>::Token<'a>;
14332            const SIGNATURE: &'static str = "delegate(address,uint256)";
14333            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
14334            #[inline]
14335            fn new<'a>(
14336                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14337            ) -> Self {
14338                tuple.into()
14339            }
14340            #[inline]
14341            fn tokenize(&self) -> Self::Token<'_> {
14342                (
14343                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14344                        &self.validator,
14345                    ),
14346                    <alloy::sol_types::sol_data::Uint<
14347                        256,
14348                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
14349                )
14350            }
14351            #[inline]
14352            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14353                delegateReturn::_tokenize(ret)
14354            }
14355            #[inline]
14356            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14357                <Self::ReturnTuple<
14358                    '_,
14359                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14360                    .map(Into::into)
14361            }
14362            #[inline]
14363            fn abi_decode_returns_validate(
14364                data: &[u8],
14365            ) -> alloy_sol_types::Result<Self::Return> {
14366                <Self::ReturnTuple<
14367                    '_,
14368                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14369                    .map(Into::into)
14370            }
14371        }
14372    };
14373    #[derive(serde::Serialize, serde::Deserialize)]
14374    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14375    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
14376```solidity
14377function delegations(address validator, address delegator) external view returns (uint256 amount);
14378```*/
14379    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14380    #[derive(Clone)]
14381    pub struct delegationsCall {
14382        #[allow(missing_docs)]
14383        pub validator: alloy::sol_types::private::Address,
14384        #[allow(missing_docs)]
14385        pub delegator: alloy::sol_types::private::Address,
14386    }
14387    #[derive(serde::Serialize, serde::Deserialize)]
14388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14389    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
14390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14391    #[derive(Clone)]
14392    pub struct delegationsReturn {
14393        #[allow(missing_docs)]
14394        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14395    }
14396    #[allow(
14397        non_camel_case_types,
14398        non_snake_case,
14399        clippy::pub_underscore_fields,
14400        clippy::style
14401    )]
14402    const _: () = {
14403        use alloy::sol_types as alloy_sol_types;
14404        {
14405            #[doc(hidden)]
14406            #[allow(dead_code)]
14407            type UnderlyingSolTuple<'a> = (
14408                alloy::sol_types::sol_data::Address,
14409                alloy::sol_types::sol_data::Address,
14410            );
14411            #[doc(hidden)]
14412            type UnderlyingRustTuple<'a> = (
14413                alloy::sol_types::private::Address,
14414                alloy::sol_types::private::Address,
14415            );
14416            #[cfg(test)]
14417            #[allow(dead_code, unreachable_patterns)]
14418            fn _type_assertion(
14419                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14420            ) {
14421                match _t {
14422                    alloy_sol_types::private::AssertTypeEq::<
14423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14424                    >(_) => {}
14425                }
14426            }
14427            #[automatically_derived]
14428            #[doc(hidden)]
14429            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
14430                fn from(value: delegationsCall) -> Self {
14431                    (value.validator, value.delegator)
14432                }
14433            }
14434            #[automatically_derived]
14435            #[doc(hidden)]
14436            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
14437                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14438                    Self {
14439                        validator: tuple.0,
14440                        delegator: tuple.1,
14441                    }
14442                }
14443            }
14444        }
14445        {
14446            #[doc(hidden)]
14447            #[allow(dead_code)]
14448            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14449            #[doc(hidden)]
14450            type UnderlyingRustTuple<'a> = (
14451                alloy::sol_types::private::primitives::aliases::U256,
14452            );
14453            #[cfg(test)]
14454            #[allow(dead_code, unreachable_patterns)]
14455            fn _type_assertion(
14456                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14457            ) {
14458                match _t {
14459                    alloy_sol_types::private::AssertTypeEq::<
14460                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14461                    >(_) => {}
14462                }
14463            }
14464            #[automatically_derived]
14465            #[doc(hidden)]
14466            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
14467                fn from(value: delegationsReturn) -> Self {
14468                    (value.amount,)
14469                }
14470            }
14471            #[automatically_derived]
14472            #[doc(hidden)]
14473            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
14474                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14475                    Self { amount: tuple.0 }
14476                }
14477            }
14478        }
14479        #[automatically_derived]
14480        impl alloy_sol_types::SolCall for delegationsCall {
14481            type Parameters<'a> = (
14482                alloy::sol_types::sol_data::Address,
14483                alloy::sol_types::sol_data::Address,
14484            );
14485            type Token<'a> = <Self::Parameters<
14486                'a,
14487            > as alloy_sol_types::SolType>::Token<'a>;
14488            type Return = alloy::sol_types::private::primitives::aliases::U256;
14489            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14490            type ReturnToken<'a> = <Self::ReturnTuple<
14491                'a,
14492            > as alloy_sol_types::SolType>::Token<'a>;
14493            const SIGNATURE: &'static str = "delegations(address,address)";
14494            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
14495            #[inline]
14496            fn new<'a>(
14497                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14498            ) -> Self {
14499                tuple.into()
14500            }
14501            #[inline]
14502            fn tokenize(&self) -> Self::Token<'_> {
14503                (
14504                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14505                        &self.validator,
14506                    ),
14507                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14508                        &self.delegator,
14509                    ),
14510                )
14511            }
14512            #[inline]
14513            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14514                (
14515                    <alloy::sol_types::sol_data::Uint<
14516                        256,
14517                    > as alloy_sol_types::SolType>::tokenize(ret),
14518                )
14519            }
14520            #[inline]
14521            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14522                <Self::ReturnTuple<
14523                    '_,
14524                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14525                    .map(|r| {
14526                        let r: delegationsReturn = r.into();
14527                        r.amount
14528                    })
14529            }
14530            #[inline]
14531            fn abi_decode_returns_validate(
14532                data: &[u8],
14533            ) -> alloy_sol_types::Result<Self::Return> {
14534                <Self::ReturnTuple<
14535                    '_,
14536                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14537                    .map(|r| {
14538                        let r: delegationsReturn = r.into();
14539                        r.amount
14540                    })
14541            }
14542        }
14543    };
14544    #[derive(serde::Serialize, serde::Deserialize)]
14545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14546    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
14547```solidity
14548function deregisterValidator() external;
14549```*/
14550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14551    #[derive(Clone)]
14552    pub struct deregisterValidatorCall;
14553    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
14554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14555    #[derive(Clone)]
14556    pub struct deregisterValidatorReturn {}
14557    #[allow(
14558        non_camel_case_types,
14559        non_snake_case,
14560        clippy::pub_underscore_fields,
14561        clippy::style
14562    )]
14563    const _: () = {
14564        use alloy::sol_types as alloy_sol_types;
14565        {
14566            #[doc(hidden)]
14567            #[allow(dead_code)]
14568            type UnderlyingSolTuple<'a> = ();
14569            #[doc(hidden)]
14570            type UnderlyingRustTuple<'a> = ();
14571            #[cfg(test)]
14572            #[allow(dead_code, unreachable_patterns)]
14573            fn _type_assertion(
14574                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14575            ) {
14576                match _t {
14577                    alloy_sol_types::private::AssertTypeEq::<
14578                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14579                    >(_) => {}
14580                }
14581            }
14582            #[automatically_derived]
14583            #[doc(hidden)]
14584            impl ::core::convert::From<deregisterValidatorCall>
14585            for UnderlyingRustTuple<'_> {
14586                fn from(value: deregisterValidatorCall) -> Self {
14587                    ()
14588                }
14589            }
14590            #[automatically_derived]
14591            #[doc(hidden)]
14592            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14593            for deregisterValidatorCall {
14594                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14595                    Self
14596                }
14597            }
14598        }
14599        {
14600            #[doc(hidden)]
14601            #[allow(dead_code)]
14602            type UnderlyingSolTuple<'a> = ();
14603            #[doc(hidden)]
14604            type UnderlyingRustTuple<'a> = ();
14605            #[cfg(test)]
14606            #[allow(dead_code, unreachable_patterns)]
14607            fn _type_assertion(
14608                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14609            ) {
14610                match _t {
14611                    alloy_sol_types::private::AssertTypeEq::<
14612                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14613                    >(_) => {}
14614                }
14615            }
14616            #[automatically_derived]
14617            #[doc(hidden)]
14618            impl ::core::convert::From<deregisterValidatorReturn>
14619            for UnderlyingRustTuple<'_> {
14620                fn from(value: deregisterValidatorReturn) -> Self {
14621                    ()
14622                }
14623            }
14624            #[automatically_derived]
14625            #[doc(hidden)]
14626            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14627            for deregisterValidatorReturn {
14628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14629                    Self {}
14630                }
14631            }
14632        }
14633        impl deregisterValidatorReturn {
14634            fn _tokenize(
14635                &self,
14636            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14637                ()
14638            }
14639        }
14640        #[automatically_derived]
14641        impl alloy_sol_types::SolCall for deregisterValidatorCall {
14642            type Parameters<'a> = ();
14643            type Token<'a> = <Self::Parameters<
14644                'a,
14645            > as alloy_sol_types::SolType>::Token<'a>;
14646            type Return = deregisterValidatorReturn;
14647            type ReturnTuple<'a> = ();
14648            type ReturnToken<'a> = <Self::ReturnTuple<
14649                'a,
14650            > as alloy_sol_types::SolType>::Token<'a>;
14651            const SIGNATURE: &'static str = "deregisterValidator()";
14652            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
14653            #[inline]
14654            fn new<'a>(
14655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14656            ) -> Self {
14657                tuple.into()
14658            }
14659            #[inline]
14660            fn tokenize(&self) -> Self::Token<'_> {
14661                ()
14662            }
14663            #[inline]
14664            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14665                deregisterValidatorReturn::_tokenize(ret)
14666            }
14667            #[inline]
14668            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14669                <Self::ReturnTuple<
14670                    '_,
14671                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14672                    .map(Into::into)
14673            }
14674            #[inline]
14675            fn abi_decode_returns_validate(
14676                data: &[u8],
14677            ) -> alloy_sol_types::Result<Self::Return> {
14678                <Self::ReturnTuple<
14679                    '_,
14680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14681                    .map(Into::into)
14682            }
14683        }
14684    };
14685    #[derive(serde::Serialize, serde::Deserialize)]
14686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14687    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
14688```solidity
14689function exitEscrowPeriod() external view returns (uint256);
14690```*/
14691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14692    #[derive(Clone)]
14693    pub struct exitEscrowPeriodCall;
14694    #[derive(serde::Serialize, serde::Deserialize)]
14695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14696    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
14697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14698    #[derive(Clone)]
14699    pub struct exitEscrowPeriodReturn {
14700        #[allow(missing_docs)]
14701        pub _0: alloy::sol_types::private::primitives::aliases::U256,
14702    }
14703    #[allow(
14704        non_camel_case_types,
14705        non_snake_case,
14706        clippy::pub_underscore_fields,
14707        clippy::style
14708    )]
14709    const _: () = {
14710        use alloy::sol_types as alloy_sol_types;
14711        {
14712            #[doc(hidden)]
14713            #[allow(dead_code)]
14714            type UnderlyingSolTuple<'a> = ();
14715            #[doc(hidden)]
14716            type UnderlyingRustTuple<'a> = ();
14717            #[cfg(test)]
14718            #[allow(dead_code, unreachable_patterns)]
14719            fn _type_assertion(
14720                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14721            ) {
14722                match _t {
14723                    alloy_sol_types::private::AssertTypeEq::<
14724                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14725                    >(_) => {}
14726                }
14727            }
14728            #[automatically_derived]
14729            #[doc(hidden)]
14730            impl ::core::convert::From<exitEscrowPeriodCall>
14731            for UnderlyingRustTuple<'_> {
14732                fn from(value: exitEscrowPeriodCall) -> Self {
14733                    ()
14734                }
14735            }
14736            #[automatically_derived]
14737            #[doc(hidden)]
14738            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14739            for exitEscrowPeriodCall {
14740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14741                    Self
14742                }
14743            }
14744        }
14745        {
14746            #[doc(hidden)]
14747            #[allow(dead_code)]
14748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14749            #[doc(hidden)]
14750            type UnderlyingRustTuple<'a> = (
14751                alloy::sol_types::private::primitives::aliases::U256,
14752            );
14753            #[cfg(test)]
14754            #[allow(dead_code, unreachable_patterns)]
14755            fn _type_assertion(
14756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14757            ) {
14758                match _t {
14759                    alloy_sol_types::private::AssertTypeEq::<
14760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14761                    >(_) => {}
14762                }
14763            }
14764            #[automatically_derived]
14765            #[doc(hidden)]
14766            impl ::core::convert::From<exitEscrowPeriodReturn>
14767            for UnderlyingRustTuple<'_> {
14768                fn from(value: exitEscrowPeriodReturn) -> Self {
14769                    (value._0,)
14770                }
14771            }
14772            #[automatically_derived]
14773            #[doc(hidden)]
14774            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14775            for exitEscrowPeriodReturn {
14776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14777                    Self { _0: tuple.0 }
14778                }
14779            }
14780        }
14781        #[automatically_derived]
14782        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
14783            type Parameters<'a> = ();
14784            type Token<'a> = <Self::Parameters<
14785                'a,
14786            > as alloy_sol_types::SolType>::Token<'a>;
14787            type Return = alloy::sol_types::private::primitives::aliases::U256;
14788            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14789            type ReturnToken<'a> = <Self::ReturnTuple<
14790                'a,
14791            > as alloy_sol_types::SolType>::Token<'a>;
14792            const SIGNATURE: &'static str = "exitEscrowPeriod()";
14793            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
14794            #[inline]
14795            fn new<'a>(
14796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14797            ) -> Self {
14798                tuple.into()
14799            }
14800            #[inline]
14801            fn tokenize(&self) -> Self::Token<'_> {
14802                ()
14803            }
14804            #[inline]
14805            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14806                (
14807                    <alloy::sol_types::sol_data::Uint<
14808                        256,
14809                    > as alloy_sol_types::SolType>::tokenize(ret),
14810                )
14811            }
14812            #[inline]
14813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14814                <Self::ReturnTuple<
14815                    '_,
14816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14817                    .map(|r| {
14818                        let r: exitEscrowPeriodReturn = r.into();
14819                        r._0
14820                    })
14821            }
14822            #[inline]
14823            fn abi_decode_returns_validate(
14824                data: &[u8],
14825            ) -> alloy_sol_types::Result<Self::Return> {
14826                <Self::ReturnTuple<
14827                    '_,
14828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14829                    .map(|r| {
14830                        let r: exitEscrowPeriodReturn = r.into();
14831                        r._0
14832                    })
14833            }
14834        }
14835    };
14836    #[derive(serde::Serialize, serde::Deserialize)]
14837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14838    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
14839```solidity
14840function getRoleAdmin(bytes32 role) external view returns (bytes32);
14841```*/
14842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14843    #[derive(Clone)]
14844    pub struct getRoleAdminCall {
14845        #[allow(missing_docs)]
14846        pub role: alloy::sol_types::private::FixedBytes<32>,
14847    }
14848    #[derive(serde::Serialize, serde::Deserialize)]
14849    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14850    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
14851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14852    #[derive(Clone)]
14853    pub struct getRoleAdminReturn {
14854        #[allow(missing_docs)]
14855        pub _0: alloy::sol_types::private::FixedBytes<32>,
14856    }
14857    #[allow(
14858        non_camel_case_types,
14859        non_snake_case,
14860        clippy::pub_underscore_fields,
14861        clippy::style
14862    )]
14863    const _: () = {
14864        use alloy::sol_types as alloy_sol_types;
14865        {
14866            #[doc(hidden)]
14867            #[allow(dead_code)]
14868            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14869            #[doc(hidden)]
14870            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
14871            #[cfg(test)]
14872            #[allow(dead_code, unreachable_patterns)]
14873            fn _type_assertion(
14874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14875            ) {
14876                match _t {
14877                    alloy_sol_types::private::AssertTypeEq::<
14878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14879                    >(_) => {}
14880                }
14881            }
14882            #[automatically_derived]
14883            #[doc(hidden)]
14884            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
14885                fn from(value: getRoleAdminCall) -> Self {
14886                    (value.role,)
14887                }
14888            }
14889            #[automatically_derived]
14890            #[doc(hidden)]
14891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
14892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14893                    Self { role: tuple.0 }
14894                }
14895            }
14896        }
14897        {
14898            #[doc(hidden)]
14899            #[allow(dead_code)]
14900            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14901            #[doc(hidden)]
14902            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
14903            #[cfg(test)]
14904            #[allow(dead_code, unreachable_patterns)]
14905            fn _type_assertion(
14906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14907            ) {
14908                match _t {
14909                    alloy_sol_types::private::AssertTypeEq::<
14910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14911                    >(_) => {}
14912                }
14913            }
14914            #[automatically_derived]
14915            #[doc(hidden)]
14916            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
14917                fn from(value: getRoleAdminReturn) -> Self {
14918                    (value._0,)
14919                }
14920            }
14921            #[automatically_derived]
14922            #[doc(hidden)]
14923            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
14924                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14925                    Self { _0: tuple.0 }
14926                }
14927            }
14928        }
14929        #[automatically_derived]
14930        impl alloy_sol_types::SolCall for getRoleAdminCall {
14931            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14932            type Token<'a> = <Self::Parameters<
14933                'a,
14934            > as alloy_sol_types::SolType>::Token<'a>;
14935            type Return = alloy::sol_types::private::FixedBytes<32>;
14936            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14937            type ReturnToken<'a> = <Self::ReturnTuple<
14938                'a,
14939            > as alloy_sol_types::SolType>::Token<'a>;
14940            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
14941            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
14942            #[inline]
14943            fn new<'a>(
14944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14945            ) -> Self {
14946                tuple.into()
14947            }
14948            #[inline]
14949            fn tokenize(&self) -> Self::Token<'_> {
14950                (
14951                    <alloy::sol_types::sol_data::FixedBytes<
14952                        32,
14953                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14954                )
14955            }
14956            #[inline]
14957            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14958                (
14959                    <alloy::sol_types::sol_data::FixedBytes<
14960                        32,
14961                    > as alloy_sol_types::SolType>::tokenize(ret),
14962                )
14963            }
14964            #[inline]
14965            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14966                <Self::ReturnTuple<
14967                    '_,
14968                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14969                    .map(|r| {
14970                        let r: getRoleAdminReturn = r.into();
14971                        r._0
14972                    })
14973            }
14974            #[inline]
14975            fn abi_decode_returns_validate(
14976                data: &[u8],
14977            ) -> alloy_sol_types::Result<Self::Return> {
14978                <Self::ReturnTuple<
14979                    '_,
14980                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14981                    .map(|r| {
14982                        let r: getRoleAdminReturn = r.into();
14983                        r._0
14984                    })
14985            }
14986        }
14987    };
14988    #[derive(serde::Serialize, serde::Deserialize)]
14989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14990    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
14991```solidity
14992function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
14993```*/
14994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14995    #[derive(Clone)]
14996    pub struct getUndelegationCall {
14997        #[allow(missing_docs)]
14998        pub validator: alloy::sol_types::private::Address,
14999        #[allow(missing_docs)]
15000        pub delegator: alloy::sol_types::private::Address,
15001    }
15002    #[derive(serde::Serialize, serde::Deserialize)]
15003    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15004    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
15005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15006    #[derive(Clone)]
15007    pub struct getUndelegationReturn {
15008        #[allow(missing_docs)]
15009        pub id: u64,
15010        #[allow(missing_docs)]
15011        pub amount: alloy::sol_types::private::primitives::aliases::U256,
15012        #[allow(missing_docs)]
15013        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
15014    }
15015    #[allow(
15016        non_camel_case_types,
15017        non_snake_case,
15018        clippy::pub_underscore_fields,
15019        clippy::style
15020    )]
15021    const _: () = {
15022        use alloy::sol_types as alloy_sol_types;
15023        {
15024            #[doc(hidden)]
15025            #[allow(dead_code)]
15026            type UnderlyingSolTuple<'a> = (
15027                alloy::sol_types::sol_data::Address,
15028                alloy::sol_types::sol_data::Address,
15029            );
15030            #[doc(hidden)]
15031            type UnderlyingRustTuple<'a> = (
15032                alloy::sol_types::private::Address,
15033                alloy::sol_types::private::Address,
15034            );
15035            #[cfg(test)]
15036            #[allow(dead_code, unreachable_patterns)]
15037            fn _type_assertion(
15038                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15039            ) {
15040                match _t {
15041                    alloy_sol_types::private::AssertTypeEq::<
15042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15043                    >(_) => {}
15044                }
15045            }
15046            #[automatically_derived]
15047            #[doc(hidden)]
15048            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
15049                fn from(value: getUndelegationCall) -> Self {
15050                    (value.validator, value.delegator)
15051                }
15052            }
15053            #[automatically_derived]
15054            #[doc(hidden)]
15055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
15056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15057                    Self {
15058                        validator: tuple.0,
15059                        delegator: tuple.1,
15060                    }
15061                }
15062            }
15063        }
15064        {
15065            #[doc(hidden)]
15066            #[allow(dead_code)]
15067            type UnderlyingSolTuple<'a> = (
15068                alloy::sol_types::sol_data::Uint<64>,
15069                alloy::sol_types::sol_data::Uint<256>,
15070                alloy::sol_types::sol_data::Uint<256>,
15071            );
15072            #[doc(hidden)]
15073            type UnderlyingRustTuple<'a> = (
15074                u64,
15075                alloy::sol_types::private::primitives::aliases::U256,
15076                alloy::sol_types::private::primitives::aliases::U256,
15077            );
15078            #[cfg(test)]
15079            #[allow(dead_code, unreachable_patterns)]
15080            fn _type_assertion(
15081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15082            ) {
15083                match _t {
15084                    alloy_sol_types::private::AssertTypeEq::<
15085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15086                    >(_) => {}
15087                }
15088            }
15089            #[automatically_derived]
15090            #[doc(hidden)]
15091            impl ::core::convert::From<getUndelegationReturn>
15092            for UnderlyingRustTuple<'_> {
15093                fn from(value: getUndelegationReturn) -> Self {
15094                    (value.id, value.amount, value.unlocksAt)
15095                }
15096            }
15097            #[automatically_derived]
15098            #[doc(hidden)]
15099            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15100            for getUndelegationReturn {
15101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15102                    Self {
15103                        id: tuple.0,
15104                        amount: tuple.1,
15105                        unlocksAt: tuple.2,
15106                    }
15107                }
15108            }
15109        }
15110        impl getUndelegationReturn {
15111            fn _tokenize(
15112                &self,
15113            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15114                (
15115                    <alloy::sol_types::sol_data::Uint<
15116                        64,
15117                    > as alloy_sol_types::SolType>::tokenize(&self.id),
15118                    <alloy::sol_types::sol_data::Uint<
15119                        256,
15120                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
15121                    <alloy::sol_types::sol_data::Uint<
15122                        256,
15123                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
15124                )
15125            }
15126        }
15127        #[automatically_derived]
15128        impl alloy_sol_types::SolCall for getUndelegationCall {
15129            type Parameters<'a> = (
15130                alloy::sol_types::sol_data::Address,
15131                alloy::sol_types::sol_data::Address,
15132            );
15133            type Token<'a> = <Self::Parameters<
15134                'a,
15135            > as alloy_sol_types::SolType>::Token<'a>;
15136            type Return = getUndelegationReturn;
15137            type ReturnTuple<'a> = (
15138                alloy::sol_types::sol_data::Uint<64>,
15139                alloy::sol_types::sol_data::Uint<256>,
15140                alloy::sol_types::sol_data::Uint<256>,
15141            );
15142            type ReturnToken<'a> = <Self::ReturnTuple<
15143                'a,
15144            > as alloy_sol_types::SolType>::Token<'a>;
15145            const SIGNATURE: &'static str = "getUndelegation(address,address)";
15146            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
15147            #[inline]
15148            fn new<'a>(
15149                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15150            ) -> Self {
15151                tuple.into()
15152            }
15153            #[inline]
15154            fn tokenize(&self) -> Self::Token<'_> {
15155                (
15156                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15157                        &self.validator,
15158                    ),
15159                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15160                        &self.delegator,
15161                    ),
15162                )
15163            }
15164            #[inline]
15165            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15166                getUndelegationReturn::_tokenize(ret)
15167            }
15168            #[inline]
15169            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15170                <Self::ReturnTuple<
15171                    '_,
15172                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15173                    .map(Into::into)
15174            }
15175            #[inline]
15176            fn abi_decode_returns_validate(
15177                data: &[u8],
15178            ) -> alloy_sol_types::Result<Self::Return> {
15179                <Self::ReturnTuple<
15180                    '_,
15181                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15182                    .map(Into::into)
15183            }
15184        }
15185    };
15186    #[derive(serde::Serialize, serde::Deserialize)]
15187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15188    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
15189```solidity
15190function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
15191```*/
15192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15193    #[derive(Clone)]
15194    pub struct getVersionCall;
15195    #[derive(serde::Serialize, serde::Deserialize)]
15196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15197    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
15198    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15199    #[derive(Clone)]
15200    pub struct getVersionReturn {
15201        #[allow(missing_docs)]
15202        pub majorVersion: u8,
15203        #[allow(missing_docs)]
15204        pub minorVersion: u8,
15205        #[allow(missing_docs)]
15206        pub patchVersion: u8,
15207    }
15208    #[allow(
15209        non_camel_case_types,
15210        non_snake_case,
15211        clippy::pub_underscore_fields,
15212        clippy::style
15213    )]
15214    const _: () = {
15215        use alloy::sol_types as alloy_sol_types;
15216        {
15217            #[doc(hidden)]
15218            #[allow(dead_code)]
15219            type UnderlyingSolTuple<'a> = ();
15220            #[doc(hidden)]
15221            type UnderlyingRustTuple<'a> = ();
15222            #[cfg(test)]
15223            #[allow(dead_code, unreachable_patterns)]
15224            fn _type_assertion(
15225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15226            ) {
15227                match _t {
15228                    alloy_sol_types::private::AssertTypeEq::<
15229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15230                    >(_) => {}
15231                }
15232            }
15233            #[automatically_derived]
15234            #[doc(hidden)]
15235            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
15236                fn from(value: getVersionCall) -> Self {
15237                    ()
15238                }
15239            }
15240            #[automatically_derived]
15241            #[doc(hidden)]
15242            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
15243                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15244                    Self
15245                }
15246            }
15247        }
15248        {
15249            #[doc(hidden)]
15250            #[allow(dead_code)]
15251            type UnderlyingSolTuple<'a> = (
15252                alloy::sol_types::sol_data::Uint<8>,
15253                alloy::sol_types::sol_data::Uint<8>,
15254                alloy::sol_types::sol_data::Uint<8>,
15255            );
15256            #[doc(hidden)]
15257            type UnderlyingRustTuple<'a> = (u8, u8, u8);
15258            #[cfg(test)]
15259            #[allow(dead_code, unreachable_patterns)]
15260            fn _type_assertion(
15261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15262            ) {
15263                match _t {
15264                    alloy_sol_types::private::AssertTypeEq::<
15265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15266                    >(_) => {}
15267                }
15268            }
15269            #[automatically_derived]
15270            #[doc(hidden)]
15271            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
15272                fn from(value: getVersionReturn) -> Self {
15273                    (value.majorVersion, value.minorVersion, value.patchVersion)
15274                }
15275            }
15276            #[automatically_derived]
15277            #[doc(hidden)]
15278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
15279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15280                    Self {
15281                        majorVersion: tuple.0,
15282                        minorVersion: tuple.1,
15283                        patchVersion: tuple.2,
15284                    }
15285                }
15286            }
15287        }
15288        impl getVersionReturn {
15289            fn _tokenize(
15290                &self,
15291            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15292                (
15293                    <alloy::sol_types::sol_data::Uint<
15294                        8,
15295                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
15296                    <alloy::sol_types::sol_data::Uint<
15297                        8,
15298                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
15299                    <alloy::sol_types::sol_data::Uint<
15300                        8,
15301                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
15302                )
15303            }
15304        }
15305        #[automatically_derived]
15306        impl alloy_sol_types::SolCall for getVersionCall {
15307            type Parameters<'a> = ();
15308            type Token<'a> = <Self::Parameters<
15309                'a,
15310            > as alloy_sol_types::SolType>::Token<'a>;
15311            type Return = getVersionReturn;
15312            type ReturnTuple<'a> = (
15313                alloy::sol_types::sol_data::Uint<8>,
15314                alloy::sol_types::sol_data::Uint<8>,
15315                alloy::sol_types::sol_data::Uint<8>,
15316            );
15317            type ReturnToken<'a> = <Self::ReturnTuple<
15318                'a,
15319            > as alloy_sol_types::SolType>::Token<'a>;
15320            const SIGNATURE: &'static str = "getVersion()";
15321            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
15322            #[inline]
15323            fn new<'a>(
15324                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15325            ) -> Self {
15326                tuple.into()
15327            }
15328            #[inline]
15329            fn tokenize(&self) -> Self::Token<'_> {
15330                ()
15331            }
15332            #[inline]
15333            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15334                getVersionReturn::_tokenize(ret)
15335            }
15336            #[inline]
15337            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15338                <Self::ReturnTuple<
15339                    '_,
15340                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15341                    .map(Into::into)
15342            }
15343            #[inline]
15344            fn abi_decode_returns_validate(
15345                data: &[u8],
15346            ) -> alloy_sol_types::Result<Self::Return> {
15347                <Self::ReturnTuple<
15348                    '_,
15349                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15350                    .map(Into::into)
15351            }
15352        }
15353    };
15354    #[derive(serde::Serialize, serde::Deserialize)]
15355    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15356    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
15357```solidity
15358function grantRole(bytes32 role, address account) external;
15359```*/
15360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15361    #[derive(Clone)]
15362    pub struct grantRoleCall {
15363        #[allow(missing_docs)]
15364        pub role: alloy::sol_types::private::FixedBytes<32>,
15365        #[allow(missing_docs)]
15366        pub account: alloy::sol_types::private::Address,
15367    }
15368    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
15369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15370    #[derive(Clone)]
15371    pub struct grantRoleReturn {}
15372    #[allow(
15373        non_camel_case_types,
15374        non_snake_case,
15375        clippy::pub_underscore_fields,
15376        clippy::style
15377    )]
15378    const _: () = {
15379        use alloy::sol_types as alloy_sol_types;
15380        {
15381            #[doc(hidden)]
15382            #[allow(dead_code)]
15383            type UnderlyingSolTuple<'a> = (
15384                alloy::sol_types::sol_data::FixedBytes<32>,
15385                alloy::sol_types::sol_data::Address,
15386            );
15387            #[doc(hidden)]
15388            type UnderlyingRustTuple<'a> = (
15389                alloy::sol_types::private::FixedBytes<32>,
15390                alloy::sol_types::private::Address,
15391            );
15392            #[cfg(test)]
15393            #[allow(dead_code, unreachable_patterns)]
15394            fn _type_assertion(
15395                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15396            ) {
15397                match _t {
15398                    alloy_sol_types::private::AssertTypeEq::<
15399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15400                    >(_) => {}
15401                }
15402            }
15403            #[automatically_derived]
15404            #[doc(hidden)]
15405            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
15406                fn from(value: grantRoleCall) -> Self {
15407                    (value.role, value.account)
15408                }
15409            }
15410            #[automatically_derived]
15411            #[doc(hidden)]
15412            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
15413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15414                    Self {
15415                        role: tuple.0,
15416                        account: tuple.1,
15417                    }
15418                }
15419            }
15420        }
15421        {
15422            #[doc(hidden)]
15423            #[allow(dead_code)]
15424            type UnderlyingSolTuple<'a> = ();
15425            #[doc(hidden)]
15426            type UnderlyingRustTuple<'a> = ();
15427            #[cfg(test)]
15428            #[allow(dead_code, unreachable_patterns)]
15429            fn _type_assertion(
15430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15431            ) {
15432                match _t {
15433                    alloy_sol_types::private::AssertTypeEq::<
15434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15435                    >(_) => {}
15436                }
15437            }
15438            #[automatically_derived]
15439            #[doc(hidden)]
15440            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
15441                fn from(value: grantRoleReturn) -> Self {
15442                    ()
15443                }
15444            }
15445            #[automatically_derived]
15446            #[doc(hidden)]
15447            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
15448                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15449                    Self {}
15450                }
15451            }
15452        }
15453        impl grantRoleReturn {
15454            fn _tokenize(
15455                &self,
15456            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15457                ()
15458            }
15459        }
15460        #[automatically_derived]
15461        impl alloy_sol_types::SolCall for grantRoleCall {
15462            type Parameters<'a> = (
15463                alloy::sol_types::sol_data::FixedBytes<32>,
15464                alloy::sol_types::sol_data::Address,
15465            );
15466            type Token<'a> = <Self::Parameters<
15467                'a,
15468            > as alloy_sol_types::SolType>::Token<'a>;
15469            type Return = grantRoleReturn;
15470            type ReturnTuple<'a> = ();
15471            type ReturnToken<'a> = <Self::ReturnTuple<
15472                'a,
15473            > as alloy_sol_types::SolType>::Token<'a>;
15474            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
15475            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
15476            #[inline]
15477            fn new<'a>(
15478                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15479            ) -> Self {
15480                tuple.into()
15481            }
15482            #[inline]
15483            fn tokenize(&self) -> Self::Token<'_> {
15484                (
15485                    <alloy::sol_types::sol_data::FixedBytes<
15486                        32,
15487                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15488                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15489                        &self.account,
15490                    ),
15491                )
15492            }
15493            #[inline]
15494            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15495                grantRoleReturn::_tokenize(ret)
15496            }
15497            #[inline]
15498            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15499                <Self::ReturnTuple<
15500                    '_,
15501                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15502                    .map(Into::into)
15503            }
15504            #[inline]
15505            fn abi_decode_returns_validate(
15506                data: &[u8],
15507            ) -> alloy_sol_types::Result<Self::Return> {
15508                <Self::ReturnTuple<
15509                    '_,
15510                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15511                    .map(Into::into)
15512            }
15513        }
15514    };
15515    #[derive(serde::Serialize, serde::Deserialize)]
15516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15517    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
15518```solidity
15519function hasRole(bytes32 role, address account) external view returns (bool);
15520```*/
15521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15522    #[derive(Clone)]
15523    pub struct hasRoleCall {
15524        #[allow(missing_docs)]
15525        pub role: alloy::sol_types::private::FixedBytes<32>,
15526        #[allow(missing_docs)]
15527        pub account: alloy::sol_types::private::Address,
15528    }
15529    #[derive(serde::Serialize, serde::Deserialize)]
15530    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15531    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
15532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15533    #[derive(Clone)]
15534    pub struct hasRoleReturn {
15535        #[allow(missing_docs)]
15536        pub _0: bool,
15537    }
15538    #[allow(
15539        non_camel_case_types,
15540        non_snake_case,
15541        clippy::pub_underscore_fields,
15542        clippy::style
15543    )]
15544    const _: () = {
15545        use alloy::sol_types as alloy_sol_types;
15546        {
15547            #[doc(hidden)]
15548            #[allow(dead_code)]
15549            type UnderlyingSolTuple<'a> = (
15550                alloy::sol_types::sol_data::FixedBytes<32>,
15551                alloy::sol_types::sol_data::Address,
15552            );
15553            #[doc(hidden)]
15554            type UnderlyingRustTuple<'a> = (
15555                alloy::sol_types::private::FixedBytes<32>,
15556                alloy::sol_types::private::Address,
15557            );
15558            #[cfg(test)]
15559            #[allow(dead_code, unreachable_patterns)]
15560            fn _type_assertion(
15561                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15562            ) {
15563                match _t {
15564                    alloy_sol_types::private::AssertTypeEq::<
15565                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15566                    >(_) => {}
15567                }
15568            }
15569            #[automatically_derived]
15570            #[doc(hidden)]
15571            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
15572                fn from(value: hasRoleCall) -> Self {
15573                    (value.role, value.account)
15574                }
15575            }
15576            #[automatically_derived]
15577            #[doc(hidden)]
15578            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
15579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15580                    Self {
15581                        role: tuple.0,
15582                        account: tuple.1,
15583                    }
15584                }
15585            }
15586        }
15587        {
15588            #[doc(hidden)]
15589            #[allow(dead_code)]
15590            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15591            #[doc(hidden)]
15592            type UnderlyingRustTuple<'a> = (bool,);
15593            #[cfg(test)]
15594            #[allow(dead_code, unreachable_patterns)]
15595            fn _type_assertion(
15596                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15597            ) {
15598                match _t {
15599                    alloy_sol_types::private::AssertTypeEq::<
15600                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15601                    >(_) => {}
15602                }
15603            }
15604            #[automatically_derived]
15605            #[doc(hidden)]
15606            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
15607                fn from(value: hasRoleReturn) -> Self {
15608                    (value._0,)
15609                }
15610            }
15611            #[automatically_derived]
15612            #[doc(hidden)]
15613            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
15614                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15615                    Self { _0: tuple.0 }
15616                }
15617            }
15618        }
15619        #[automatically_derived]
15620        impl alloy_sol_types::SolCall for hasRoleCall {
15621            type Parameters<'a> = (
15622                alloy::sol_types::sol_data::FixedBytes<32>,
15623                alloy::sol_types::sol_data::Address,
15624            );
15625            type Token<'a> = <Self::Parameters<
15626                'a,
15627            > as alloy_sol_types::SolType>::Token<'a>;
15628            type Return = bool;
15629            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15630            type ReturnToken<'a> = <Self::ReturnTuple<
15631                'a,
15632            > as alloy_sol_types::SolType>::Token<'a>;
15633            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
15634            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
15635            #[inline]
15636            fn new<'a>(
15637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15638            ) -> Self {
15639                tuple.into()
15640            }
15641            #[inline]
15642            fn tokenize(&self) -> Self::Token<'_> {
15643                (
15644                    <alloy::sol_types::sol_data::FixedBytes<
15645                        32,
15646                    > as alloy_sol_types::SolType>::tokenize(&self.role),
15647                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15648                        &self.account,
15649                    ),
15650                )
15651            }
15652            #[inline]
15653            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15654                (
15655                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
15656                        ret,
15657                    ),
15658                )
15659            }
15660            #[inline]
15661            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15662                <Self::ReturnTuple<
15663                    '_,
15664                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15665                    .map(|r| {
15666                        let r: hasRoleReturn = r.into();
15667                        r._0
15668                    })
15669            }
15670            #[inline]
15671            fn abi_decode_returns_validate(
15672                data: &[u8],
15673            ) -> alloy_sol_types::Result<Self::Return> {
15674                <Self::ReturnTuple<
15675                    '_,
15676                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15677                    .map(|r| {
15678                        let r: hasRoleReturn = r.into();
15679                        r._0
15680                    })
15681            }
15682        }
15683    };
15684    #[derive(serde::Serialize, serde::Deserialize)]
15685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15686    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
15687```solidity
15688function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
15689```*/
15690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15691    #[derive(Clone)]
15692    pub struct initializeCall {
15693        #[allow(missing_docs)]
15694        pub _tokenAddress: alloy::sol_types::private::Address,
15695        #[allow(missing_docs)]
15696        pub _lightClientAddress: alloy::sol_types::private::Address,
15697        #[allow(missing_docs)]
15698        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
15699        #[allow(missing_docs)]
15700        pub _timelock: alloy::sol_types::private::Address,
15701    }
15702    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
15703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15704    #[derive(Clone)]
15705    pub struct initializeReturn {}
15706    #[allow(
15707        non_camel_case_types,
15708        non_snake_case,
15709        clippy::pub_underscore_fields,
15710        clippy::style
15711    )]
15712    const _: () = {
15713        use alloy::sol_types as alloy_sol_types;
15714        {
15715            #[doc(hidden)]
15716            #[allow(dead_code)]
15717            type UnderlyingSolTuple<'a> = (
15718                alloy::sol_types::sol_data::Address,
15719                alloy::sol_types::sol_data::Address,
15720                alloy::sol_types::sol_data::Uint<256>,
15721                alloy::sol_types::sol_data::Address,
15722            );
15723            #[doc(hidden)]
15724            type UnderlyingRustTuple<'a> = (
15725                alloy::sol_types::private::Address,
15726                alloy::sol_types::private::Address,
15727                alloy::sol_types::private::primitives::aliases::U256,
15728                alloy::sol_types::private::Address,
15729            );
15730            #[cfg(test)]
15731            #[allow(dead_code, unreachable_patterns)]
15732            fn _type_assertion(
15733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15734            ) {
15735                match _t {
15736                    alloy_sol_types::private::AssertTypeEq::<
15737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15738                    >(_) => {}
15739                }
15740            }
15741            #[automatically_derived]
15742            #[doc(hidden)]
15743            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
15744                fn from(value: initializeCall) -> Self {
15745                    (
15746                        value._tokenAddress,
15747                        value._lightClientAddress,
15748                        value._exitEscrowPeriod,
15749                        value._timelock,
15750                    )
15751                }
15752            }
15753            #[automatically_derived]
15754            #[doc(hidden)]
15755            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
15756                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15757                    Self {
15758                        _tokenAddress: tuple.0,
15759                        _lightClientAddress: tuple.1,
15760                        _exitEscrowPeriod: tuple.2,
15761                        _timelock: tuple.3,
15762                    }
15763                }
15764            }
15765        }
15766        {
15767            #[doc(hidden)]
15768            #[allow(dead_code)]
15769            type UnderlyingSolTuple<'a> = ();
15770            #[doc(hidden)]
15771            type UnderlyingRustTuple<'a> = ();
15772            #[cfg(test)]
15773            #[allow(dead_code, unreachable_patterns)]
15774            fn _type_assertion(
15775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15776            ) {
15777                match _t {
15778                    alloy_sol_types::private::AssertTypeEq::<
15779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15780                    >(_) => {}
15781                }
15782            }
15783            #[automatically_derived]
15784            #[doc(hidden)]
15785            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
15786                fn from(value: initializeReturn) -> Self {
15787                    ()
15788                }
15789            }
15790            #[automatically_derived]
15791            #[doc(hidden)]
15792            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
15793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15794                    Self {}
15795                }
15796            }
15797        }
15798        impl initializeReturn {
15799            fn _tokenize(
15800                &self,
15801            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15802                ()
15803            }
15804        }
15805        #[automatically_derived]
15806        impl alloy_sol_types::SolCall for initializeCall {
15807            type Parameters<'a> = (
15808                alloy::sol_types::sol_data::Address,
15809                alloy::sol_types::sol_data::Address,
15810                alloy::sol_types::sol_data::Uint<256>,
15811                alloy::sol_types::sol_data::Address,
15812            );
15813            type Token<'a> = <Self::Parameters<
15814                'a,
15815            > as alloy_sol_types::SolType>::Token<'a>;
15816            type Return = initializeReturn;
15817            type ReturnTuple<'a> = ();
15818            type ReturnToken<'a> = <Self::ReturnTuple<
15819                'a,
15820            > as alloy_sol_types::SolType>::Token<'a>;
15821            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
15822            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
15823            #[inline]
15824            fn new<'a>(
15825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15826            ) -> Self {
15827                tuple.into()
15828            }
15829            #[inline]
15830            fn tokenize(&self) -> Self::Token<'_> {
15831                (
15832                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15833                        &self._tokenAddress,
15834                    ),
15835                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15836                        &self._lightClientAddress,
15837                    ),
15838                    <alloy::sol_types::sol_data::Uint<
15839                        256,
15840                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
15841                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15842                        &self._timelock,
15843                    ),
15844                )
15845            }
15846            #[inline]
15847            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15848                initializeReturn::_tokenize(ret)
15849            }
15850            #[inline]
15851            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15852                <Self::ReturnTuple<
15853                    '_,
15854                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15855                    .map(Into::into)
15856            }
15857            #[inline]
15858            fn abi_decode_returns_validate(
15859                data: &[u8],
15860            ) -> alloy_sol_types::Result<Self::Return> {
15861                <Self::ReturnTuple<
15862                    '_,
15863                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15864                    .map(Into::into)
15865            }
15866        }
15867    };
15868    #[derive(serde::Serialize, serde::Deserialize)]
15869    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15870    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
15871```solidity
15872function initializeV2(address pauser, address admin, uint256 initialActiveStake, StakeTableV2.InitialCommission[] memory initialCommissions) external;
15873```*/
15874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15875    #[derive(Clone)]
15876    pub struct initializeV2Call {
15877        #[allow(missing_docs)]
15878        pub pauser: alloy::sol_types::private::Address,
15879        #[allow(missing_docs)]
15880        pub admin: alloy::sol_types::private::Address,
15881        #[allow(missing_docs)]
15882        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
15883        #[allow(missing_docs)]
15884        pub initialCommissions: alloy::sol_types::private::Vec<
15885            <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
15886        >,
15887    }
15888    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
15889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15890    #[derive(Clone)]
15891    pub struct initializeV2Return {}
15892    #[allow(
15893        non_camel_case_types,
15894        non_snake_case,
15895        clippy::pub_underscore_fields,
15896        clippy::style
15897    )]
15898    const _: () = {
15899        use alloy::sol_types as alloy_sol_types;
15900        {
15901            #[doc(hidden)]
15902            #[allow(dead_code)]
15903            type UnderlyingSolTuple<'a> = (
15904                alloy::sol_types::sol_data::Address,
15905                alloy::sol_types::sol_data::Address,
15906                alloy::sol_types::sol_data::Uint<256>,
15907                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
15908            );
15909            #[doc(hidden)]
15910            type UnderlyingRustTuple<'a> = (
15911                alloy::sol_types::private::Address,
15912                alloy::sol_types::private::Address,
15913                alloy::sol_types::private::primitives::aliases::U256,
15914                alloy::sol_types::private::Vec<
15915                    <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
15916                >,
15917            );
15918            #[cfg(test)]
15919            #[allow(dead_code, unreachable_patterns)]
15920            fn _type_assertion(
15921                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15922            ) {
15923                match _t {
15924                    alloy_sol_types::private::AssertTypeEq::<
15925                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15926                    >(_) => {}
15927                }
15928            }
15929            #[automatically_derived]
15930            #[doc(hidden)]
15931            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
15932                fn from(value: initializeV2Call) -> Self {
15933                    (
15934                        value.pauser,
15935                        value.admin,
15936                        value.initialActiveStake,
15937                        value.initialCommissions,
15938                    )
15939                }
15940            }
15941            #[automatically_derived]
15942            #[doc(hidden)]
15943            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
15944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15945                    Self {
15946                        pauser: tuple.0,
15947                        admin: tuple.1,
15948                        initialActiveStake: tuple.2,
15949                        initialCommissions: tuple.3,
15950                    }
15951                }
15952            }
15953        }
15954        {
15955            #[doc(hidden)]
15956            #[allow(dead_code)]
15957            type UnderlyingSolTuple<'a> = ();
15958            #[doc(hidden)]
15959            type UnderlyingRustTuple<'a> = ();
15960            #[cfg(test)]
15961            #[allow(dead_code, unreachable_patterns)]
15962            fn _type_assertion(
15963                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15964            ) {
15965                match _t {
15966                    alloy_sol_types::private::AssertTypeEq::<
15967                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15968                    >(_) => {}
15969                }
15970            }
15971            #[automatically_derived]
15972            #[doc(hidden)]
15973            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
15974                fn from(value: initializeV2Return) -> Self {
15975                    ()
15976                }
15977            }
15978            #[automatically_derived]
15979            #[doc(hidden)]
15980            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
15981                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15982                    Self {}
15983                }
15984            }
15985        }
15986        impl initializeV2Return {
15987            fn _tokenize(
15988                &self,
15989            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
15990                ()
15991            }
15992        }
15993        #[automatically_derived]
15994        impl alloy_sol_types::SolCall for initializeV2Call {
15995            type Parameters<'a> = (
15996                alloy::sol_types::sol_data::Address,
15997                alloy::sol_types::sol_data::Address,
15998                alloy::sol_types::sol_data::Uint<256>,
15999                alloy::sol_types::sol_data::Array<StakeTableV2::InitialCommission>,
16000            );
16001            type Token<'a> = <Self::Parameters<
16002                'a,
16003            > as alloy_sol_types::SolType>::Token<'a>;
16004            type Return = initializeV2Return;
16005            type ReturnTuple<'a> = ();
16006            type ReturnToken<'a> = <Self::ReturnTuple<
16007                'a,
16008            > as alloy_sol_types::SolType>::Token<'a>;
16009            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
16010            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
16011            #[inline]
16012            fn new<'a>(
16013                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16014            ) -> Self {
16015                tuple.into()
16016            }
16017            #[inline]
16018            fn tokenize(&self) -> Self::Token<'_> {
16019                (
16020                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16021                        &self.pauser,
16022                    ),
16023                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16024                        &self.admin,
16025                    ),
16026                    <alloy::sol_types::sol_data::Uint<
16027                        256,
16028                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
16029                    <alloy::sol_types::sol_data::Array<
16030                        StakeTableV2::InitialCommission,
16031                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
16032                )
16033            }
16034            #[inline]
16035            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16036                initializeV2Return::_tokenize(ret)
16037            }
16038            #[inline]
16039            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16040                <Self::ReturnTuple<
16041                    '_,
16042                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16043                    .map(Into::into)
16044            }
16045            #[inline]
16046            fn abi_decode_returns_validate(
16047                data: &[u8],
16048            ) -> alloy_sol_types::Result<Self::Return> {
16049                <Self::ReturnTuple<
16050                    '_,
16051                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16052                    .map(Into::into)
16053            }
16054        }
16055    };
16056    #[derive(serde::Serialize, serde::Deserialize)]
16057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16058    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
16059```solidity
16060function initializeV3() external;
16061```*/
16062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16063    #[derive(Clone)]
16064    pub struct initializeV3Call;
16065    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
16066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16067    #[derive(Clone)]
16068    pub struct initializeV3Return {}
16069    #[allow(
16070        non_camel_case_types,
16071        non_snake_case,
16072        clippy::pub_underscore_fields,
16073        clippy::style
16074    )]
16075    const _: () = {
16076        use alloy::sol_types as alloy_sol_types;
16077        {
16078            #[doc(hidden)]
16079            #[allow(dead_code)]
16080            type UnderlyingSolTuple<'a> = ();
16081            #[doc(hidden)]
16082            type UnderlyingRustTuple<'a> = ();
16083            #[cfg(test)]
16084            #[allow(dead_code, unreachable_patterns)]
16085            fn _type_assertion(
16086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16087            ) {
16088                match _t {
16089                    alloy_sol_types::private::AssertTypeEq::<
16090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16091                    >(_) => {}
16092                }
16093            }
16094            #[automatically_derived]
16095            #[doc(hidden)]
16096            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
16097                fn from(value: initializeV3Call) -> Self {
16098                    ()
16099                }
16100            }
16101            #[automatically_derived]
16102            #[doc(hidden)]
16103            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
16104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16105                    Self
16106                }
16107            }
16108        }
16109        {
16110            #[doc(hidden)]
16111            #[allow(dead_code)]
16112            type UnderlyingSolTuple<'a> = ();
16113            #[doc(hidden)]
16114            type UnderlyingRustTuple<'a> = ();
16115            #[cfg(test)]
16116            #[allow(dead_code, unreachable_patterns)]
16117            fn _type_assertion(
16118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16119            ) {
16120                match _t {
16121                    alloy_sol_types::private::AssertTypeEq::<
16122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16123                    >(_) => {}
16124                }
16125            }
16126            #[automatically_derived]
16127            #[doc(hidden)]
16128            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
16129                fn from(value: initializeV3Return) -> Self {
16130                    ()
16131                }
16132            }
16133            #[automatically_derived]
16134            #[doc(hidden)]
16135            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
16136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16137                    Self {}
16138                }
16139            }
16140        }
16141        impl initializeV3Return {
16142            fn _tokenize(
16143                &self,
16144            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16145                ()
16146            }
16147        }
16148        #[automatically_derived]
16149        impl alloy_sol_types::SolCall for initializeV3Call {
16150            type Parameters<'a> = ();
16151            type Token<'a> = <Self::Parameters<
16152                'a,
16153            > as alloy_sol_types::SolType>::Token<'a>;
16154            type Return = initializeV3Return;
16155            type ReturnTuple<'a> = ();
16156            type ReturnToken<'a> = <Self::ReturnTuple<
16157                'a,
16158            > as alloy_sol_types::SolType>::Token<'a>;
16159            const SIGNATURE: &'static str = "initializeV3()";
16160            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
16161            #[inline]
16162            fn new<'a>(
16163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16164            ) -> Self {
16165                tuple.into()
16166            }
16167            #[inline]
16168            fn tokenize(&self) -> Self::Token<'_> {
16169                ()
16170            }
16171            #[inline]
16172            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16173                initializeV3Return::_tokenize(ret)
16174            }
16175            #[inline]
16176            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16177                <Self::ReturnTuple<
16178                    '_,
16179                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16180                    .map(Into::into)
16181            }
16182            #[inline]
16183            fn abi_decode_returns_validate(
16184                data: &[u8],
16185            ) -> alloy_sol_types::Result<Self::Return> {
16186                <Self::ReturnTuple<
16187                    '_,
16188                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16189                    .map(Into::into)
16190            }
16191        }
16192    };
16193    #[derive(serde::Serialize, serde::Deserialize)]
16194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16195    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
16196```solidity
16197function initializedAtBlock() external view returns (uint256);
16198```*/
16199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16200    #[derive(Clone)]
16201    pub struct initializedAtBlockCall;
16202    #[derive(serde::Serialize, serde::Deserialize)]
16203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16204    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
16205    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16206    #[derive(Clone)]
16207    pub struct initializedAtBlockReturn {
16208        #[allow(missing_docs)]
16209        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16210    }
16211    #[allow(
16212        non_camel_case_types,
16213        non_snake_case,
16214        clippy::pub_underscore_fields,
16215        clippy::style
16216    )]
16217    const _: () = {
16218        use alloy::sol_types as alloy_sol_types;
16219        {
16220            #[doc(hidden)]
16221            #[allow(dead_code)]
16222            type UnderlyingSolTuple<'a> = ();
16223            #[doc(hidden)]
16224            type UnderlyingRustTuple<'a> = ();
16225            #[cfg(test)]
16226            #[allow(dead_code, unreachable_patterns)]
16227            fn _type_assertion(
16228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16229            ) {
16230                match _t {
16231                    alloy_sol_types::private::AssertTypeEq::<
16232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16233                    >(_) => {}
16234                }
16235            }
16236            #[automatically_derived]
16237            #[doc(hidden)]
16238            impl ::core::convert::From<initializedAtBlockCall>
16239            for UnderlyingRustTuple<'_> {
16240                fn from(value: initializedAtBlockCall) -> Self {
16241                    ()
16242                }
16243            }
16244            #[automatically_derived]
16245            #[doc(hidden)]
16246            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16247            for initializedAtBlockCall {
16248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16249                    Self
16250                }
16251            }
16252        }
16253        {
16254            #[doc(hidden)]
16255            #[allow(dead_code)]
16256            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16257            #[doc(hidden)]
16258            type UnderlyingRustTuple<'a> = (
16259                alloy::sol_types::private::primitives::aliases::U256,
16260            );
16261            #[cfg(test)]
16262            #[allow(dead_code, unreachable_patterns)]
16263            fn _type_assertion(
16264                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16265            ) {
16266                match _t {
16267                    alloy_sol_types::private::AssertTypeEq::<
16268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16269                    >(_) => {}
16270                }
16271            }
16272            #[automatically_derived]
16273            #[doc(hidden)]
16274            impl ::core::convert::From<initializedAtBlockReturn>
16275            for UnderlyingRustTuple<'_> {
16276                fn from(value: initializedAtBlockReturn) -> Self {
16277                    (value._0,)
16278                }
16279            }
16280            #[automatically_derived]
16281            #[doc(hidden)]
16282            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16283            for initializedAtBlockReturn {
16284                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16285                    Self { _0: tuple.0 }
16286                }
16287            }
16288        }
16289        #[automatically_derived]
16290        impl alloy_sol_types::SolCall for initializedAtBlockCall {
16291            type Parameters<'a> = ();
16292            type Token<'a> = <Self::Parameters<
16293                'a,
16294            > as alloy_sol_types::SolType>::Token<'a>;
16295            type Return = alloy::sol_types::private::primitives::aliases::U256;
16296            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16297            type ReturnToken<'a> = <Self::ReturnTuple<
16298                'a,
16299            > as alloy_sol_types::SolType>::Token<'a>;
16300            const SIGNATURE: &'static str = "initializedAtBlock()";
16301            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
16302            #[inline]
16303            fn new<'a>(
16304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16305            ) -> Self {
16306                tuple.into()
16307            }
16308            #[inline]
16309            fn tokenize(&self) -> Self::Token<'_> {
16310                ()
16311            }
16312            #[inline]
16313            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16314                (
16315                    <alloy::sol_types::sol_data::Uint<
16316                        256,
16317                    > as alloy_sol_types::SolType>::tokenize(ret),
16318                )
16319            }
16320            #[inline]
16321            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16322                <Self::ReturnTuple<
16323                    '_,
16324                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16325                    .map(|r| {
16326                        let r: initializedAtBlockReturn = r.into();
16327                        r._0
16328                    })
16329            }
16330            #[inline]
16331            fn abi_decode_returns_validate(
16332                data: &[u8],
16333            ) -> alloy_sol_types::Result<Self::Return> {
16334                <Self::ReturnTuple<
16335                    '_,
16336                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16337                    .map(|r| {
16338                        let r: initializedAtBlockReturn = r.into();
16339                        r._0
16340                    })
16341            }
16342        }
16343    };
16344    #[derive(serde::Serialize, serde::Deserialize)]
16345    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16346    /**Function with signature `lightClient()` and selector `0xb5700e68`.
16347```solidity
16348function lightClient() external view returns (address);
16349```*/
16350    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16351    #[derive(Clone)]
16352    pub struct lightClientCall;
16353    #[derive(serde::Serialize, serde::Deserialize)]
16354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16355    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
16356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16357    #[derive(Clone)]
16358    pub struct lightClientReturn {
16359        #[allow(missing_docs)]
16360        pub _0: alloy::sol_types::private::Address,
16361    }
16362    #[allow(
16363        non_camel_case_types,
16364        non_snake_case,
16365        clippy::pub_underscore_fields,
16366        clippy::style
16367    )]
16368    const _: () = {
16369        use alloy::sol_types as alloy_sol_types;
16370        {
16371            #[doc(hidden)]
16372            #[allow(dead_code)]
16373            type UnderlyingSolTuple<'a> = ();
16374            #[doc(hidden)]
16375            type UnderlyingRustTuple<'a> = ();
16376            #[cfg(test)]
16377            #[allow(dead_code, unreachable_patterns)]
16378            fn _type_assertion(
16379                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16380            ) {
16381                match _t {
16382                    alloy_sol_types::private::AssertTypeEq::<
16383                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16384                    >(_) => {}
16385                }
16386            }
16387            #[automatically_derived]
16388            #[doc(hidden)]
16389            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
16390                fn from(value: lightClientCall) -> Self {
16391                    ()
16392                }
16393            }
16394            #[automatically_derived]
16395            #[doc(hidden)]
16396            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
16397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16398                    Self
16399                }
16400            }
16401        }
16402        {
16403            #[doc(hidden)]
16404            #[allow(dead_code)]
16405            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
16406            #[doc(hidden)]
16407            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
16408            #[cfg(test)]
16409            #[allow(dead_code, unreachable_patterns)]
16410            fn _type_assertion(
16411                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16412            ) {
16413                match _t {
16414                    alloy_sol_types::private::AssertTypeEq::<
16415                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16416                    >(_) => {}
16417                }
16418            }
16419            #[automatically_derived]
16420            #[doc(hidden)]
16421            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
16422                fn from(value: lightClientReturn) -> Self {
16423                    (value._0,)
16424                }
16425            }
16426            #[automatically_derived]
16427            #[doc(hidden)]
16428            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
16429                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16430                    Self { _0: tuple.0 }
16431                }
16432            }
16433        }
16434        #[automatically_derived]
16435        impl alloy_sol_types::SolCall for lightClientCall {
16436            type Parameters<'a> = ();
16437            type Token<'a> = <Self::Parameters<
16438                'a,
16439            > as alloy_sol_types::SolType>::Token<'a>;
16440            type Return = alloy::sol_types::private::Address;
16441            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
16442            type ReturnToken<'a> = <Self::ReturnTuple<
16443                'a,
16444            > as alloy_sol_types::SolType>::Token<'a>;
16445            const SIGNATURE: &'static str = "lightClient()";
16446            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
16447            #[inline]
16448            fn new<'a>(
16449                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16450            ) -> Self {
16451                tuple.into()
16452            }
16453            #[inline]
16454            fn tokenize(&self) -> Self::Token<'_> {
16455                ()
16456            }
16457            #[inline]
16458            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16459                (
16460                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16461                        ret,
16462                    ),
16463                )
16464            }
16465            #[inline]
16466            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16467                <Self::ReturnTuple<
16468                    '_,
16469                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16470                    .map(|r| {
16471                        let r: lightClientReturn = r.into();
16472                        r._0
16473                    })
16474            }
16475            #[inline]
16476            fn abi_decode_returns_validate(
16477                data: &[u8],
16478            ) -> alloy_sol_types::Result<Self::Return> {
16479                <Self::ReturnTuple<
16480                    '_,
16481                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16482                    .map(|r| {
16483                        let r: lightClientReturn = r.into();
16484                        r._0
16485                    })
16486            }
16487        }
16488    };
16489    #[derive(serde::Serialize, serde::Deserialize)]
16490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16491    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
16492```solidity
16493function maxCommissionIncrease() external view returns (uint16);
16494```*/
16495    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16496    #[derive(Clone)]
16497    pub struct maxCommissionIncreaseCall;
16498    #[derive(serde::Serialize, serde::Deserialize)]
16499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16500    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
16501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16502    #[derive(Clone)]
16503    pub struct maxCommissionIncreaseReturn {
16504        #[allow(missing_docs)]
16505        pub _0: u16,
16506    }
16507    #[allow(
16508        non_camel_case_types,
16509        non_snake_case,
16510        clippy::pub_underscore_fields,
16511        clippy::style
16512    )]
16513    const _: () = {
16514        use alloy::sol_types as alloy_sol_types;
16515        {
16516            #[doc(hidden)]
16517            #[allow(dead_code)]
16518            type UnderlyingSolTuple<'a> = ();
16519            #[doc(hidden)]
16520            type UnderlyingRustTuple<'a> = ();
16521            #[cfg(test)]
16522            #[allow(dead_code, unreachable_patterns)]
16523            fn _type_assertion(
16524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16525            ) {
16526                match _t {
16527                    alloy_sol_types::private::AssertTypeEq::<
16528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16529                    >(_) => {}
16530                }
16531            }
16532            #[automatically_derived]
16533            #[doc(hidden)]
16534            impl ::core::convert::From<maxCommissionIncreaseCall>
16535            for UnderlyingRustTuple<'_> {
16536                fn from(value: maxCommissionIncreaseCall) -> Self {
16537                    ()
16538                }
16539            }
16540            #[automatically_derived]
16541            #[doc(hidden)]
16542            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16543            for maxCommissionIncreaseCall {
16544                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16545                    Self
16546                }
16547            }
16548        }
16549        {
16550            #[doc(hidden)]
16551            #[allow(dead_code)]
16552            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
16553            #[doc(hidden)]
16554            type UnderlyingRustTuple<'a> = (u16,);
16555            #[cfg(test)]
16556            #[allow(dead_code, unreachable_patterns)]
16557            fn _type_assertion(
16558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16559            ) {
16560                match _t {
16561                    alloy_sol_types::private::AssertTypeEq::<
16562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16563                    >(_) => {}
16564                }
16565            }
16566            #[automatically_derived]
16567            #[doc(hidden)]
16568            impl ::core::convert::From<maxCommissionIncreaseReturn>
16569            for UnderlyingRustTuple<'_> {
16570                fn from(value: maxCommissionIncreaseReturn) -> Self {
16571                    (value._0,)
16572                }
16573            }
16574            #[automatically_derived]
16575            #[doc(hidden)]
16576            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16577            for maxCommissionIncreaseReturn {
16578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16579                    Self { _0: tuple.0 }
16580                }
16581            }
16582        }
16583        #[automatically_derived]
16584        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
16585            type Parameters<'a> = ();
16586            type Token<'a> = <Self::Parameters<
16587                'a,
16588            > as alloy_sol_types::SolType>::Token<'a>;
16589            type Return = u16;
16590            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
16591            type ReturnToken<'a> = <Self::ReturnTuple<
16592                'a,
16593            > as alloy_sol_types::SolType>::Token<'a>;
16594            const SIGNATURE: &'static str = "maxCommissionIncrease()";
16595            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
16596            #[inline]
16597            fn new<'a>(
16598                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16599            ) -> Self {
16600                tuple.into()
16601            }
16602            #[inline]
16603            fn tokenize(&self) -> Self::Token<'_> {
16604                ()
16605            }
16606            #[inline]
16607            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16608                (
16609                    <alloy::sol_types::sol_data::Uint<
16610                        16,
16611                    > as alloy_sol_types::SolType>::tokenize(ret),
16612                )
16613            }
16614            #[inline]
16615            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16616                <Self::ReturnTuple<
16617                    '_,
16618                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16619                    .map(|r| {
16620                        let r: maxCommissionIncreaseReturn = r.into();
16621                        r._0
16622                    })
16623            }
16624            #[inline]
16625            fn abi_decode_returns_validate(
16626                data: &[u8],
16627            ) -> alloy_sol_types::Result<Self::Return> {
16628                <Self::ReturnTuple<
16629                    '_,
16630                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16631                    .map(|r| {
16632                        let r: maxCommissionIncreaseReturn = r.into();
16633                        r._0
16634                    })
16635            }
16636        }
16637    };
16638    #[derive(serde::Serialize, serde::Deserialize)]
16639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16640    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
16641```solidity
16642function minCommissionIncreaseInterval() external view returns (uint256);
16643```*/
16644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16645    #[derive(Clone)]
16646    pub struct minCommissionIncreaseIntervalCall;
16647    #[derive(serde::Serialize, serde::Deserialize)]
16648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16649    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
16650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16651    #[derive(Clone)]
16652    pub struct minCommissionIncreaseIntervalReturn {
16653        #[allow(missing_docs)]
16654        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16655    }
16656    #[allow(
16657        non_camel_case_types,
16658        non_snake_case,
16659        clippy::pub_underscore_fields,
16660        clippy::style
16661    )]
16662    const _: () = {
16663        use alloy::sol_types as alloy_sol_types;
16664        {
16665            #[doc(hidden)]
16666            #[allow(dead_code)]
16667            type UnderlyingSolTuple<'a> = ();
16668            #[doc(hidden)]
16669            type UnderlyingRustTuple<'a> = ();
16670            #[cfg(test)]
16671            #[allow(dead_code, unreachable_patterns)]
16672            fn _type_assertion(
16673                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16674            ) {
16675                match _t {
16676                    alloy_sol_types::private::AssertTypeEq::<
16677                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16678                    >(_) => {}
16679                }
16680            }
16681            #[automatically_derived]
16682            #[doc(hidden)]
16683            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
16684            for UnderlyingRustTuple<'_> {
16685                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
16686                    ()
16687                }
16688            }
16689            #[automatically_derived]
16690            #[doc(hidden)]
16691            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16692            for minCommissionIncreaseIntervalCall {
16693                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16694                    Self
16695                }
16696            }
16697        }
16698        {
16699            #[doc(hidden)]
16700            #[allow(dead_code)]
16701            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16702            #[doc(hidden)]
16703            type UnderlyingRustTuple<'a> = (
16704                alloy::sol_types::private::primitives::aliases::U256,
16705            );
16706            #[cfg(test)]
16707            #[allow(dead_code, unreachable_patterns)]
16708            fn _type_assertion(
16709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16710            ) {
16711                match _t {
16712                    alloy_sol_types::private::AssertTypeEq::<
16713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16714                    >(_) => {}
16715                }
16716            }
16717            #[automatically_derived]
16718            #[doc(hidden)]
16719            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
16720            for UnderlyingRustTuple<'_> {
16721                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
16722                    (value._0,)
16723                }
16724            }
16725            #[automatically_derived]
16726            #[doc(hidden)]
16727            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16728            for minCommissionIncreaseIntervalReturn {
16729                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16730                    Self { _0: tuple.0 }
16731                }
16732            }
16733        }
16734        #[automatically_derived]
16735        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
16736            type Parameters<'a> = ();
16737            type Token<'a> = <Self::Parameters<
16738                'a,
16739            > as alloy_sol_types::SolType>::Token<'a>;
16740            type Return = alloy::sol_types::private::primitives::aliases::U256;
16741            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16742            type ReturnToken<'a> = <Self::ReturnTuple<
16743                'a,
16744            > as alloy_sol_types::SolType>::Token<'a>;
16745            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
16746            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
16747            #[inline]
16748            fn new<'a>(
16749                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16750            ) -> Self {
16751                tuple.into()
16752            }
16753            #[inline]
16754            fn tokenize(&self) -> Self::Token<'_> {
16755                ()
16756            }
16757            #[inline]
16758            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16759                (
16760                    <alloy::sol_types::sol_data::Uint<
16761                        256,
16762                    > as alloy_sol_types::SolType>::tokenize(ret),
16763                )
16764            }
16765            #[inline]
16766            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16767                <Self::ReturnTuple<
16768                    '_,
16769                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16770                    .map(|r| {
16771                        let r: minCommissionIncreaseIntervalReturn = r.into();
16772                        r._0
16773                    })
16774            }
16775            #[inline]
16776            fn abi_decode_returns_validate(
16777                data: &[u8],
16778            ) -> alloy_sol_types::Result<Self::Return> {
16779                <Self::ReturnTuple<
16780                    '_,
16781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16782                    .map(|r| {
16783                        let r: minCommissionIncreaseIntervalReturn = r.into();
16784                        r._0
16785                    })
16786            }
16787        }
16788    };
16789    #[derive(serde::Serialize, serde::Deserialize)]
16790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16791    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
16792```solidity
16793function minDelegateAmount() external view returns (uint256);
16794```*/
16795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16796    #[derive(Clone)]
16797    pub struct minDelegateAmountCall;
16798    #[derive(serde::Serialize, serde::Deserialize)]
16799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16800    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
16801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16802    #[derive(Clone)]
16803    pub struct minDelegateAmountReturn {
16804        #[allow(missing_docs)]
16805        pub _0: alloy::sol_types::private::primitives::aliases::U256,
16806    }
16807    #[allow(
16808        non_camel_case_types,
16809        non_snake_case,
16810        clippy::pub_underscore_fields,
16811        clippy::style
16812    )]
16813    const _: () = {
16814        use alloy::sol_types as alloy_sol_types;
16815        {
16816            #[doc(hidden)]
16817            #[allow(dead_code)]
16818            type UnderlyingSolTuple<'a> = ();
16819            #[doc(hidden)]
16820            type UnderlyingRustTuple<'a> = ();
16821            #[cfg(test)]
16822            #[allow(dead_code, unreachable_patterns)]
16823            fn _type_assertion(
16824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16825            ) {
16826                match _t {
16827                    alloy_sol_types::private::AssertTypeEq::<
16828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16829                    >(_) => {}
16830                }
16831            }
16832            #[automatically_derived]
16833            #[doc(hidden)]
16834            impl ::core::convert::From<minDelegateAmountCall>
16835            for UnderlyingRustTuple<'_> {
16836                fn from(value: minDelegateAmountCall) -> Self {
16837                    ()
16838                }
16839            }
16840            #[automatically_derived]
16841            #[doc(hidden)]
16842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16843            for minDelegateAmountCall {
16844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16845                    Self
16846                }
16847            }
16848        }
16849        {
16850            #[doc(hidden)]
16851            #[allow(dead_code)]
16852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16853            #[doc(hidden)]
16854            type UnderlyingRustTuple<'a> = (
16855                alloy::sol_types::private::primitives::aliases::U256,
16856            );
16857            #[cfg(test)]
16858            #[allow(dead_code, unreachable_patterns)]
16859            fn _type_assertion(
16860                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16861            ) {
16862                match _t {
16863                    alloy_sol_types::private::AssertTypeEq::<
16864                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16865                    >(_) => {}
16866                }
16867            }
16868            #[automatically_derived]
16869            #[doc(hidden)]
16870            impl ::core::convert::From<minDelegateAmountReturn>
16871            for UnderlyingRustTuple<'_> {
16872                fn from(value: minDelegateAmountReturn) -> Self {
16873                    (value._0,)
16874                }
16875            }
16876            #[automatically_derived]
16877            #[doc(hidden)]
16878            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16879            for minDelegateAmountReturn {
16880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16881                    Self { _0: tuple.0 }
16882                }
16883            }
16884        }
16885        #[automatically_derived]
16886        impl alloy_sol_types::SolCall for minDelegateAmountCall {
16887            type Parameters<'a> = ();
16888            type Token<'a> = <Self::Parameters<
16889                'a,
16890            > as alloy_sol_types::SolType>::Token<'a>;
16891            type Return = alloy::sol_types::private::primitives::aliases::U256;
16892            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16893            type ReturnToken<'a> = <Self::ReturnTuple<
16894                'a,
16895            > as alloy_sol_types::SolType>::Token<'a>;
16896            const SIGNATURE: &'static str = "minDelegateAmount()";
16897            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
16898            #[inline]
16899            fn new<'a>(
16900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16901            ) -> Self {
16902                tuple.into()
16903            }
16904            #[inline]
16905            fn tokenize(&self) -> Self::Token<'_> {
16906                ()
16907            }
16908            #[inline]
16909            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16910                (
16911                    <alloy::sol_types::sol_data::Uint<
16912                        256,
16913                    > as alloy_sol_types::SolType>::tokenize(ret),
16914                )
16915            }
16916            #[inline]
16917            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16918                <Self::ReturnTuple<
16919                    '_,
16920                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16921                    .map(|r| {
16922                        let r: minDelegateAmountReturn = r.into();
16923                        r._0
16924                    })
16925            }
16926            #[inline]
16927            fn abi_decode_returns_validate(
16928                data: &[u8],
16929            ) -> alloy_sol_types::Result<Self::Return> {
16930                <Self::ReturnTuple<
16931                    '_,
16932                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16933                    .map(|r| {
16934                        let r: minDelegateAmountReturn = r.into();
16935                        r._0
16936                    })
16937            }
16938        }
16939    };
16940    #[derive(serde::Serialize, serde::Deserialize)]
16941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16942    /**Function with signature `owner()` and selector `0x8da5cb5b`.
16943```solidity
16944function owner() external view returns (address);
16945```*/
16946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16947    #[derive(Clone)]
16948    pub struct ownerCall;
16949    #[derive(serde::Serialize, serde::Deserialize)]
16950    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16951    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
16952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16953    #[derive(Clone)]
16954    pub struct ownerReturn {
16955        #[allow(missing_docs)]
16956        pub _0: alloy::sol_types::private::Address,
16957    }
16958    #[allow(
16959        non_camel_case_types,
16960        non_snake_case,
16961        clippy::pub_underscore_fields,
16962        clippy::style
16963    )]
16964    const _: () = {
16965        use alloy::sol_types as alloy_sol_types;
16966        {
16967            #[doc(hidden)]
16968            #[allow(dead_code)]
16969            type UnderlyingSolTuple<'a> = ();
16970            #[doc(hidden)]
16971            type UnderlyingRustTuple<'a> = ();
16972            #[cfg(test)]
16973            #[allow(dead_code, unreachable_patterns)]
16974            fn _type_assertion(
16975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16976            ) {
16977                match _t {
16978                    alloy_sol_types::private::AssertTypeEq::<
16979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16980                    >(_) => {}
16981                }
16982            }
16983            #[automatically_derived]
16984            #[doc(hidden)]
16985            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
16986                fn from(value: ownerCall) -> Self {
16987                    ()
16988                }
16989            }
16990            #[automatically_derived]
16991            #[doc(hidden)]
16992            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
16993                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16994                    Self
16995                }
16996            }
16997        }
16998        {
16999            #[doc(hidden)]
17000            #[allow(dead_code)]
17001            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17002            #[doc(hidden)]
17003            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17004            #[cfg(test)]
17005            #[allow(dead_code, unreachable_patterns)]
17006            fn _type_assertion(
17007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17008            ) {
17009                match _t {
17010                    alloy_sol_types::private::AssertTypeEq::<
17011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17012                    >(_) => {}
17013                }
17014            }
17015            #[automatically_derived]
17016            #[doc(hidden)]
17017            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
17018                fn from(value: ownerReturn) -> Self {
17019                    (value._0,)
17020                }
17021            }
17022            #[automatically_derived]
17023            #[doc(hidden)]
17024            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
17025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17026                    Self { _0: tuple.0 }
17027                }
17028            }
17029        }
17030        #[automatically_derived]
17031        impl alloy_sol_types::SolCall for ownerCall {
17032            type Parameters<'a> = ();
17033            type Token<'a> = <Self::Parameters<
17034                'a,
17035            > as alloy_sol_types::SolType>::Token<'a>;
17036            type Return = alloy::sol_types::private::Address;
17037            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17038            type ReturnToken<'a> = <Self::ReturnTuple<
17039                'a,
17040            > as alloy_sol_types::SolType>::Token<'a>;
17041            const SIGNATURE: &'static str = "owner()";
17042            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
17043            #[inline]
17044            fn new<'a>(
17045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17046            ) -> Self {
17047                tuple.into()
17048            }
17049            #[inline]
17050            fn tokenize(&self) -> Self::Token<'_> {
17051                ()
17052            }
17053            #[inline]
17054            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17055                (
17056                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17057                        ret,
17058                    ),
17059                )
17060            }
17061            #[inline]
17062            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17063                <Self::ReturnTuple<
17064                    '_,
17065                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17066                    .map(|r| {
17067                        let r: ownerReturn = r.into();
17068                        r._0
17069                    })
17070            }
17071            #[inline]
17072            fn abi_decode_returns_validate(
17073                data: &[u8],
17074            ) -> alloy_sol_types::Result<Self::Return> {
17075                <Self::ReturnTuple<
17076                    '_,
17077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17078                    .map(|r| {
17079                        let r: ownerReturn = r.into();
17080                        r._0
17081                    })
17082            }
17083        }
17084    };
17085    #[derive(serde::Serialize, serde::Deserialize)]
17086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17087    /**Function with signature `pause()` and selector `0x8456cb59`.
17088```solidity
17089function pause() external;
17090```*/
17091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17092    #[derive(Clone)]
17093    pub struct pauseCall;
17094    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
17095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17096    #[derive(Clone)]
17097    pub struct pauseReturn {}
17098    #[allow(
17099        non_camel_case_types,
17100        non_snake_case,
17101        clippy::pub_underscore_fields,
17102        clippy::style
17103    )]
17104    const _: () = {
17105        use alloy::sol_types as alloy_sol_types;
17106        {
17107            #[doc(hidden)]
17108            #[allow(dead_code)]
17109            type UnderlyingSolTuple<'a> = ();
17110            #[doc(hidden)]
17111            type UnderlyingRustTuple<'a> = ();
17112            #[cfg(test)]
17113            #[allow(dead_code, unreachable_patterns)]
17114            fn _type_assertion(
17115                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17116            ) {
17117                match _t {
17118                    alloy_sol_types::private::AssertTypeEq::<
17119                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17120                    >(_) => {}
17121                }
17122            }
17123            #[automatically_derived]
17124            #[doc(hidden)]
17125            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
17126                fn from(value: pauseCall) -> Self {
17127                    ()
17128                }
17129            }
17130            #[automatically_derived]
17131            #[doc(hidden)]
17132            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
17133                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17134                    Self
17135                }
17136            }
17137        }
17138        {
17139            #[doc(hidden)]
17140            #[allow(dead_code)]
17141            type UnderlyingSolTuple<'a> = ();
17142            #[doc(hidden)]
17143            type UnderlyingRustTuple<'a> = ();
17144            #[cfg(test)]
17145            #[allow(dead_code, unreachable_patterns)]
17146            fn _type_assertion(
17147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17148            ) {
17149                match _t {
17150                    alloy_sol_types::private::AssertTypeEq::<
17151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17152                    >(_) => {}
17153                }
17154            }
17155            #[automatically_derived]
17156            #[doc(hidden)]
17157            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
17158                fn from(value: pauseReturn) -> Self {
17159                    ()
17160                }
17161            }
17162            #[automatically_derived]
17163            #[doc(hidden)]
17164            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
17165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17166                    Self {}
17167                }
17168            }
17169        }
17170        impl pauseReturn {
17171            fn _tokenize(
17172                &self,
17173            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17174                ()
17175            }
17176        }
17177        #[automatically_derived]
17178        impl alloy_sol_types::SolCall for pauseCall {
17179            type Parameters<'a> = ();
17180            type Token<'a> = <Self::Parameters<
17181                'a,
17182            > as alloy_sol_types::SolType>::Token<'a>;
17183            type Return = pauseReturn;
17184            type ReturnTuple<'a> = ();
17185            type ReturnToken<'a> = <Self::ReturnTuple<
17186                'a,
17187            > as alloy_sol_types::SolType>::Token<'a>;
17188            const SIGNATURE: &'static str = "pause()";
17189            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
17190            #[inline]
17191            fn new<'a>(
17192                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17193            ) -> Self {
17194                tuple.into()
17195            }
17196            #[inline]
17197            fn tokenize(&self) -> Self::Token<'_> {
17198                ()
17199            }
17200            #[inline]
17201            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17202                pauseReturn::_tokenize(ret)
17203            }
17204            #[inline]
17205            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17206                <Self::ReturnTuple<
17207                    '_,
17208                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17209                    .map(Into::into)
17210            }
17211            #[inline]
17212            fn abi_decode_returns_validate(
17213                data: &[u8],
17214            ) -> alloy_sol_types::Result<Self::Return> {
17215                <Self::ReturnTuple<
17216                    '_,
17217                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17218                    .map(Into::into)
17219            }
17220        }
17221    };
17222    #[derive(serde::Serialize, serde::Deserialize)]
17223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17224    /**Function with signature `paused()` and selector `0x5c975abb`.
17225```solidity
17226function paused() external view returns (bool);
17227```*/
17228    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17229    #[derive(Clone)]
17230    pub struct pausedCall;
17231    #[derive(serde::Serialize, serde::Deserialize)]
17232    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17233    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
17234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17235    #[derive(Clone)]
17236    pub struct pausedReturn {
17237        #[allow(missing_docs)]
17238        pub _0: bool,
17239    }
17240    #[allow(
17241        non_camel_case_types,
17242        non_snake_case,
17243        clippy::pub_underscore_fields,
17244        clippy::style
17245    )]
17246    const _: () = {
17247        use alloy::sol_types as alloy_sol_types;
17248        {
17249            #[doc(hidden)]
17250            #[allow(dead_code)]
17251            type UnderlyingSolTuple<'a> = ();
17252            #[doc(hidden)]
17253            type UnderlyingRustTuple<'a> = ();
17254            #[cfg(test)]
17255            #[allow(dead_code, unreachable_patterns)]
17256            fn _type_assertion(
17257                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17258            ) {
17259                match _t {
17260                    alloy_sol_types::private::AssertTypeEq::<
17261                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17262                    >(_) => {}
17263                }
17264            }
17265            #[automatically_derived]
17266            #[doc(hidden)]
17267            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
17268                fn from(value: pausedCall) -> Self {
17269                    ()
17270                }
17271            }
17272            #[automatically_derived]
17273            #[doc(hidden)]
17274            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
17275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17276                    Self
17277                }
17278            }
17279        }
17280        {
17281            #[doc(hidden)]
17282            #[allow(dead_code)]
17283            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17284            #[doc(hidden)]
17285            type UnderlyingRustTuple<'a> = (bool,);
17286            #[cfg(test)]
17287            #[allow(dead_code, unreachable_patterns)]
17288            fn _type_assertion(
17289                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17290            ) {
17291                match _t {
17292                    alloy_sol_types::private::AssertTypeEq::<
17293                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17294                    >(_) => {}
17295                }
17296            }
17297            #[automatically_derived]
17298            #[doc(hidden)]
17299            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
17300                fn from(value: pausedReturn) -> Self {
17301                    (value._0,)
17302                }
17303            }
17304            #[automatically_derived]
17305            #[doc(hidden)]
17306            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
17307                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17308                    Self { _0: tuple.0 }
17309                }
17310            }
17311        }
17312        #[automatically_derived]
17313        impl alloy_sol_types::SolCall for pausedCall {
17314            type Parameters<'a> = ();
17315            type Token<'a> = <Self::Parameters<
17316                'a,
17317            > as alloy_sol_types::SolType>::Token<'a>;
17318            type Return = bool;
17319            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17320            type ReturnToken<'a> = <Self::ReturnTuple<
17321                'a,
17322            > as alloy_sol_types::SolType>::Token<'a>;
17323            const SIGNATURE: &'static str = "paused()";
17324            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
17325            #[inline]
17326            fn new<'a>(
17327                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17328            ) -> Self {
17329                tuple.into()
17330            }
17331            #[inline]
17332            fn tokenize(&self) -> Self::Token<'_> {
17333                ()
17334            }
17335            #[inline]
17336            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17337                (
17338                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17339                        ret,
17340                    ),
17341                )
17342            }
17343            #[inline]
17344            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17345                <Self::ReturnTuple<
17346                    '_,
17347                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17348                    .map(|r| {
17349                        let r: pausedReturn = r.into();
17350                        r._0
17351                    })
17352            }
17353            #[inline]
17354            fn abi_decode_returns_validate(
17355                data: &[u8],
17356            ) -> alloy_sol_types::Result<Self::Return> {
17357                <Self::ReturnTuple<
17358                    '_,
17359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17360                    .map(|r| {
17361                        let r: pausedReturn = r.into();
17362                        r._0
17363                    })
17364            }
17365        }
17366    };
17367    #[derive(serde::Serialize, serde::Deserialize)]
17368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17369    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
17370```solidity
17371function proxiableUUID() external view returns (bytes32);
17372```*/
17373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17374    #[derive(Clone)]
17375    pub struct proxiableUUIDCall;
17376    #[derive(serde::Serialize, serde::Deserialize)]
17377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17378    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
17379    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17380    #[derive(Clone)]
17381    pub struct proxiableUUIDReturn {
17382        #[allow(missing_docs)]
17383        pub _0: alloy::sol_types::private::FixedBytes<32>,
17384    }
17385    #[allow(
17386        non_camel_case_types,
17387        non_snake_case,
17388        clippy::pub_underscore_fields,
17389        clippy::style
17390    )]
17391    const _: () = {
17392        use alloy::sol_types as alloy_sol_types;
17393        {
17394            #[doc(hidden)]
17395            #[allow(dead_code)]
17396            type UnderlyingSolTuple<'a> = ();
17397            #[doc(hidden)]
17398            type UnderlyingRustTuple<'a> = ();
17399            #[cfg(test)]
17400            #[allow(dead_code, unreachable_patterns)]
17401            fn _type_assertion(
17402                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17403            ) {
17404                match _t {
17405                    alloy_sol_types::private::AssertTypeEq::<
17406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17407                    >(_) => {}
17408                }
17409            }
17410            #[automatically_derived]
17411            #[doc(hidden)]
17412            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
17413                fn from(value: proxiableUUIDCall) -> Self {
17414                    ()
17415                }
17416            }
17417            #[automatically_derived]
17418            #[doc(hidden)]
17419            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
17420                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17421                    Self
17422                }
17423            }
17424        }
17425        {
17426            #[doc(hidden)]
17427            #[allow(dead_code)]
17428            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17429            #[doc(hidden)]
17430            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
17431            #[cfg(test)]
17432            #[allow(dead_code, unreachable_patterns)]
17433            fn _type_assertion(
17434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17435            ) {
17436                match _t {
17437                    alloy_sol_types::private::AssertTypeEq::<
17438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17439                    >(_) => {}
17440                }
17441            }
17442            #[automatically_derived]
17443            #[doc(hidden)]
17444            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
17445                fn from(value: proxiableUUIDReturn) -> Self {
17446                    (value._0,)
17447                }
17448            }
17449            #[automatically_derived]
17450            #[doc(hidden)]
17451            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
17452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17453                    Self { _0: tuple.0 }
17454                }
17455            }
17456        }
17457        #[automatically_derived]
17458        impl alloy_sol_types::SolCall for proxiableUUIDCall {
17459            type Parameters<'a> = ();
17460            type Token<'a> = <Self::Parameters<
17461                'a,
17462            > as alloy_sol_types::SolType>::Token<'a>;
17463            type Return = alloy::sol_types::private::FixedBytes<32>;
17464            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17465            type ReturnToken<'a> = <Self::ReturnTuple<
17466                'a,
17467            > as alloy_sol_types::SolType>::Token<'a>;
17468            const SIGNATURE: &'static str = "proxiableUUID()";
17469            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
17470            #[inline]
17471            fn new<'a>(
17472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17473            ) -> Self {
17474                tuple.into()
17475            }
17476            #[inline]
17477            fn tokenize(&self) -> Self::Token<'_> {
17478                ()
17479            }
17480            #[inline]
17481            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17482                (
17483                    <alloy::sol_types::sol_data::FixedBytes<
17484                        32,
17485                    > as alloy_sol_types::SolType>::tokenize(ret),
17486                )
17487            }
17488            #[inline]
17489            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17490                <Self::ReturnTuple<
17491                    '_,
17492                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17493                    .map(|r| {
17494                        let r: proxiableUUIDReturn = r.into();
17495                        r._0
17496                    })
17497            }
17498            #[inline]
17499            fn abi_decode_returns_validate(
17500                data: &[u8],
17501            ) -> alloy_sol_types::Result<Self::Return> {
17502                <Self::ReturnTuple<
17503                    '_,
17504                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17505                    .map(|r| {
17506                        let r: proxiableUUIDReturn = r.into();
17507                        r._0
17508                    })
17509            }
17510        }
17511    };
17512    #[derive(serde::Serialize, serde::Deserialize)]
17513    #[derive()]
17514    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
17515```solidity
17516function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
17517```*/
17518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17519    #[derive(Clone)]
17520    pub struct registerValidatorCall {
17521        #[allow(missing_docs)]
17522        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17523        #[allow(missing_docs)]
17524        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17525        #[allow(missing_docs)]
17526        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17527        #[allow(missing_docs)]
17528        pub _3: u16,
17529    }
17530    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
17531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17532    #[derive(Clone)]
17533    pub struct registerValidatorReturn {}
17534    #[allow(
17535        non_camel_case_types,
17536        non_snake_case,
17537        clippy::pub_underscore_fields,
17538        clippy::style
17539    )]
17540    const _: () = {
17541        use alloy::sol_types as alloy_sol_types;
17542        {
17543            #[doc(hidden)]
17544            #[allow(dead_code)]
17545            type UnderlyingSolTuple<'a> = (
17546                BN254::G2Point,
17547                EdOnBN254::EdOnBN254Point,
17548                BN254::G1Point,
17549                alloy::sol_types::sol_data::Uint<16>,
17550            );
17551            #[doc(hidden)]
17552            type UnderlyingRustTuple<'a> = (
17553                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17554                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17555                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17556                u16,
17557            );
17558            #[cfg(test)]
17559            #[allow(dead_code, unreachable_patterns)]
17560            fn _type_assertion(
17561                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17562            ) {
17563                match _t {
17564                    alloy_sol_types::private::AssertTypeEq::<
17565                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17566                    >(_) => {}
17567                }
17568            }
17569            #[automatically_derived]
17570            #[doc(hidden)]
17571            impl ::core::convert::From<registerValidatorCall>
17572            for UnderlyingRustTuple<'_> {
17573                fn from(value: registerValidatorCall) -> Self {
17574                    (value._0, value._1, value._2, value._3)
17575                }
17576            }
17577            #[automatically_derived]
17578            #[doc(hidden)]
17579            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17580            for registerValidatorCall {
17581                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17582                    Self {
17583                        _0: tuple.0,
17584                        _1: tuple.1,
17585                        _2: tuple.2,
17586                        _3: tuple.3,
17587                    }
17588                }
17589            }
17590        }
17591        {
17592            #[doc(hidden)]
17593            #[allow(dead_code)]
17594            type UnderlyingSolTuple<'a> = ();
17595            #[doc(hidden)]
17596            type UnderlyingRustTuple<'a> = ();
17597            #[cfg(test)]
17598            #[allow(dead_code, unreachable_patterns)]
17599            fn _type_assertion(
17600                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17601            ) {
17602                match _t {
17603                    alloy_sol_types::private::AssertTypeEq::<
17604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17605                    >(_) => {}
17606                }
17607            }
17608            #[automatically_derived]
17609            #[doc(hidden)]
17610            impl ::core::convert::From<registerValidatorReturn>
17611            for UnderlyingRustTuple<'_> {
17612                fn from(value: registerValidatorReturn) -> Self {
17613                    ()
17614                }
17615            }
17616            #[automatically_derived]
17617            #[doc(hidden)]
17618            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17619            for registerValidatorReturn {
17620                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17621                    Self {}
17622                }
17623            }
17624        }
17625        impl registerValidatorReturn {
17626            fn _tokenize(
17627                &self,
17628            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17629                ()
17630            }
17631        }
17632        #[automatically_derived]
17633        impl alloy_sol_types::SolCall for registerValidatorCall {
17634            type Parameters<'a> = (
17635                BN254::G2Point,
17636                EdOnBN254::EdOnBN254Point,
17637                BN254::G1Point,
17638                alloy::sol_types::sol_data::Uint<16>,
17639            );
17640            type Token<'a> = <Self::Parameters<
17641                'a,
17642            > as alloy_sol_types::SolType>::Token<'a>;
17643            type Return = registerValidatorReturn;
17644            type ReturnTuple<'a> = ();
17645            type ReturnToken<'a> = <Self::ReturnTuple<
17646                'a,
17647            > as alloy_sol_types::SolType>::Token<'a>;
17648            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
17649            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
17650            #[inline]
17651            fn new<'a>(
17652                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17653            ) -> Self {
17654                tuple.into()
17655            }
17656            #[inline]
17657            fn tokenize(&self) -> Self::Token<'_> {
17658                (
17659                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
17660                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
17661                        &self._1,
17662                    ),
17663                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
17664                    <alloy::sol_types::sol_data::Uint<
17665                        16,
17666                    > as alloy_sol_types::SolType>::tokenize(&self._3),
17667                )
17668            }
17669            #[inline]
17670            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17671                registerValidatorReturn::_tokenize(ret)
17672            }
17673            #[inline]
17674            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17675                <Self::ReturnTuple<
17676                    '_,
17677                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17678                    .map(Into::into)
17679            }
17680            #[inline]
17681            fn abi_decode_returns_validate(
17682                data: &[u8],
17683            ) -> alloy_sol_types::Result<Self::Return> {
17684                <Self::ReturnTuple<
17685                    '_,
17686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17687                    .map(Into::into)
17688            }
17689        }
17690    };
17691    #[derive(serde::Serialize, serde::Deserialize)]
17692    #[derive()]
17693    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
17694```solidity
17695function registerValidatorV2(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, bytes memory, uint16, string memory) external pure;
17696```*/
17697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17698    #[derive(Clone)]
17699    pub struct registerValidatorV2Call {
17700        #[allow(missing_docs)]
17701        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17702        #[allow(missing_docs)]
17703        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17704        #[allow(missing_docs)]
17705        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17706        #[allow(missing_docs)]
17707        pub _3: alloy::sol_types::private::Bytes,
17708        #[allow(missing_docs)]
17709        pub _4: u16,
17710        #[allow(missing_docs)]
17711        pub _5: alloy::sol_types::private::String,
17712    }
17713    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
17714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17715    #[derive(Clone)]
17716    pub struct registerValidatorV2Return {}
17717    #[allow(
17718        non_camel_case_types,
17719        non_snake_case,
17720        clippy::pub_underscore_fields,
17721        clippy::style
17722    )]
17723    const _: () = {
17724        use alloy::sol_types as alloy_sol_types;
17725        {
17726            #[doc(hidden)]
17727            #[allow(dead_code)]
17728            type UnderlyingSolTuple<'a> = (
17729                BN254::G2Point,
17730                EdOnBN254::EdOnBN254Point,
17731                BN254::G1Point,
17732                alloy::sol_types::sol_data::Bytes,
17733                alloy::sol_types::sol_data::Uint<16>,
17734                alloy::sol_types::sol_data::String,
17735            );
17736            #[doc(hidden)]
17737            type UnderlyingRustTuple<'a> = (
17738                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17739                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17740                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17741                alloy::sol_types::private::Bytes,
17742                u16,
17743                alloy::sol_types::private::String,
17744            );
17745            #[cfg(test)]
17746            #[allow(dead_code, unreachable_patterns)]
17747            fn _type_assertion(
17748                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17749            ) {
17750                match _t {
17751                    alloy_sol_types::private::AssertTypeEq::<
17752                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17753                    >(_) => {}
17754                }
17755            }
17756            #[automatically_derived]
17757            #[doc(hidden)]
17758            impl ::core::convert::From<registerValidatorV2Call>
17759            for UnderlyingRustTuple<'_> {
17760                fn from(value: registerValidatorV2Call) -> Self {
17761                    (value._0, value._1, value._2, value._3, value._4, value._5)
17762                }
17763            }
17764            #[automatically_derived]
17765            #[doc(hidden)]
17766            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17767            for registerValidatorV2Call {
17768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17769                    Self {
17770                        _0: tuple.0,
17771                        _1: tuple.1,
17772                        _2: tuple.2,
17773                        _3: tuple.3,
17774                        _4: tuple.4,
17775                        _5: tuple.5,
17776                    }
17777                }
17778            }
17779        }
17780        {
17781            #[doc(hidden)]
17782            #[allow(dead_code)]
17783            type UnderlyingSolTuple<'a> = ();
17784            #[doc(hidden)]
17785            type UnderlyingRustTuple<'a> = ();
17786            #[cfg(test)]
17787            #[allow(dead_code, unreachable_patterns)]
17788            fn _type_assertion(
17789                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17790            ) {
17791                match _t {
17792                    alloy_sol_types::private::AssertTypeEq::<
17793                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17794                    >(_) => {}
17795                }
17796            }
17797            #[automatically_derived]
17798            #[doc(hidden)]
17799            impl ::core::convert::From<registerValidatorV2Return>
17800            for UnderlyingRustTuple<'_> {
17801                fn from(value: registerValidatorV2Return) -> Self {
17802                    ()
17803                }
17804            }
17805            #[automatically_derived]
17806            #[doc(hidden)]
17807            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17808            for registerValidatorV2Return {
17809                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17810                    Self {}
17811                }
17812            }
17813        }
17814        impl registerValidatorV2Return {
17815            fn _tokenize(
17816                &self,
17817            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
17818                ()
17819            }
17820        }
17821        #[automatically_derived]
17822        impl alloy_sol_types::SolCall for registerValidatorV2Call {
17823            type Parameters<'a> = (
17824                BN254::G2Point,
17825                EdOnBN254::EdOnBN254Point,
17826                BN254::G1Point,
17827                alloy::sol_types::sol_data::Bytes,
17828                alloy::sol_types::sol_data::Uint<16>,
17829                alloy::sol_types::sol_data::String,
17830            );
17831            type Token<'a> = <Self::Parameters<
17832                'a,
17833            > as alloy_sol_types::SolType>::Token<'a>;
17834            type Return = registerValidatorV2Return;
17835            type ReturnTuple<'a> = ();
17836            type ReturnToken<'a> = <Self::ReturnTuple<
17837                'a,
17838            > as alloy_sol_types::SolType>::Token<'a>;
17839            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
17840            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
17841            #[inline]
17842            fn new<'a>(
17843                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17844            ) -> Self {
17845                tuple.into()
17846            }
17847            #[inline]
17848            fn tokenize(&self) -> Self::Token<'_> {
17849                (
17850                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
17851                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
17852                        &self._1,
17853                    ),
17854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
17855                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
17856                        &self._3,
17857                    ),
17858                    <alloy::sol_types::sol_data::Uint<
17859                        16,
17860                    > as alloy_sol_types::SolType>::tokenize(&self._4),
17861                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
17862                        &self._5,
17863                    ),
17864                )
17865            }
17866            #[inline]
17867            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17868                registerValidatorV2Return::_tokenize(ret)
17869            }
17870            #[inline]
17871            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17872                <Self::ReturnTuple<
17873                    '_,
17874                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17875                    .map(Into::into)
17876            }
17877            #[inline]
17878            fn abi_decode_returns_validate(
17879                data: &[u8],
17880            ) -> alloy_sol_types::Result<Self::Return> {
17881                <Self::ReturnTuple<
17882                    '_,
17883                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17884                    .map(Into::into)
17885            }
17886        }
17887    };
17888    #[derive(serde::Serialize, serde::Deserialize)]
17889    #[derive()]
17890    /**Function with signature `registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)` and selector `0x6887cd36`.
17891```solidity
17892function registerValidatorV3(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri, bytes32 x25519Key, string memory p2pAddr) external;
17893```*/
17894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17895    #[derive(Clone)]
17896    pub struct registerValidatorV3Call {
17897        #[allow(missing_docs)]
17898        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17899        #[allow(missing_docs)]
17900        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17901        #[allow(missing_docs)]
17902        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17903        #[allow(missing_docs)]
17904        pub schnorrSig: alloy::sol_types::private::Bytes,
17905        #[allow(missing_docs)]
17906        pub commission: u16,
17907        #[allow(missing_docs)]
17908        pub metadataUri: alloy::sol_types::private::String,
17909        #[allow(missing_docs)]
17910        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
17911        #[allow(missing_docs)]
17912        pub p2pAddr: alloy::sol_types::private::String,
17913    }
17914    ///Container type for the return parameters of the [`registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)`](registerValidatorV3Call) function.
17915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17916    #[derive(Clone)]
17917    pub struct registerValidatorV3Return {}
17918    #[allow(
17919        non_camel_case_types,
17920        non_snake_case,
17921        clippy::pub_underscore_fields,
17922        clippy::style
17923    )]
17924    const _: () = {
17925        use alloy::sol_types as alloy_sol_types;
17926        {
17927            #[doc(hidden)]
17928            #[allow(dead_code)]
17929            type UnderlyingSolTuple<'a> = (
17930                BN254::G2Point,
17931                EdOnBN254::EdOnBN254Point,
17932                BN254::G1Point,
17933                alloy::sol_types::sol_data::Bytes,
17934                alloy::sol_types::sol_data::Uint<16>,
17935                alloy::sol_types::sol_data::String,
17936                alloy::sol_types::sol_data::FixedBytes<32>,
17937                alloy::sol_types::sol_data::String,
17938            );
17939            #[doc(hidden)]
17940            type UnderlyingRustTuple<'a> = (
17941                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
17942                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
17943                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
17944                alloy::sol_types::private::Bytes,
17945                u16,
17946                alloy::sol_types::private::String,
17947                alloy::sol_types::private::FixedBytes<32>,
17948                alloy::sol_types::private::String,
17949            );
17950            #[cfg(test)]
17951            #[allow(dead_code, unreachable_patterns)]
17952            fn _type_assertion(
17953                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17954            ) {
17955                match _t {
17956                    alloy_sol_types::private::AssertTypeEq::<
17957                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17958                    >(_) => {}
17959                }
17960            }
17961            #[automatically_derived]
17962            #[doc(hidden)]
17963            impl ::core::convert::From<registerValidatorV3Call>
17964            for UnderlyingRustTuple<'_> {
17965                fn from(value: registerValidatorV3Call) -> Self {
17966                    (
17967                        value.blsVK,
17968                        value.schnorrVK,
17969                        value.blsSig,
17970                        value.schnorrSig,
17971                        value.commission,
17972                        value.metadataUri,
17973                        value.x25519Key,
17974                        value.p2pAddr,
17975                    )
17976                }
17977            }
17978            #[automatically_derived]
17979            #[doc(hidden)]
17980            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17981            for registerValidatorV3Call {
17982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17983                    Self {
17984                        blsVK: tuple.0,
17985                        schnorrVK: tuple.1,
17986                        blsSig: tuple.2,
17987                        schnorrSig: tuple.3,
17988                        commission: tuple.4,
17989                        metadataUri: tuple.5,
17990                        x25519Key: tuple.6,
17991                        p2pAddr: tuple.7,
17992                    }
17993                }
17994            }
17995        }
17996        {
17997            #[doc(hidden)]
17998            #[allow(dead_code)]
17999            type UnderlyingSolTuple<'a> = ();
18000            #[doc(hidden)]
18001            type UnderlyingRustTuple<'a> = ();
18002            #[cfg(test)]
18003            #[allow(dead_code, unreachable_patterns)]
18004            fn _type_assertion(
18005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18006            ) {
18007                match _t {
18008                    alloy_sol_types::private::AssertTypeEq::<
18009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18010                    >(_) => {}
18011                }
18012            }
18013            #[automatically_derived]
18014            #[doc(hidden)]
18015            impl ::core::convert::From<registerValidatorV3Return>
18016            for UnderlyingRustTuple<'_> {
18017                fn from(value: registerValidatorV3Return) -> Self {
18018                    ()
18019                }
18020            }
18021            #[automatically_derived]
18022            #[doc(hidden)]
18023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18024            for registerValidatorV3Return {
18025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18026                    Self {}
18027                }
18028            }
18029        }
18030        impl registerValidatorV3Return {
18031            fn _tokenize(
18032                &self,
18033            ) -> <registerValidatorV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
18034                ()
18035            }
18036        }
18037        #[automatically_derived]
18038        impl alloy_sol_types::SolCall for registerValidatorV3Call {
18039            type Parameters<'a> = (
18040                BN254::G2Point,
18041                EdOnBN254::EdOnBN254Point,
18042                BN254::G1Point,
18043                alloy::sol_types::sol_data::Bytes,
18044                alloy::sol_types::sol_data::Uint<16>,
18045                alloy::sol_types::sol_data::String,
18046                alloy::sol_types::sol_data::FixedBytes<32>,
18047                alloy::sol_types::sol_data::String,
18048            );
18049            type Token<'a> = <Self::Parameters<
18050                'a,
18051            > as alloy_sol_types::SolType>::Token<'a>;
18052            type Return = registerValidatorV3Return;
18053            type ReturnTuple<'a> = ();
18054            type ReturnToken<'a> = <Self::ReturnTuple<
18055                'a,
18056            > as alloy_sol_types::SolType>::Token<'a>;
18057            const SIGNATURE: &'static str = "registerValidatorV3((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string,bytes32,string)";
18058            const SELECTOR: [u8; 4] = [104u8, 135u8, 205u8, 54u8];
18059            #[inline]
18060            fn new<'a>(
18061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18062            ) -> Self {
18063                tuple.into()
18064            }
18065            #[inline]
18066            fn tokenize(&self) -> Self::Token<'_> {
18067                (
18068                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
18069                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18070                        &self.schnorrVK,
18071                    ),
18072                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
18073                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18074                        &self.schnorrSig,
18075                    ),
18076                    <alloy::sol_types::sol_data::Uint<
18077                        16,
18078                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
18079                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18080                        &self.metadataUri,
18081                    ),
18082                    <alloy::sol_types::sol_data::FixedBytes<
18083                        32,
18084                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
18085                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
18086                        &self.p2pAddr,
18087                    ),
18088                )
18089            }
18090            #[inline]
18091            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18092                registerValidatorV3Return::_tokenize(ret)
18093            }
18094            #[inline]
18095            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18096                <Self::ReturnTuple<
18097                    '_,
18098                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18099                    .map(Into::into)
18100            }
18101            #[inline]
18102            fn abi_decode_returns_validate(
18103                data: &[u8],
18104            ) -> alloy_sol_types::Result<Self::Return> {
18105                <Self::ReturnTuple<
18106                    '_,
18107                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18108                    .map(Into::into)
18109            }
18110        }
18111    };
18112    #[derive(serde::Serialize, serde::Deserialize)]
18113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18114    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
18115```solidity
18116function renounceOwnership() external;
18117```*/
18118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18119    #[derive(Clone)]
18120    pub struct renounceOwnershipCall;
18121    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
18122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18123    #[derive(Clone)]
18124    pub struct renounceOwnershipReturn {}
18125    #[allow(
18126        non_camel_case_types,
18127        non_snake_case,
18128        clippy::pub_underscore_fields,
18129        clippy::style
18130    )]
18131    const _: () = {
18132        use alloy::sol_types as alloy_sol_types;
18133        {
18134            #[doc(hidden)]
18135            #[allow(dead_code)]
18136            type UnderlyingSolTuple<'a> = ();
18137            #[doc(hidden)]
18138            type UnderlyingRustTuple<'a> = ();
18139            #[cfg(test)]
18140            #[allow(dead_code, unreachable_patterns)]
18141            fn _type_assertion(
18142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18143            ) {
18144                match _t {
18145                    alloy_sol_types::private::AssertTypeEq::<
18146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18147                    >(_) => {}
18148                }
18149            }
18150            #[automatically_derived]
18151            #[doc(hidden)]
18152            impl ::core::convert::From<renounceOwnershipCall>
18153            for UnderlyingRustTuple<'_> {
18154                fn from(value: renounceOwnershipCall) -> Self {
18155                    ()
18156                }
18157            }
18158            #[automatically_derived]
18159            #[doc(hidden)]
18160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18161            for renounceOwnershipCall {
18162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18163                    Self
18164                }
18165            }
18166        }
18167        {
18168            #[doc(hidden)]
18169            #[allow(dead_code)]
18170            type UnderlyingSolTuple<'a> = ();
18171            #[doc(hidden)]
18172            type UnderlyingRustTuple<'a> = ();
18173            #[cfg(test)]
18174            #[allow(dead_code, unreachable_patterns)]
18175            fn _type_assertion(
18176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18177            ) {
18178                match _t {
18179                    alloy_sol_types::private::AssertTypeEq::<
18180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18181                    >(_) => {}
18182                }
18183            }
18184            #[automatically_derived]
18185            #[doc(hidden)]
18186            impl ::core::convert::From<renounceOwnershipReturn>
18187            for UnderlyingRustTuple<'_> {
18188                fn from(value: renounceOwnershipReturn) -> Self {
18189                    ()
18190                }
18191            }
18192            #[automatically_derived]
18193            #[doc(hidden)]
18194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18195            for renounceOwnershipReturn {
18196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18197                    Self {}
18198                }
18199            }
18200        }
18201        impl renounceOwnershipReturn {
18202            fn _tokenize(
18203                &self,
18204            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18205                ()
18206            }
18207        }
18208        #[automatically_derived]
18209        impl alloy_sol_types::SolCall for renounceOwnershipCall {
18210            type Parameters<'a> = ();
18211            type Token<'a> = <Self::Parameters<
18212                'a,
18213            > as alloy_sol_types::SolType>::Token<'a>;
18214            type Return = renounceOwnershipReturn;
18215            type ReturnTuple<'a> = ();
18216            type ReturnToken<'a> = <Self::ReturnTuple<
18217                'a,
18218            > as alloy_sol_types::SolType>::Token<'a>;
18219            const SIGNATURE: &'static str = "renounceOwnership()";
18220            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
18221            #[inline]
18222            fn new<'a>(
18223                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18224            ) -> Self {
18225                tuple.into()
18226            }
18227            #[inline]
18228            fn tokenize(&self) -> Self::Token<'_> {
18229                ()
18230            }
18231            #[inline]
18232            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18233                renounceOwnershipReturn::_tokenize(ret)
18234            }
18235            #[inline]
18236            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18237                <Self::ReturnTuple<
18238                    '_,
18239                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18240                    .map(Into::into)
18241            }
18242            #[inline]
18243            fn abi_decode_returns_validate(
18244                data: &[u8],
18245            ) -> alloy_sol_types::Result<Self::Return> {
18246                <Self::ReturnTuple<
18247                    '_,
18248                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18249                    .map(Into::into)
18250            }
18251        }
18252    };
18253    #[derive(serde::Serialize, serde::Deserialize)]
18254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18255    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
18256```solidity
18257function renounceRole(bytes32 role, address callerConfirmation) external;
18258```*/
18259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18260    #[derive(Clone)]
18261    pub struct renounceRoleCall {
18262        #[allow(missing_docs)]
18263        pub role: alloy::sol_types::private::FixedBytes<32>,
18264        #[allow(missing_docs)]
18265        pub callerConfirmation: alloy::sol_types::private::Address,
18266    }
18267    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
18268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18269    #[derive(Clone)]
18270    pub struct renounceRoleReturn {}
18271    #[allow(
18272        non_camel_case_types,
18273        non_snake_case,
18274        clippy::pub_underscore_fields,
18275        clippy::style
18276    )]
18277    const _: () = {
18278        use alloy::sol_types as alloy_sol_types;
18279        {
18280            #[doc(hidden)]
18281            #[allow(dead_code)]
18282            type UnderlyingSolTuple<'a> = (
18283                alloy::sol_types::sol_data::FixedBytes<32>,
18284                alloy::sol_types::sol_data::Address,
18285            );
18286            #[doc(hidden)]
18287            type UnderlyingRustTuple<'a> = (
18288                alloy::sol_types::private::FixedBytes<32>,
18289                alloy::sol_types::private::Address,
18290            );
18291            #[cfg(test)]
18292            #[allow(dead_code, unreachable_patterns)]
18293            fn _type_assertion(
18294                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18295            ) {
18296                match _t {
18297                    alloy_sol_types::private::AssertTypeEq::<
18298                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18299                    >(_) => {}
18300                }
18301            }
18302            #[automatically_derived]
18303            #[doc(hidden)]
18304            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
18305                fn from(value: renounceRoleCall) -> Self {
18306                    (value.role, value.callerConfirmation)
18307                }
18308            }
18309            #[automatically_derived]
18310            #[doc(hidden)]
18311            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
18312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18313                    Self {
18314                        role: tuple.0,
18315                        callerConfirmation: tuple.1,
18316                    }
18317                }
18318            }
18319        }
18320        {
18321            #[doc(hidden)]
18322            #[allow(dead_code)]
18323            type UnderlyingSolTuple<'a> = ();
18324            #[doc(hidden)]
18325            type UnderlyingRustTuple<'a> = ();
18326            #[cfg(test)]
18327            #[allow(dead_code, unreachable_patterns)]
18328            fn _type_assertion(
18329                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18330            ) {
18331                match _t {
18332                    alloy_sol_types::private::AssertTypeEq::<
18333                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18334                    >(_) => {}
18335                }
18336            }
18337            #[automatically_derived]
18338            #[doc(hidden)]
18339            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
18340                fn from(value: renounceRoleReturn) -> Self {
18341                    ()
18342                }
18343            }
18344            #[automatically_derived]
18345            #[doc(hidden)]
18346            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
18347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18348                    Self {}
18349                }
18350            }
18351        }
18352        impl renounceRoleReturn {
18353            fn _tokenize(
18354                &self,
18355            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18356                ()
18357            }
18358        }
18359        #[automatically_derived]
18360        impl alloy_sol_types::SolCall for renounceRoleCall {
18361            type Parameters<'a> = (
18362                alloy::sol_types::sol_data::FixedBytes<32>,
18363                alloy::sol_types::sol_data::Address,
18364            );
18365            type Token<'a> = <Self::Parameters<
18366                'a,
18367            > as alloy_sol_types::SolType>::Token<'a>;
18368            type Return = renounceRoleReturn;
18369            type ReturnTuple<'a> = ();
18370            type ReturnToken<'a> = <Self::ReturnTuple<
18371                'a,
18372            > as alloy_sol_types::SolType>::Token<'a>;
18373            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
18374            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
18375            #[inline]
18376            fn new<'a>(
18377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18378            ) -> Self {
18379                tuple.into()
18380            }
18381            #[inline]
18382            fn tokenize(&self) -> Self::Token<'_> {
18383                (
18384                    <alloy::sol_types::sol_data::FixedBytes<
18385                        32,
18386                    > as alloy_sol_types::SolType>::tokenize(&self.role),
18387                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18388                        &self.callerConfirmation,
18389                    ),
18390                )
18391            }
18392            #[inline]
18393            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18394                renounceRoleReturn::_tokenize(ret)
18395            }
18396            #[inline]
18397            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18398                <Self::ReturnTuple<
18399                    '_,
18400                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18401                    .map(Into::into)
18402            }
18403            #[inline]
18404            fn abi_decode_returns_validate(
18405                data: &[u8],
18406            ) -> alloy_sol_types::Result<Self::Return> {
18407                <Self::ReturnTuple<
18408                    '_,
18409                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18410                    .map(Into::into)
18411            }
18412        }
18413    };
18414    #[derive(serde::Serialize, serde::Deserialize)]
18415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18416    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
18417```solidity
18418function revokeRole(bytes32 role, address account) external;
18419```*/
18420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18421    #[derive(Clone)]
18422    pub struct revokeRoleCall {
18423        #[allow(missing_docs)]
18424        pub role: alloy::sol_types::private::FixedBytes<32>,
18425        #[allow(missing_docs)]
18426        pub account: alloy::sol_types::private::Address,
18427    }
18428    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
18429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18430    #[derive(Clone)]
18431    pub struct revokeRoleReturn {}
18432    #[allow(
18433        non_camel_case_types,
18434        non_snake_case,
18435        clippy::pub_underscore_fields,
18436        clippy::style
18437    )]
18438    const _: () = {
18439        use alloy::sol_types as alloy_sol_types;
18440        {
18441            #[doc(hidden)]
18442            #[allow(dead_code)]
18443            type UnderlyingSolTuple<'a> = (
18444                alloy::sol_types::sol_data::FixedBytes<32>,
18445                alloy::sol_types::sol_data::Address,
18446            );
18447            #[doc(hidden)]
18448            type UnderlyingRustTuple<'a> = (
18449                alloy::sol_types::private::FixedBytes<32>,
18450                alloy::sol_types::private::Address,
18451            );
18452            #[cfg(test)]
18453            #[allow(dead_code, unreachable_patterns)]
18454            fn _type_assertion(
18455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18456            ) {
18457                match _t {
18458                    alloy_sol_types::private::AssertTypeEq::<
18459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18460                    >(_) => {}
18461                }
18462            }
18463            #[automatically_derived]
18464            #[doc(hidden)]
18465            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
18466                fn from(value: revokeRoleCall) -> Self {
18467                    (value.role, value.account)
18468                }
18469            }
18470            #[automatically_derived]
18471            #[doc(hidden)]
18472            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
18473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18474                    Self {
18475                        role: tuple.0,
18476                        account: tuple.1,
18477                    }
18478                }
18479            }
18480        }
18481        {
18482            #[doc(hidden)]
18483            #[allow(dead_code)]
18484            type UnderlyingSolTuple<'a> = ();
18485            #[doc(hidden)]
18486            type UnderlyingRustTuple<'a> = ();
18487            #[cfg(test)]
18488            #[allow(dead_code, unreachable_patterns)]
18489            fn _type_assertion(
18490                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18491            ) {
18492                match _t {
18493                    alloy_sol_types::private::AssertTypeEq::<
18494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18495                    >(_) => {}
18496                }
18497            }
18498            #[automatically_derived]
18499            #[doc(hidden)]
18500            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
18501                fn from(value: revokeRoleReturn) -> Self {
18502                    ()
18503                }
18504            }
18505            #[automatically_derived]
18506            #[doc(hidden)]
18507            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
18508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18509                    Self {}
18510                }
18511            }
18512        }
18513        impl revokeRoleReturn {
18514            fn _tokenize(
18515                &self,
18516            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18517                ()
18518            }
18519        }
18520        #[automatically_derived]
18521        impl alloy_sol_types::SolCall for revokeRoleCall {
18522            type Parameters<'a> = (
18523                alloy::sol_types::sol_data::FixedBytes<32>,
18524                alloy::sol_types::sol_data::Address,
18525            );
18526            type Token<'a> = <Self::Parameters<
18527                'a,
18528            > as alloy_sol_types::SolType>::Token<'a>;
18529            type Return = revokeRoleReturn;
18530            type ReturnTuple<'a> = ();
18531            type ReturnToken<'a> = <Self::ReturnTuple<
18532                'a,
18533            > as alloy_sol_types::SolType>::Token<'a>;
18534            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
18535            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
18536            #[inline]
18537            fn new<'a>(
18538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18539            ) -> Self {
18540                tuple.into()
18541            }
18542            #[inline]
18543            fn tokenize(&self) -> Self::Token<'_> {
18544                (
18545                    <alloy::sol_types::sol_data::FixedBytes<
18546                        32,
18547                    > as alloy_sol_types::SolType>::tokenize(&self.role),
18548                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18549                        &self.account,
18550                    ),
18551                )
18552            }
18553            #[inline]
18554            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18555                revokeRoleReturn::_tokenize(ret)
18556            }
18557            #[inline]
18558            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18559                <Self::ReturnTuple<
18560                    '_,
18561                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18562                    .map(Into::into)
18563            }
18564            #[inline]
18565            fn abi_decode_returns_validate(
18566                data: &[u8],
18567            ) -> alloy_sol_types::Result<Self::Return> {
18568                <Self::ReturnTuple<
18569                    '_,
18570                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18571                    .map(Into::into)
18572            }
18573        }
18574    };
18575    #[derive(serde::Serialize, serde::Deserialize)]
18576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18577    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
18578```solidity
18579function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
18580```*/
18581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18582    #[derive(Clone)]
18583    pub struct schnorrKeysCall {
18584        #[allow(missing_docs)]
18585        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
18586    }
18587    #[derive(serde::Serialize, serde::Deserialize)]
18588    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18589    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
18590    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18591    #[derive(Clone)]
18592    pub struct schnorrKeysReturn {
18593        #[allow(missing_docs)]
18594        pub used: bool,
18595    }
18596    #[allow(
18597        non_camel_case_types,
18598        non_snake_case,
18599        clippy::pub_underscore_fields,
18600        clippy::style
18601    )]
18602    const _: () = {
18603        use alloy::sol_types as alloy_sol_types;
18604        {
18605            #[doc(hidden)]
18606            #[allow(dead_code)]
18607            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18608            #[doc(hidden)]
18609            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
18610            #[cfg(test)]
18611            #[allow(dead_code, unreachable_patterns)]
18612            fn _type_assertion(
18613                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18614            ) {
18615                match _t {
18616                    alloy_sol_types::private::AssertTypeEq::<
18617                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18618                    >(_) => {}
18619                }
18620            }
18621            #[automatically_derived]
18622            #[doc(hidden)]
18623            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
18624                fn from(value: schnorrKeysCall) -> Self {
18625                    (value.schnorrKey,)
18626                }
18627            }
18628            #[automatically_derived]
18629            #[doc(hidden)]
18630            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
18631                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18632                    Self { schnorrKey: tuple.0 }
18633                }
18634            }
18635        }
18636        {
18637            #[doc(hidden)]
18638            #[allow(dead_code)]
18639            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18640            #[doc(hidden)]
18641            type UnderlyingRustTuple<'a> = (bool,);
18642            #[cfg(test)]
18643            #[allow(dead_code, unreachable_patterns)]
18644            fn _type_assertion(
18645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18646            ) {
18647                match _t {
18648                    alloy_sol_types::private::AssertTypeEq::<
18649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18650                    >(_) => {}
18651                }
18652            }
18653            #[automatically_derived]
18654            #[doc(hidden)]
18655            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
18656                fn from(value: schnorrKeysReturn) -> Self {
18657                    (value.used,)
18658                }
18659            }
18660            #[automatically_derived]
18661            #[doc(hidden)]
18662            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
18663                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18664                    Self { used: tuple.0 }
18665                }
18666            }
18667        }
18668        #[automatically_derived]
18669        impl alloy_sol_types::SolCall for schnorrKeysCall {
18670            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
18671            type Token<'a> = <Self::Parameters<
18672                'a,
18673            > as alloy_sol_types::SolType>::Token<'a>;
18674            type Return = bool;
18675            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18676            type ReturnToken<'a> = <Self::ReturnTuple<
18677                'a,
18678            > as alloy_sol_types::SolType>::Token<'a>;
18679            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
18680            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
18681            #[inline]
18682            fn new<'a>(
18683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18684            ) -> Self {
18685                tuple.into()
18686            }
18687            #[inline]
18688            fn tokenize(&self) -> Self::Token<'_> {
18689                (
18690                    <alloy::sol_types::sol_data::FixedBytes<
18691                        32,
18692                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
18693                )
18694            }
18695            #[inline]
18696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18697                (
18698                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
18699                        ret,
18700                    ),
18701                )
18702            }
18703            #[inline]
18704            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18705                <Self::ReturnTuple<
18706                    '_,
18707                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18708                    .map(|r| {
18709                        let r: schnorrKeysReturn = r.into();
18710                        r.used
18711                    })
18712            }
18713            #[inline]
18714            fn abi_decode_returns_validate(
18715                data: &[u8],
18716            ) -> alloy_sol_types::Result<Self::Return> {
18717                <Self::ReturnTuple<
18718                    '_,
18719                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18720                    .map(|r| {
18721                        let r: schnorrKeysReturn = r.into();
18722                        r.used
18723                    })
18724            }
18725        }
18726    };
18727    #[derive(serde::Serialize, serde::Deserialize)]
18728    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18729    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
18730```solidity
18731function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
18732```*/
18733    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18734    #[derive(Clone)]
18735    pub struct setMaxCommissionIncreaseCall {
18736        #[allow(missing_docs)]
18737        pub newMaxIncrease: u16,
18738    }
18739    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
18740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18741    #[derive(Clone)]
18742    pub struct setMaxCommissionIncreaseReturn {}
18743    #[allow(
18744        non_camel_case_types,
18745        non_snake_case,
18746        clippy::pub_underscore_fields,
18747        clippy::style
18748    )]
18749    const _: () = {
18750        use alloy::sol_types as alloy_sol_types;
18751        {
18752            #[doc(hidden)]
18753            #[allow(dead_code)]
18754            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18755            #[doc(hidden)]
18756            type UnderlyingRustTuple<'a> = (u16,);
18757            #[cfg(test)]
18758            #[allow(dead_code, unreachable_patterns)]
18759            fn _type_assertion(
18760                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18761            ) {
18762                match _t {
18763                    alloy_sol_types::private::AssertTypeEq::<
18764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18765                    >(_) => {}
18766                }
18767            }
18768            #[automatically_derived]
18769            #[doc(hidden)]
18770            impl ::core::convert::From<setMaxCommissionIncreaseCall>
18771            for UnderlyingRustTuple<'_> {
18772                fn from(value: setMaxCommissionIncreaseCall) -> Self {
18773                    (value.newMaxIncrease,)
18774                }
18775            }
18776            #[automatically_derived]
18777            #[doc(hidden)]
18778            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18779            for setMaxCommissionIncreaseCall {
18780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18781                    Self { newMaxIncrease: tuple.0 }
18782                }
18783            }
18784        }
18785        {
18786            #[doc(hidden)]
18787            #[allow(dead_code)]
18788            type UnderlyingSolTuple<'a> = ();
18789            #[doc(hidden)]
18790            type UnderlyingRustTuple<'a> = ();
18791            #[cfg(test)]
18792            #[allow(dead_code, unreachable_patterns)]
18793            fn _type_assertion(
18794                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18795            ) {
18796                match _t {
18797                    alloy_sol_types::private::AssertTypeEq::<
18798                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18799                    >(_) => {}
18800                }
18801            }
18802            #[automatically_derived]
18803            #[doc(hidden)]
18804            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
18805            for UnderlyingRustTuple<'_> {
18806                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
18807                    ()
18808                }
18809            }
18810            #[automatically_derived]
18811            #[doc(hidden)]
18812            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18813            for setMaxCommissionIncreaseReturn {
18814                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18815                    Self {}
18816                }
18817            }
18818        }
18819        impl setMaxCommissionIncreaseReturn {
18820            fn _tokenize(
18821                &self,
18822            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
18823                '_,
18824            > {
18825                ()
18826            }
18827        }
18828        #[automatically_derived]
18829        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
18830            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18831            type Token<'a> = <Self::Parameters<
18832                'a,
18833            > as alloy_sol_types::SolType>::Token<'a>;
18834            type Return = setMaxCommissionIncreaseReturn;
18835            type ReturnTuple<'a> = ();
18836            type ReturnToken<'a> = <Self::ReturnTuple<
18837                'a,
18838            > as alloy_sol_types::SolType>::Token<'a>;
18839            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
18840            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
18841            #[inline]
18842            fn new<'a>(
18843                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18844            ) -> Self {
18845                tuple.into()
18846            }
18847            #[inline]
18848            fn tokenize(&self) -> Self::Token<'_> {
18849                (
18850                    <alloy::sol_types::sol_data::Uint<
18851                        16,
18852                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
18853                )
18854            }
18855            #[inline]
18856            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18857                setMaxCommissionIncreaseReturn::_tokenize(ret)
18858            }
18859            #[inline]
18860            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18861                <Self::ReturnTuple<
18862                    '_,
18863                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18864                    .map(Into::into)
18865            }
18866            #[inline]
18867            fn abi_decode_returns_validate(
18868                data: &[u8],
18869            ) -> alloy_sol_types::Result<Self::Return> {
18870                <Self::ReturnTuple<
18871                    '_,
18872                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18873                    .map(Into::into)
18874            }
18875        }
18876    };
18877    #[derive(serde::Serialize, serde::Deserialize)]
18878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18879    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
18880```solidity
18881function setMinCommissionUpdateInterval(uint256 newInterval) external;
18882```*/
18883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18884    #[derive(Clone)]
18885    pub struct setMinCommissionUpdateIntervalCall {
18886        #[allow(missing_docs)]
18887        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
18888    }
18889    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
18890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18891    #[derive(Clone)]
18892    pub struct setMinCommissionUpdateIntervalReturn {}
18893    #[allow(
18894        non_camel_case_types,
18895        non_snake_case,
18896        clippy::pub_underscore_fields,
18897        clippy::style
18898    )]
18899    const _: () = {
18900        use alloy::sol_types as alloy_sol_types;
18901        {
18902            #[doc(hidden)]
18903            #[allow(dead_code)]
18904            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
18905            #[doc(hidden)]
18906            type UnderlyingRustTuple<'a> = (
18907                alloy::sol_types::private::primitives::aliases::U256,
18908            );
18909            #[cfg(test)]
18910            #[allow(dead_code, unreachable_patterns)]
18911            fn _type_assertion(
18912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18913            ) {
18914                match _t {
18915                    alloy_sol_types::private::AssertTypeEq::<
18916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18917                    >(_) => {}
18918                }
18919            }
18920            #[automatically_derived]
18921            #[doc(hidden)]
18922            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
18923            for UnderlyingRustTuple<'_> {
18924                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
18925                    (value.newInterval,)
18926                }
18927            }
18928            #[automatically_derived]
18929            #[doc(hidden)]
18930            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18931            for setMinCommissionUpdateIntervalCall {
18932                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18933                    Self { newInterval: tuple.0 }
18934                }
18935            }
18936        }
18937        {
18938            #[doc(hidden)]
18939            #[allow(dead_code)]
18940            type UnderlyingSolTuple<'a> = ();
18941            #[doc(hidden)]
18942            type UnderlyingRustTuple<'a> = ();
18943            #[cfg(test)]
18944            #[allow(dead_code, unreachable_patterns)]
18945            fn _type_assertion(
18946                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18947            ) {
18948                match _t {
18949                    alloy_sol_types::private::AssertTypeEq::<
18950                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18951                    >(_) => {}
18952                }
18953            }
18954            #[automatically_derived]
18955            #[doc(hidden)]
18956            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
18957            for UnderlyingRustTuple<'_> {
18958                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
18959                    ()
18960                }
18961            }
18962            #[automatically_derived]
18963            #[doc(hidden)]
18964            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18965            for setMinCommissionUpdateIntervalReturn {
18966                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18967                    Self {}
18968                }
18969            }
18970        }
18971        impl setMinCommissionUpdateIntervalReturn {
18972            fn _tokenize(
18973                &self,
18974            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
18975                '_,
18976            > {
18977                ()
18978            }
18979        }
18980        #[automatically_derived]
18981        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
18982            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
18983            type Token<'a> = <Self::Parameters<
18984                'a,
18985            > as alloy_sol_types::SolType>::Token<'a>;
18986            type Return = setMinCommissionUpdateIntervalReturn;
18987            type ReturnTuple<'a> = ();
18988            type ReturnToken<'a> = <Self::ReturnTuple<
18989                'a,
18990            > as alloy_sol_types::SolType>::Token<'a>;
18991            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
18992            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
18993            #[inline]
18994            fn new<'a>(
18995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18996            ) -> Self {
18997                tuple.into()
18998            }
18999            #[inline]
19000            fn tokenize(&self) -> Self::Token<'_> {
19001                (
19002                    <alloy::sol_types::sol_data::Uint<
19003                        256,
19004                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
19005                )
19006            }
19007            #[inline]
19008            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19009                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
19010            }
19011            #[inline]
19012            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19013                <Self::ReturnTuple<
19014                    '_,
19015                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19016                    .map(Into::into)
19017            }
19018            #[inline]
19019            fn abi_decode_returns_validate(
19020                data: &[u8],
19021            ) -> alloy_sol_types::Result<Self::Return> {
19022                <Self::ReturnTuple<
19023                    '_,
19024                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19025                    .map(Into::into)
19026            }
19027        }
19028    };
19029    #[derive(serde::Serialize, serde::Deserialize)]
19030    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19031    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
19032```solidity
19033function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
19034```*/
19035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19036    #[derive(Clone)]
19037    pub struct setMinDelegateAmountCall {
19038        #[allow(missing_docs)]
19039        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
19040    }
19041    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
19042    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19043    #[derive(Clone)]
19044    pub struct setMinDelegateAmountReturn {}
19045    #[allow(
19046        non_camel_case_types,
19047        non_snake_case,
19048        clippy::pub_underscore_fields,
19049        clippy::style
19050    )]
19051    const _: () = {
19052        use alloy::sol_types as alloy_sol_types;
19053        {
19054            #[doc(hidden)]
19055            #[allow(dead_code)]
19056            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19057            #[doc(hidden)]
19058            type UnderlyingRustTuple<'a> = (
19059                alloy::sol_types::private::primitives::aliases::U256,
19060            );
19061            #[cfg(test)]
19062            #[allow(dead_code, unreachable_patterns)]
19063            fn _type_assertion(
19064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19065            ) {
19066                match _t {
19067                    alloy_sol_types::private::AssertTypeEq::<
19068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19069                    >(_) => {}
19070                }
19071            }
19072            #[automatically_derived]
19073            #[doc(hidden)]
19074            impl ::core::convert::From<setMinDelegateAmountCall>
19075            for UnderlyingRustTuple<'_> {
19076                fn from(value: setMinDelegateAmountCall) -> Self {
19077                    (value.newMinDelegateAmount,)
19078                }
19079            }
19080            #[automatically_derived]
19081            #[doc(hidden)]
19082            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19083            for setMinDelegateAmountCall {
19084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19085                    Self {
19086                        newMinDelegateAmount: tuple.0,
19087                    }
19088                }
19089            }
19090        }
19091        {
19092            #[doc(hidden)]
19093            #[allow(dead_code)]
19094            type UnderlyingSolTuple<'a> = ();
19095            #[doc(hidden)]
19096            type UnderlyingRustTuple<'a> = ();
19097            #[cfg(test)]
19098            #[allow(dead_code, unreachable_patterns)]
19099            fn _type_assertion(
19100                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19101            ) {
19102                match _t {
19103                    alloy_sol_types::private::AssertTypeEq::<
19104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19105                    >(_) => {}
19106                }
19107            }
19108            #[automatically_derived]
19109            #[doc(hidden)]
19110            impl ::core::convert::From<setMinDelegateAmountReturn>
19111            for UnderlyingRustTuple<'_> {
19112                fn from(value: setMinDelegateAmountReturn) -> Self {
19113                    ()
19114                }
19115            }
19116            #[automatically_derived]
19117            #[doc(hidden)]
19118            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19119            for setMinDelegateAmountReturn {
19120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19121                    Self {}
19122                }
19123            }
19124        }
19125        impl setMinDelegateAmountReturn {
19126            fn _tokenize(
19127                &self,
19128            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
19129                '_,
19130            > {
19131                ()
19132            }
19133        }
19134        #[automatically_derived]
19135        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
19136            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19137            type Token<'a> = <Self::Parameters<
19138                'a,
19139            > as alloy_sol_types::SolType>::Token<'a>;
19140            type Return = setMinDelegateAmountReturn;
19141            type ReturnTuple<'a> = ();
19142            type ReturnToken<'a> = <Self::ReturnTuple<
19143                'a,
19144            > as alloy_sol_types::SolType>::Token<'a>;
19145            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
19146            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
19147            #[inline]
19148            fn new<'a>(
19149                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19150            ) -> Self {
19151                tuple.into()
19152            }
19153            #[inline]
19154            fn tokenize(&self) -> Self::Token<'_> {
19155                (
19156                    <alloy::sol_types::sol_data::Uint<
19157                        256,
19158                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
19159                )
19160            }
19161            #[inline]
19162            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19163                setMinDelegateAmountReturn::_tokenize(ret)
19164            }
19165            #[inline]
19166            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19167                <Self::ReturnTuple<
19168                    '_,
19169                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19170                    .map(Into::into)
19171            }
19172            #[inline]
19173            fn abi_decode_returns_validate(
19174                data: &[u8],
19175            ) -> alloy_sol_types::Result<Self::Return> {
19176                <Self::ReturnTuple<
19177                    '_,
19178                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19179                    .map(Into::into)
19180            }
19181        }
19182    };
19183    #[derive(serde::Serialize, serde::Deserialize)]
19184    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19185    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
19186```solidity
19187function supportsInterface(bytes4 interfaceId) external view returns (bool);
19188```*/
19189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19190    #[derive(Clone)]
19191    pub struct supportsInterfaceCall {
19192        #[allow(missing_docs)]
19193        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
19194    }
19195    #[derive(serde::Serialize, serde::Deserialize)]
19196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19197    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
19198    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19199    #[derive(Clone)]
19200    pub struct supportsInterfaceReturn {
19201        #[allow(missing_docs)]
19202        pub _0: bool,
19203    }
19204    #[allow(
19205        non_camel_case_types,
19206        non_snake_case,
19207        clippy::pub_underscore_fields,
19208        clippy::style
19209    )]
19210    const _: () = {
19211        use alloy::sol_types as alloy_sol_types;
19212        {
19213            #[doc(hidden)]
19214            #[allow(dead_code)]
19215            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
19216            #[doc(hidden)]
19217            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
19218            #[cfg(test)]
19219            #[allow(dead_code, unreachable_patterns)]
19220            fn _type_assertion(
19221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19222            ) {
19223                match _t {
19224                    alloy_sol_types::private::AssertTypeEq::<
19225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19226                    >(_) => {}
19227                }
19228            }
19229            #[automatically_derived]
19230            #[doc(hidden)]
19231            impl ::core::convert::From<supportsInterfaceCall>
19232            for UnderlyingRustTuple<'_> {
19233                fn from(value: supportsInterfaceCall) -> Self {
19234                    (value.interfaceId,)
19235                }
19236            }
19237            #[automatically_derived]
19238            #[doc(hidden)]
19239            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19240            for supportsInterfaceCall {
19241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19242                    Self { interfaceId: tuple.0 }
19243                }
19244            }
19245        }
19246        {
19247            #[doc(hidden)]
19248            #[allow(dead_code)]
19249            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19250            #[doc(hidden)]
19251            type UnderlyingRustTuple<'a> = (bool,);
19252            #[cfg(test)]
19253            #[allow(dead_code, unreachable_patterns)]
19254            fn _type_assertion(
19255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19256            ) {
19257                match _t {
19258                    alloy_sol_types::private::AssertTypeEq::<
19259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19260                    >(_) => {}
19261                }
19262            }
19263            #[automatically_derived]
19264            #[doc(hidden)]
19265            impl ::core::convert::From<supportsInterfaceReturn>
19266            for UnderlyingRustTuple<'_> {
19267                fn from(value: supportsInterfaceReturn) -> Self {
19268                    (value._0,)
19269                }
19270            }
19271            #[automatically_derived]
19272            #[doc(hidden)]
19273            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19274            for supportsInterfaceReturn {
19275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19276                    Self { _0: tuple.0 }
19277                }
19278            }
19279        }
19280        #[automatically_derived]
19281        impl alloy_sol_types::SolCall for supportsInterfaceCall {
19282            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
19283            type Token<'a> = <Self::Parameters<
19284                'a,
19285            > as alloy_sol_types::SolType>::Token<'a>;
19286            type Return = bool;
19287            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
19288            type ReturnToken<'a> = <Self::ReturnTuple<
19289                'a,
19290            > as alloy_sol_types::SolType>::Token<'a>;
19291            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
19292            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
19293            #[inline]
19294            fn new<'a>(
19295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19296            ) -> Self {
19297                tuple.into()
19298            }
19299            #[inline]
19300            fn tokenize(&self) -> Self::Token<'_> {
19301                (
19302                    <alloy::sol_types::sol_data::FixedBytes<
19303                        4,
19304                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
19305                )
19306            }
19307            #[inline]
19308            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19309                (
19310                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
19311                        ret,
19312                    ),
19313                )
19314            }
19315            #[inline]
19316            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19317                <Self::ReturnTuple<
19318                    '_,
19319                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19320                    .map(|r| {
19321                        let r: supportsInterfaceReturn = r.into();
19322                        r._0
19323                    })
19324            }
19325            #[inline]
19326            fn abi_decode_returns_validate(
19327                data: &[u8],
19328            ) -> alloy_sol_types::Result<Self::Return> {
19329                <Self::ReturnTuple<
19330                    '_,
19331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19332                    .map(|r| {
19333                        let r: supportsInterfaceReturn = r.into();
19334                        r._0
19335                    })
19336            }
19337        }
19338    };
19339    #[derive(serde::Serialize, serde::Deserialize)]
19340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19341    /**Function with signature `token()` and selector `0xfc0c546a`.
19342```solidity
19343function token() external view returns (address);
19344```*/
19345    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19346    #[derive(Clone)]
19347    pub struct tokenCall;
19348    #[derive(serde::Serialize, serde::Deserialize)]
19349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19350    ///Container type for the return parameters of the [`token()`](tokenCall) function.
19351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19352    #[derive(Clone)]
19353    pub struct tokenReturn {
19354        #[allow(missing_docs)]
19355        pub _0: alloy::sol_types::private::Address,
19356    }
19357    #[allow(
19358        non_camel_case_types,
19359        non_snake_case,
19360        clippy::pub_underscore_fields,
19361        clippy::style
19362    )]
19363    const _: () = {
19364        use alloy::sol_types as alloy_sol_types;
19365        {
19366            #[doc(hidden)]
19367            #[allow(dead_code)]
19368            type UnderlyingSolTuple<'a> = ();
19369            #[doc(hidden)]
19370            type UnderlyingRustTuple<'a> = ();
19371            #[cfg(test)]
19372            #[allow(dead_code, unreachable_patterns)]
19373            fn _type_assertion(
19374                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19375            ) {
19376                match _t {
19377                    alloy_sol_types::private::AssertTypeEq::<
19378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19379                    >(_) => {}
19380                }
19381            }
19382            #[automatically_derived]
19383            #[doc(hidden)]
19384            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
19385                fn from(value: tokenCall) -> Self {
19386                    ()
19387                }
19388            }
19389            #[automatically_derived]
19390            #[doc(hidden)]
19391            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
19392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19393                    Self
19394                }
19395            }
19396        }
19397        {
19398            #[doc(hidden)]
19399            #[allow(dead_code)]
19400            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19401            #[doc(hidden)]
19402            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19403            #[cfg(test)]
19404            #[allow(dead_code, unreachable_patterns)]
19405            fn _type_assertion(
19406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19407            ) {
19408                match _t {
19409                    alloy_sol_types::private::AssertTypeEq::<
19410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19411                    >(_) => {}
19412                }
19413            }
19414            #[automatically_derived]
19415            #[doc(hidden)]
19416            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
19417                fn from(value: tokenReturn) -> Self {
19418                    (value._0,)
19419                }
19420            }
19421            #[automatically_derived]
19422            #[doc(hidden)]
19423            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
19424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19425                    Self { _0: tuple.0 }
19426                }
19427            }
19428        }
19429        #[automatically_derived]
19430        impl alloy_sol_types::SolCall for tokenCall {
19431            type Parameters<'a> = ();
19432            type Token<'a> = <Self::Parameters<
19433                'a,
19434            > as alloy_sol_types::SolType>::Token<'a>;
19435            type Return = alloy::sol_types::private::Address;
19436            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
19437            type ReturnToken<'a> = <Self::ReturnTuple<
19438                'a,
19439            > as alloy_sol_types::SolType>::Token<'a>;
19440            const SIGNATURE: &'static str = "token()";
19441            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
19442            #[inline]
19443            fn new<'a>(
19444                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19445            ) -> Self {
19446                tuple.into()
19447            }
19448            #[inline]
19449            fn tokenize(&self) -> Self::Token<'_> {
19450                ()
19451            }
19452            #[inline]
19453            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19454                (
19455                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19456                        ret,
19457                    ),
19458                )
19459            }
19460            #[inline]
19461            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19462                <Self::ReturnTuple<
19463                    '_,
19464                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19465                    .map(|r| {
19466                        let r: tokenReturn = r.into();
19467                        r._0
19468                    })
19469            }
19470            #[inline]
19471            fn abi_decode_returns_validate(
19472                data: &[u8],
19473            ) -> alloy_sol_types::Result<Self::Return> {
19474                <Self::ReturnTuple<
19475                    '_,
19476                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19477                    .map(|r| {
19478                        let r: tokenReturn = r.into();
19479                        r._0
19480                    })
19481            }
19482        }
19483    };
19484    #[derive(serde::Serialize, serde::Deserialize)]
19485    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19486    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
19487```solidity
19488function transferOwnership(address newOwner) external;
19489```*/
19490    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19491    #[derive(Clone)]
19492    pub struct transferOwnershipCall {
19493        #[allow(missing_docs)]
19494        pub newOwner: alloy::sol_types::private::Address,
19495    }
19496    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
19497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19498    #[derive(Clone)]
19499    pub struct transferOwnershipReturn {}
19500    #[allow(
19501        non_camel_case_types,
19502        non_snake_case,
19503        clippy::pub_underscore_fields,
19504        clippy::style
19505    )]
19506    const _: () = {
19507        use alloy::sol_types as alloy_sol_types;
19508        {
19509            #[doc(hidden)]
19510            #[allow(dead_code)]
19511            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19512            #[doc(hidden)]
19513            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19514            #[cfg(test)]
19515            #[allow(dead_code, unreachable_patterns)]
19516            fn _type_assertion(
19517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19518            ) {
19519                match _t {
19520                    alloy_sol_types::private::AssertTypeEq::<
19521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19522                    >(_) => {}
19523                }
19524            }
19525            #[automatically_derived]
19526            #[doc(hidden)]
19527            impl ::core::convert::From<transferOwnershipCall>
19528            for UnderlyingRustTuple<'_> {
19529                fn from(value: transferOwnershipCall) -> Self {
19530                    (value.newOwner,)
19531                }
19532            }
19533            #[automatically_derived]
19534            #[doc(hidden)]
19535            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19536            for transferOwnershipCall {
19537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19538                    Self { newOwner: tuple.0 }
19539                }
19540            }
19541        }
19542        {
19543            #[doc(hidden)]
19544            #[allow(dead_code)]
19545            type UnderlyingSolTuple<'a> = ();
19546            #[doc(hidden)]
19547            type UnderlyingRustTuple<'a> = ();
19548            #[cfg(test)]
19549            #[allow(dead_code, unreachable_patterns)]
19550            fn _type_assertion(
19551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19552            ) {
19553                match _t {
19554                    alloy_sol_types::private::AssertTypeEq::<
19555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19556                    >(_) => {}
19557                }
19558            }
19559            #[automatically_derived]
19560            #[doc(hidden)]
19561            impl ::core::convert::From<transferOwnershipReturn>
19562            for UnderlyingRustTuple<'_> {
19563                fn from(value: transferOwnershipReturn) -> Self {
19564                    ()
19565                }
19566            }
19567            #[automatically_derived]
19568            #[doc(hidden)]
19569            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19570            for transferOwnershipReturn {
19571                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19572                    Self {}
19573                }
19574            }
19575        }
19576        impl transferOwnershipReturn {
19577            fn _tokenize(
19578                &self,
19579            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19580                ()
19581            }
19582        }
19583        #[automatically_derived]
19584        impl alloy_sol_types::SolCall for transferOwnershipCall {
19585            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19586            type Token<'a> = <Self::Parameters<
19587                'a,
19588            > as alloy_sol_types::SolType>::Token<'a>;
19589            type Return = transferOwnershipReturn;
19590            type ReturnTuple<'a> = ();
19591            type ReturnToken<'a> = <Self::ReturnTuple<
19592                'a,
19593            > as alloy_sol_types::SolType>::Token<'a>;
19594            const SIGNATURE: &'static str = "transferOwnership(address)";
19595            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
19596            #[inline]
19597            fn new<'a>(
19598                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19599            ) -> Self {
19600                tuple.into()
19601            }
19602            #[inline]
19603            fn tokenize(&self) -> Self::Token<'_> {
19604                (
19605                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19606                        &self.newOwner,
19607                    ),
19608                )
19609            }
19610            #[inline]
19611            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19612                transferOwnershipReturn::_tokenize(ret)
19613            }
19614            #[inline]
19615            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19616                <Self::ReturnTuple<
19617                    '_,
19618                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19619                    .map(Into::into)
19620            }
19621            #[inline]
19622            fn abi_decode_returns_validate(
19623                data: &[u8],
19624            ) -> alloy_sol_types::Result<Self::Return> {
19625                <Self::ReturnTuple<
19626                    '_,
19627                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19628                    .map(Into::into)
19629            }
19630        }
19631    };
19632    #[derive(serde::Serialize, serde::Deserialize)]
19633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19634    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
19635```solidity
19636function undelegate(address validator, uint256 amount) external;
19637```*/
19638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19639    #[derive(Clone)]
19640    pub struct undelegateCall {
19641        #[allow(missing_docs)]
19642        pub validator: alloy::sol_types::private::Address,
19643        #[allow(missing_docs)]
19644        pub amount: alloy::sol_types::private::primitives::aliases::U256,
19645    }
19646    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
19647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19648    #[derive(Clone)]
19649    pub struct undelegateReturn {}
19650    #[allow(
19651        non_camel_case_types,
19652        non_snake_case,
19653        clippy::pub_underscore_fields,
19654        clippy::style
19655    )]
19656    const _: () = {
19657        use alloy::sol_types as alloy_sol_types;
19658        {
19659            #[doc(hidden)]
19660            #[allow(dead_code)]
19661            type UnderlyingSolTuple<'a> = (
19662                alloy::sol_types::sol_data::Address,
19663                alloy::sol_types::sol_data::Uint<256>,
19664            );
19665            #[doc(hidden)]
19666            type UnderlyingRustTuple<'a> = (
19667                alloy::sol_types::private::Address,
19668                alloy::sol_types::private::primitives::aliases::U256,
19669            );
19670            #[cfg(test)]
19671            #[allow(dead_code, unreachable_patterns)]
19672            fn _type_assertion(
19673                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19674            ) {
19675                match _t {
19676                    alloy_sol_types::private::AssertTypeEq::<
19677                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19678                    >(_) => {}
19679                }
19680            }
19681            #[automatically_derived]
19682            #[doc(hidden)]
19683            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
19684                fn from(value: undelegateCall) -> Self {
19685                    (value.validator, value.amount)
19686                }
19687            }
19688            #[automatically_derived]
19689            #[doc(hidden)]
19690            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
19691                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19692                    Self {
19693                        validator: tuple.0,
19694                        amount: tuple.1,
19695                    }
19696                }
19697            }
19698        }
19699        {
19700            #[doc(hidden)]
19701            #[allow(dead_code)]
19702            type UnderlyingSolTuple<'a> = ();
19703            #[doc(hidden)]
19704            type UnderlyingRustTuple<'a> = ();
19705            #[cfg(test)]
19706            #[allow(dead_code, unreachable_patterns)]
19707            fn _type_assertion(
19708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19709            ) {
19710                match _t {
19711                    alloy_sol_types::private::AssertTypeEq::<
19712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19713                    >(_) => {}
19714                }
19715            }
19716            #[automatically_derived]
19717            #[doc(hidden)]
19718            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
19719                fn from(value: undelegateReturn) -> Self {
19720                    ()
19721                }
19722            }
19723            #[automatically_derived]
19724            #[doc(hidden)]
19725            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
19726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19727                    Self {}
19728                }
19729            }
19730        }
19731        impl undelegateReturn {
19732            fn _tokenize(
19733                &self,
19734            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19735                ()
19736            }
19737        }
19738        #[automatically_derived]
19739        impl alloy_sol_types::SolCall for undelegateCall {
19740            type Parameters<'a> = (
19741                alloy::sol_types::sol_data::Address,
19742                alloy::sol_types::sol_data::Uint<256>,
19743            );
19744            type Token<'a> = <Self::Parameters<
19745                'a,
19746            > as alloy_sol_types::SolType>::Token<'a>;
19747            type Return = undelegateReturn;
19748            type ReturnTuple<'a> = ();
19749            type ReturnToken<'a> = <Self::ReturnTuple<
19750                'a,
19751            > as alloy_sol_types::SolType>::Token<'a>;
19752            const SIGNATURE: &'static str = "undelegate(address,uint256)";
19753            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
19754            #[inline]
19755            fn new<'a>(
19756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19757            ) -> Self {
19758                tuple.into()
19759            }
19760            #[inline]
19761            fn tokenize(&self) -> Self::Token<'_> {
19762                (
19763                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19764                        &self.validator,
19765                    ),
19766                    <alloy::sol_types::sol_data::Uint<
19767                        256,
19768                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
19769                )
19770            }
19771            #[inline]
19772            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19773                undelegateReturn::_tokenize(ret)
19774            }
19775            #[inline]
19776            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19777                <Self::ReturnTuple<
19778                    '_,
19779                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19780                    .map(Into::into)
19781            }
19782            #[inline]
19783            fn abi_decode_returns_validate(
19784                data: &[u8],
19785            ) -> alloy_sol_types::Result<Self::Return> {
19786                <Self::ReturnTuple<
19787                    '_,
19788                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19789                    .map(Into::into)
19790            }
19791        }
19792    };
19793    #[derive(serde::Serialize, serde::Deserialize)]
19794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19795    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
19796```solidity
19797function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
19798```*/
19799    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19800    #[derive(Clone)]
19801    pub struct undelegationsCall {
19802        #[allow(missing_docs)]
19803        pub validator: alloy::sol_types::private::Address,
19804        #[allow(missing_docs)]
19805        pub delegator: alloy::sol_types::private::Address,
19806    }
19807    #[derive(serde::Serialize, serde::Deserialize)]
19808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19809    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
19810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19811    #[derive(Clone)]
19812    pub struct undelegationsReturn {
19813        #[allow(missing_docs)]
19814        pub amount: alloy::sol_types::private::primitives::aliases::U256,
19815        #[allow(missing_docs)]
19816        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
19817    }
19818    #[allow(
19819        non_camel_case_types,
19820        non_snake_case,
19821        clippy::pub_underscore_fields,
19822        clippy::style
19823    )]
19824    const _: () = {
19825        use alloy::sol_types as alloy_sol_types;
19826        {
19827            #[doc(hidden)]
19828            #[allow(dead_code)]
19829            type UnderlyingSolTuple<'a> = (
19830                alloy::sol_types::sol_data::Address,
19831                alloy::sol_types::sol_data::Address,
19832            );
19833            #[doc(hidden)]
19834            type UnderlyingRustTuple<'a> = (
19835                alloy::sol_types::private::Address,
19836                alloy::sol_types::private::Address,
19837            );
19838            #[cfg(test)]
19839            #[allow(dead_code, unreachable_patterns)]
19840            fn _type_assertion(
19841                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19842            ) {
19843                match _t {
19844                    alloy_sol_types::private::AssertTypeEq::<
19845                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19846                    >(_) => {}
19847                }
19848            }
19849            #[automatically_derived]
19850            #[doc(hidden)]
19851            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
19852                fn from(value: undelegationsCall) -> Self {
19853                    (value.validator, value.delegator)
19854                }
19855            }
19856            #[automatically_derived]
19857            #[doc(hidden)]
19858            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
19859                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19860                    Self {
19861                        validator: tuple.0,
19862                        delegator: tuple.1,
19863                    }
19864                }
19865            }
19866        }
19867        {
19868            #[doc(hidden)]
19869            #[allow(dead_code)]
19870            type UnderlyingSolTuple<'a> = (
19871                alloy::sol_types::sol_data::Uint<256>,
19872                alloy::sol_types::sol_data::Uint<256>,
19873            );
19874            #[doc(hidden)]
19875            type UnderlyingRustTuple<'a> = (
19876                alloy::sol_types::private::primitives::aliases::U256,
19877                alloy::sol_types::private::primitives::aliases::U256,
19878            );
19879            #[cfg(test)]
19880            #[allow(dead_code, unreachable_patterns)]
19881            fn _type_assertion(
19882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19883            ) {
19884                match _t {
19885                    alloy_sol_types::private::AssertTypeEq::<
19886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19887                    >(_) => {}
19888                }
19889            }
19890            #[automatically_derived]
19891            #[doc(hidden)]
19892            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
19893                fn from(value: undelegationsReturn) -> Self {
19894                    (value.amount, value.unlocksAt)
19895                }
19896            }
19897            #[automatically_derived]
19898            #[doc(hidden)]
19899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
19900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19901                    Self {
19902                        amount: tuple.0,
19903                        unlocksAt: tuple.1,
19904                    }
19905                }
19906            }
19907        }
19908        impl undelegationsReturn {
19909            fn _tokenize(
19910                &self,
19911            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19912                (
19913                    <alloy::sol_types::sol_data::Uint<
19914                        256,
19915                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
19916                    <alloy::sol_types::sol_data::Uint<
19917                        256,
19918                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
19919                )
19920            }
19921        }
19922        #[automatically_derived]
19923        impl alloy_sol_types::SolCall for undelegationsCall {
19924            type Parameters<'a> = (
19925                alloy::sol_types::sol_data::Address,
19926                alloy::sol_types::sol_data::Address,
19927            );
19928            type Token<'a> = <Self::Parameters<
19929                'a,
19930            > as alloy_sol_types::SolType>::Token<'a>;
19931            type Return = undelegationsReturn;
19932            type ReturnTuple<'a> = (
19933                alloy::sol_types::sol_data::Uint<256>,
19934                alloy::sol_types::sol_data::Uint<256>,
19935            );
19936            type ReturnToken<'a> = <Self::ReturnTuple<
19937                'a,
19938            > as alloy_sol_types::SolType>::Token<'a>;
19939            const SIGNATURE: &'static str = "undelegations(address,address)";
19940            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
19941            #[inline]
19942            fn new<'a>(
19943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19944            ) -> Self {
19945                tuple.into()
19946            }
19947            #[inline]
19948            fn tokenize(&self) -> Self::Token<'_> {
19949                (
19950                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19951                        &self.validator,
19952                    ),
19953                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19954                        &self.delegator,
19955                    ),
19956                )
19957            }
19958            #[inline]
19959            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19960                undelegationsReturn::_tokenize(ret)
19961            }
19962            #[inline]
19963            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19964                <Self::ReturnTuple<
19965                    '_,
19966                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19967                    .map(Into::into)
19968            }
19969            #[inline]
19970            fn abi_decode_returns_validate(
19971                data: &[u8],
19972            ) -> alloy_sol_types::Result<Self::Return> {
19973                <Self::ReturnTuple<
19974                    '_,
19975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19976                    .map(Into::into)
19977            }
19978        }
19979    };
19980    #[derive(serde::Serialize, serde::Deserialize)]
19981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19982    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
19983```solidity
19984function unpause() external;
19985```*/
19986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19987    #[derive(Clone)]
19988    pub struct unpauseCall;
19989    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
19990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19991    #[derive(Clone)]
19992    pub struct unpauseReturn {}
19993    #[allow(
19994        non_camel_case_types,
19995        non_snake_case,
19996        clippy::pub_underscore_fields,
19997        clippy::style
19998    )]
19999    const _: () = {
20000        use alloy::sol_types as alloy_sol_types;
20001        {
20002            #[doc(hidden)]
20003            #[allow(dead_code)]
20004            type UnderlyingSolTuple<'a> = ();
20005            #[doc(hidden)]
20006            type UnderlyingRustTuple<'a> = ();
20007            #[cfg(test)]
20008            #[allow(dead_code, unreachable_patterns)]
20009            fn _type_assertion(
20010                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20011            ) {
20012                match _t {
20013                    alloy_sol_types::private::AssertTypeEq::<
20014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20015                    >(_) => {}
20016                }
20017            }
20018            #[automatically_derived]
20019            #[doc(hidden)]
20020            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
20021                fn from(value: unpauseCall) -> Self {
20022                    ()
20023                }
20024            }
20025            #[automatically_derived]
20026            #[doc(hidden)]
20027            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
20028                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20029                    Self
20030                }
20031            }
20032        }
20033        {
20034            #[doc(hidden)]
20035            #[allow(dead_code)]
20036            type UnderlyingSolTuple<'a> = ();
20037            #[doc(hidden)]
20038            type UnderlyingRustTuple<'a> = ();
20039            #[cfg(test)]
20040            #[allow(dead_code, unreachable_patterns)]
20041            fn _type_assertion(
20042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20043            ) {
20044                match _t {
20045                    alloy_sol_types::private::AssertTypeEq::<
20046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20047                    >(_) => {}
20048                }
20049            }
20050            #[automatically_derived]
20051            #[doc(hidden)]
20052            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
20053                fn from(value: unpauseReturn) -> Self {
20054                    ()
20055                }
20056            }
20057            #[automatically_derived]
20058            #[doc(hidden)]
20059            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
20060                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20061                    Self {}
20062                }
20063            }
20064        }
20065        impl unpauseReturn {
20066            fn _tokenize(
20067                &self,
20068            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20069                ()
20070            }
20071        }
20072        #[automatically_derived]
20073        impl alloy_sol_types::SolCall for unpauseCall {
20074            type Parameters<'a> = ();
20075            type Token<'a> = <Self::Parameters<
20076                'a,
20077            > as alloy_sol_types::SolType>::Token<'a>;
20078            type Return = unpauseReturn;
20079            type ReturnTuple<'a> = ();
20080            type ReturnToken<'a> = <Self::ReturnTuple<
20081                'a,
20082            > as alloy_sol_types::SolType>::Token<'a>;
20083            const SIGNATURE: &'static str = "unpause()";
20084            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
20085            #[inline]
20086            fn new<'a>(
20087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20088            ) -> Self {
20089                tuple.into()
20090            }
20091            #[inline]
20092            fn tokenize(&self) -> Self::Token<'_> {
20093                ()
20094            }
20095            #[inline]
20096            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20097                unpauseReturn::_tokenize(ret)
20098            }
20099            #[inline]
20100            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20101                <Self::ReturnTuple<
20102                    '_,
20103                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20104                    .map(Into::into)
20105            }
20106            #[inline]
20107            fn abi_decode_returns_validate(
20108                data: &[u8],
20109            ) -> alloy_sol_types::Result<Self::Return> {
20110                <Self::ReturnTuple<
20111                    '_,
20112                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20113                    .map(Into::into)
20114            }
20115        }
20116    };
20117    #[derive(serde::Serialize, serde::Deserialize)]
20118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20119    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
20120```solidity
20121function updateCommission(uint16 newCommission) external;
20122```*/
20123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20124    #[derive(Clone)]
20125    pub struct updateCommissionCall {
20126        #[allow(missing_docs)]
20127        pub newCommission: u16,
20128    }
20129    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
20130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20131    #[derive(Clone)]
20132    pub struct updateCommissionReturn {}
20133    #[allow(
20134        non_camel_case_types,
20135        non_snake_case,
20136        clippy::pub_underscore_fields,
20137        clippy::style
20138    )]
20139    const _: () = {
20140        use alloy::sol_types as alloy_sol_types;
20141        {
20142            #[doc(hidden)]
20143            #[allow(dead_code)]
20144            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
20145            #[doc(hidden)]
20146            type UnderlyingRustTuple<'a> = (u16,);
20147            #[cfg(test)]
20148            #[allow(dead_code, unreachable_patterns)]
20149            fn _type_assertion(
20150                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20151            ) {
20152                match _t {
20153                    alloy_sol_types::private::AssertTypeEq::<
20154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20155                    >(_) => {}
20156                }
20157            }
20158            #[automatically_derived]
20159            #[doc(hidden)]
20160            impl ::core::convert::From<updateCommissionCall>
20161            for UnderlyingRustTuple<'_> {
20162                fn from(value: updateCommissionCall) -> Self {
20163                    (value.newCommission,)
20164                }
20165            }
20166            #[automatically_derived]
20167            #[doc(hidden)]
20168            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20169            for updateCommissionCall {
20170                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20171                    Self { newCommission: tuple.0 }
20172                }
20173            }
20174        }
20175        {
20176            #[doc(hidden)]
20177            #[allow(dead_code)]
20178            type UnderlyingSolTuple<'a> = ();
20179            #[doc(hidden)]
20180            type UnderlyingRustTuple<'a> = ();
20181            #[cfg(test)]
20182            #[allow(dead_code, unreachable_patterns)]
20183            fn _type_assertion(
20184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20185            ) {
20186                match _t {
20187                    alloy_sol_types::private::AssertTypeEq::<
20188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20189                    >(_) => {}
20190                }
20191            }
20192            #[automatically_derived]
20193            #[doc(hidden)]
20194            impl ::core::convert::From<updateCommissionReturn>
20195            for UnderlyingRustTuple<'_> {
20196                fn from(value: updateCommissionReturn) -> Self {
20197                    ()
20198                }
20199            }
20200            #[automatically_derived]
20201            #[doc(hidden)]
20202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20203            for updateCommissionReturn {
20204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20205                    Self {}
20206                }
20207            }
20208        }
20209        impl updateCommissionReturn {
20210            fn _tokenize(
20211                &self,
20212            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20213                ()
20214            }
20215        }
20216        #[automatically_derived]
20217        impl alloy_sol_types::SolCall for updateCommissionCall {
20218            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
20219            type Token<'a> = <Self::Parameters<
20220                'a,
20221            > as alloy_sol_types::SolType>::Token<'a>;
20222            type Return = updateCommissionReturn;
20223            type ReturnTuple<'a> = ();
20224            type ReturnToken<'a> = <Self::ReturnTuple<
20225                'a,
20226            > as alloy_sol_types::SolType>::Token<'a>;
20227            const SIGNATURE: &'static str = "updateCommission(uint16)";
20228            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
20229            #[inline]
20230            fn new<'a>(
20231                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20232            ) -> Self {
20233                tuple.into()
20234            }
20235            #[inline]
20236            fn tokenize(&self) -> Self::Token<'_> {
20237                (
20238                    <alloy::sol_types::sol_data::Uint<
20239                        16,
20240                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
20241                )
20242            }
20243            #[inline]
20244            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20245                updateCommissionReturn::_tokenize(ret)
20246            }
20247            #[inline]
20248            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20249                <Self::ReturnTuple<
20250                    '_,
20251                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20252                    .map(Into::into)
20253            }
20254            #[inline]
20255            fn abi_decode_returns_validate(
20256                data: &[u8],
20257            ) -> alloy_sol_types::Result<Self::Return> {
20258                <Self::ReturnTuple<
20259                    '_,
20260                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20261                    .map(Into::into)
20262            }
20263        }
20264    };
20265    #[derive(serde::Serialize, serde::Deserialize)]
20266    #[derive()]
20267    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
20268```solidity
20269function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
20270```*/
20271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20272    #[derive(Clone)]
20273    pub struct updateConsensusKeysCall {
20274        #[allow(missing_docs)]
20275        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20276        #[allow(missing_docs)]
20277        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20278        #[allow(missing_docs)]
20279        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20280    }
20281    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
20282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20283    #[derive(Clone)]
20284    pub struct updateConsensusKeysReturn {}
20285    #[allow(
20286        non_camel_case_types,
20287        non_snake_case,
20288        clippy::pub_underscore_fields,
20289        clippy::style
20290    )]
20291    const _: () = {
20292        use alloy::sol_types as alloy_sol_types;
20293        {
20294            #[doc(hidden)]
20295            #[allow(dead_code)]
20296            type UnderlyingSolTuple<'a> = (
20297                BN254::G2Point,
20298                EdOnBN254::EdOnBN254Point,
20299                BN254::G1Point,
20300            );
20301            #[doc(hidden)]
20302            type UnderlyingRustTuple<'a> = (
20303                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20304                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20305                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20306            );
20307            #[cfg(test)]
20308            #[allow(dead_code, unreachable_patterns)]
20309            fn _type_assertion(
20310                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20311            ) {
20312                match _t {
20313                    alloy_sol_types::private::AssertTypeEq::<
20314                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20315                    >(_) => {}
20316                }
20317            }
20318            #[automatically_derived]
20319            #[doc(hidden)]
20320            impl ::core::convert::From<updateConsensusKeysCall>
20321            for UnderlyingRustTuple<'_> {
20322                fn from(value: updateConsensusKeysCall) -> Self {
20323                    (value._0, value._1, value._2)
20324                }
20325            }
20326            #[automatically_derived]
20327            #[doc(hidden)]
20328            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20329            for updateConsensusKeysCall {
20330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20331                    Self {
20332                        _0: tuple.0,
20333                        _1: tuple.1,
20334                        _2: tuple.2,
20335                    }
20336                }
20337            }
20338        }
20339        {
20340            #[doc(hidden)]
20341            #[allow(dead_code)]
20342            type UnderlyingSolTuple<'a> = ();
20343            #[doc(hidden)]
20344            type UnderlyingRustTuple<'a> = ();
20345            #[cfg(test)]
20346            #[allow(dead_code, unreachable_patterns)]
20347            fn _type_assertion(
20348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20349            ) {
20350                match _t {
20351                    alloy_sol_types::private::AssertTypeEq::<
20352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20353                    >(_) => {}
20354                }
20355            }
20356            #[automatically_derived]
20357            #[doc(hidden)]
20358            impl ::core::convert::From<updateConsensusKeysReturn>
20359            for UnderlyingRustTuple<'_> {
20360                fn from(value: updateConsensusKeysReturn) -> Self {
20361                    ()
20362                }
20363            }
20364            #[automatically_derived]
20365            #[doc(hidden)]
20366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20367            for updateConsensusKeysReturn {
20368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20369                    Self {}
20370                }
20371            }
20372        }
20373        impl updateConsensusKeysReturn {
20374            fn _tokenize(
20375                &self,
20376            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20377                ()
20378            }
20379        }
20380        #[automatically_derived]
20381        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
20382            type Parameters<'a> = (
20383                BN254::G2Point,
20384                EdOnBN254::EdOnBN254Point,
20385                BN254::G1Point,
20386            );
20387            type Token<'a> = <Self::Parameters<
20388                'a,
20389            > as alloy_sol_types::SolType>::Token<'a>;
20390            type Return = updateConsensusKeysReturn;
20391            type ReturnTuple<'a> = ();
20392            type ReturnToken<'a> = <Self::ReturnTuple<
20393                'a,
20394            > as alloy_sol_types::SolType>::Token<'a>;
20395            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
20396            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
20397            #[inline]
20398            fn new<'a>(
20399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20400            ) -> Self {
20401                tuple.into()
20402            }
20403            #[inline]
20404            fn tokenize(&self) -> Self::Token<'_> {
20405                (
20406                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
20407                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
20408                        &self._1,
20409                    ),
20410                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
20411                )
20412            }
20413            #[inline]
20414            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20415                updateConsensusKeysReturn::_tokenize(ret)
20416            }
20417            #[inline]
20418            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20419                <Self::ReturnTuple<
20420                    '_,
20421                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20422                    .map(Into::into)
20423            }
20424            #[inline]
20425            fn abi_decode_returns_validate(
20426                data: &[u8],
20427            ) -> alloy_sol_types::Result<Self::Return> {
20428                <Self::ReturnTuple<
20429                    '_,
20430                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20431                    .map(Into::into)
20432            }
20433        }
20434    };
20435    #[derive(serde::Serialize, serde::Deserialize)]
20436    #[derive()]
20437    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
20438```solidity
20439function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
20440```*/
20441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20442    #[derive(Clone)]
20443    pub struct updateConsensusKeysV2Call {
20444        #[allow(missing_docs)]
20445        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20446        #[allow(missing_docs)]
20447        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20448        #[allow(missing_docs)]
20449        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20450        #[allow(missing_docs)]
20451        pub schnorrSig: alloy::sol_types::private::Bytes,
20452    }
20453    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
20454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20455    #[derive(Clone)]
20456    pub struct updateConsensusKeysV2Return {}
20457    #[allow(
20458        non_camel_case_types,
20459        non_snake_case,
20460        clippy::pub_underscore_fields,
20461        clippy::style
20462    )]
20463    const _: () = {
20464        use alloy::sol_types as alloy_sol_types;
20465        {
20466            #[doc(hidden)]
20467            #[allow(dead_code)]
20468            type UnderlyingSolTuple<'a> = (
20469                BN254::G2Point,
20470                EdOnBN254::EdOnBN254Point,
20471                BN254::G1Point,
20472                alloy::sol_types::sol_data::Bytes,
20473            );
20474            #[doc(hidden)]
20475            type UnderlyingRustTuple<'a> = (
20476                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20477                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20478                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20479                alloy::sol_types::private::Bytes,
20480            );
20481            #[cfg(test)]
20482            #[allow(dead_code, unreachable_patterns)]
20483            fn _type_assertion(
20484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20485            ) {
20486                match _t {
20487                    alloy_sol_types::private::AssertTypeEq::<
20488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20489                    >(_) => {}
20490                }
20491            }
20492            #[automatically_derived]
20493            #[doc(hidden)]
20494            impl ::core::convert::From<updateConsensusKeysV2Call>
20495            for UnderlyingRustTuple<'_> {
20496                fn from(value: updateConsensusKeysV2Call) -> Self {
20497                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
20498                }
20499            }
20500            #[automatically_derived]
20501            #[doc(hidden)]
20502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20503            for updateConsensusKeysV2Call {
20504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20505                    Self {
20506                        blsVK: tuple.0,
20507                        schnorrVK: tuple.1,
20508                        blsSig: tuple.2,
20509                        schnorrSig: tuple.3,
20510                    }
20511                }
20512            }
20513        }
20514        {
20515            #[doc(hidden)]
20516            #[allow(dead_code)]
20517            type UnderlyingSolTuple<'a> = ();
20518            #[doc(hidden)]
20519            type UnderlyingRustTuple<'a> = ();
20520            #[cfg(test)]
20521            #[allow(dead_code, unreachable_patterns)]
20522            fn _type_assertion(
20523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20524            ) {
20525                match _t {
20526                    alloy_sol_types::private::AssertTypeEq::<
20527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20528                    >(_) => {}
20529                }
20530            }
20531            #[automatically_derived]
20532            #[doc(hidden)]
20533            impl ::core::convert::From<updateConsensusKeysV2Return>
20534            for UnderlyingRustTuple<'_> {
20535                fn from(value: updateConsensusKeysV2Return) -> Self {
20536                    ()
20537                }
20538            }
20539            #[automatically_derived]
20540            #[doc(hidden)]
20541            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20542            for updateConsensusKeysV2Return {
20543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20544                    Self {}
20545                }
20546            }
20547        }
20548        impl updateConsensusKeysV2Return {
20549            fn _tokenize(
20550                &self,
20551            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
20552                '_,
20553            > {
20554                ()
20555            }
20556        }
20557        #[automatically_derived]
20558        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
20559            type Parameters<'a> = (
20560                BN254::G2Point,
20561                EdOnBN254::EdOnBN254Point,
20562                BN254::G1Point,
20563                alloy::sol_types::sol_data::Bytes,
20564            );
20565            type Token<'a> = <Self::Parameters<
20566                'a,
20567            > as alloy_sol_types::SolType>::Token<'a>;
20568            type Return = updateConsensusKeysV2Return;
20569            type ReturnTuple<'a> = ();
20570            type ReturnToken<'a> = <Self::ReturnTuple<
20571                'a,
20572            > as alloy_sol_types::SolType>::Token<'a>;
20573            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
20574            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
20575            #[inline]
20576            fn new<'a>(
20577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20578            ) -> Self {
20579                tuple.into()
20580            }
20581            #[inline]
20582            fn tokenize(&self) -> Self::Token<'_> {
20583                (
20584                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
20585                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
20586                        &self.schnorrVK,
20587                    ),
20588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
20589                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
20590                        &self.schnorrSig,
20591                    ),
20592                )
20593            }
20594            #[inline]
20595            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20596                updateConsensusKeysV2Return::_tokenize(ret)
20597            }
20598            #[inline]
20599            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20600                <Self::ReturnTuple<
20601                    '_,
20602                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20603                    .map(Into::into)
20604            }
20605            #[inline]
20606            fn abi_decode_returns_validate(
20607                data: &[u8],
20608            ) -> alloy_sol_types::Result<Self::Return> {
20609                <Self::ReturnTuple<
20610                    '_,
20611                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20612                    .map(Into::into)
20613            }
20614        }
20615    };
20616    #[derive(serde::Serialize, serde::Deserialize)]
20617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20618    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
20619```solidity
20620function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
20621```*/
20622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20623    #[derive(Clone)]
20624    pub struct updateExitEscrowPeriodCall {
20625        #[allow(missing_docs)]
20626        pub newExitEscrowPeriod: u64,
20627    }
20628    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
20629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20630    #[derive(Clone)]
20631    pub struct updateExitEscrowPeriodReturn {}
20632    #[allow(
20633        non_camel_case_types,
20634        non_snake_case,
20635        clippy::pub_underscore_fields,
20636        clippy::style
20637    )]
20638    const _: () = {
20639        use alloy::sol_types as alloy_sol_types;
20640        {
20641            #[doc(hidden)]
20642            #[allow(dead_code)]
20643            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
20644            #[doc(hidden)]
20645            type UnderlyingRustTuple<'a> = (u64,);
20646            #[cfg(test)]
20647            #[allow(dead_code, unreachable_patterns)]
20648            fn _type_assertion(
20649                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20650            ) {
20651                match _t {
20652                    alloy_sol_types::private::AssertTypeEq::<
20653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20654                    >(_) => {}
20655                }
20656            }
20657            #[automatically_derived]
20658            #[doc(hidden)]
20659            impl ::core::convert::From<updateExitEscrowPeriodCall>
20660            for UnderlyingRustTuple<'_> {
20661                fn from(value: updateExitEscrowPeriodCall) -> Self {
20662                    (value.newExitEscrowPeriod,)
20663                }
20664            }
20665            #[automatically_derived]
20666            #[doc(hidden)]
20667            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20668            for updateExitEscrowPeriodCall {
20669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20670                    Self {
20671                        newExitEscrowPeriod: tuple.0,
20672                    }
20673                }
20674            }
20675        }
20676        {
20677            #[doc(hidden)]
20678            #[allow(dead_code)]
20679            type UnderlyingSolTuple<'a> = ();
20680            #[doc(hidden)]
20681            type UnderlyingRustTuple<'a> = ();
20682            #[cfg(test)]
20683            #[allow(dead_code, unreachable_patterns)]
20684            fn _type_assertion(
20685                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20686            ) {
20687                match _t {
20688                    alloy_sol_types::private::AssertTypeEq::<
20689                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20690                    >(_) => {}
20691                }
20692            }
20693            #[automatically_derived]
20694            #[doc(hidden)]
20695            impl ::core::convert::From<updateExitEscrowPeriodReturn>
20696            for UnderlyingRustTuple<'_> {
20697                fn from(value: updateExitEscrowPeriodReturn) -> Self {
20698                    ()
20699                }
20700            }
20701            #[automatically_derived]
20702            #[doc(hidden)]
20703            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20704            for updateExitEscrowPeriodReturn {
20705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20706                    Self {}
20707                }
20708            }
20709        }
20710        impl updateExitEscrowPeriodReturn {
20711            fn _tokenize(
20712                &self,
20713            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
20714                '_,
20715            > {
20716                ()
20717            }
20718        }
20719        #[automatically_derived]
20720        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
20721            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
20722            type Token<'a> = <Self::Parameters<
20723                'a,
20724            > as alloy_sol_types::SolType>::Token<'a>;
20725            type Return = updateExitEscrowPeriodReturn;
20726            type ReturnTuple<'a> = ();
20727            type ReturnToken<'a> = <Self::ReturnTuple<
20728                'a,
20729            > as alloy_sol_types::SolType>::Token<'a>;
20730            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
20731            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
20732            #[inline]
20733            fn new<'a>(
20734                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20735            ) -> Self {
20736                tuple.into()
20737            }
20738            #[inline]
20739            fn tokenize(&self) -> Self::Token<'_> {
20740                (
20741                    <alloy::sol_types::sol_data::Uint<
20742                        64,
20743                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
20744                )
20745            }
20746            #[inline]
20747            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20748                updateExitEscrowPeriodReturn::_tokenize(ret)
20749            }
20750            #[inline]
20751            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20752                <Self::ReturnTuple<
20753                    '_,
20754                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20755                    .map(Into::into)
20756            }
20757            #[inline]
20758            fn abi_decode_returns_validate(
20759                data: &[u8],
20760            ) -> alloy_sol_types::Result<Self::Return> {
20761                <Self::ReturnTuple<
20762                    '_,
20763                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20764                    .map(Into::into)
20765            }
20766        }
20767    };
20768    #[derive(serde::Serialize, serde::Deserialize)]
20769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20770    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
20771```solidity
20772function updateMetadataUri(string memory metadataUri) external;
20773```*/
20774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20775    #[derive(Clone)]
20776    pub struct updateMetadataUriCall {
20777        #[allow(missing_docs)]
20778        pub metadataUri: alloy::sol_types::private::String,
20779    }
20780    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
20781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20782    #[derive(Clone)]
20783    pub struct updateMetadataUriReturn {}
20784    #[allow(
20785        non_camel_case_types,
20786        non_snake_case,
20787        clippy::pub_underscore_fields,
20788        clippy::style
20789    )]
20790    const _: () = {
20791        use alloy::sol_types as alloy_sol_types;
20792        {
20793            #[doc(hidden)]
20794            #[allow(dead_code)]
20795            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
20796            #[doc(hidden)]
20797            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
20798            #[cfg(test)]
20799            #[allow(dead_code, unreachable_patterns)]
20800            fn _type_assertion(
20801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20802            ) {
20803                match _t {
20804                    alloy_sol_types::private::AssertTypeEq::<
20805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20806                    >(_) => {}
20807                }
20808            }
20809            #[automatically_derived]
20810            #[doc(hidden)]
20811            impl ::core::convert::From<updateMetadataUriCall>
20812            for UnderlyingRustTuple<'_> {
20813                fn from(value: updateMetadataUriCall) -> Self {
20814                    (value.metadataUri,)
20815                }
20816            }
20817            #[automatically_derived]
20818            #[doc(hidden)]
20819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20820            for updateMetadataUriCall {
20821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20822                    Self { metadataUri: tuple.0 }
20823                }
20824            }
20825        }
20826        {
20827            #[doc(hidden)]
20828            #[allow(dead_code)]
20829            type UnderlyingSolTuple<'a> = ();
20830            #[doc(hidden)]
20831            type UnderlyingRustTuple<'a> = ();
20832            #[cfg(test)]
20833            #[allow(dead_code, unreachable_patterns)]
20834            fn _type_assertion(
20835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20836            ) {
20837                match _t {
20838                    alloy_sol_types::private::AssertTypeEq::<
20839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20840                    >(_) => {}
20841                }
20842            }
20843            #[automatically_derived]
20844            #[doc(hidden)]
20845            impl ::core::convert::From<updateMetadataUriReturn>
20846            for UnderlyingRustTuple<'_> {
20847                fn from(value: updateMetadataUriReturn) -> Self {
20848                    ()
20849                }
20850            }
20851            #[automatically_derived]
20852            #[doc(hidden)]
20853            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20854            for updateMetadataUriReturn {
20855                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20856                    Self {}
20857                }
20858            }
20859        }
20860        impl updateMetadataUriReturn {
20861            fn _tokenize(
20862                &self,
20863            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20864                ()
20865            }
20866        }
20867        #[automatically_derived]
20868        impl alloy_sol_types::SolCall for updateMetadataUriCall {
20869            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
20870            type Token<'a> = <Self::Parameters<
20871                'a,
20872            > as alloy_sol_types::SolType>::Token<'a>;
20873            type Return = updateMetadataUriReturn;
20874            type ReturnTuple<'a> = ();
20875            type ReturnToken<'a> = <Self::ReturnTuple<
20876                'a,
20877            > as alloy_sol_types::SolType>::Token<'a>;
20878            const SIGNATURE: &'static str = "updateMetadataUri(string)";
20879            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
20880            #[inline]
20881            fn new<'a>(
20882                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20883            ) -> Self {
20884                tuple.into()
20885            }
20886            #[inline]
20887            fn tokenize(&self) -> Self::Token<'_> {
20888                (
20889                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
20890                        &self.metadataUri,
20891                    ),
20892                )
20893            }
20894            #[inline]
20895            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20896                updateMetadataUriReturn::_tokenize(ret)
20897            }
20898            #[inline]
20899            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20900                <Self::ReturnTuple<
20901                    '_,
20902                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20903                    .map(Into::into)
20904            }
20905            #[inline]
20906            fn abi_decode_returns_validate(
20907                data: &[u8],
20908            ) -> alloy_sol_types::Result<Self::Return> {
20909                <Self::ReturnTuple<
20910                    '_,
20911                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20912                    .map(Into::into)
20913            }
20914        }
20915    };
20916    #[derive(serde::Serialize, serde::Deserialize)]
20917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20918    /**Function with signature `updateNetworkConfig(bytes32,string)` and selector `0x0cb29764`.
20919```solidity
20920function updateNetworkConfig(bytes32 x25519Key, string memory p2pAddr) external;
20921```*/
20922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20923    #[derive(Clone)]
20924    pub struct updateNetworkConfigCall {
20925        #[allow(missing_docs)]
20926        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
20927        #[allow(missing_docs)]
20928        pub p2pAddr: alloy::sol_types::private::String,
20929    }
20930    ///Container type for the return parameters of the [`updateNetworkConfig(bytes32,string)`](updateNetworkConfigCall) function.
20931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20932    #[derive(Clone)]
20933    pub struct updateNetworkConfigReturn {}
20934    #[allow(
20935        non_camel_case_types,
20936        non_snake_case,
20937        clippy::pub_underscore_fields,
20938        clippy::style
20939    )]
20940    const _: () = {
20941        use alloy::sol_types as alloy_sol_types;
20942        {
20943            #[doc(hidden)]
20944            #[allow(dead_code)]
20945            type UnderlyingSolTuple<'a> = (
20946                alloy::sol_types::sol_data::FixedBytes<32>,
20947                alloy::sol_types::sol_data::String,
20948            );
20949            #[doc(hidden)]
20950            type UnderlyingRustTuple<'a> = (
20951                alloy::sol_types::private::FixedBytes<32>,
20952                alloy::sol_types::private::String,
20953            );
20954            #[cfg(test)]
20955            #[allow(dead_code, unreachable_patterns)]
20956            fn _type_assertion(
20957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20958            ) {
20959                match _t {
20960                    alloy_sol_types::private::AssertTypeEq::<
20961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20962                    >(_) => {}
20963                }
20964            }
20965            #[automatically_derived]
20966            #[doc(hidden)]
20967            impl ::core::convert::From<updateNetworkConfigCall>
20968            for UnderlyingRustTuple<'_> {
20969                fn from(value: updateNetworkConfigCall) -> Self {
20970                    (value.x25519Key, value.p2pAddr)
20971                }
20972            }
20973            #[automatically_derived]
20974            #[doc(hidden)]
20975            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20976            for updateNetworkConfigCall {
20977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20978                    Self {
20979                        x25519Key: tuple.0,
20980                        p2pAddr: tuple.1,
20981                    }
20982                }
20983            }
20984        }
20985        {
20986            #[doc(hidden)]
20987            #[allow(dead_code)]
20988            type UnderlyingSolTuple<'a> = ();
20989            #[doc(hidden)]
20990            type UnderlyingRustTuple<'a> = ();
20991            #[cfg(test)]
20992            #[allow(dead_code, unreachable_patterns)]
20993            fn _type_assertion(
20994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20995            ) {
20996                match _t {
20997                    alloy_sol_types::private::AssertTypeEq::<
20998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20999                    >(_) => {}
21000                }
21001            }
21002            #[automatically_derived]
21003            #[doc(hidden)]
21004            impl ::core::convert::From<updateNetworkConfigReturn>
21005            for UnderlyingRustTuple<'_> {
21006                fn from(value: updateNetworkConfigReturn) -> Self {
21007                    ()
21008                }
21009            }
21010            #[automatically_derived]
21011            #[doc(hidden)]
21012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21013            for updateNetworkConfigReturn {
21014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21015                    Self {}
21016                }
21017            }
21018        }
21019        impl updateNetworkConfigReturn {
21020            fn _tokenize(
21021                &self,
21022            ) -> <updateNetworkConfigCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21023                ()
21024            }
21025        }
21026        #[automatically_derived]
21027        impl alloy_sol_types::SolCall for updateNetworkConfigCall {
21028            type Parameters<'a> = (
21029                alloy::sol_types::sol_data::FixedBytes<32>,
21030                alloy::sol_types::sol_data::String,
21031            );
21032            type Token<'a> = <Self::Parameters<
21033                'a,
21034            > as alloy_sol_types::SolType>::Token<'a>;
21035            type Return = updateNetworkConfigReturn;
21036            type ReturnTuple<'a> = ();
21037            type ReturnToken<'a> = <Self::ReturnTuple<
21038                'a,
21039            > as alloy_sol_types::SolType>::Token<'a>;
21040            const SIGNATURE: &'static str = "updateNetworkConfig(bytes32,string)";
21041            const SELECTOR: [u8; 4] = [12u8, 178u8, 151u8, 100u8];
21042            #[inline]
21043            fn new<'a>(
21044                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21045            ) -> Self {
21046                tuple.into()
21047            }
21048            #[inline]
21049            fn tokenize(&self) -> Self::Token<'_> {
21050                (
21051                    <alloy::sol_types::sol_data::FixedBytes<
21052                        32,
21053                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
21054                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21055                        &self.p2pAddr,
21056                    ),
21057                )
21058            }
21059            #[inline]
21060            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21061                updateNetworkConfigReturn::_tokenize(ret)
21062            }
21063            #[inline]
21064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21065                <Self::ReturnTuple<
21066                    '_,
21067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21068                    .map(Into::into)
21069            }
21070            #[inline]
21071            fn abi_decode_returns_validate(
21072                data: &[u8],
21073            ) -> alloy_sol_types::Result<Self::Return> {
21074                <Self::ReturnTuple<
21075                    '_,
21076                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21077                    .map(Into::into)
21078            }
21079        }
21080    };
21081    #[derive(serde::Serialize, serde::Deserialize)]
21082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21083    /**Function with signature `updateP2pAddr(string)` and selector `0x9ec9c138`.
21084```solidity
21085function updateP2pAddr(string memory p2pAddr) external;
21086```*/
21087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21088    #[derive(Clone)]
21089    pub struct updateP2pAddrCall {
21090        #[allow(missing_docs)]
21091        pub p2pAddr: alloy::sol_types::private::String,
21092    }
21093    ///Container type for the return parameters of the [`updateP2pAddr(string)`](updateP2pAddrCall) function.
21094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21095    #[derive(Clone)]
21096    pub struct updateP2pAddrReturn {}
21097    #[allow(
21098        non_camel_case_types,
21099        non_snake_case,
21100        clippy::pub_underscore_fields,
21101        clippy::style
21102    )]
21103    const _: () = {
21104        use alloy::sol_types as alloy_sol_types;
21105        {
21106            #[doc(hidden)]
21107            #[allow(dead_code)]
21108            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21109            #[doc(hidden)]
21110            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21111            #[cfg(test)]
21112            #[allow(dead_code, unreachable_patterns)]
21113            fn _type_assertion(
21114                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21115            ) {
21116                match _t {
21117                    alloy_sol_types::private::AssertTypeEq::<
21118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21119                    >(_) => {}
21120                }
21121            }
21122            #[automatically_derived]
21123            #[doc(hidden)]
21124            impl ::core::convert::From<updateP2pAddrCall> for UnderlyingRustTuple<'_> {
21125                fn from(value: updateP2pAddrCall) -> Self {
21126                    (value.p2pAddr,)
21127                }
21128            }
21129            #[automatically_derived]
21130            #[doc(hidden)]
21131            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrCall {
21132                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21133                    Self { p2pAddr: tuple.0 }
21134                }
21135            }
21136        }
21137        {
21138            #[doc(hidden)]
21139            #[allow(dead_code)]
21140            type UnderlyingSolTuple<'a> = ();
21141            #[doc(hidden)]
21142            type UnderlyingRustTuple<'a> = ();
21143            #[cfg(test)]
21144            #[allow(dead_code, unreachable_patterns)]
21145            fn _type_assertion(
21146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21147            ) {
21148                match _t {
21149                    alloy_sol_types::private::AssertTypeEq::<
21150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21151                    >(_) => {}
21152                }
21153            }
21154            #[automatically_derived]
21155            #[doc(hidden)]
21156            impl ::core::convert::From<updateP2pAddrReturn> for UnderlyingRustTuple<'_> {
21157                fn from(value: updateP2pAddrReturn) -> Self {
21158                    ()
21159                }
21160            }
21161            #[automatically_derived]
21162            #[doc(hidden)]
21163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateP2pAddrReturn {
21164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21165                    Self {}
21166                }
21167            }
21168        }
21169        impl updateP2pAddrReturn {
21170            fn _tokenize(
21171                &self,
21172            ) -> <updateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21173                ()
21174            }
21175        }
21176        #[automatically_derived]
21177        impl alloy_sol_types::SolCall for updateP2pAddrCall {
21178            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21179            type Token<'a> = <Self::Parameters<
21180                'a,
21181            > as alloy_sol_types::SolType>::Token<'a>;
21182            type Return = updateP2pAddrReturn;
21183            type ReturnTuple<'a> = ();
21184            type ReturnToken<'a> = <Self::ReturnTuple<
21185                'a,
21186            > as alloy_sol_types::SolType>::Token<'a>;
21187            const SIGNATURE: &'static str = "updateP2pAddr(string)";
21188            const SELECTOR: [u8; 4] = [158u8, 201u8, 193u8, 56u8];
21189            #[inline]
21190            fn new<'a>(
21191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21192            ) -> Self {
21193                tuple.into()
21194            }
21195            #[inline]
21196            fn tokenize(&self) -> Self::Token<'_> {
21197                (
21198                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21199                        &self.p2pAddr,
21200                    ),
21201                )
21202            }
21203            #[inline]
21204            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21205                updateP2pAddrReturn::_tokenize(ret)
21206            }
21207            #[inline]
21208            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21209                <Self::ReturnTuple<
21210                    '_,
21211                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21212                    .map(Into::into)
21213            }
21214            #[inline]
21215            fn abi_decode_returns_validate(
21216                data: &[u8],
21217            ) -> alloy_sol_types::Result<Self::Return> {
21218                <Self::ReturnTuple<
21219                    '_,
21220                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21221                    .map(Into::into)
21222            }
21223        }
21224    };
21225    #[derive(serde::Serialize, serde::Deserialize)]
21226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21227    /**Function with signature `updateX25519Key(bytes32)` and selector `0x073d25fc`.
21228```solidity
21229function updateX25519Key(bytes32 x25519Key) external;
21230```*/
21231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21232    #[derive(Clone)]
21233    pub struct updateX25519KeyCall {
21234        #[allow(missing_docs)]
21235        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
21236    }
21237    ///Container type for the return parameters of the [`updateX25519Key(bytes32)`](updateX25519KeyCall) function.
21238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21239    #[derive(Clone)]
21240    pub struct updateX25519KeyReturn {}
21241    #[allow(
21242        non_camel_case_types,
21243        non_snake_case,
21244        clippy::pub_underscore_fields,
21245        clippy::style
21246    )]
21247    const _: () = {
21248        use alloy::sol_types as alloy_sol_types;
21249        {
21250            #[doc(hidden)]
21251            #[allow(dead_code)]
21252            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
21253            #[doc(hidden)]
21254            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
21255            #[cfg(test)]
21256            #[allow(dead_code, unreachable_patterns)]
21257            fn _type_assertion(
21258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21259            ) {
21260                match _t {
21261                    alloy_sol_types::private::AssertTypeEq::<
21262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21263                    >(_) => {}
21264                }
21265            }
21266            #[automatically_derived]
21267            #[doc(hidden)]
21268            impl ::core::convert::From<updateX25519KeyCall> for UnderlyingRustTuple<'_> {
21269                fn from(value: updateX25519KeyCall) -> Self {
21270                    (value.x25519Key,)
21271                }
21272            }
21273            #[automatically_derived]
21274            #[doc(hidden)]
21275            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateX25519KeyCall {
21276                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21277                    Self { x25519Key: tuple.0 }
21278                }
21279            }
21280        }
21281        {
21282            #[doc(hidden)]
21283            #[allow(dead_code)]
21284            type UnderlyingSolTuple<'a> = ();
21285            #[doc(hidden)]
21286            type UnderlyingRustTuple<'a> = ();
21287            #[cfg(test)]
21288            #[allow(dead_code, unreachable_patterns)]
21289            fn _type_assertion(
21290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21291            ) {
21292                match _t {
21293                    alloy_sol_types::private::AssertTypeEq::<
21294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21295                    >(_) => {}
21296                }
21297            }
21298            #[automatically_derived]
21299            #[doc(hidden)]
21300            impl ::core::convert::From<updateX25519KeyReturn>
21301            for UnderlyingRustTuple<'_> {
21302                fn from(value: updateX25519KeyReturn) -> Self {
21303                    ()
21304                }
21305            }
21306            #[automatically_derived]
21307            #[doc(hidden)]
21308            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21309            for updateX25519KeyReturn {
21310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21311                    Self {}
21312                }
21313            }
21314        }
21315        impl updateX25519KeyReturn {
21316            fn _tokenize(
21317                &self,
21318            ) -> <updateX25519KeyCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21319                ()
21320            }
21321        }
21322        #[automatically_derived]
21323        impl alloy_sol_types::SolCall for updateX25519KeyCall {
21324            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
21325            type Token<'a> = <Self::Parameters<
21326                'a,
21327            > as alloy_sol_types::SolType>::Token<'a>;
21328            type Return = updateX25519KeyReturn;
21329            type ReturnTuple<'a> = ();
21330            type ReturnToken<'a> = <Self::ReturnTuple<
21331                'a,
21332            > as alloy_sol_types::SolType>::Token<'a>;
21333            const SIGNATURE: &'static str = "updateX25519Key(bytes32)";
21334            const SELECTOR: [u8; 4] = [7u8, 61u8, 37u8, 252u8];
21335            #[inline]
21336            fn new<'a>(
21337                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21338            ) -> Self {
21339                tuple.into()
21340            }
21341            #[inline]
21342            fn tokenize(&self) -> Self::Token<'_> {
21343                (
21344                    <alloy::sol_types::sol_data::FixedBytes<
21345                        32,
21346                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
21347                )
21348            }
21349            #[inline]
21350            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21351                updateX25519KeyReturn::_tokenize(ret)
21352            }
21353            #[inline]
21354            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21355                <Self::ReturnTuple<
21356                    '_,
21357                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21358                    .map(Into::into)
21359            }
21360            #[inline]
21361            fn abi_decode_returns_validate(
21362                data: &[u8],
21363            ) -> alloy_sol_types::Result<Self::Return> {
21364                <Self::ReturnTuple<
21365                    '_,
21366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21367                    .map(Into::into)
21368            }
21369        }
21370    };
21371    #[derive(serde::Serialize, serde::Deserialize)]
21372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21373    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
21374```solidity
21375function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
21376```*/
21377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21378    #[derive(Clone)]
21379    pub struct upgradeToAndCallCall {
21380        #[allow(missing_docs)]
21381        pub newImplementation: alloy::sol_types::private::Address,
21382        #[allow(missing_docs)]
21383        pub data: alloy::sol_types::private::Bytes,
21384    }
21385    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
21386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21387    #[derive(Clone)]
21388    pub struct upgradeToAndCallReturn {}
21389    #[allow(
21390        non_camel_case_types,
21391        non_snake_case,
21392        clippy::pub_underscore_fields,
21393        clippy::style
21394    )]
21395    const _: () = {
21396        use alloy::sol_types as alloy_sol_types;
21397        {
21398            #[doc(hidden)]
21399            #[allow(dead_code)]
21400            type UnderlyingSolTuple<'a> = (
21401                alloy::sol_types::sol_data::Address,
21402                alloy::sol_types::sol_data::Bytes,
21403            );
21404            #[doc(hidden)]
21405            type UnderlyingRustTuple<'a> = (
21406                alloy::sol_types::private::Address,
21407                alloy::sol_types::private::Bytes,
21408            );
21409            #[cfg(test)]
21410            #[allow(dead_code, unreachable_patterns)]
21411            fn _type_assertion(
21412                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21413            ) {
21414                match _t {
21415                    alloy_sol_types::private::AssertTypeEq::<
21416                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21417                    >(_) => {}
21418                }
21419            }
21420            #[automatically_derived]
21421            #[doc(hidden)]
21422            impl ::core::convert::From<upgradeToAndCallCall>
21423            for UnderlyingRustTuple<'_> {
21424                fn from(value: upgradeToAndCallCall) -> Self {
21425                    (value.newImplementation, value.data)
21426                }
21427            }
21428            #[automatically_derived]
21429            #[doc(hidden)]
21430            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21431            for upgradeToAndCallCall {
21432                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21433                    Self {
21434                        newImplementation: tuple.0,
21435                        data: tuple.1,
21436                    }
21437                }
21438            }
21439        }
21440        {
21441            #[doc(hidden)]
21442            #[allow(dead_code)]
21443            type UnderlyingSolTuple<'a> = ();
21444            #[doc(hidden)]
21445            type UnderlyingRustTuple<'a> = ();
21446            #[cfg(test)]
21447            #[allow(dead_code, unreachable_patterns)]
21448            fn _type_assertion(
21449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21450            ) {
21451                match _t {
21452                    alloy_sol_types::private::AssertTypeEq::<
21453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21454                    >(_) => {}
21455                }
21456            }
21457            #[automatically_derived]
21458            #[doc(hidden)]
21459            impl ::core::convert::From<upgradeToAndCallReturn>
21460            for UnderlyingRustTuple<'_> {
21461                fn from(value: upgradeToAndCallReturn) -> Self {
21462                    ()
21463                }
21464            }
21465            #[automatically_derived]
21466            #[doc(hidden)]
21467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21468            for upgradeToAndCallReturn {
21469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21470                    Self {}
21471                }
21472            }
21473        }
21474        impl upgradeToAndCallReturn {
21475            fn _tokenize(
21476                &self,
21477            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21478                ()
21479            }
21480        }
21481        #[automatically_derived]
21482        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
21483            type Parameters<'a> = (
21484                alloy::sol_types::sol_data::Address,
21485                alloy::sol_types::sol_data::Bytes,
21486            );
21487            type Token<'a> = <Self::Parameters<
21488                'a,
21489            > as alloy_sol_types::SolType>::Token<'a>;
21490            type Return = upgradeToAndCallReturn;
21491            type ReturnTuple<'a> = ();
21492            type ReturnToken<'a> = <Self::ReturnTuple<
21493                'a,
21494            > as alloy_sol_types::SolType>::Token<'a>;
21495            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
21496            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
21497            #[inline]
21498            fn new<'a>(
21499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21500            ) -> Self {
21501                tuple.into()
21502            }
21503            #[inline]
21504            fn tokenize(&self) -> Self::Token<'_> {
21505                (
21506                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
21507                        &self.newImplementation,
21508                    ),
21509                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
21510                        &self.data,
21511                    ),
21512                )
21513            }
21514            #[inline]
21515            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21516                upgradeToAndCallReturn::_tokenize(ret)
21517            }
21518            #[inline]
21519            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21520                <Self::ReturnTuple<
21521                    '_,
21522                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21523                    .map(Into::into)
21524            }
21525            #[inline]
21526            fn abi_decode_returns_validate(
21527                data: &[u8],
21528            ) -> alloy_sol_types::Result<Self::Return> {
21529                <Self::ReturnTuple<
21530                    '_,
21531                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21532                    .map(Into::into)
21533            }
21534        }
21535    };
21536    #[derive(serde::Serialize, serde::Deserialize)]
21537    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21538    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
21539```solidity
21540function validateMetadataUri(string memory metadataUri) external pure;
21541```*/
21542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21543    #[derive(Clone)]
21544    pub struct validateMetadataUriCall {
21545        #[allow(missing_docs)]
21546        pub metadataUri: alloy::sol_types::private::String,
21547    }
21548    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
21549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21550    #[derive(Clone)]
21551    pub struct validateMetadataUriReturn {}
21552    #[allow(
21553        non_camel_case_types,
21554        non_snake_case,
21555        clippy::pub_underscore_fields,
21556        clippy::style
21557    )]
21558    const _: () = {
21559        use alloy::sol_types as alloy_sol_types;
21560        {
21561            #[doc(hidden)]
21562            #[allow(dead_code)]
21563            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21564            #[doc(hidden)]
21565            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21566            #[cfg(test)]
21567            #[allow(dead_code, unreachable_patterns)]
21568            fn _type_assertion(
21569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21570            ) {
21571                match _t {
21572                    alloy_sol_types::private::AssertTypeEq::<
21573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21574                    >(_) => {}
21575                }
21576            }
21577            #[automatically_derived]
21578            #[doc(hidden)]
21579            impl ::core::convert::From<validateMetadataUriCall>
21580            for UnderlyingRustTuple<'_> {
21581                fn from(value: validateMetadataUriCall) -> Self {
21582                    (value.metadataUri,)
21583                }
21584            }
21585            #[automatically_derived]
21586            #[doc(hidden)]
21587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21588            for validateMetadataUriCall {
21589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21590                    Self { metadataUri: tuple.0 }
21591                }
21592            }
21593        }
21594        {
21595            #[doc(hidden)]
21596            #[allow(dead_code)]
21597            type UnderlyingSolTuple<'a> = ();
21598            #[doc(hidden)]
21599            type UnderlyingRustTuple<'a> = ();
21600            #[cfg(test)]
21601            #[allow(dead_code, unreachable_patterns)]
21602            fn _type_assertion(
21603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21604            ) {
21605                match _t {
21606                    alloy_sol_types::private::AssertTypeEq::<
21607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21608                    >(_) => {}
21609                }
21610            }
21611            #[automatically_derived]
21612            #[doc(hidden)]
21613            impl ::core::convert::From<validateMetadataUriReturn>
21614            for UnderlyingRustTuple<'_> {
21615                fn from(value: validateMetadataUriReturn) -> Self {
21616                    ()
21617                }
21618            }
21619            #[automatically_derived]
21620            #[doc(hidden)]
21621            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21622            for validateMetadataUriReturn {
21623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21624                    Self {}
21625                }
21626            }
21627        }
21628        impl validateMetadataUriReturn {
21629            fn _tokenize(
21630                &self,
21631            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21632                ()
21633            }
21634        }
21635        #[automatically_derived]
21636        impl alloy_sol_types::SolCall for validateMetadataUriCall {
21637            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21638            type Token<'a> = <Self::Parameters<
21639                'a,
21640            > as alloy_sol_types::SolType>::Token<'a>;
21641            type Return = validateMetadataUriReturn;
21642            type ReturnTuple<'a> = ();
21643            type ReturnToken<'a> = <Self::ReturnTuple<
21644                'a,
21645            > as alloy_sol_types::SolType>::Token<'a>;
21646            const SIGNATURE: &'static str = "validateMetadataUri(string)";
21647            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
21648            #[inline]
21649            fn new<'a>(
21650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21651            ) -> Self {
21652                tuple.into()
21653            }
21654            #[inline]
21655            fn tokenize(&self) -> Self::Token<'_> {
21656                (
21657                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21658                        &self.metadataUri,
21659                    ),
21660                )
21661            }
21662            #[inline]
21663            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21664                validateMetadataUriReturn::_tokenize(ret)
21665            }
21666            #[inline]
21667            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21668                <Self::ReturnTuple<
21669                    '_,
21670                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21671                    .map(Into::into)
21672            }
21673            #[inline]
21674            fn abi_decode_returns_validate(
21675                data: &[u8],
21676            ) -> alloy_sol_types::Result<Self::Return> {
21677                <Self::ReturnTuple<
21678                    '_,
21679                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21680                    .map(Into::into)
21681            }
21682        }
21683    };
21684    #[derive(serde::Serialize, serde::Deserialize)]
21685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21686    /**Function with signature `validateP2pAddr(string)` and selector `0x15f31835`.
21687```solidity
21688function validateP2pAddr(string memory p2pAddr) external pure;
21689```*/
21690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21691    #[derive(Clone)]
21692    pub struct validateP2pAddrCall {
21693        #[allow(missing_docs)]
21694        pub p2pAddr: alloy::sol_types::private::String,
21695    }
21696    ///Container type for the return parameters of the [`validateP2pAddr(string)`](validateP2pAddrCall) function.
21697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21698    #[derive(Clone)]
21699    pub struct validateP2pAddrReturn {}
21700    #[allow(
21701        non_camel_case_types,
21702        non_snake_case,
21703        clippy::pub_underscore_fields,
21704        clippy::style
21705    )]
21706    const _: () = {
21707        use alloy::sol_types as alloy_sol_types;
21708        {
21709            #[doc(hidden)]
21710            #[allow(dead_code)]
21711            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
21712            #[doc(hidden)]
21713            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
21714            #[cfg(test)]
21715            #[allow(dead_code, unreachable_patterns)]
21716            fn _type_assertion(
21717                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21718            ) {
21719                match _t {
21720                    alloy_sol_types::private::AssertTypeEq::<
21721                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21722                    >(_) => {}
21723                }
21724            }
21725            #[automatically_derived]
21726            #[doc(hidden)]
21727            impl ::core::convert::From<validateP2pAddrCall> for UnderlyingRustTuple<'_> {
21728                fn from(value: validateP2pAddrCall) -> Self {
21729                    (value.p2pAddr,)
21730                }
21731            }
21732            #[automatically_derived]
21733            #[doc(hidden)]
21734            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validateP2pAddrCall {
21735                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21736                    Self { p2pAddr: tuple.0 }
21737                }
21738            }
21739        }
21740        {
21741            #[doc(hidden)]
21742            #[allow(dead_code)]
21743            type UnderlyingSolTuple<'a> = ();
21744            #[doc(hidden)]
21745            type UnderlyingRustTuple<'a> = ();
21746            #[cfg(test)]
21747            #[allow(dead_code, unreachable_patterns)]
21748            fn _type_assertion(
21749                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21750            ) {
21751                match _t {
21752                    alloy_sol_types::private::AssertTypeEq::<
21753                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21754                    >(_) => {}
21755                }
21756            }
21757            #[automatically_derived]
21758            #[doc(hidden)]
21759            impl ::core::convert::From<validateP2pAddrReturn>
21760            for UnderlyingRustTuple<'_> {
21761                fn from(value: validateP2pAddrReturn) -> Self {
21762                    ()
21763                }
21764            }
21765            #[automatically_derived]
21766            #[doc(hidden)]
21767            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21768            for validateP2pAddrReturn {
21769                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21770                    Self {}
21771                }
21772            }
21773        }
21774        impl validateP2pAddrReturn {
21775            fn _tokenize(
21776                &self,
21777            ) -> <validateP2pAddrCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
21778                ()
21779            }
21780        }
21781        #[automatically_derived]
21782        impl alloy_sol_types::SolCall for validateP2pAddrCall {
21783            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
21784            type Token<'a> = <Self::Parameters<
21785                'a,
21786            > as alloy_sol_types::SolType>::Token<'a>;
21787            type Return = validateP2pAddrReturn;
21788            type ReturnTuple<'a> = ();
21789            type ReturnToken<'a> = <Self::ReturnTuple<
21790                'a,
21791            > as alloy_sol_types::SolType>::Token<'a>;
21792            const SIGNATURE: &'static str = "validateP2pAddr(string)";
21793            const SELECTOR: [u8; 4] = [21u8, 243u8, 24u8, 53u8];
21794            #[inline]
21795            fn new<'a>(
21796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21797            ) -> Self {
21798                tuple.into()
21799            }
21800            #[inline]
21801            fn tokenize(&self) -> Self::Token<'_> {
21802                (
21803                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
21804                        &self.p2pAddr,
21805                    ),
21806                )
21807            }
21808            #[inline]
21809            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21810                validateP2pAddrReturn::_tokenize(ret)
21811            }
21812            #[inline]
21813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21814                <Self::ReturnTuple<
21815                    '_,
21816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21817                    .map(Into::into)
21818            }
21819            #[inline]
21820            fn abi_decode_returns_validate(
21821                data: &[u8],
21822            ) -> alloy_sol_types::Result<Self::Return> {
21823                <Self::ReturnTuple<
21824                    '_,
21825                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21826                    .map(Into::into)
21827            }
21828        }
21829    };
21830    #[derive(serde::Serialize, serde::Deserialize)]
21831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21832    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
21833```solidity
21834function validatorExits(address validator) external view returns (uint256 unlocksAt);
21835```*/
21836    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21837    #[derive(Clone)]
21838    pub struct validatorExitsCall {
21839        #[allow(missing_docs)]
21840        pub validator: alloy::sol_types::private::Address,
21841    }
21842    #[derive(serde::Serialize, serde::Deserialize)]
21843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21844    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
21845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21846    #[derive(Clone)]
21847    pub struct validatorExitsReturn {
21848        #[allow(missing_docs)]
21849        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
21850    }
21851    #[allow(
21852        non_camel_case_types,
21853        non_snake_case,
21854        clippy::pub_underscore_fields,
21855        clippy::style
21856    )]
21857    const _: () = {
21858        use alloy::sol_types as alloy_sol_types;
21859        {
21860            #[doc(hidden)]
21861            #[allow(dead_code)]
21862            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
21863            #[doc(hidden)]
21864            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
21865            #[cfg(test)]
21866            #[allow(dead_code, unreachable_patterns)]
21867            fn _type_assertion(
21868                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21869            ) {
21870                match _t {
21871                    alloy_sol_types::private::AssertTypeEq::<
21872                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21873                    >(_) => {}
21874                }
21875            }
21876            #[automatically_derived]
21877            #[doc(hidden)]
21878            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
21879                fn from(value: validatorExitsCall) -> Self {
21880                    (value.validator,)
21881                }
21882            }
21883            #[automatically_derived]
21884            #[doc(hidden)]
21885            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
21886                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21887                    Self { validator: tuple.0 }
21888                }
21889            }
21890        }
21891        {
21892            #[doc(hidden)]
21893            #[allow(dead_code)]
21894            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
21895            #[doc(hidden)]
21896            type UnderlyingRustTuple<'a> = (
21897                alloy::sol_types::private::primitives::aliases::U256,
21898            );
21899            #[cfg(test)]
21900            #[allow(dead_code, unreachable_patterns)]
21901            fn _type_assertion(
21902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
21903            ) {
21904                match _t {
21905                    alloy_sol_types::private::AssertTypeEq::<
21906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
21907                    >(_) => {}
21908                }
21909            }
21910            #[automatically_derived]
21911            #[doc(hidden)]
21912            impl ::core::convert::From<validatorExitsReturn>
21913            for UnderlyingRustTuple<'_> {
21914                fn from(value: validatorExitsReturn) -> Self {
21915                    (value.unlocksAt,)
21916                }
21917            }
21918            #[automatically_derived]
21919            #[doc(hidden)]
21920            impl ::core::convert::From<UnderlyingRustTuple<'_>>
21921            for validatorExitsReturn {
21922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
21923                    Self { unlocksAt: tuple.0 }
21924                }
21925            }
21926        }
21927        #[automatically_derived]
21928        impl alloy_sol_types::SolCall for validatorExitsCall {
21929            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
21930            type Token<'a> = <Self::Parameters<
21931                'a,
21932            > as alloy_sol_types::SolType>::Token<'a>;
21933            type Return = alloy::sol_types::private::primitives::aliases::U256;
21934            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
21935            type ReturnToken<'a> = <Self::ReturnTuple<
21936                'a,
21937            > as alloy_sol_types::SolType>::Token<'a>;
21938            const SIGNATURE: &'static str = "validatorExits(address)";
21939            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
21940            #[inline]
21941            fn new<'a>(
21942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
21943            ) -> Self {
21944                tuple.into()
21945            }
21946            #[inline]
21947            fn tokenize(&self) -> Self::Token<'_> {
21948                (
21949                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
21950                        &self.validator,
21951                    ),
21952                )
21953            }
21954            #[inline]
21955            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
21956                (
21957                    <alloy::sol_types::sol_data::Uint<
21958                        256,
21959                    > as alloy_sol_types::SolType>::tokenize(ret),
21960                )
21961            }
21962            #[inline]
21963            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
21964                <Self::ReturnTuple<
21965                    '_,
21966                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
21967                    .map(|r| {
21968                        let r: validatorExitsReturn = r.into();
21969                        r.unlocksAt
21970                    })
21971            }
21972            #[inline]
21973            fn abi_decode_returns_validate(
21974                data: &[u8],
21975            ) -> alloy_sol_types::Result<Self::Return> {
21976                <Self::ReturnTuple<
21977                    '_,
21978                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
21979                    .map(|r| {
21980                        let r: validatorExitsReturn = r.into();
21981                        r.unlocksAt
21982                    })
21983            }
21984        }
21985    };
21986    #[derive(serde::Serialize, serde::Deserialize)]
21987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21988    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
21989```solidity
21990function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
21991```*/
21992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
21993    #[derive(Clone)]
21994    pub struct validatorsCall {
21995        #[allow(missing_docs)]
21996        pub account: alloy::sol_types::private::Address,
21997    }
21998    #[derive(serde::Serialize, serde::Deserialize)]
21999    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22000    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
22001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22002    #[derive(Clone)]
22003    pub struct validatorsReturn {
22004        #[allow(missing_docs)]
22005        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
22006        #[allow(missing_docs)]
22007        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
22008    }
22009    #[allow(
22010        non_camel_case_types,
22011        non_snake_case,
22012        clippy::pub_underscore_fields,
22013        clippy::style
22014    )]
22015    const _: () = {
22016        use alloy::sol_types as alloy_sol_types;
22017        {
22018            #[doc(hidden)]
22019            #[allow(dead_code)]
22020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
22021            #[doc(hidden)]
22022            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
22023            #[cfg(test)]
22024            #[allow(dead_code, unreachable_patterns)]
22025            fn _type_assertion(
22026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22027            ) {
22028                match _t {
22029                    alloy_sol_types::private::AssertTypeEq::<
22030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22031                    >(_) => {}
22032                }
22033            }
22034            #[automatically_derived]
22035            #[doc(hidden)]
22036            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
22037                fn from(value: validatorsCall) -> Self {
22038                    (value.account,)
22039                }
22040            }
22041            #[automatically_derived]
22042            #[doc(hidden)]
22043            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
22044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22045                    Self { account: tuple.0 }
22046                }
22047            }
22048        }
22049        {
22050            #[doc(hidden)]
22051            #[allow(dead_code)]
22052            type UnderlyingSolTuple<'a> = (
22053                alloy::sol_types::sol_data::Uint<256>,
22054                StakeTable::ValidatorStatus,
22055            );
22056            #[doc(hidden)]
22057            type UnderlyingRustTuple<'a> = (
22058                alloy::sol_types::private::primitives::aliases::U256,
22059                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
22060            );
22061            #[cfg(test)]
22062            #[allow(dead_code, unreachable_patterns)]
22063            fn _type_assertion(
22064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22065            ) {
22066                match _t {
22067                    alloy_sol_types::private::AssertTypeEq::<
22068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22069                    >(_) => {}
22070                }
22071            }
22072            #[automatically_derived]
22073            #[doc(hidden)]
22074            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
22075                fn from(value: validatorsReturn) -> Self {
22076                    (value.delegatedAmount, value.status)
22077                }
22078            }
22079            #[automatically_derived]
22080            #[doc(hidden)]
22081            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
22082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22083                    Self {
22084                        delegatedAmount: tuple.0,
22085                        status: tuple.1,
22086                    }
22087                }
22088            }
22089        }
22090        impl validatorsReturn {
22091            fn _tokenize(
22092                &self,
22093            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
22094                (
22095                    <alloy::sol_types::sol_data::Uint<
22096                        256,
22097                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
22098                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
22099                        &self.status,
22100                    ),
22101                )
22102            }
22103        }
22104        #[automatically_derived]
22105        impl alloy_sol_types::SolCall for validatorsCall {
22106            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
22107            type Token<'a> = <Self::Parameters<
22108                'a,
22109            > as alloy_sol_types::SolType>::Token<'a>;
22110            type Return = validatorsReturn;
22111            type ReturnTuple<'a> = (
22112                alloy::sol_types::sol_data::Uint<256>,
22113                StakeTable::ValidatorStatus,
22114            );
22115            type ReturnToken<'a> = <Self::ReturnTuple<
22116                'a,
22117            > as alloy_sol_types::SolType>::Token<'a>;
22118            const SIGNATURE: &'static str = "validators(address)";
22119            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
22120            #[inline]
22121            fn new<'a>(
22122                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22123            ) -> Self {
22124                tuple.into()
22125            }
22126            #[inline]
22127            fn tokenize(&self) -> Self::Token<'_> {
22128                (
22129                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
22130                        &self.account,
22131                    ),
22132                )
22133            }
22134            #[inline]
22135            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22136                validatorsReturn::_tokenize(ret)
22137            }
22138            #[inline]
22139            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22140                <Self::ReturnTuple<
22141                    '_,
22142                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22143                    .map(Into::into)
22144            }
22145            #[inline]
22146            fn abi_decode_returns_validate(
22147                data: &[u8],
22148            ) -> alloy_sol_types::Result<Self::Return> {
22149                <Self::ReturnTuple<
22150                    '_,
22151                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22152                    .map(Into::into)
22153            }
22154        }
22155    };
22156    #[derive(serde::Serialize, serde::Deserialize)]
22157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22158    /**Function with signature `x25519Keys(bytes32)` and selector `0x5a2f51fd`.
22159```solidity
22160function x25519Keys(bytes32 x25519Key) external view returns (bool used);
22161```*/
22162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22163    #[derive(Clone)]
22164    pub struct x25519KeysCall {
22165        #[allow(missing_docs)]
22166        pub x25519Key: alloy::sol_types::private::FixedBytes<32>,
22167    }
22168    #[derive(serde::Serialize, serde::Deserialize)]
22169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22170    ///Container type for the return parameters of the [`x25519Keys(bytes32)`](x25519KeysCall) function.
22171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22172    #[derive(Clone)]
22173    pub struct x25519KeysReturn {
22174        #[allow(missing_docs)]
22175        pub used: bool,
22176    }
22177    #[allow(
22178        non_camel_case_types,
22179        non_snake_case,
22180        clippy::pub_underscore_fields,
22181        clippy::style
22182    )]
22183    const _: () = {
22184        use alloy::sol_types as alloy_sol_types;
22185        {
22186            #[doc(hidden)]
22187            #[allow(dead_code)]
22188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22189            #[doc(hidden)]
22190            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
22191            #[cfg(test)]
22192            #[allow(dead_code, unreachable_patterns)]
22193            fn _type_assertion(
22194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22195            ) {
22196                match _t {
22197                    alloy_sol_types::private::AssertTypeEq::<
22198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22199                    >(_) => {}
22200                }
22201            }
22202            #[automatically_derived]
22203            #[doc(hidden)]
22204            impl ::core::convert::From<x25519KeysCall> for UnderlyingRustTuple<'_> {
22205                fn from(value: x25519KeysCall) -> Self {
22206                    (value.x25519Key,)
22207                }
22208            }
22209            #[automatically_derived]
22210            #[doc(hidden)]
22211            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysCall {
22212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22213                    Self { x25519Key: tuple.0 }
22214                }
22215            }
22216        }
22217        {
22218            #[doc(hidden)]
22219            #[allow(dead_code)]
22220            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
22221            #[doc(hidden)]
22222            type UnderlyingRustTuple<'a> = (bool,);
22223            #[cfg(test)]
22224            #[allow(dead_code, unreachable_patterns)]
22225            fn _type_assertion(
22226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
22227            ) {
22228                match _t {
22229                    alloy_sol_types::private::AssertTypeEq::<
22230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
22231                    >(_) => {}
22232                }
22233            }
22234            #[automatically_derived]
22235            #[doc(hidden)]
22236            impl ::core::convert::From<x25519KeysReturn> for UnderlyingRustTuple<'_> {
22237                fn from(value: x25519KeysReturn) -> Self {
22238                    (value.used,)
22239                }
22240            }
22241            #[automatically_derived]
22242            #[doc(hidden)]
22243            impl ::core::convert::From<UnderlyingRustTuple<'_>> for x25519KeysReturn {
22244                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
22245                    Self { used: tuple.0 }
22246                }
22247            }
22248        }
22249        #[automatically_derived]
22250        impl alloy_sol_types::SolCall for x25519KeysCall {
22251            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
22252            type Token<'a> = <Self::Parameters<
22253                'a,
22254            > as alloy_sol_types::SolType>::Token<'a>;
22255            type Return = bool;
22256            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
22257            type ReturnToken<'a> = <Self::ReturnTuple<
22258                'a,
22259            > as alloy_sol_types::SolType>::Token<'a>;
22260            const SIGNATURE: &'static str = "x25519Keys(bytes32)";
22261            const SELECTOR: [u8; 4] = [90u8, 47u8, 81u8, 253u8];
22262            #[inline]
22263            fn new<'a>(
22264                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
22265            ) -> Self {
22266                tuple.into()
22267            }
22268            #[inline]
22269            fn tokenize(&self) -> Self::Token<'_> {
22270                (
22271                    <alloy::sol_types::sol_data::FixedBytes<
22272                        32,
22273                    > as alloy_sol_types::SolType>::tokenize(&self.x25519Key),
22274                )
22275            }
22276            #[inline]
22277            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
22278                (
22279                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
22280                        ret,
22281                    ),
22282                )
22283            }
22284            #[inline]
22285            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
22286                <Self::ReturnTuple<
22287                    '_,
22288                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
22289                    .map(|r| {
22290                        let r: x25519KeysReturn = r.into();
22291                        r.used
22292                    })
22293            }
22294            #[inline]
22295            fn abi_decode_returns_validate(
22296                data: &[u8],
22297            ) -> alloy_sol_types::Result<Self::Return> {
22298                <Self::ReturnTuple<
22299                    '_,
22300                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
22301                    .map(|r| {
22302                        let r: x25519KeysReturn = r.into();
22303                        r.used
22304                    })
22305            }
22306        }
22307    };
22308    ///Container for all the [`StakeTableV3`](self) function calls.
22309    #[derive(Clone)]
22310    #[derive(serde::Serialize, serde::Deserialize)]
22311    #[derive()]
22312    pub enum StakeTableV3Calls {
22313        #[allow(missing_docs)]
22314        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
22315        #[allow(missing_docs)]
22316        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
22317        #[allow(missing_docs)]
22318        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
22319        #[allow(missing_docs)]
22320        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
22321        #[allow(missing_docs)]
22322        MAX_P2P_ADDR_LENGTH(MAX_P2P_ADDR_LENGTHCall),
22323        #[allow(missing_docs)]
22324        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
22325        #[allow(missing_docs)]
22326        PAUSER_ROLE(PAUSER_ROLECall),
22327        #[allow(missing_docs)]
22328        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
22329        #[allow(missing_docs)]
22330        _hashBlsKey(_hashBlsKeyCall),
22331        #[allow(missing_docs)]
22332        activeStake(activeStakeCall),
22333        #[allow(missing_docs)]
22334        blsKeys(blsKeysCall),
22335        #[allow(missing_docs)]
22336        claimValidatorExit(claimValidatorExitCall),
22337        #[allow(missing_docs)]
22338        claimWithdrawal(claimWithdrawalCall),
22339        #[allow(missing_docs)]
22340        commissionTracking(commissionTrackingCall),
22341        #[allow(missing_docs)]
22342        delegate(delegateCall),
22343        #[allow(missing_docs)]
22344        delegations(delegationsCall),
22345        #[allow(missing_docs)]
22346        deregisterValidator(deregisterValidatorCall),
22347        #[allow(missing_docs)]
22348        exitEscrowPeriod(exitEscrowPeriodCall),
22349        #[allow(missing_docs)]
22350        getRoleAdmin(getRoleAdminCall),
22351        #[allow(missing_docs)]
22352        getUndelegation(getUndelegationCall),
22353        #[allow(missing_docs)]
22354        getVersion(getVersionCall),
22355        #[allow(missing_docs)]
22356        grantRole(grantRoleCall),
22357        #[allow(missing_docs)]
22358        hasRole(hasRoleCall),
22359        #[allow(missing_docs)]
22360        initialize(initializeCall),
22361        #[allow(missing_docs)]
22362        initializeV2(initializeV2Call),
22363        #[allow(missing_docs)]
22364        initializeV3(initializeV3Call),
22365        #[allow(missing_docs)]
22366        initializedAtBlock(initializedAtBlockCall),
22367        #[allow(missing_docs)]
22368        lightClient(lightClientCall),
22369        #[allow(missing_docs)]
22370        maxCommissionIncrease(maxCommissionIncreaseCall),
22371        #[allow(missing_docs)]
22372        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
22373        #[allow(missing_docs)]
22374        minDelegateAmount(minDelegateAmountCall),
22375        #[allow(missing_docs)]
22376        owner(ownerCall),
22377        #[allow(missing_docs)]
22378        pause(pauseCall),
22379        #[allow(missing_docs)]
22380        paused(pausedCall),
22381        #[allow(missing_docs)]
22382        proxiableUUID(proxiableUUIDCall),
22383        #[allow(missing_docs)]
22384        registerValidator(registerValidatorCall),
22385        #[allow(missing_docs)]
22386        registerValidatorV2(registerValidatorV2Call),
22387        #[allow(missing_docs)]
22388        registerValidatorV3(registerValidatorV3Call),
22389        #[allow(missing_docs)]
22390        renounceOwnership(renounceOwnershipCall),
22391        #[allow(missing_docs)]
22392        renounceRole(renounceRoleCall),
22393        #[allow(missing_docs)]
22394        revokeRole(revokeRoleCall),
22395        #[allow(missing_docs)]
22396        schnorrKeys(schnorrKeysCall),
22397        #[allow(missing_docs)]
22398        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
22399        #[allow(missing_docs)]
22400        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
22401        #[allow(missing_docs)]
22402        setMinDelegateAmount(setMinDelegateAmountCall),
22403        #[allow(missing_docs)]
22404        supportsInterface(supportsInterfaceCall),
22405        #[allow(missing_docs)]
22406        token(tokenCall),
22407        #[allow(missing_docs)]
22408        transferOwnership(transferOwnershipCall),
22409        #[allow(missing_docs)]
22410        undelegate(undelegateCall),
22411        #[allow(missing_docs)]
22412        undelegations(undelegationsCall),
22413        #[allow(missing_docs)]
22414        unpause(unpauseCall),
22415        #[allow(missing_docs)]
22416        updateCommission(updateCommissionCall),
22417        #[allow(missing_docs)]
22418        updateConsensusKeys(updateConsensusKeysCall),
22419        #[allow(missing_docs)]
22420        updateConsensusKeysV2(updateConsensusKeysV2Call),
22421        #[allow(missing_docs)]
22422        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
22423        #[allow(missing_docs)]
22424        updateMetadataUri(updateMetadataUriCall),
22425        #[allow(missing_docs)]
22426        updateNetworkConfig(updateNetworkConfigCall),
22427        #[allow(missing_docs)]
22428        updateP2pAddr(updateP2pAddrCall),
22429        #[allow(missing_docs)]
22430        updateX25519Key(updateX25519KeyCall),
22431        #[allow(missing_docs)]
22432        upgradeToAndCall(upgradeToAndCallCall),
22433        #[allow(missing_docs)]
22434        validateMetadataUri(validateMetadataUriCall),
22435        #[allow(missing_docs)]
22436        validateP2pAddr(validateP2pAddrCall),
22437        #[allow(missing_docs)]
22438        validatorExits(validatorExitsCall),
22439        #[allow(missing_docs)]
22440        validators(validatorsCall),
22441        #[allow(missing_docs)]
22442        x25519Keys(x25519KeysCall),
22443    }
22444    impl StakeTableV3Calls {
22445        /// All the selectors of this enum.
22446        ///
22447        /// Note that the selectors might not be in the same order as the variants.
22448        /// No guarantees are made about the order of the selectors.
22449        ///
22450        /// Prefer using `SolInterface` methods instead.
22451        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22452            [1u8, 255u8, 201u8, 167u8],
22453            [2u8, 110u8, 64u8, 43u8],
22454            [7u8, 61u8, 37u8, 252u8],
22455            [12u8, 178u8, 151u8, 100u8],
22456            [13u8, 142u8, 110u8, 44u8],
22457            [19u8, 185u8, 5u8, 122u8],
22458            [21u8, 243u8, 24u8, 53u8],
22459            [26u8, 32u8, 205u8, 99u8],
22460            [33u8, 64u8, 254u8, 205u8],
22461            [36u8, 138u8, 156u8, 163u8],
22462            [43u8, 158u8, 92u8, 138u8],
22463            [45u8, 201u8, 186u8, 198u8],
22464            [47u8, 47u8, 241u8, 93u8],
22465            [47u8, 226u8, 135u8, 89u8],
22466            [54u8, 86u8, 138u8, 190u8],
22467            [56u8, 228u8, 84u8, 177u8],
22468            [57u8, 75u8, 52u8, 143u8],
22469            [59u8, 43u8, 127u8, 250u8],
22470            [62u8, 115u8, 46u8, 186u8],
22471            [62u8, 157u8, 249u8, 181u8],
22472            [63u8, 59u8, 179u8, 102u8],
22473            [63u8, 75u8, 168u8, 58u8],
22474            [77u8, 153u8, 221u8, 22u8],
22475            [79u8, 30u8, 242u8, 134u8],
22476            [82u8, 120u8, 11u8, 110u8],
22477            [82u8, 209u8, 144u8, 45u8],
22478            [85u8, 68u8, 194u8, 241u8],
22479            [90u8, 47u8, 81u8, 253u8],
22480            [92u8, 151u8, 90u8, 187u8],
22481            [95u8, 135u8, 84u8, 166u8],
22482            [97u8, 112u8, 102u8, 229u8],
22483            [104u8, 135u8, 205u8, 54u8],
22484            [106u8, 145u8, 28u8, 207u8],
22485            [106u8, 210u8, 142u8, 159u8],
22486            [113u8, 80u8, 24u8, 166u8],
22487            [114u8, 233u8, 201u8, 52u8],
22488            [132u8, 86u8, 203u8, 89u8],
22489            [135u8, 12u8, 143u8, 38u8],
22490            [141u8, 165u8, 203u8, 91u8],
22491            [145u8, 209u8, 72u8, 84u8],
22492            [155u8, 48u8, 165u8, 230u8],
22493            [158u8, 154u8, 143u8, 49u8],
22494            [158u8, 201u8, 193u8, 56u8],
22495            [159u8, 251u8, 107u8, 67u8],
22496            [162u8, 23u8, 253u8, 223u8],
22497            [162u8, 215u8, 141u8, 213u8],
22498            [163u8, 6u8, 106u8, 171u8],
22499            [172u8, 92u8, 42u8, 208u8],
22500            [173u8, 60u8, 177u8, 204u8],
22501            [179u8, 230u8, 235u8, 213u8],
22502            [181u8, 112u8, 14u8, 104u8],
22503            [181u8, 236u8, 179u8, 68u8],
22504            [187u8, 96u8, 191u8, 176u8],
22505            [189u8, 73u8, 195u8, 95u8],
22506            [190u8, 32u8, 48u8, 148u8],
22507            [198u8, 72u8, 20u8, 221u8],
22508            [213u8, 71u8, 116u8, 31u8],
22509            [217u8, 204u8, 125u8, 38u8],
22510            [227u8, 242u8, 55u8, 230u8],
22511            [228u8, 209u8, 251u8, 148u8],
22512            [230u8, 41u8, 119u8, 248u8],
22513            [230u8, 58u8, 177u8, 233u8],
22514            [242u8, 253u8, 227u8, 139u8],
22515            [250u8, 82u8, 199u8, 216u8],
22516            [252u8, 12u8, 84u8, 106u8],
22517        ];
22518        /// The names of the variants in the same order as `SELECTORS`.
22519        pub const VARIANT_NAMES: &'static [&'static str] = &[
22520            ::core::stringify!(supportsInterface),
22521            ::core::stringify!(delegate),
22522            ::core::stringify!(updateX25519Key),
22523            ::core::stringify!(updateNetworkConfig),
22524            ::core::stringify!(getVersion),
22525            ::core::stringify!(registerValidator),
22526            ::core::stringify!(validateP2pAddr),
22527            ::core::stringify!(updateExitEscrowPeriod),
22528            ::core::stringify!(claimValidatorExit),
22529            ::core::stringify!(getRoleAdmin),
22530            ::core::stringify!(registerValidatorV2),
22531            ::core::stringify!(setMaxCommissionIncrease),
22532            ::core::stringify!(grantRole),
22533            ::core::stringify!(MAX_METADATA_URI_LENGTH),
22534            ::core::stringify!(renounceRole),
22535            ::core::stringify!(initializeV3),
22536            ::core::stringify!(setMinCommissionUpdateInterval),
22537            ::core::stringify!(updateCommission),
22538            ::core::stringify!(setMinDelegateAmount),
22539            ::core::stringify!(initializedAtBlock),
22540            ::core::stringify!(maxCommissionIncrease),
22541            ::core::stringify!(unpause),
22542            ::core::stringify!(undelegate),
22543            ::core::stringify!(upgradeToAndCall),
22544            ::core::stringify!(initializeV2),
22545            ::core::stringify!(proxiableUUID),
22546            ::core::stringify!(updateConsensusKeys),
22547            ::core::stringify!(x25519Keys),
22548            ::core::stringify!(paused),
22549            ::core::stringify!(schnorrKeys),
22550            ::core::stringify!(MAX_P2P_ADDR_LENGTH),
22551            ::core::stringify!(registerValidatorV3),
22552            ::core::stringify!(deregisterValidator),
22553            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
22554            ::core::stringify!(renounceOwnership),
22555            ::core::stringify!(minDelegateAmount),
22556            ::core::stringify!(pause),
22557            ::core::stringify!(updateMetadataUri),
22558            ::core::stringify!(owner),
22559            ::core::stringify!(hasRole),
22560            ::core::stringify!(_hashBlsKey),
22561            ::core::stringify!(exitEscrowPeriod),
22562            ::core::stringify!(updateP2pAddr),
22563            ::core::stringify!(commissionTracking),
22564            ::core::stringify!(DEFAULT_ADMIN_ROLE),
22565            ::core::stringify!(undelegations),
22566            ::core::stringify!(claimWithdrawal),
22567            ::core::stringify!(updateConsensusKeysV2),
22568            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
22569            ::core::stringify!(blsKeys),
22570            ::core::stringify!(lightClient),
22571            ::core::stringify!(validatorExits),
22572            ::core::stringify!(getUndelegation),
22573            ::core::stringify!(activeStake),
22574            ::core::stringify!(initialize),
22575            ::core::stringify!(delegations),
22576            ::core::stringify!(revokeRole),
22577            ::core::stringify!(minCommissionIncreaseInterval),
22578            ::core::stringify!(validateMetadataUri),
22579            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
22580            ::core::stringify!(MAX_COMMISSION_BPS),
22581            ::core::stringify!(PAUSER_ROLE),
22582            ::core::stringify!(transferOwnership),
22583            ::core::stringify!(validators),
22584            ::core::stringify!(token),
22585        ];
22586        /// The signatures in the same order as `SELECTORS`.
22587        pub const SIGNATURES: &'static [&'static str] = &[
22588            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
22589            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
22590            <updateX25519KeyCall as alloy_sol_types::SolCall>::SIGNATURE,
22591            <updateNetworkConfigCall as alloy_sol_types::SolCall>::SIGNATURE,
22592            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
22593            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
22594            <validateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
22595            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
22596            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
22597            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
22598            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22599            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
22600            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22601            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
22602            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22603            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
22604            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
22605            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
22606            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
22607            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
22608            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
22609            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
22610            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
22611            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
22612            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22613            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
22614            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22615            <x25519KeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22616            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
22617            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22618            <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
22619            <registerValidatorV3Call as alloy_sol_types::SolCall>::SIGNATURE,
22620            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
22621            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
22622            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
22623            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
22624            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
22625            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
22626            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
22627            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22628            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
22629            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
22630            <updateP2pAddrCall as alloy_sol_types::SolCall>::SIGNATURE,
22631            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
22632            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
22633            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
22634            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
22635            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
22636            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
22637            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
22638            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
22639            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
22640            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
22641            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
22642            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
22643            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
22644            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
22645            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
22646            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
22647            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
22648            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
22649            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
22650            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
22651            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
22652            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
22653        ];
22654        /// Returns the signature for the given selector, if known.
22655        #[inline]
22656        pub fn signature_by_selector(
22657            selector: [u8; 4usize],
22658        ) -> ::core::option::Option<&'static str> {
22659            match Self::SELECTORS.binary_search(&selector) {
22660                ::core::result::Result::Ok(idx) => {
22661                    ::core::option::Option::Some(Self::SIGNATURES[idx])
22662                }
22663                ::core::result::Result::Err(_) => ::core::option::Option::None,
22664            }
22665        }
22666        /// Returns the enum variant name for the given selector, if known.
22667        #[inline]
22668        pub fn name_by_selector(
22669            selector: [u8; 4usize],
22670        ) -> ::core::option::Option<&'static str> {
22671            let sig = Self::signature_by_selector(selector)?;
22672            sig.split_once('(').map(|(name, _)| name)
22673        }
22674    }
22675    #[automatically_derived]
22676    impl alloy_sol_types::SolInterface for StakeTableV3Calls {
22677        const NAME: &'static str = "StakeTableV3Calls";
22678        const MIN_DATA_LENGTH: usize = 0usize;
22679        const COUNT: usize = 65usize;
22680        #[inline]
22681        fn selector(&self) -> [u8; 4] {
22682            match self {
22683                Self::DEFAULT_ADMIN_ROLE(_) => {
22684                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
22685                }
22686                Self::MAX_COMMISSION_BPS(_) => {
22687                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
22688                }
22689                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
22690                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
22691                }
22692                Self::MAX_METADATA_URI_LENGTH(_) => {
22693                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
22694                }
22695                Self::MAX_P2P_ADDR_LENGTH(_) => {
22696                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
22697                }
22698                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
22699                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
22700                }
22701                Self::PAUSER_ROLE(_) => {
22702                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
22703                }
22704                Self::UPGRADE_INTERFACE_VERSION(_) => {
22705                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
22706                }
22707                Self::_hashBlsKey(_) => {
22708                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
22709                }
22710                Self::activeStake(_) => {
22711                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
22712                }
22713                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
22714                Self::claimValidatorExit(_) => {
22715                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
22716                }
22717                Self::claimWithdrawal(_) => {
22718                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
22719                }
22720                Self::commissionTracking(_) => {
22721                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
22722                }
22723                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
22724                Self::delegations(_) => {
22725                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
22726                }
22727                Self::deregisterValidator(_) => {
22728                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
22729                }
22730                Self::exitEscrowPeriod(_) => {
22731                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
22732                }
22733                Self::getRoleAdmin(_) => {
22734                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
22735                }
22736                Self::getUndelegation(_) => {
22737                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
22738                }
22739                Self::getVersion(_) => {
22740                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
22741                }
22742                Self::grantRole(_) => {
22743                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
22744                }
22745                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
22746                Self::initialize(_) => {
22747                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
22748                }
22749                Self::initializeV2(_) => {
22750                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
22751                }
22752                Self::initializeV3(_) => {
22753                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
22754                }
22755                Self::initializedAtBlock(_) => {
22756                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
22757                }
22758                Self::lightClient(_) => {
22759                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
22760                }
22761                Self::maxCommissionIncrease(_) => {
22762                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
22763                }
22764                Self::minCommissionIncreaseInterval(_) => {
22765                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
22766                }
22767                Self::minDelegateAmount(_) => {
22768                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
22769                }
22770                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
22771                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
22772                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
22773                Self::proxiableUUID(_) => {
22774                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
22775                }
22776                Self::registerValidator(_) => {
22777                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
22778                }
22779                Self::registerValidatorV2(_) => {
22780                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
22781                }
22782                Self::registerValidatorV3(_) => {
22783                    <registerValidatorV3Call as alloy_sol_types::SolCall>::SELECTOR
22784                }
22785                Self::renounceOwnership(_) => {
22786                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
22787                }
22788                Self::renounceRole(_) => {
22789                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
22790                }
22791                Self::revokeRole(_) => {
22792                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
22793                }
22794                Self::schnorrKeys(_) => {
22795                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
22796                }
22797                Self::setMaxCommissionIncrease(_) => {
22798                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
22799                }
22800                Self::setMinCommissionUpdateInterval(_) => {
22801                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
22802                }
22803                Self::setMinDelegateAmount(_) => {
22804                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
22805                }
22806                Self::supportsInterface(_) => {
22807                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
22808                }
22809                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
22810                Self::transferOwnership(_) => {
22811                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
22812                }
22813                Self::undelegate(_) => {
22814                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
22815                }
22816                Self::undelegations(_) => {
22817                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
22818                }
22819                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
22820                Self::updateCommission(_) => {
22821                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
22822                }
22823                Self::updateConsensusKeys(_) => {
22824                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
22825                }
22826                Self::updateConsensusKeysV2(_) => {
22827                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
22828                }
22829                Self::updateExitEscrowPeriod(_) => {
22830                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
22831                }
22832                Self::updateMetadataUri(_) => {
22833                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
22834                }
22835                Self::updateNetworkConfig(_) => {
22836                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::SELECTOR
22837                }
22838                Self::updateP2pAddr(_) => {
22839                    <updateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
22840                }
22841                Self::updateX25519Key(_) => {
22842                    <updateX25519KeyCall as alloy_sol_types::SolCall>::SELECTOR
22843                }
22844                Self::upgradeToAndCall(_) => {
22845                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
22846                }
22847                Self::validateMetadataUri(_) => {
22848                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
22849                }
22850                Self::validateP2pAddr(_) => {
22851                    <validateP2pAddrCall as alloy_sol_types::SolCall>::SELECTOR
22852                }
22853                Self::validatorExits(_) => {
22854                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
22855                }
22856                Self::validators(_) => {
22857                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
22858                }
22859                Self::x25519Keys(_) => {
22860                    <x25519KeysCall as alloy_sol_types::SolCall>::SELECTOR
22861                }
22862            }
22863        }
22864        #[inline]
22865        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
22866            Self::SELECTORS.get(i).copied()
22867        }
22868        #[inline]
22869        fn valid_selector(selector: [u8; 4]) -> bool {
22870            Self::SELECTORS.binary_search(&selector).is_ok()
22871        }
22872        #[inline]
22873        #[allow(non_snake_case)]
22874        fn abi_decode_raw(
22875            selector: [u8; 4],
22876            data: &[u8],
22877        ) -> alloy_sol_types::Result<Self> {
22878            static DECODE_SHIMS: &[fn(
22879                &[u8],
22880            ) -> alloy_sol_types::Result<StakeTableV3Calls>] = &[
22881                {
22882                    fn supportsInterface(
22883                        data: &[u8],
22884                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22885                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
22886                                data,
22887                            )
22888                            .map(StakeTableV3Calls::supportsInterface)
22889                    }
22890                    supportsInterface
22891                },
22892                {
22893                    fn delegate(
22894                        data: &[u8],
22895                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22896                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
22897                            .map(StakeTableV3Calls::delegate)
22898                    }
22899                    delegate
22900                },
22901                {
22902                    fn updateX25519Key(
22903                        data: &[u8],
22904                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22905                        <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
22906                                data,
22907                            )
22908                            .map(StakeTableV3Calls::updateX25519Key)
22909                    }
22910                    updateX25519Key
22911                },
22912                {
22913                    fn updateNetworkConfig(
22914                        data: &[u8],
22915                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22916                        <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_decode_raw(
22917                                data,
22918                            )
22919                            .map(StakeTableV3Calls::updateNetworkConfig)
22920                    }
22921                    updateNetworkConfig
22922                },
22923                {
22924                    fn getVersion(
22925                        data: &[u8],
22926                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22927                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
22928                                data,
22929                            )
22930                            .map(StakeTableV3Calls::getVersion)
22931                    }
22932                    getVersion
22933                },
22934                {
22935                    fn registerValidator(
22936                        data: &[u8],
22937                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22938                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
22939                                data,
22940                            )
22941                            .map(StakeTableV3Calls::registerValidator)
22942                    }
22943                    registerValidator
22944                },
22945                {
22946                    fn validateP2pAddr(
22947                        data: &[u8],
22948                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22949                        <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw(
22950                                data,
22951                            )
22952                            .map(StakeTableV3Calls::validateP2pAddr)
22953                    }
22954                    validateP2pAddr
22955                },
22956                {
22957                    fn updateExitEscrowPeriod(
22958                        data: &[u8],
22959                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22960                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
22961                                data,
22962                            )
22963                            .map(StakeTableV3Calls::updateExitEscrowPeriod)
22964                    }
22965                    updateExitEscrowPeriod
22966                },
22967                {
22968                    fn claimValidatorExit(
22969                        data: &[u8],
22970                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22971                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
22972                                data,
22973                            )
22974                            .map(StakeTableV3Calls::claimValidatorExit)
22975                    }
22976                    claimValidatorExit
22977                },
22978                {
22979                    fn getRoleAdmin(
22980                        data: &[u8],
22981                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22982                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
22983                                data,
22984                            )
22985                            .map(StakeTableV3Calls::getRoleAdmin)
22986                    }
22987                    getRoleAdmin
22988                },
22989                {
22990                    fn registerValidatorV2(
22991                        data: &[u8],
22992                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
22993                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
22994                                data,
22995                            )
22996                            .map(StakeTableV3Calls::registerValidatorV2)
22997                    }
22998                    registerValidatorV2
22999                },
23000                {
23001                    fn setMaxCommissionIncrease(
23002                        data: &[u8],
23003                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23004                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
23005                                data,
23006                            )
23007                            .map(StakeTableV3Calls::setMaxCommissionIncrease)
23008                    }
23009                    setMaxCommissionIncrease
23010                },
23011                {
23012                    fn grantRole(
23013                        data: &[u8],
23014                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23015                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23016                            .map(StakeTableV3Calls::grantRole)
23017                    }
23018                    grantRole
23019                },
23020                {
23021                    fn MAX_METADATA_URI_LENGTH(
23022                        data: &[u8],
23023                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23024                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
23025                                data,
23026                            )
23027                            .map(StakeTableV3Calls::MAX_METADATA_URI_LENGTH)
23028                    }
23029                    MAX_METADATA_URI_LENGTH
23030                },
23031                {
23032                    fn renounceRole(
23033                        data: &[u8],
23034                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23035                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
23036                                data,
23037                            )
23038                            .map(StakeTableV3Calls::renounceRole)
23039                    }
23040                    renounceRole
23041                },
23042                {
23043                    fn initializeV3(
23044                        data: &[u8],
23045                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23046                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
23047                                data,
23048                            )
23049                            .map(StakeTableV3Calls::initializeV3)
23050                    }
23051                    initializeV3
23052                },
23053                {
23054                    fn setMinCommissionUpdateInterval(
23055                        data: &[u8],
23056                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23057                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23058                                data,
23059                            )
23060                            .map(StakeTableV3Calls::setMinCommissionUpdateInterval)
23061                    }
23062                    setMinCommissionUpdateInterval
23063                },
23064                {
23065                    fn updateCommission(
23066                        data: &[u8],
23067                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23068                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
23069                                data,
23070                            )
23071                            .map(StakeTableV3Calls::updateCommission)
23072                    }
23073                    updateCommission
23074                },
23075                {
23076                    fn setMinDelegateAmount(
23077                        data: &[u8],
23078                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23079                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
23080                                data,
23081                            )
23082                            .map(StakeTableV3Calls::setMinDelegateAmount)
23083                    }
23084                    setMinDelegateAmount
23085                },
23086                {
23087                    fn initializedAtBlock(
23088                        data: &[u8],
23089                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23090                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
23091                                data,
23092                            )
23093                            .map(StakeTableV3Calls::initializedAtBlock)
23094                    }
23095                    initializedAtBlock
23096                },
23097                {
23098                    fn maxCommissionIncrease(
23099                        data: &[u8],
23100                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23101                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
23102                                data,
23103                            )
23104                            .map(StakeTableV3Calls::maxCommissionIncrease)
23105                    }
23106                    maxCommissionIncrease
23107                },
23108                {
23109                    fn unpause(
23110                        data: &[u8],
23111                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23112                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23113                            .map(StakeTableV3Calls::unpause)
23114                    }
23115                    unpause
23116                },
23117                {
23118                    fn undelegate(
23119                        data: &[u8],
23120                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23121                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
23122                                data,
23123                            )
23124                            .map(StakeTableV3Calls::undelegate)
23125                    }
23126                    undelegate
23127                },
23128                {
23129                    fn upgradeToAndCall(
23130                        data: &[u8],
23131                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23132                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
23133                                data,
23134                            )
23135                            .map(StakeTableV3Calls::upgradeToAndCall)
23136                    }
23137                    upgradeToAndCall
23138                },
23139                {
23140                    fn initializeV2(
23141                        data: &[u8],
23142                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23143                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
23144                                data,
23145                            )
23146                            .map(StakeTableV3Calls::initializeV2)
23147                    }
23148                    initializeV2
23149                },
23150                {
23151                    fn proxiableUUID(
23152                        data: &[u8],
23153                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23154                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
23155                                data,
23156                            )
23157                            .map(StakeTableV3Calls::proxiableUUID)
23158                    }
23159                    proxiableUUID
23160                },
23161                {
23162                    fn updateConsensusKeys(
23163                        data: &[u8],
23164                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23165                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23166                                data,
23167                            )
23168                            .map(StakeTableV3Calls::updateConsensusKeys)
23169                    }
23170                    updateConsensusKeys
23171                },
23172                {
23173                    fn x25519Keys(
23174                        data: &[u8],
23175                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23176                        <x25519KeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23177                                data,
23178                            )
23179                            .map(StakeTableV3Calls::x25519Keys)
23180                    }
23181                    x25519Keys
23182                },
23183                {
23184                    fn paused(
23185                        data: &[u8],
23186                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23187                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23188                            .map(StakeTableV3Calls::paused)
23189                    }
23190                    paused
23191                },
23192                {
23193                    fn schnorrKeys(
23194                        data: &[u8],
23195                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23196                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
23197                                data,
23198                            )
23199                            .map(StakeTableV3Calls::schnorrKeys)
23200                    }
23201                    schnorrKeys
23202                },
23203                {
23204                    fn MAX_P2P_ADDR_LENGTH(
23205                        data: &[u8],
23206                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23207                        <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
23208                                data,
23209                            )
23210                            .map(StakeTableV3Calls::MAX_P2P_ADDR_LENGTH)
23211                    }
23212                    MAX_P2P_ADDR_LENGTH
23213                },
23214                {
23215                    fn registerValidatorV3(
23216                        data: &[u8],
23217                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23218                        <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
23219                                data,
23220                            )
23221                            .map(StakeTableV3Calls::registerValidatorV3)
23222                    }
23223                    registerValidatorV3
23224                },
23225                {
23226                    fn deregisterValidator(
23227                        data: &[u8],
23228                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23229                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
23230                                data,
23231                            )
23232                            .map(StakeTableV3Calls::deregisterValidator)
23233                    }
23234                    deregisterValidator
23235                },
23236                {
23237                    fn MIN_EXIT_ESCROW_PERIOD(
23238                        data: &[u8],
23239                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23240                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
23241                                data,
23242                            )
23243                            .map(StakeTableV3Calls::MIN_EXIT_ESCROW_PERIOD)
23244                    }
23245                    MIN_EXIT_ESCROW_PERIOD
23246                },
23247                {
23248                    fn renounceOwnership(
23249                        data: &[u8],
23250                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23251                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
23252                                data,
23253                            )
23254                            .map(StakeTableV3Calls::renounceOwnership)
23255                    }
23256                    renounceOwnership
23257                },
23258                {
23259                    fn minDelegateAmount(
23260                        data: &[u8],
23261                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23262                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
23263                                data,
23264                            )
23265                            .map(StakeTableV3Calls::minDelegateAmount)
23266                    }
23267                    minDelegateAmount
23268                },
23269                {
23270                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23271                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23272                            .map(StakeTableV3Calls::pause)
23273                    }
23274                    pause
23275                },
23276                {
23277                    fn updateMetadataUri(
23278                        data: &[u8],
23279                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23280                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
23281                                data,
23282                            )
23283                            .map(StakeTableV3Calls::updateMetadataUri)
23284                    }
23285                    updateMetadataUri
23286                },
23287                {
23288                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23289                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23290                            .map(StakeTableV3Calls::owner)
23291                    }
23292                    owner
23293                },
23294                {
23295                    fn hasRole(
23296                        data: &[u8],
23297                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23298                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23299                            .map(StakeTableV3Calls::hasRole)
23300                    }
23301                    hasRole
23302                },
23303                {
23304                    fn _hashBlsKey(
23305                        data: &[u8],
23306                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23307                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
23308                                data,
23309                            )
23310                            .map(StakeTableV3Calls::_hashBlsKey)
23311                    }
23312                    _hashBlsKey
23313                },
23314                {
23315                    fn exitEscrowPeriod(
23316                        data: &[u8],
23317                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23318                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
23319                                data,
23320                            )
23321                            .map(StakeTableV3Calls::exitEscrowPeriod)
23322                    }
23323                    exitEscrowPeriod
23324                },
23325                {
23326                    fn updateP2pAddr(
23327                        data: &[u8],
23328                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23329                        <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw(
23330                                data,
23331                            )
23332                            .map(StakeTableV3Calls::updateP2pAddr)
23333                    }
23334                    updateP2pAddr
23335                },
23336                {
23337                    fn commissionTracking(
23338                        data: &[u8],
23339                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23340                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
23341                                data,
23342                            )
23343                            .map(StakeTableV3Calls::commissionTracking)
23344                    }
23345                    commissionTracking
23346                },
23347                {
23348                    fn DEFAULT_ADMIN_ROLE(
23349                        data: &[u8],
23350                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23351                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
23352                                data,
23353                            )
23354                            .map(StakeTableV3Calls::DEFAULT_ADMIN_ROLE)
23355                    }
23356                    DEFAULT_ADMIN_ROLE
23357                },
23358                {
23359                    fn undelegations(
23360                        data: &[u8],
23361                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23362                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23363                                data,
23364                            )
23365                            .map(StakeTableV3Calls::undelegations)
23366                    }
23367                    undelegations
23368                },
23369                {
23370                    fn claimWithdrawal(
23371                        data: &[u8],
23372                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23373                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23374                                data,
23375                            )
23376                            .map(StakeTableV3Calls::claimWithdrawal)
23377                    }
23378                    claimWithdrawal
23379                },
23380                {
23381                    fn updateConsensusKeysV2(
23382                        data: &[u8],
23383                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23384                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
23385                                data,
23386                            )
23387                            .map(StakeTableV3Calls::updateConsensusKeysV2)
23388                    }
23389                    updateConsensusKeysV2
23390                },
23391                {
23392                    fn UPGRADE_INTERFACE_VERSION(
23393                        data: &[u8],
23394                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23395                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
23396                                data,
23397                            )
23398                            .map(StakeTableV3Calls::UPGRADE_INTERFACE_VERSION)
23399                    }
23400                    UPGRADE_INTERFACE_VERSION
23401                },
23402                {
23403                    fn blsKeys(
23404                        data: &[u8],
23405                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23406                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23407                            .map(StakeTableV3Calls::blsKeys)
23408                    }
23409                    blsKeys
23410                },
23411                {
23412                    fn lightClient(
23413                        data: &[u8],
23414                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23415                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
23416                                data,
23417                            )
23418                            .map(StakeTableV3Calls::lightClient)
23419                    }
23420                    lightClient
23421                },
23422                {
23423                    fn validatorExits(
23424                        data: &[u8],
23425                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23426                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23427                                data,
23428                            )
23429                            .map(StakeTableV3Calls::validatorExits)
23430                    }
23431                    validatorExits
23432                },
23433                {
23434                    fn getUndelegation(
23435                        data: &[u8],
23436                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23437                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
23438                                data,
23439                            )
23440                            .map(StakeTableV3Calls::getUndelegation)
23441                    }
23442                    getUndelegation
23443                },
23444                {
23445                    fn activeStake(
23446                        data: &[u8],
23447                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23448                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
23449                                data,
23450                            )
23451                            .map(StakeTableV3Calls::activeStake)
23452                    }
23453                    activeStake
23454                },
23455                {
23456                    fn initialize(
23457                        data: &[u8],
23458                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23459                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
23460                                data,
23461                            )
23462                            .map(StakeTableV3Calls::initialize)
23463                    }
23464                    initialize
23465                },
23466                {
23467                    fn delegations(
23468                        data: &[u8],
23469                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23470                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23471                                data,
23472                            )
23473                            .map(StakeTableV3Calls::delegations)
23474                    }
23475                    delegations
23476                },
23477                {
23478                    fn revokeRole(
23479                        data: &[u8],
23480                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23481                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
23482                                data,
23483                            )
23484                            .map(StakeTableV3Calls::revokeRole)
23485                    }
23486                    revokeRole
23487                },
23488                {
23489                    fn minCommissionIncreaseInterval(
23490                        data: &[u8],
23491                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23492                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
23493                                data,
23494                            )
23495                            .map(StakeTableV3Calls::minCommissionIncreaseInterval)
23496                    }
23497                    minCommissionIncreaseInterval
23498                },
23499                {
23500                    fn validateMetadataUri(
23501                        data: &[u8],
23502                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23503                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
23504                                data,
23505                            )
23506                            .map(StakeTableV3Calls::validateMetadataUri)
23507                    }
23508                    validateMetadataUri
23509                },
23510                {
23511                    fn MAX_EXIT_ESCROW_PERIOD(
23512                        data: &[u8],
23513                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23514                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
23515                                data,
23516                            )
23517                            .map(StakeTableV3Calls::MAX_EXIT_ESCROW_PERIOD)
23518                    }
23519                    MAX_EXIT_ESCROW_PERIOD
23520                },
23521                {
23522                    fn MAX_COMMISSION_BPS(
23523                        data: &[u8],
23524                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23525                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw(
23526                                data,
23527                            )
23528                            .map(StakeTableV3Calls::MAX_COMMISSION_BPS)
23529                    }
23530                    MAX_COMMISSION_BPS
23531                },
23532                {
23533                    fn PAUSER_ROLE(
23534                        data: &[u8],
23535                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23536                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
23537                                data,
23538                            )
23539                            .map(StakeTableV3Calls::PAUSER_ROLE)
23540                    }
23541                    PAUSER_ROLE
23542                },
23543                {
23544                    fn transferOwnership(
23545                        data: &[u8],
23546                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23547                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
23548                                data,
23549                            )
23550                            .map(StakeTableV3Calls::transferOwnership)
23551                    }
23552                    transferOwnership
23553                },
23554                {
23555                    fn validators(
23556                        data: &[u8],
23557                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23558                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
23559                                data,
23560                            )
23561                            .map(StakeTableV3Calls::validators)
23562                    }
23563                    validators
23564                },
23565                {
23566                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23567                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
23568                            .map(StakeTableV3Calls::token)
23569                    }
23570                    token
23571                },
23572            ];
23573            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23574                return Err(
23575                    alloy_sol_types::Error::unknown_selector(
23576                        <Self as alloy_sol_types::SolInterface>::NAME,
23577                        selector,
23578                    ),
23579                );
23580            };
23581            DECODE_SHIMS[idx](data)
23582        }
23583        #[inline]
23584        #[allow(non_snake_case)]
23585        fn abi_decode_raw_validate(
23586            selector: [u8; 4],
23587            data: &[u8],
23588        ) -> alloy_sol_types::Result<Self> {
23589            static DECODE_VALIDATE_SHIMS: &[fn(
23590                &[u8],
23591            ) -> alloy_sol_types::Result<StakeTableV3Calls>] = &[
23592                {
23593                    fn supportsInterface(
23594                        data: &[u8],
23595                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23596                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23597                                data,
23598                            )
23599                            .map(StakeTableV3Calls::supportsInterface)
23600                    }
23601                    supportsInterface
23602                },
23603                {
23604                    fn delegate(
23605                        data: &[u8],
23606                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23607                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23608                                data,
23609                            )
23610                            .map(StakeTableV3Calls::delegate)
23611                    }
23612                    delegate
23613                },
23614                {
23615                    fn updateX25519Key(
23616                        data: &[u8],
23617                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23618                        <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23619                                data,
23620                            )
23621                            .map(StakeTableV3Calls::updateX25519Key)
23622                    }
23623                    updateX25519Key
23624                },
23625                {
23626                    fn updateNetworkConfig(
23627                        data: &[u8],
23628                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23629                        <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23630                                data,
23631                            )
23632                            .map(StakeTableV3Calls::updateNetworkConfig)
23633                    }
23634                    updateNetworkConfig
23635                },
23636                {
23637                    fn getVersion(
23638                        data: &[u8],
23639                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23640                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23641                                data,
23642                            )
23643                            .map(StakeTableV3Calls::getVersion)
23644                    }
23645                    getVersion
23646                },
23647                {
23648                    fn registerValidator(
23649                        data: &[u8],
23650                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23651                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23652                                data,
23653                            )
23654                            .map(StakeTableV3Calls::registerValidator)
23655                    }
23656                    registerValidator
23657                },
23658                {
23659                    fn validateP2pAddr(
23660                        data: &[u8],
23661                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23662                        <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23663                                data,
23664                            )
23665                            .map(StakeTableV3Calls::validateP2pAddr)
23666                    }
23667                    validateP2pAddr
23668                },
23669                {
23670                    fn updateExitEscrowPeriod(
23671                        data: &[u8],
23672                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23673                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23674                                data,
23675                            )
23676                            .map(StakeTableV3Calls::updateExitEscrowPeriod)
23677                    }
23678                    updateExitEscrowPeriod
23679                },
23680                {
23681                    fn claimValidatorExit(
23682                        data: &[u8],
23683                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23684                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23685                                data,
23686                            )
23687                            .map(StakeTableV3Calls::claimValidatorExit)
23688                    }
23689                    claimValidatorExit
23690                },
23691                {
23692                    fn getRoleAdmin(
23693                        data: &[u8],
23694                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23695                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23696                                data,
23697                            )
23698                            .map(StakeTableV3Calls::getRoleAdmin)
23699                    }
23700                    getRoleAdmin
23701                },
23702                {
23703                    fn registerValidatorV2(
23704                        data: &[u8],
23705                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23706                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23707                                data,
23708                            )
23709                            .map(StakeTableV3Calls::registerValidatorV2)
23710                    }
23711                    registerValidatorV2
23712                },
23713                {
23714                    fn setMaxCommissionIncrease(
23715                        data: &[u8],
23716                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23717                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23718                                data,
23719                            )
23720                            .map(StakeTableV3Calls::setMaxCommissionIncrease)
23721                    }
23722                    setMaxCommissionIncrease
23723                },
23724                {
23725                    fn grantRole(
23726                        data: &[u8],
23727                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23728                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23729                                data,
23730                            )
23731                            .map(StakeTableV3Calls::grantRole)
23732                    }
23733                    grantRole
23734                },
23735                {
23736                    fn MAX_METADATA_URI_LENGTH(
23737                        data: &[u8],
23738                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23739                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23740                                data,
23741                            )
23742                            .map(StakeTableV3Calls::MAX_METADATA_URI_LENGTH)
23743                    }
23744                    MAX_METADATA_URI_LENGTH
23745                },
23746                {
23747                    fn renounceRole(
23748                        data: &[u8],
23749                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23750                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23751                                data,
23752                            )
23753                            .map(StakeTableV3Calls::renounceRole)
23754                    }
23755                    renounceRole
23756                },
23757                {
23758                    fn initializeV3(
23759                        data: &[u8],
23760                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23761                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23762                                data,
23763                            )
23764                            .map(StakeTableV3Calls::initializeV3)
23765                    }
23766                    initializeV3
23767                },
23768                {
23769                    fn setMinCommissionUpdateInterval(
23770                        data: &[u8],
23771                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23772                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23773                                data,
23774                            )
23775                            .map(StakeTableV3Calls::setMinCommissionUpdateInterval)
23776                    }
23777                    setMinCommissionUpdateInterval
23778                },
23779                {
23780                    fn updateCommission(
23781                        data: &[u8],
23782                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23783                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23784                                data,
23785                            )
23786                            .map(StakeTableV3Calls::updateCommission)
23787                    }
23788                    updateCommission
23789                },
23790                {
23791                    fn setMinDelegateAmount(
23792                        data: &[u8],
23793                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23794                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23795                                data,
23796                            )
23797                            .map(StakeTableV3Calls::setMinDelegateAmount)
23798                    }
23799                    setMinDelegateAmount
23800                },
23801                {
23802                    fn initializedAtBlock(
23803                        data: &[u8],
23804                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23805                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23806                                data,
23807                            )
23808                            .map(StakeTableV3Calls::initializedAtBlock)
23809                    }
23810                    initializedAtBlock
23811                },
23812                {
23813                    fn maxCommissionIncrease(
23814                        data: &[u8],
23815                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23816                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23817                                data,
23818                            )
23819                            .map(StakeTableV3Calls::maxCommissionIncrease)
23820                    }
23821                    maxCommissionIncrease
23822                },
23823                {
23824                    fn unpause(
23825                        data: &[u8],
23826                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23827                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23828                                data,
23829                            )
23830                            .map(StakeTableV3Calls::unpause)
23831                    }
23832                    unpause
23833                },
23834                {
23835                    fn undelegate(
23836                        data: &[u8],
23837                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23838                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23839                                data,
23840                            )
23841                            .map(StakeTableV3Calls::undelegate)
23842                    }
23843                    undelegate
23844                },
23845                {
23846                    fn upgradeToAndCall(
23847                        data: &[u8],
23848                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23849                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23850                                data,
23851                            )
23852                            .map(StakeTableV3Calls::upgradeToAndCall)
23853                    }
23854                    upgradeToAndCall
23855                },
23856                {
23857                    fn initializeV2(
23858                        data: &[u8],
23859                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23860                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23861                                data,
23862                            )
23863                            .map(StakeTableV3Calls::initializeV2)
23864                    }
23865                    initializeV2
23866                },
23867                {
23868                    fn proxiableUUID(
23869                        data: &[u8],
23870                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23871                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23872                                data,
23873                            )
23874                            .map(StakeTableV3Calls::proxiableUUID)
23875                    }
23876                    proxiableUUID
23877                },
23878                {
23879                    fn updateConsensusKeys(
23880                        data: &[u8],
23881                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23882                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23883                                data,
23884                            )
23885                            .map(StakeTableV3Calls::updateConsensusKeys)
23886                    }
23887                    updateConsensusKeys
23888                },
23889                {
23890                    fn x25519Keys(
23891                        data: &[u8],
23892                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23893                        <x25519KeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23894                                data,
23895                            )
23896                            .map(StakeTableV3Calls::x25519Keys)
23897                    }
23898                    x25519Keys
23899                },
23900                {
23901                    fn paused(
23902                        data: &[u8],
23903                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23904                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23905                                data,
23906                            )
23907                            .map(StakeTableV3Calls::paused)
23908                    }
23909                    paused
23910                },
23911                {
23912                    fn schnorrKeys(
23913                        data: &[u8],
23914                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23915                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23916                                data,
23917                            )
23918                            .map(StakeTableV3Calls::schnorrKeys)
23919                    }
23920                    schnorrKeys
23921                },
23922                {
23923                    fn MAX_P2P_ADDR_LENGTH(
23924                        data: &[u8],
23925                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23926                        <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23927                                data,
23928                            )
23929                            .map(StakeTableV3Calls::MAX_P2P_ADDR_LENGTH)
23930                    }
23931                    MAX_P2P_ADDR_LENGTH
23932                },
23933                {
23934                    fn registerValidatorV3(
23935                        data: &[u8],
23936                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23937                        <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23938                                data,
23939                            )
23940                            .map(StakeTableV3Calls::registerValidatorV3)
23941                    }
23942                    registerValidatorV3
23943                },
23944                {
23945                    fn deregisterValidator(
23946                        data: &[u8],
23947                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23948                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23949                                data,
23950                            )
23951                            .map(StakeTableV3Calls::deregisterValidator)
23952                    }
23953                    deregisterValidator
23954                },
23955                {
23956                    fn MIN_EXIT_ESCROW_PERIOD(
23957                        data: &[u8],
23958                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23959                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23960                                data,
23961                            )
23962                            .map(StakeTableV3Calls::MIN_EXIT_ESCROW_PERIOD)
23963                    }
23964                    MIN_EXIT_ESCROW_PERIOD
23965                },
23966                {
23967                    fn renounceOwnership(
23968                        data: &[u8],
23969                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23970                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23971                                data,
23972                            )
23973                            .map(StakeTableV3Calls::renounceOwnership)
23974                    }
23975                    renounceOwnership
23976                },
23977                {
23978                    fn minDelegateAmount(
23979                        data: &[u8],
23980                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
23981                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23982                                data,
23983                            )
23984                            .map(StakeTableV3Calls::minDelegateAmount)
23985                    }
23986                    minDelegateAmount
23987                },
23988                {
23989                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
23990                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
23991                                data,
23992                            )
23993                            .map(StakeTableV3Calls::pause)
23994                    }
23995                    pause
23996                },
23997                {
23998                    fn updateMetadataUri(
23999                        data: &[u8],
24000                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24001                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24002                                data,
24003                            )
24004                            .map(StakeTableV3Calls::updateMetadataUri)
24005                    }
24006                    updateMetadataUri
24007                },
24008                {
24009                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
24010                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24011                                data,
24012                            )
24013                            .map(StakeTableV3Calls::owner)
24014                    }
24015                    owner
24016                },
24017                {
24018                    fn hasRole(
24019                        data: &[u8],
24020                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24021                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24022                                data,
24023                            )
24024                            .map(StakeTableV3Calls::hasRole)
24025                    }
24026                    hasRole
24027                },
24028                {
24029                    fn _hashBlsKey(
24030                        data: &[u8],
24031                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24032                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24033                                data,
24034                            )
24035                            .map(StakeTableV3Calls::_hashBlsKey)
24036                    }
24037                    _hashBlsKey
24038                },
24039                {
24040                    fn exitEscrowPeriod(
24041                        data: &[u8],
24042                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24043                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24044                                data,
24045                            )
24046                            .map(StakeTableV3Calls::exitEscrowPeriod)
24047                    }
24048                    exitEscrowPeriod
24049                },
24050                {
24051                    fn updateP2pAddr(
24052                        data: &[u8],
24053                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24054                        <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24055                                data,
24056                            )
24057                            .map(StakeTableV3Calls::updateP2pAddr)
24058                    }
24059                    updateP2pAddr
24060                },
24061                {
24062                    fn commissionTracking(
24063                        data: &[u8],
24064                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24065                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24066                                data,
24067                            )
24068                            .map(StakeTableV3Calls::commissionTracking)
24069                    }
24070                    commissionTracking
24071                },
24072                {
24073                    fn DEFAULT_ADMIN_ROLE(
24074                        data: &[u8],
24075                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24076                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24077                                data,
24078                            )
24079                            .map(StakeTableV3Calls::DEFAULT_ADMIN_ROLE)
24080                    }
24081                    DEFAULT_ADMIN_ROLE
24082                },
24083                {
24084                    fn undelegations(
24085                        data: &[u8],
24086                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24087                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24088                                data,
24089                            )
24090                            .map(StakeTableV3Calls::undelegations)
24091                    }
24092                    undelegations
24093                },
24094                {
24095                    fn claimWithdrawal(
24096                        data: &[u8],
24097                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24098                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24099                                data,
24100                            )
24101                            .map(StakeTableV3Calls::claimWithdrawal)
24102                    }
24103                    claimWithdrawal
24104                },
24105                {
24106                    fn updateConsensusKeysV2(
24107                        data: &[u8],
24108                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24109                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24110                                data,
24111                            )
24112                            .map(StakeTableV3Calls::updateConsensusKeysV2)
24113                    }
24114                    updateConsensusKeysV2
24115                },
24116                {
24117                    fn UPGRADE_INTERFACE_VERSION(
24118                        data: &[u8],
24119                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24120                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24121                                data,
24122                            )
24123                            .map(StakeTableV3Calls::UPGRADE_INTERFACE_VERSION)
24124                    }
24125                    UPGRADE_INTERFACE_VERSION
24126                },
24127                {
24128                    fn blsKeys(
24129                        data: &[u8],
24130                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24131                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24132                                data,
24133                            )
24134                            .map(StakeTableV3Calls::blsKeys)
24135                    }
24136                    blsKeys
24137                },
24138                {
24139                    fn lightClient(
24140                        data: &[u8],
24141                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24142                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24143                                data,
24144                            )
24145                            .map(StakeTableV3Calls::lightClient)
24146                    }
24147                    lightClient
24148                },
24149                {
24150                    fn validatorExits(
24151                        data: &[u8],
24152                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24153                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24154                                data,
24155                            )
24156                            .map(StakeTableV3Calls::validatorExits)
24157                    }
24158                    validatorExits
24159                },
24160                {
24161                    fn getUndelegation(
24162                        data: &[u8],
24163                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24164                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24165                                data,
24166                            )
24167                            .map(StakeTableV3Calls::getUndelegation)
24168                    }
24169                    getUndelegation
24170                },
24171                {
24172                    fn activeStake(
24173                        data: &[u8],
24174                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24175                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24176                                data,
24177                            )
24178                            .map(StakeTableV3Calls::activeStake)
24179                    }
24180                    activeStake
24181                },
24182                {
24183                    fn initialize(
24184                        data: &[u8],
24185                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24186                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24187                                data,
24188                            )
24189                            .map(StakeTableV3Calls::initialize)
24190                    }
24191                    initialize
24192                },
24193                {
24194                    fn delegations(
24195                        data: &[u8],
24196                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24197                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24198                                data,
24199                            )
24200                            .map(StakeTableV3Calls::delegations)
24201                    }
24202                    delegations
24203                },
24204                {
24205                    fn revokeRole(
24206                        data: &[u8],
24207                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24208                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24209                                data,
24210                            )
24211                            .map(StakeTableV3Calls::revokeRole)
24212                    }
24213                    revokeRole
24214                },
24215                {
24216                    fn minCommissionIncreaseInterval(
24217                        data: &[u8],
24218                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24219                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24220                                data,
24221                            )
24222                            .map(StakeTableV3Calls::minCommissionIncreaseInterval)
24223                    }
24224                    minCommissionIncreaseInterval
24225                },
24226                {
24227                    fn validateMetadataUri(
24228                        data: &[u8],
24229                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24230                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24231                                data,
24232                            )
24233                            .map(StakeTableV3Calls::validateMetadataUri)
24234                    }
24235                    validateMetadataUri
24236                },
24237                {
24238                    fn MAX_EXIT_ESCROW_PERIOD(
24239                        data: &[u8],
24240                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24241                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24242                                data,
24243                            )
24244                            .map(StakeTableV3Calls::MAX_EXIT_ESCROW_PERIOD)
24245                    }
24246                    MAX_EXIT_ESCROW_PERIOD
24247                },
24248                {
24249                    fn MAX_COMMISSION_BPS(
24250                        data: &[u8],
24251                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24252                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24253                                data,
24254                            )
24255                            .map(StakeTableV3Calls::MAX_COMMISSION_BPS)
24256                    }
24257                    MAX_COMMISSION_BPS
24258                },
24259                {
24260                    fn PAUSER_ROLE(
24261                        data: &[u8],
24262                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24263                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24264                                data,
24265                            )
24266                            .map(StakeTableV3Calls::PAUSER_ROLE)
24267                    }
24268                    PAUSER_ROLE
24269                },
24270                {
24271                    fn transferOwnership(
24272                        data: &[u8],
24273                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24274                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24275                                data,
24276                            )
24277                            .map(StakeTableV3Calls::transferOwnership)
24278                    }
24279                    transferOwnership
24280                },
24281                {
24282                    fn validators(
24283                        data: &[u8],
24284                    ) -> alloy_sol_types::Result<StakeTableV3Calls> {
24285                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24286                                data,
24287                            )
24288                            .map(StakeTableV3Calls::validators)
24289                    }
24290                    validators
24291                },
24292                {
24293                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV3Calls> {
24294                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
24295                                data,
24296                            )
24297                            .map(StakeTableV3Calls::token)
24298                    }
24299                    token
24300                },
24301            ];
24302            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
24303                return Err(
24304                    alloy_sol_types::Error::unknown_selector(
24305                        <Self as alloy_sol_types::SolInterface>::NAME,
24306                        selector,
24307                    ),
24308                );
24309            };
24310            DECODE_VALIDATE_SHIMS[idx](data)
24311        }
24312        #[inline]
24313        fn abi_encoded_size(&self) -> usize {
24314            match self {
24315                Self::DEFAULT_ADMIN_ROLE(inner) => {
24316                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
24317                        inner,
24318                    )
24319                }
24320                Self::MAX_COMMISSION_BPS(inner) => {
24321                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
24322                        inner,
24323                    )
24324                }
24325                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
24326                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24327                        inner,
24328                    )
24329                }
24330                Self::MAX_METADATA_URI_LENGTH(inner) => {
24331                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24332                        inner,
24333                    )
24334                }
24335                Self::MAX_P2P_ADDR_LENGTH(inner) => {
24336                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
24337                        inner,
24338                    )
24339                }
24340                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
24341                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
24342                        inner,
24343                    )
24344                }
24345                Self::PAUSER_ROLE(inner) => {
24346                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
24347                        inner,
24348                    )
24349                }
24350                Self::UPGRADE_INTERFACE_VERSION(inner) => {
24351                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
24352                        inner,
24353                    )
24354                }
24355                Self::_hashBlsKey(inner) => {
24356                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
24357                        inner,
24358                    )
24359                }
24360                Self::activeStake(inner) => {
24361                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
24362                        inner,
24363                    )
24364                }
24365                Self::blsKeys(inner) => {
24366                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24367                }
24368                Self::claimValidatorExit(inner) => {
24369                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
24370                        inner,
24371                    )
24372                }
24373                Self::claimWithdrawal(inner) => {
24374                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24375                        inner,
24376                    )
24377                }
24378                Self::commissionTracking(inner) => {
24379                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
24380                        inner,
24381                    )
24382                }
24383                Self::delegate(inner) => {
24384                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24385                }
24386                Self::delegations(inner) => {
24387                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24388                        inner,
24389                    )
24390                }
24391                Self::deregisterValidator(inner) => {
24392                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
24393                        inner,
24394                    )
24395                }
24396                Self::exitEscrowPeriod(inner) => {
24397                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
24398                        inner,
24399                    )
24400                }
24401                Self::getRoleAdmin(inner) => {
24402                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
24403                        inner,
24404                    )
24405                }
24406                Self::getUndelegation(inner) => {
24407                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
24408                        inner,
24409                    )
24410                }
24411                Self::getVersion(inner) => {
24412                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24413                }
24414                Self::grantRole(inner) => {
24415                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24416                }
24417                Self::hasRole(inner) => {
24418                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24419                }
24420                Self::initialize(inner) => {
24421                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24422                }
24423                Self::initializeV2(inner) => {
24424                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24425                        inner,
24426                    )
24427                }
24428                Self::initializeV3(inner) => {
24429                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
24430                        inner,
24431                    )
24432                }
24433                Self::initializedAtBlock(inner) => {
24434                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
24435                        inner,
24436                    )
24437                }
24438                Self::lightClient(inner) => {
24439                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
24440                        inner,
24441                    )
24442                }
24443                Self::maxCommissionIncrease(inner) => {
24444                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
24445                        inner,
24446                    )
24447                }
24448                Self::minCommissionIncreaseInterval(inner) => {
24449                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24450                        inner,
24451                    )
24452                }
24453                Self::minDelegateAmount(inner) => {
24454                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
24455                        inner,
24456                    )
24457                }
24458                Self::owner(inner) => {
24459                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24460                }
24461                Self::pause(inner) => {
24462                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24463                }
24464                Self::paused(inner) => {
24465                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24466                }
24467                Self::proxiableUUID(inner) => {
24468                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
24469                        inner,
24470                    )
24471                }
24472                Self::registerValidator(inner) => {
24473                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
24474                        inner,
24475                    )
24476                }
24477                Self::registerValidatorV2(inner) => {
24478                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24479                        inner,
24480                    )
24481                }
24482                Self::registerValidatorV3(inner) => {
24483                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
24484                        inner,
24485                    )
24486                }
24487                Self::renounceOwnership(inner) => {
24488                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
24489                        inner,
24490                    )
24491                }
24492                Self::renounceRole(inner) => {
24493                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
24494                        inner,
24495                    )
24496                }
24497                Self::revokeRole(inner) => {
24498                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24499                }
24500                Self::schnorrKeys(inner) => {
24501                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
24502                        inner,
24503                    )
24504                }
24505                Self::setMaxCommissionIncrease(inner) => {
24506                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
24507                        inner,
24508                    )
24509                }
24510                Self::setMinCommissionUpdateInterval(inner) => {
24511                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
24512                        inner,
24513                    )
24514                }
24515                Self::setMinDelegateAmount(inner) => {
24516                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
24517                        inner,
24518                    )
24519                }
24520                Self::supportsInterface(inner) => {
24521                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
24522                        inner,
24523                    )
24524                }
24525                Self::token(inner) => {
24526                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24527                }
24528                Self::transferOwnership(inner) => {
24529                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
24530                        inner,
24531                    )
24532                }
24533                Self::undelegate(inner) => {
24534                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24535                }
24536                Self::undelegations(inner) => {
24537                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24538                        inner,
24539                    )
24540                }
24541                Self::unpause(inner) => {
24542                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24543                }
24544                Self::updateCommission(inner) => {
24545                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
24546                        inner,
24547                    )
24548                }
24549                Self::updateConsensusKeys(inner) => {
24550                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
24551                        inner,
24552                    )
24553                }
24554                Self::updateConsensusKeysV2(inner) => {
24555                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
24556                        inner,
24557                    )
24558                }
24559                Self::updateExitEscrowPeriod(inner) => {
24560                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
24561                        inner,
24562                    )
24563                }
24564                Self::updateMetadataUri(inner) => {
24565                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
24566                        inner,
24567                    )
24568                }
24569                Self::updateNetworkConfig(inner) => {
24570                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encoded_size(
24571                        inner,
24572                    )
24573                }
24574                Self::updateP2pAddr(inner) => {
24575                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
24576                        inner,
24577                    )
24578                }
24579                Self::updateX25519Key(inner) => {
24580                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
24581                        inner,
24582                    )
24583                }
24584                Self::upgradeToAndCall(inner) => {
24585                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
24586                        inner,
24587                    )
24588                }
24589                Self::validateMetadataUri(inner) => {
24590                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
24591                        inner,
24592                    )
24593                }
24594                Self::validateP2pAddr(inner) => {
24595                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encoded_size(
24596                        inner,
24597                    )
24598                }
24599                Self::validatorExits(inner) => {
24600                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
24601                        inner,
24602                    )
24603                }
24604                Self::validators(inner) => {
24605                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24606                }
24607                Self::x25519Keys(inner) => {
24608                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
24609                }
24610            }
24611        }
24612        #[inline]
24613        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
24614            match self {
24615                Self::DEFAULT_ADMIN_ROLE(inner) => {
24616                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
24617                        inner,
24618                        out,
24619                    )
24620                }
24621                Self::MAX_COMMISSION_BPS(inner) => {
24622                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
24623                        inner,
24624                        out,
24625                    )
24626                }
24627                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
24628                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
24629                        inner,
24630                        out,
24631                    )
24632                }
24633                Self::MAX_METADATA_URI_LENGTH(inner) => {
24634                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
24635                        inner,
24636                        out,
24637                    )
24638                }
24639                Self::MAX_P2P_ADDR_LENGTH(inner) => {
24640                    <MAX_P2P_ADDR_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
24641                        inner,
24642                        out,
24643                    )
24644                }
24645                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
24646                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
24647                        inner,
24648                        out,
24649                    )
24650                }
24651                Self::PAUSER_ROLE(inner) => {
24652                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
24653                        inner,
24654                        out,
24655                    )
24656                }
24657                Self::UPGRADE_INTERFACE_VERSION(inner) => {
24658                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
24659                        inner,
24660                        out,
24661                    )
24662                }
24663                Self::_hashBlsKey(inner) => {
24664                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
24665                        inner,
24666                        out,
24667                    )
24668                }
24669                Self::activeStake(inner) => {
24670                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
24671                        inner,
24672                        out,
24673                    )
24674                }
24675                Self::blsKeys(inner) => {
24676                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24677                }
24678                Self::claimValidatorExit(inner) => {
24679                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
24680                        inner,
24681                        out,
24682                    )
24683                }
24684                Self::claimWithdrawal(inner) => {
24685                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
24686                        inner,
24687                        out,
24688                    )
24689                }
24690                Self::commissionTracking(inner) => {
24691                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
24692                        inner,
24693                        out,
24694                    )
24695                }
24696                Self::delegate(inner) => {
24697                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
24698                        inner,
24699                        out,
24700                    )
24701                }
24702                Self::delegations(inner) => {
24703                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
24704                        inner,
24705                        out,
24706                    )
24707                }
24708                Self::deregisterValidator(inner) => {
24709                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
24710                        inner,
24711                        out,
24712                    )
24713                }
24714                Self::exitEscrowPeriod(inner) => {
24715                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
24716                        inner,
24717                        out,
24718                    )
24719                }
24720                Self::getRoleAdmin(inner) => {
24721                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
24722                        inner,
24723                        out,
24724                    )
24725                }
24726                Self::getUndelegation(inner) => {
24727                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
24728                        inner,
24729                        out,
24730                    )
24731                }
24732                Self::getVersion(inner) => {
24733                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
24734                        inner,
24735                        out,
24736                    )
24737                }
24738                Self::grantRole(inner) => {
24739                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
24740                        inner,
24741                        out,
24742                    )
24743                }
24744                Self::hasRole(inner) => {
24745                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24746                }
24747                Self::initialize(inner) => {
24748                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
24749                        inner,
24750                        out,
24751                    )
24752                }
24753                Self::initializeV2(inner) => {
24754                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
24755                        inner,
24756                        out,
24757                    )
24758                }
24759                Self::initializeV3(inner) => {
24760                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
24761                        inner,
24762                        out,
24763                    )
24764                }
24765                Self::initializedAtBlock(inner) => {
24766                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
24767                        inner,
24768                        out,
24769                    )
24770                }
24771                Self::lightClient(inner) => {
24772                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
24773                        inner,
24774                        out,
24775                    )
24776                }
24777                Self::maxCommissionIncrease(inner) => {
24778                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
24779                        inner,
24780                        out,
24781                    )
24782                }
24783                Self::minCommissionIncreaseInterval(inner) => {
24784                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
24785                        inner,
24786                        out,
24787                    )
24788                }
24789                Self::minDelegateAmount(inner) => {
24790                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
24791                        inner,
24792                        out,
24793                    )
24794                }
24795                Self::owner(inner) => {
24796                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24797                }
24798                Self::pause(inner) => {
24799                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24800                }
24801                Self::paused(inner) => {
24802                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24803                }
24804                Self::proxiableUUID(inner) => {
24805                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
24806                        inner,
24807                        out,
24808                    )
24809                }
24810                Self::registerValidator(inner) => {
24811                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
24812                        inner,
24813                        out,
24814                    )
24815                }
24816                Self::registerValidatorV2(inner) => {
24817                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
24818                        inner,
24819                        out,
24820                    )
24821                }
24822                Self::registerValidatorV3(inner) => {
24823                    <registerValidatorV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
24824                        inner,
24825                        out,
24826                    )
24827                }
24828                Self::renounceOwnership(inner) => {
24829                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
24830                        inner,
24831                        out,
24832                    )
24833                }
24834                Self::renounceRole(inner) => {
24835                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
24836                        inner,
24837                        out,
24838                    )
24839                }
24840                Self::revokeRole(inner) => {
24841                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
24842                        inner,
24843                        out,
24844                    )
24845                }
24846                Self::schnorrKeys(inner) => {
24847                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
24848                        inner,
24849                        out,
24850                    )
24851                }
24852                Self::setMaxCommissionIncrease(inner) => {
24853                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
24854                        inner,
24855                        out,
24856                    )
24857                }
24858                Self::setMinCommissionUpdateInterval(inner) => {
24859                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
24860                        inner,
24861                        out,
24862                    )
24863                }
24864                Self::setMinDelegateAmount(inner) => {
24865                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
24866                        inner,
24867                        out,
24868                    )
24869                }
24870                Self::supportsInterface(inner) => {
24871                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
24872                        inner,
24873                        out,
24874                    )
24875                }
24876                Self::token(inner) => {
24877                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24878                }
24879                Self::transferOwnership(inner) => {
24880                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
24881                        inner,
24882                        out,
24883                    )
24884                }
24885                Self::undelegate(inner) => {
24886                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
24887                        inner,
24888                        out,
24889                    )
24890                }
24891                Self::undelegations(inner) => {
24892                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
24893                        inner,
24894                        out,
24895                    )
24896                }
24897                Self::unpause(inner) => {
24898                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
24899                }
24900                Self::updateCommission(inner) => {
24901                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
24902                        inner,
24903                        out,
24904                    )
24905                }
24906                Self::updateConsensusKeys(inner) => {
24907                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
24908                        inner,
24909                        out,
24910                    )
24911                }
24912                Self::updateConsensusKeysV2(inner) => {
24913                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
24914                        inner,
24915                        out,
24916                    )
24917                }
24918                Self::updateExitEscrowPeriod(inner) => {
24919                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
24920                        inner,
24921                        out,
24922                    )
24923                }
24924                Self::updateMetadataUri(inner) => {
24925                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
24926                        inner,
24927                        out,
24928                    )
24929                }
24930                Self::updateNetworkConfig(inner) => {
24931                    <updateNetworkConfigCall as alloy_sol_types::SolCall>::abi_encode_raw(
24932                        inner,
24933                        out,
24934                    )
24935                }
24936                Self::updateP2pAddr(inner) => {
24937                    <updateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
24938                        inner,
24939                        out,
24940                    )
24941                }
24942                Self::updateX25519Key(inner) => {
24943                    <updateX25519KeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
24944                        inner,
24945                        out,
24946                    )
24947                }
24948                Self::upgradeToAndCall(inner) => {
24949                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
24950                        inner,
24951                        out,
24952                    )
24953                }
24954                Self::validateMetadataUri(inner) => {
24955                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
24956                        inner,
24957                        out,
24958                    )
24959                }
24960                Self::validateP2pAddr(inner) => {
24961                    <validateP2pAddrCall as alloy_sol_types::SolCall>::abi_encode_raw(
24962                        inner,
24963                        out,
24964                    )
24965                }
24966                Self::validatorExits(inner) => {
24967                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
24968                        inner,
24969                        out,
24970                    )
24971                }
24972                Self::validators(inner) => {
24973                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
24974                        inner,
24975                        out,
24976                    )
24977                }
24978                Self::x25519Keys(inner) => {
24979                    <x25519KeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
24980                        inner,
24981                        out,
24982                    )
24983                }
24984            }
24985        }
24986    }
24987    ///Container for all the [`StakeTableV3`](self) custom errors.
24988    #[derive(Clone)]
24989    #[derive(serde::Serialize, serde::Deserialize)]
24990    #[derive(Debug, PartialEq, Eq, Hash)]
24991    pub enum StakeTableV3Errors {
24992        #[allow(missing_docs)]
24993        AccessControlBadConfirmation(AccessControlBadConfirmation),
24994        #[allow(missing_docs)]
24995        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
24996        #[allow(missing_docs)]
24997        AddressEmptyCode(AddressEmptyCode),
24998        #[allow(missing_docs)]
24999        BLSSigVerificationFailed(BLSSigVerificationFailed),
25000        #[allow(missing_docs)]
25001        BN254PairingProdFailed(BN254PairingProdFailed),
25002        #[allow(missing_docs)]
25003        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
25004        #[allow(missing_docs)]
25005        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
25006        #[allow(missing_docs)]
25007        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
25008        #[allow(missing_docs)]
25009        CommissionUnchanged(CommissionUnchanged),
25010        #[allow(missing_docs)]
25011        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
25012        #[allow(missing_docs)]
25013        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
25014        #[allow(missing_docs)]
25015        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
25016        #[allow(missing_docs)]
25017        DelegateAmountTooSmall(DelegateAmountTooSmall),
25018        #[allow(missing_docs)]
25019        DeprecatedFunction(DeprecatedFunction),
25020        #[allow(missing_docs)]
25021        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
25022        #[allow(missing_docs)]
25023        ERC1967NonPayable(ERC1967NonPayable),
25024        #[allow(missing_docs)]
25025        EnforcedPause(EnforcedPause),
25026        #[allow(missing_docs)]
25027        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
25028        #[allow(missing_docs)]
25029        ExpectedPause(ExpectedPause),
25030        #[allow(missing_docs)]
25031        FailedInnerCall(FailedInnerCall),
25032        #[allow(missing_docs)]
25033        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
25034        #[allow(missing_docs)]
25035        InsufficientAllowance(InsufficientAllowance),
25036        #[allow(missing_docs)]
25037        InsufficientBalance(InsufficientBalance),
25038        #[allow(missing_docs)]
25039        InvalidCommission(InvalidCommission),
25040        #[allow(missing_docs)]
25041        InvalidG1(InvalidG1),
25042        #[allow(missing_docs)]
25043        InvalidInitialization(InvalidInitialization),
25044        #[allow(missing_docs)]
25045        InvalidMetadataUriLength(InvalidMetadataUriLength),
25046        #[allow(missing_docs)]
25047        InvalidP2pAddr(InvalidP2pAddr),
25048        #[allow(missing_docs)]
25049        InvalidRateLimitParameters(InvalidRateLimitParameters),
25050        #[allow(missing_docs)]
25051        InvalidSchnorrSig(InvalidSchnorrSig),
25052        #[allow(missing_docs)]
25053        InvalidSchnorrVK(InvalidSchnorrVK),
25054        #[allow(missing_docs)]
25055        InvalidX25519Key(InvalidX25519Key),
25056        #[allow(missing_docs)]
25057        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
25058        #[allow(missing_docs)]
25059        NoUndelegationFound(NoUndelegationFound),
25060        #[allow(missing_docs)]
25061        NotInitializing(NotInitializing),
25062        #[allow(missing_docs)]
25063        NothingToWithdraw(NothingToWithdraw),
25064        #[allow(missing_docs)]
25065        OwnableInvalidOwner(OwnableInvalidOwner),
25066        #[allow(missing_docs)]
25067        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
25068        #[allow(missing_docs)]
25069        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
25070        #[allow(missing_docs)]
25071        PowPrecompileFailed(PowPrecompileFailed),
25072        #[allow(missing_docs)]
25073        PrematureWithdrawal(PrematureWithdrawal),
25074        #[allow(missing_docs)]
25075        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
25076        #[allow(missing_docs)]
25077        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
25078        #[allow(missing_docs)]
25079        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
25080        #[allow(missing_docs)]
25081        UndelegationAlreadyExists(UndelegationAlreadyExists),
25082        #[allow(missing_docs)]
25083        ValidatorAlreadyExited(ValidatorAlreadyExited),
25084        #[allow(missing_docs)]
25085        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
25086        #[allow(missing_docs)]
25087        ValidatorInactive(ValidatorInactive),
25088        #[allow(missing_docs)]
25089        ValidatorNotExited(ValidatorNotExited),
25090        #[allow(missing_docs)]
25091        X25519KeyAlreadyUsed(X25519KeyAlreadyUsed),
25092        #[allow(missing_docs)]
25093        ZeroAddress(ZeroAddress),
25094        #[allow(missing_docs)]
25095        ZeroAmount(ZeroAmount),
25096    }
25097    impl StakeTableV3Errors {
25098        /// All the selectors of this enum.
25099        ///
25100        /// Note that the selectors might not be in the same order as the variants.
25101        /// No guarantees are made about the order of the selectors.
25102        ///
25103        /// Prefer using `SolInterface` methods instead.
25104        pub const SELECTORS: &'static [[u8; 4usize]] = &[
25105            [1u8, 181u8, 20u8, 174u8],
25106            [6u8, 207u8, 67u8, 143u8],
25107            [12u8, 237u8, 62u8, 80u8],
25108            [17u8, 140u8, 218u8, 167u8],
25109            [20u8, 37u8, 234u8, 66u8],
25110            [22u8, 235u8, 148u8, 203u8],
25111            [30u8, 79u8, 189u8, 247u8],
25112            [31u8, 42u8, 32u8, 5u8],
25113            [35u8, 159u8, 245u8, 127u8],
25114            [37u8, 173u8, 72u8, 202u8],
25115            [42u8, 27u8, 45u8, 216u8],
25116            [47u8, 171u8, 146u8, 202u8],
25117            [50u8, 116u8, 250u8, 100u8],
25118            [62u8, 75u8, 161u8, 63u8],
25119            [66u8, 71u8, 6u8, 135u8],
25120            [76u8, 156u8, 140u8, 227u8],
25121            [80u8, 129u8, 78u8, 16u8],
25122            [80u8, 138u8, 121u8, 63u8],
25123            [90u8, 119u8, 67u8, 87u8],
25124            [102u8, 151u8, 178u8, 50u8],
25125            [103u8, 78u8, 142u8, 243u8],
25126            [121u8, 121u8, 13u8, 124u8],
25127            [123u8, 38u8, 158u8, 146u8],
25128            [125u8, 41u8, 135u8, 49u8],
25129            [139u8, 120u8, 99u8, 29u8],
25130            [141u8, 252u8, 32u8, 43u8],
25131            [144u8, 184u8, 103u8, 138u8],
25132            [146u8, 102u8, 83u8, 81u8],
25133            [153u8, 115u8, 247u8, 216u8],
25134            [153u8, 150u8, 179u8, 21u8],
25135            [158u8, 120u8, 209u8, 76u8],
25136            [170u8, 29u8, 73u8, 164u8],
25137            [174u8, 73u8, 59u8, 3u8],
25138            [176u8, 181u8, 251u8, 153u8],
25139            [178u8, 54u8, 64u8, 236u8],
25140            [179u8, 152u8, 151u8, 159u8],
25141            [181u8, 36u8, 253u8, 106u8],
25142            [181u8, 126u8, 33u8, 223u8],
25143            [194u8, 6u8, 51u8, 79u8],
25144            [194u8, 11u8, 172u8, 148u8],
25145            [194u8, 215u8, 248u8, 19u8],
25146            [208u8, 208u8, 79u8, 96u8],
25147            [212u8, 35u8, 164u8, 241u8],
25148            [215u8, 230u8, 188u8, 248u8],
25149            [217u8, 46u8, 35u8, 61u8],
25150            [217u8, 60u8, 6u8, 101u8],
25151            [220u8, 129u8, 219u8, 133u8],
25152            [224u8, 124u8, 141u8, 186u8],
25153            [226u8, 81u8, 125u8, 63u8],
25154            [234u8, 180u8, 169u8, 99u8],
25155            [242u8, 83u8, 20u8, 166u8],
25156            [249u8, 46u8, 232u8, 169u8],
25157        ];
25158        /// The names of the variants in the same order as `SELECTORS`.
25159        pub const VARIANT_NAMES: &'static [&'static str] = &[
25160            ::core::stringify!(BlsKeyAlreadyUsed),
25161            ::core::stringify!(InvalidSchnorrVK),
25162            ::core::stringify!(BLSSigVerificationFailed),
25163            ::core::stringify!(OwnableUnauthorizedAccount),
25164            ::core::stringify!(FailedInnerCall),
25165            ::core::stringify!(CommissionUpdateTooSoon),
25166            ::core::stringify!(OwnableInvalidOwner),
25167            ::core::stringify!(ZeroAmount),
25168            ::core::stringify!(InvalidMetadataUriLength),
25169            ::core::stringify!(CommissionIncreaseExceedsMax),
25170            ::core::stringify!(InsufficientAllowance),
25171            ::core::stringify!(OwnershipCannotBeRenounced),
25172            ::core::stringify!(PowPrecompileFailed),
25173            ::core::stringify!(InvalidX25519Key),
25174            ::core::stringify!(InvalidSchnorrSig),
25175            ::core::stringify!(ERC1967InvalidImplementation),
25176            ::core::stringify!(CommissionAlreadyInitialized),
25177            ::core::stringify!(ValidatorInactive),
25178            ::core::stringify!(PrematureWithdrawal),
25179            ::core::stringify!(AccessControlBadConfirmation),
25180            ::core::stringify!(InvalidRateLimitParameters),
25181            ::core::stringify!(InvalidP2pAddr),
25182            ::core::stringify!(InitialActiveStakeExceedsBalance),
25183            ::core::stringify!(DelegateAmountTooSmall),
25184            ::core::stringify!(DefaultAdminCannotBeRenounced),
25185            ::core::stringify!(ExpectedPause),
25186            ::core::stringify!(MinDelegateAmountTooSmall),
25187            ::core::stringify!(InsufficientBalance),
25188            ::core::stringify!(ValidatorAlreadyRegistered),
25189            ::core::stringify!(AddressEmptyCode),
25190            ::core::stringify!(InvalidG1),
25191            ::core::stringify!(UUPSUnsupportedProxiableUUID),
25192            ::core::stringify!(SchnorrKeyAlreadyUsed),
25193            ::core::stringify!(DefaultAdminCannotBeRevoked),
25194            ::core::stringify!(X25519KeyAlreadyUsed),
25195            ::core::stringify!(ERC1967NonPayable),
25196            ::core::stringify!(NoUndelegationFound),
25197            ::core::stringify!(ExitEscrowPeriodInvalid),
25198            ::core::stringify!(BN254PairingProdFailed),
25199            ::core::stringify!(CommissionUnchanged),
25200            ::core::stringify!(DeprecatedFunction),
25201            ::core::stringify!(NothingToWithdraw),
25202            ::core::stringify!(UndelegationAlreadyExists),
25203            ::core::stringify!(NotInitializing),
25204            ::core::stringify!(ZeroAddress),
25205            ::core::stringify!(EnforcedPause),
25206            ::core::stringify!(InvalidCommission),
25207            ::core::stringify!(UUPSUnauthorizedCallContext),
25208            ::core::stringify!(AccessControlUnauthorizedAccount),
25209            ::core::stringify!(ValidatorAlreadyExited),
25210            ::core::stringify!(ValidatorNotExited),
25211            ::core::stringify!(InvalidInitialization),
25212        ];
25213        /// The signatures in the same order as `SELECTORS`.
25214        pub const SIGNATURES: &'static [&'static str] = &[
25215            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25216            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
25217            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
25218            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25219            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
25220            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
25221            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
25222            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
25223            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
25224            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
25225            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
25226            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25227            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
25228            <InvalidX25519Key as alloy_sol_types::SolError>::SIGNATURE,
25229            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
25230            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
25231            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
25232            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
25233            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
25234            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
25235            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
25236            <InvalidP2pAddr as alloy_sol_types::SolError>::SIGNATURE,
25237            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
25238            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25239            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
25240            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
25241            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
25242            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
25243            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
25244            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
25245            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
25246            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
25247            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25248            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
25249            <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
25250            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
25251            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
25252            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
25253            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
25254            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
25255            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
25256            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
25257            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
25258            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
25259            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
25260            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
25261            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
25262            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
25263            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
25264            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
25265            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
25266            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
25267        ];
25268        /// Returns the signature for the given selector, if known.
25269        #[inline]
25270        pub fn signature_by_selector(
25271            selector: [u8; 4usize],
25272        ) -> ::core::option::Option<&'static str> {
25273            match Self::SELECTORS.binary_search(&selector) {
25274                ::core::result::Result::Ok(idx) => {
25275                    ::core::option::Option::Some(Self::SIGNATURES[idx])
25276                }
25277                ::core::result::Result::Err(_) => ::core::option::Option::None,
25278            }
25279        }
25280        /// Returns the enum variant name for the given selector, if known.
25281        #[inline]
25282        pub fn name_by_selector(
25283            selector: [u8; 4usize],
25284        ) -> ::core::option::Option<&'static str> {
25285            let sig = Self::signature_by_selector(selector)?;
25286            sig.split_once('(').map(|(name, _)| name)
25287        }
25288    }
25289    #[automatically_derived]
25290    impl alloy_sol_types::SolInterface for StakeTableV3Errors {
25291        const NAME: &'static str = "StakeTableV3Errors";
25292        const MIN_DATA_LENGTH: usize = 0usize;
25293        const COUNT: usize = 52usize;
25294        #[inline]
25295        fn selector(&self) -> [u8; 4] {
25296            match self {
25297                Self::AccessControlBadConfirmation(_) => {
25298                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
25299                }
25300                Self::AccessControlUnauthorizedAccount(_) => {
25301                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
25302                }
25303                Self::AddressEmptyCode(_) => {
25304                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
25305                }
25306                Self::BLSSigVerificationFailed(_) => {
25307                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
25308                }
25309                Self::BN254PairingProdFailed(_) => {
25310                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
25311                }
25312                Self::BlsKeyAlreadyUsed(_) => {
25313                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25314                }
25315                Self::CommissionAlreadyInitialized(_) => {
25316                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
25317                }
25318                Self::CommissionIncreaseExceedsMax(_) => {
25319                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
25320                }
25321                Self::CommissionUnchanged(_) => {
25322                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
25323                }
25324                Self::CommissionUpdateTooSoon(_) => {
25325                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
25326                }
25327                Self::DefaultAdminCannotBeRenounced(_) => {
25328                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
25329                }
25330                Self::DefaultAdminCannotBeRevoked(_) => {
25331                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
25332                }
25333                Self::DelegateAmountTooSmall(_) => {
25334                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
25335                }
25336                Self::DeprecatedFunction(_) => {
25337                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
25338                }
25339                Self::ERC1967InvalidImplementation(_) => {
25340                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
25341                }
25342                Self::ERC1967NonPayable(_) => {
25343                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
25344                }
25345                Self::EnforcedPause(_) => {
25346                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
25347                }
25348                Self::ExitEscrowPeriodInvalid(_) => {
25349                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
25350                }
25351                Self::ExpectedPause(_) => {
25352                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
25353                }
25354                Self::FailedInnerCall(_) => {
25355                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
25356                }
25357                Self::InitialActiveStakeExceedsBalance(_) => {
25358                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
25359                }
25360                Self::InsufficientAllowance(_) => {
25361                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
25362                }
25363                Self::InsufficientBalance(_) => {
25364                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
25365                }
25366                Self::InvalidCommission(_) => {
25367                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
25368                }
25369                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
25370                Self::InvalidInitialization(_) => {
25371                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
25372                }
25373                Self::InvalidMetadataUriLength(_) => {
25374                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
25375                }
25376                Self::InvalidP2pAddr(_) => {
25377                    <InvalidP2pAddr as alloy_sol_types::SolError>::SELECTOR
25378                }
25379                Self::InvalidRateLimitParameters(_) => {
25380                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
25381                }
25382                Self::InvalidSchnorrSig(_) => {
25383                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
25384                }
25385                Self::InvalidSchnorrVK(_) => {
25386                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
25387                }
25388                Self::InvalidX25519Key(_) => {
25389                    <InvalidX25519Key as alloy_sol_types::SolError>::SELECTOR
25390                }
25391                Self::MinDelegateAmountTooSmall(_) => {
25392                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
25393                }
25394                Self::NoUndelegationFound(_) => {
25395                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
25396                }
25397                Self::NotInitializing(_) => {
25398                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
25399                }
25400                Self::NothingToWithdraw(_) => {
25401                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
25402                }
25403                Self::OwnableInvalidOwner(_) => {
25404                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
25405                }
25406                Self::OwnableUnauthorizedAccount(_) => {
25407                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
25408                }
25409                Self::OwnershipCannotBeRenounced(_) => {
25410                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
25411                }
25412                Self::PowPrecompileFailed(_) => {
25413                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
25414                }
25415                Self::PrematureWithdrawal(_) => {
25416                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
25417                }
25418                Self::SchnorrKeyAlreadyUsed(_) => {
25419                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25420                }
25421                Self::UUPSUnauthorizedCallContext(_) => {
25422                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
25423                }
25424                Self::UUPSUnsupportedProxiableUUID(_) => {
25425                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
25426                }
25427                Self::UndelegationAlreadyExists(_) => {
25428                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
25429                }
25430                Self::ValidatorAlreadyExited(_) => {
25431                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
25432                }
25433                Self::ValidatorAlreadyRegistered(_) => {
25434                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
25435                }
25436                Self::ValidatorInactive(_) => {
25437                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
25438                }
25439                Self::ValidatorNotExited(_) => {
25440                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
25441                }
25442                Self::X25519KeyAlreadyUsed(_) => {
25443                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
25444                }
25445                Self::ZeroAddress(_) => {
25446                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
25447                }
25448                Self::ZeroAmount(_) => {
25449                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
25450                }
25451            }
25452        }
25453        #[inline]
25454        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
25455            Self::SELECTORS.get(i).copied()
25456        }
25457        #[inline]
25458        fn valid_selector(selector: [u8; 4]) -> bool {
25459            Self::SELECTORS.binary_search(&selector).is_ok()
25460        }
25461        #[inline]
25462        #[allow(non_snake_case)]
25463        fn abi_decode_raw(
25464            selector: [u8; 4],
25465            data: &[u8],
25466        ) -> alloy_sol_types::Result<Self> {
25467            static DECODE_SHIMS: &[fn(
25468                &[u8],
25469            ) -> alloy_sol_types::Result<StakeTableV3Errors>] = &[
25470                {
25471                    fn BlsKeyAlreadyUsed(
25472                        data: &[u8],
25473                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25474                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
25475                                data,
25476                            )
25477                            .map(StakeTableV3Errors::BlsKeyAlreadyUsed)
25478                    }
25479                    BlsKeyAlreadyUsed
25480                },
25481                {
25482                    fn InvalidSchnorrVK(
25483                        data: &[u8],
25484                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25485                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
25486                                data,
25487                            )
25488                            .map(StakeTableV3Errors::InvalidSchnorrVK)
25489                    }
25490                    InvalidSchnorrVK
25491                },
25492                {
25493                    fn BLSSigVerificationFailed(
25494                        data: &[u8],
25495                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25496                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
25497                                data,
25498                            )
25499                            .map(StakeTableV3Errors::BLSSigVerificationFailed)
25500                    }
25501                    BLSSigVerificationFailed
25502                },
25503                {
25504                    fn OwnableUnauthorizedAccount(
25505                        data: &[u8],
25506                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25507                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
25508                                data,
25509                            )
25510                            .map(StakeTableV3Errors::OwnableUnauthorizedAccount)
25511                    }
25512                    OwnableUnauthorizedAccount
25513                },
25514                {
25515                    fn FailedInnerCall(
25516                        data: &[u8],
25517                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25518                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
25519                                data,
25520                            )
25521                            .map(StakeTableV3Errors::FailedInnerCall)
25522                    }
25523                    FailedInnerCall
25524                },
25525                {
25526                    fn CommissionUpdateTooSoon(
25527                        data: &[u8],
25528                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25529                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
25530                                data,
25531                            )
25532                            .map(StakeTableV3Errors::CommissionUpdateTooSoon)
25533                    }
25534                    CommissionUpdateTooSoon
25535                },
25536                {
25537                    fn OwnableInvalidOwner(
25538                        data: &[u8],
25539                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25540                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
25541                                data,
25542                            )
25543                            .map(StakeTableV3Errors::OwnableInvalidOwner)
25544                    }
25545                    OwnableInvalidOwner
25546                },
25547                {
25548                    fn ZeroAmount(
25549                        data: &[u8],
25550                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25551                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
25552                            .map(StakeTableV3Errors::ZeroAmount)
25553                    }
25554                    ZeroAmount
25555                },
25556                {
25557                    fn InvalidMetadataUriLength(
25558                        data: &[u8],
25559                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25560                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw(
25561                                data,
25562                            )
25563                            .map(StakeTableV3Errors::InvalidMetadataUriLength)
25564                    }
25565                    InvalidMetadataUriLength
25566                },
25567                {
25568                    fn CommissionIncreaseExceedsMax(
25569                        data: &[u8],
25570                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25571                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
25572                                data,
25573                            )
25574                            .map(StakeTableV3Errors::CommissionIncreaseExceedsMax)
25575                    }
25576                    CommissionIncreaseExceedsMax
25577                },
25578                {
25579                    fn InsufficientAllowance(
25580                        data: &[u8],
25581                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25582                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
25583                                data,
25584                            )
25585                            .map(StakeTableV3Errors::InsufficientAllowance)
25586                    }
25587                    InsufficientAllowance
25588                },
25589                {
25590                    fn OwnershipCannotBeRenounced(
25591                        data: &[u8],
25592                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25593                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
25594                                data,
25595                            )
25596                            .map(StakeTableV3Errors::OwnershipCannotBeRenounced)
25597                    }
25598                    OwnershipCannotBeRenounced
25599                },
25600                {
25601                    fn PowPrecompileFailed(
25602                        data: &[u8],
25603                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25604                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
25605                                data,
25606                            )
25607                            .map(StakeTableV3Errors::PowPrecompileFailed)
25608                    }
25609                    PowPrecompileFailed
25610                },
25611                {
25612                    fn InvalidX25519Key(
25613                        data: &[u8],
25614                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25615                        <InvalidX25519Key as alloy_sol_types::SolError>::abi_decode_raw(
25616                                data,
25617                            )
25618                            .map(StakeTableV3Errors::InvalidX25519Key)
25619                    }
25620                    InvalidX25519Key
25621                },
25622                {
25623                    fn InvalidSchnorrSig(
25624                        data: &[u8],
25625                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25626                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
25627                                data,
25628                            )
25629                            .map(StakeTableV3Errors::InvalidSchnorrSig)
25630                    }
25631                    InvalidSchnorrSig
25632                },
25633                {
25634                    fn ERC1967InvalidImplementation(
25635                        data: &[u8],
25636                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25637                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
25638                                data,
25639                            )
25640                            .map(StakeTableV3Errors::ERC1967InvalidImplementation)
25641                    }
25642                    ERC1967InvalidImplementation
25643                },
25644                {
25645                    fn CommissionAlreadyInitialized(
25646                        data: &[u8],
25647                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25648                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
25649                                data,
25650                            )
25651                            .map(StakeTableV3Errors::CommissionAlreadyInitialized)
25652                    }
25653                    CommissionAlreadyInitialized
25654                },
25655                {
25656                    fn ValidatorInactive(
25657                        data: &[u8],
25658                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25659                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
25660                                data,
25661                            )
25662                            .map(StakeTableV3Errors::ValidatorInactive)
25663                    }
25664                    ValidatorInactive
25665                },
25666                {
25667                    fn PrematureWithdrawal(
25668                        data: &[u8],
25669                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25670                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
25671                                data,
25672                            )
25673                            .map(StakeTableV3Errors::PrematureWithdrawal)
25674                    }
25675                    PrematureWithdrawal
25676                },
25677                {
25678                    fn AccessControlBadConfirmation(
25679                        data: &[u8],
25680                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25681                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
25682                                data,
25683                            )
25684                            .map(StakeTableV3Errors::AccessControlBadConfirmation)
25685                    }
25686                    AccessControlBadConfirmation
25687                },
25688                {
25689                    fn InvalidRateLimitParameters(
25690                        data: &[u8],
25691                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25692                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
25693                                data,
25694                            )
25695                            .map(StakeTableV3Errors::InvalidRateLimitParameters)
25696                    }
25697                    InvalidRateLimitParameters
25698                },
25699                {
25700                    fn InvalidP2pAddr(
25701                        data: &[u8],
25702                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25703                        <InvalidP2pAddr as alloy_sol_types::SolError>::abi_decode_raw(
25704                                data,
25705                            )
25706                            .map(StakeTableV3Errors::InvalidP2pAddr)
25707                    }
25708                    InvalidP2pAddr
25709                },
25710                {
25711                    fn InitialActiveStakeExceedsBalance(
25712                        data: &[u8],
25713                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25714                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw(
25715                                data,
25716                            )
25717                            .map(StakeTableV3Errors::InitialActiveStakeExceedsBalance)
25718                    }
25719                    InitialActiveStakeExceedsBalance
25720                },
25721                {
25722                    fn DelegateAmountTooSmall(
25723                        data: &[u8],
25724                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25725                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
25726                                data,
25727                            )
25728                            .map(StakeTableV3Errors::DelegateAmountTooSmall)
25729                    }
25730                    DelegateAmountTooSmall
25731                },
25732                {
25733                    fn DefaultAdminCannotBeRenounced(
25734                        data: &[u8],
25735                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25736                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
25737                                data,
25738                            )
25739                            .map(StakeTableV3Errors::DefaultAdminCannotBeRenounced)
25740                    }
25741                    DefaultAdminCannotBeRenounced
25742                },
25743                {
25744                    fn ExpectedPause(
25745                        data: &[u8],
25746                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25747                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
25748                                data,
25749                            )
25750                            .map(StakeTableV3Errors::ExpectedPause)
25751                    }
25752                    ExpectedPause
25753                },
25754                {
25755                    fn MinDelegateAmountTooSmall(
25756                        data: &[u8],
25757                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25758                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
25759                                data,
25760                            )
25761                            .map(StakeTableV3Errors::MinDelegateAmountTooSmall)
25762                    }
25763                    MinDelegateAmountTooSmall
25764                },
25765                {
25766                    fn InsufficientBalance(
25767                        data: &[u8],
25768                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25769                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
25770                                data,
25771                            )
25772                            .map(StakeTableV3Errors::InsufficientBalance)
25773                    }
25774                    InsufficientBalance
25775                },
25776                {
25777                    fn ValidatorAlreadyRegistered(
25778                        data: &[u8],
25779                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25780                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
25781                                data,
25782                            )
25783                            .map(StakeTableV3Errors::ValidatorAlreadyRegistered)
25784                    }
25785                    ValidatorAlreadyRegistered
25786                },
25787                {
25788                    fn AddressEmptyCode(
25789                        data: &[u8],
25790                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25791                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
25792                                data,
25793                            )
25794                            .map(StakeTableV3Errors::AddressEmptyCode)
25795                    }
25796                    AddressEmptyCode
25797                },
25798                {
25799                    fn InvalidG1(
25800                        data: &[u8],
25801                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25802                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
25803                            .map(StakeTableV3Errors::InvalidG1)
25804                    }
25805                    InvalidG1
25806                },
25807                {
25808                    fn UUPSUnsupportedProxiableUUID(
25809                        data: &[u8],
25810                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25811                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
25812                                data,
25813                            )
25814                            .map(StakeTableV3Errors::UUPSUnsupportedProxiableUUID)
25815                    }
25816                    UUPSUnsupportedProxiableUUID
25817                },
25818                {
25819                    fn SchnorrKeyAlreadyUsed(
25820                        data: &[u8],
25821                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25822                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
25823                                data,
25824                            )
25825                            .map(StakeTableV3Errors::SchnorrKeyAlreadyUsed)
25826                    }
25827                    SchnorrKeyAlreadyUsed
25828                },
25829                {
25830                    fn DefaultAdminCannotBeRevoked(
25831                        data: &[u8],
25832                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25833                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
25834                                data,
25835                            )
25836                            .map(StakeTableV3Errors::DefaultAdminCannotBeRevoked)
25837                    }
25838                    DefaultAdminCannotBeRevoked
25839                },
25840                {
25841                    fn X25519KeyAlreadyUsed(
25842                        data: &[u8],
25843                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25844                        <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
25845                                data,
25846                            )
25847                            .map(StakeTableV3Errors::X25519KeyAlreadyUsed)
25848                    }
25849                    X25519KeyAlreadyUsed
25850                },
25851                {
25852                    fn ERC1967NonPayable(
25853                        data: &[u8],
25854                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25855                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
25856                                data,
25857                            )
25858                            .map(StakeTableV3Errors::ERC1967NonPayable)
25859                    }
25860                    ERC1967NonPayable
25861                },
25862                {
25863                    fn NoUndelegationFound(
25864                        data: &[u8],
25865                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25866                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw(
25867                                data,
25868                            )
25869                            .map(StakeTableV3Errors::NoUndelegationFound)
25870                    }
25871                    NoUndelegationFound
25872                },
25873                {
25874                    fn ExitEscrowPeriodInvalid(
25875                        data: &[u8],
25876                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25877                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
25878                                data,
25879                            )
25880                            .map(StakeTableV3Errors::ExitEscrowPeriodInvalid)
25881                    }
25882                    ExitEscrowPeriodInvalid
25883                },
25884                {
25885                    fn BN254PairingProdFailed(
25886                        data: &[u8],
25887                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25888                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
25889                                data,
25890                            )
25891                            .map(StakeTableV3Errors::BN254PairingProdFailed)
25892                    }
25893                    BN254PairingProdFailed
25894                },
25895                {
25896                    fn CommissionUnchanged(
25897                        data: &[u8],
25898                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25899                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
25900                                data,
25901                            )
25902                            .map(StakeTableV3Errors::CommissionUnchanged)
25903                    }
25904                    CommissionUnchanged
25905                },
25906                {
25907                    fn DeprecatedFunction(
25908                        data: &[u8],
25909                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25910                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
25911                                data,
25912                            )
25913                            .map(StakeTableV3Errors::DeprecatedFunction)
25914                    }
25915                    DeprecatedFunction
25916                },
25917                {
25918                    fn NothingToWithdraw(
25919                        data: &[u8],
25920                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25921                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
25922                                data,
25923                            )
25924                            .map(StakeTableV3Errors::NothingToWithdraw)
25925                    }
25926                    NothingToWithdraw
25927                },
25928                {
25929                    fn UndelegationAlreadyExists(
25930                        data: &[u8],
25931                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25932                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
25933                                data,
25934                            )
25935                            .map(StakeTableV3Errors::UndelegationAlreadyExists)
25936                    }
25937                    UndelegationAlreadyExists
25938                },
25939                {
25940                    fn NotInitializing(
25941                        data: &[u8],
25942                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25943                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
25944                                data,
25945                            )
25946                            .map(StakeTableV3Errors::NotInitializing)
25947                    }
25948                    NotInitializing
25949                },
25950                {
25951                    fn ZeroAddress(
25952                        data: &[u8],
25953                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25954                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
25955                            .map(StakeTableV3Errors::ZeroAddress)
25956                    }
25957                    ZeroAddress
25958                },
25959                {
25960                    fn EnforcedPause(
25961                        data: &[u8],
25962                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25963                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
25964                                data,
25965                            )
25966                            .map(StakeTableV3Errors::EnforcedPause)
25967                    }
25968                    EnforcedPause
25969                },
25970                {
25971                    fn InvalidCommission(
25972                        data: &[u8],
25973                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25974                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
25975                                data,
25976                            )
25977                            .map(StakeTableV3Errors::InvalidCommission)
25978                    }
25979                    InvalidCommission
25980                },
25981                {
25982                    fn UUPSUnauthorizedCallContext(
25983                        data: &[u8],
25984                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25985                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
25986                                data,
25987                            )
25988                            .map(StakeTableV3Errors::UUPSUnauthorizedCallContext)
25989                    }
25990                    UUPSUnauthorizedCallContext
25991                },
25992                {
25993                    fn AccessControlUnauthorizedAccount(
25994                        data: &[u8],
25995                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
25996                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
25997                                data,
25998                            )
25999                            .map(StakeTableV3Errors::AccessControlUnauthorizedAccount)
26000                    }
26001                    AccessControlUnauthorizedAccount
26002                },
26003                {
26004                    fn ValidatorAlreadyExited(
26005                        data: &[u8],
26006                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26007                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
26008                                data,
26009                            )
26010                            .map(StakeTableV3Errors::ValidatorAlreadyExited)
26011                    }
26012                    ValidatorAlreadyExited
26013                },
26014                {
26015                    fn ValidatorNotExited(
26016                        data: &[u8],
26017                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26018                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
26019                                data,
26020                            )
26021                            .map(StakeTableV3Errors::ValidatorNotExited)
26022                    }
26023                    ValidatorNotExited
26024                },
26025                {
26026                    fn InvalidInitialization(
26027                        data: &[u8],
26028                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26029                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
26030                                data,
26031                            )
26032                            .map(StakeTableV3Errors::InvalidInitialization)
26033                    }
26034                    InvalidInitialization
26035                },
26036            ];
26037            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
26038                return Err(
26039                    alloy_sol_types::Error::unknown_selector(
26040                        <Self as alloy_sol_types::SolInterface>::NAME,
26041                        selector,
26042                    ),
26043                );
26044            };
26045            DECODE_SHIMS[idx](data)
26046        }
26047        #[inline]
26048        #[allow(non_snake_case)]
26049        fn abi_decode_raw_validate(
26050            selector: [u8; 4],
26051            data: &[u8],
26052        ) -> alloy_sol_types::Result<Self> {
26053            static DECODE_VALIDATE_SHIMS: &[fn(
26054                &[u8],
26055            ) -> alloy_sol_types::Result<StakeTableV3Errors>] = &[
26056                {
26057                    fn BlsKeyAlreadyUsed(
26058                        data: &[u8],
26059                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26060                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26061                                data,
26062                            )
26063                            .map(StakeTableV3Errors::BlsKeyAlreadyUsed)
26064                    }
26065                    BlsKeyAlreadyUsed
26066                },
26067                {
26068                    fn InvalidSchnorrVK(
26069                        data: &[u8],
26070                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26071                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
26072                                data,
26073                            )
26074                            .map(StakeTableV3Errors::InvalidSchnorrVK)
26075                    }
26076                    InvalidSchnorrVK
26077                },
26078                {
26079                    fn BLSSigVerificationFailed(
26080                        data: &[u8],
26081                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26082                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26083                                data,
26084                            )
26085                            .map(StakeTableV3Errors::BLSSigVerificationFailed)
26086                    }
26087                    BLSSigVerificationFailed
26088                },
26089                {
26090                    fn OwnableUnauthorizedAccount(
26091                        data: &[u8],
26092                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26093                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
26094                                data,
26095                            )
26096                            .map(StakeTableV3Errors::OwnableUnauthorizedAccount)
26097                    }
26098                    OwnableUnauthorizedAccount
26099                },
26100                {
26101                    fn FailedInnerCall(
26102                        data: &[u8],
26103                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26104                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26105                                data,
26106                            )
26107                            .map(StakeTableV3Errors::FailedInnerCall)
26108                    }
26109                    FailedInnerCall
26110                },
26111                {
26112                    fn CommissionUpdateTooSoon(
26113                        data: &[u8],
26114                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26115                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
26116                                data,
26117                            )
26118                            .map(StakeTableV3Errors::CommissionUpdateTooSoon)
26119                    }
26120                    CommissionUpdateTooSoon
26121                },
26122                {
26123                    fn OwnableInvalidOwner(
26124                        data: &[u8],
26125                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26126                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
26127                                data,
26128                            )
26129                            .map(StakeTableV3Errors::OwnableInvalidOwner)
26130                    }
26131                    OwnableInvalidOwner
26132                },
26133                {
26134                    fn ZeroAmount(
26135                        data: &[u8],
26136                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26137                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
26138                                data,
26139                            )
26140                            .map(StakeTableV3Errors::ZeroAmount)
26141                    }
26142                    ZeroAmount
26143                },
26144                {
26145                    fn InvalidMetadataUriLength(
26146                        data: &[u8],
26147                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26148                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
26149                                data,
26150                            )
26151                            .map(StakeTableV3Errors::InvalidMetadataUriLength)
26152                    }
26153                    InvalidMetadataUriLength
26154                },
26155                {
26156                    fn CommissionIncreaseExceedsMax(
26157                        data: &[u8],
26158                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26159                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
26160                                data,
26161                            )
26162                            .map(StakeTableV3Errors::CommissionIncreaseExceedsMax)
26163                    }
26164                    CommissionIncreaseExceedsMax
26165                },
26166                {
26167                    fn InsufficientAllowance(
26168                        data: &[u8],
26169                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26170                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26171                                data,
26172                            )
26173                            .map(StakeTableV3Errors::InsufficientAllowance)
26174                    }
26175                    InsufficientAllowance
26176                },
26177                {
26178                    fn OwnershipCannotBeRenounced(
26179                        data: &[u8],
26180                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26181                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
26182                                data,
26183                            )
26184                            .map(StakeTableV3Errors::OwnershipCannotBeRenounced)
26185                    }
26186                    OwnershipCannotBeRenounced
26187                },
26188                {
26189                    fn PowPrecompileFailed(
26190                        data: &[u8],
26191                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26192                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26193                                data,
26194                            )
26195                            .map(StakeTableV3Errors::PowPrecompileFailed)
26196                    }
26197                    PowPrecompileFailed
26198                },
26199                {
26200                    fn InvalidX25519Key(
26201                        data: &[u8],
26202                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26203                        <InvalidX25519Key as alloy_sol_types::SolError>::abi_decode_raw_validate(
26204                                data,
26205                            )
26206                            .map(StakeTableV3Errors::InvalidX25519Key)
26207                    }
26208                    InvalidX25519Key
26209                },
26210                {
26211                    fn InvalidSchnorrSig(
26212                        data: &[u8],
26213                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26214                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
26215                                data,
26216                            )
26217                            .map(StakeTableV3Errors::InvalidSchnorrSig)
26218                    }
26219                    InvalidSchnorrSig
26220                },
26221                {
26222                    fn ERC1967InvalidImplementation(
26223                        data: &[u8],
26224                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26225                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
26226                                data,
26227                            )
26228                            .map(StakeTableV3Errors::ERC1967InvalidImplementation)
26229                    }
26230                    ERC1967InvalidImplementation
26231                },
26232                {
26233                    fn CommissionAlreadyInitialized(
26234                        data: &[u8],
26235                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26236                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
26237                                data,
26238                            )
26239                            .map(StakeTableV3Errors::CommissionAlreadyInitialized)
26240                    }
26241                    CommissionAlreadyInitialized
26242                },
26243                {
26244                    fn ValidatorInactive(
26245                        data: &[u8],
26246                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26247                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
26248                                data,
26249                            )
26250                            .map(StakeTableV3Errors::ValidatorInactive)
26251                    }
26252                    ValidatorInactive
26253                },
26254                {
26255                    fn PrematureWithdrawal(
26256                        data: &[u8],
26257                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26258                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
26259                                data,
26260                            )
26261                            .map(StakeTableV3Errors::PrematureWithdrawal)
26262                    }
26263                    PrematureWithdrawal
26264                },
26265                {
26266                    fn AccessControlBadConfirmation(
26267                        data: &[u8],
26268                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26269                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
26270                                data,
26271                            )
26272                            .map(StakeTableV3Errors::AccessControlBadConfirmation)
26273                    }
26274                    AccessControlBadConfirmation
26275                },
26276                {
26277                    fn InvalidRateLimitParameters(
26278                        data: &[u8],
26279                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26280                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
26281                                data,
26282                            )
26283                            .map(StakeTableV3Errors::InvalidRateLimitParameters)
26284                    }
26285                    InvalidRateLimitParameters
26286                },
26287                {
26288                    fn InvalidP2pAddr(
26289                        data: &[u8],
26290                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26291                        <InvalidP2pAddr as alloy_sol_types::SolError>::abi_decode_raw_validate(
26292                                data,
26293                            )
26294                            .map(StakeTableV3Errors::InvalidP2pAddr)
26295                    }
26296                    InvalidP2pAddr
26297                },
26298                {
26299                    fn InitialActiveStakeExceedsBalance(
26300                        data: &[u8],
26301                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26302                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26303                                data,
26304                            )
26305                            .map(StakeTableV3Errors::InitialActiveStakeExceedsBalance)
26306                    }
26307                    InitialActiveStakeExceedsBalance
26308                },
26309                {
26310                    fn DelegateAmountTooSmall(
26311                        data: &[u8],
26312                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26313                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26314                                data,
26315                            )
26316                            .map(StakeTableV3Errors::DelegateAmountTooSmall)
26317                    }
26318                    DelegateAmountTooSmall
26319                },
26320                {
26321                    fn DefaultAdminCannotBeRenounced(
26322                        data: &[u8],
26323                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26324                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
26325                                data,
26326                            )
26327                            .map(StakeTableV3Errors::DefaultAdminCannotBeRenounced)
26328                    }
26329                    DefaultAdminCannotBeRenounced
26330                },
26331                {
26332                    fn ExpectedPause(
26333                        data: &[u8],
26334                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26335                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
26336                                data,
26337                            )
26338                            .map(StakeTableV3Errors::ExpectedPause)
26339                    }
26340                    ExpectedPause
26341                },
26342                {
26343                    fn MinDelegateAmountTooSmall(
26344                        data: &[u8],
26345                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26346                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
26347                                data,
26348                            )
26349                            .map(StakeTableV3Errors::MinDelegateAmountTooSmall)
26350                    }
26351                    MinDelegateAmountTooSmall
26352                },
26353                {
26354                    fn InsufficientBalance(
26355                        data: &[u8],
26356                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26357                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
26358                                data,
26359                            )
26360                            .map(StakeTableV3Errors::InsufficientBalance)
26361                    }
26362                    InsufficientBalance
26363                },
26364                {
26365                    fn ValidatorAlreadyRegistered(
26366                        data: &[u8],
26367                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26368                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
26369                                data,
26370                            )
26371                            .map(StakeTableV3Errors::ValidatorAlreadyRegistered)
26372                    }
26373                    ValidatorAlreadyRegistered
26374                },
26375                {
26376                    fn AddressEmptyCode(
26377                        data: &[u8],
26378                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26379                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
26380                                data,
26381                            )
26382                            .map(StakeTableV3Errors::AddressEmptyCode)
26383                    }
26384                    AddressEmptyCode
26385                },
26386                {
26387                    fn InvalidG1(
26388                        data: &[u8],
26389                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26390                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
26391                                data,
26392                            )
26393                            .map(StakeTableV3Errors::InvalidG1)
26394                    }
26395                    InvalidG1
26396                },
26397                {
26398                    fn UUPSUnsupportedProxiableUUID(
26399                        data: &[u8],
26400                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26401                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
26402                                data,
26403                            )
26404                            .map(StakeTableV3Errors::UUPSUnsupportedProxiableUUID)
26405                    }
26406                    UUPSUnsupportedProxiableUUID
26407                },
26408                {
26409                    fn SchnorrKeyAlreadyUsed(
26410                        data: &[u8],
26411                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26412                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26413                                data,
26414                            )
26415                            .map(StakeTableV3Errors::SchnorrKeyAlreadyUsed)
26416                    }
26417                    SchnorrKeyAlreadyUsed
26418                },
26419                {
26420                    fn DefaultAdminCannotBeRevoked(
26421                        data: &[u8],
26422                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26423                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
26424                                data,
26425                            )
26426                            .map(StakeTableV3Errors::DefaultAdminCannotBeRevoked)
26427                    }
26428                    DefaultAdminCannotBeRevoked
26429                },
26430                {
26431                    fn X25519KeyAlreadyUsed(
26432                        data: &[u8],
26433                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26434                        <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26435                                data,
26436                            )
26437                            .map(StakeTableV3Errors::X25519KeyAlreadyUsed)
26438                    }
26439                    X25519KeyAlreadyUsed
26440                },
26441                {
26442                    fn ERC1967NonPayable(
26443                        data: &[u8],
26444                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26445                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
26446                                data,
26447                            )
26448                            .map(StakeTableV3Errors::ERC1967NonPayable)
26449                    }
26450                    ERC1967NonPayable
26451                },
26452                {
26453                    fn NoUndelegationFound(
26454                        data: &[u8],
26455                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26456                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
26457                                data,
26458                            )
26459                            .map(StakeTableV3Errors::NoUndelegationFound)
26460                    }
26461                    NoUndelegationFound
26462                },
26463                {
26464                    fn ExitEscrowPeriodInvalid(
26465                        data: &[u8],
26466                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26467                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
26468                                data,
26469                            )
26470                            .map(StakeTableV3Errors::ExitEscrowPeriodInvalid)
26471                    }
26472                    ExitEscrowPeriodInvalid
26473                },
26474                {
26475                    fn BN254PairingProdFailed(
26476                        data: &[u8],
26477                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26478                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
26479                                data,
26480                            )
26481                            .map(StakeTableV3Errors::BN254PairingProdFailed)
26482                    }
26483                    BN254PairingProdFailed
26484                },
26485                {
26486                    fn CommissionUnchanged(
26487                        data: &[u8],
26488                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26489                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
26490                                data,
26491                            )
26492                            .map(StakeTableV3Errors::CommissionUnchanged)
26493                    }
26494                    CommissionUnchanged
26495                },
26496                {
26497                    fn DeprecatedFunction(
26498                        data: &[u8],
26499                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26500                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
26501                                data,
26502                            )
26503                            .map(StakeTableV3Errors::DeprecatedFunction)
26504                    }
26505                    DeprecatedFunction
26506                },
26507                {
26508                    fn NothingToWithdraw(
26509                        data: &[u8],
26510                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26511                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
26512                                data,
26513                            )
26514                            .map(StakeTableV3Errors::NothingToWithdraw)
26515                    }
26516                    NothingToWithdraw
26517                },
26518                {
26519                    fn UndelegationAlreadyExists(
26520                        data: &[u8],
26521                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26522                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
26523                                data,
26524                            )
26525                            .map(StakeTableV3Errors::UndelegationAlreadyExists)
26526                    }
26527                    UndelegationAlreadyExists
26528                },
26529                {
26530                    fn NotInitializing(
26531                        data: &[u8],
26532                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26533                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
26534                                data,
26535                            )
26536                            .map(StakeTableV3Errors::NotInitializing)
26537                    }
26538                    NotInitializing
26539                },
26540                {
26541                    fn ZeroAddress(
26542                        data: &[u8],
26543                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26544                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
26545                                data,
26546                            )
26547                            .map(StakeTableV3Errors::ZeroAddress)
26548                    }
26549                    ZeroAddress
26550                },
26551                {
26552                    fn EnforcedPause(
26553                        data: &[u8],
26554                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26555                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
26556                                data,
26557                            )
26558                            .map(StakeTableV3Errors::EnforcedPause)
26559                    }
26560                    EnforcedPause
26561                },
26562                {
26563                    fn InvalidCommission(
26564                        data: &[u8],
26565                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26566                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
26567                                data,
26568                            )
26569                            .map(StakeTableV3Errors::InvalidCommission)
26570                    }
26571                    InvalidCommission
26572                },
26573                {
26574                    fn UUPSUnauthorizedCallContext(
26575                        data: &[u8],
26576                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26577                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
26578                                data,
26579                            )
26580                            .map(StakeTableV3Errors::UUPSUnauthorizedCallContext)
26581                    }
26582                    UUPSUnauthorizedCallContext
26583                },
26584                {
26585                    fn AccessControlUnauthorizedAccount(
26586                        data: &[u8],
26587                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26588                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
26589                                data,
26590                            )
26591                            .map(StakeTableV3Errors::AccessControlUnauthorizedAccount)
26592                    }
26593                    AccessControlUnauthorizedAccount
26594                },
26595                {
26596                    fn ValidatorAlreadyExited(
26597                        data: &[u8],
26598                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26599                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
26600                                data,
26601                            )
26602                            .map(StakeTableV3Errors::ValidatorAlreadyExited)
26603                    }
26604                    ValidatorAlreadyExited
26605                },
26606                {
26607                    fn ValidatorNotExited(
26608                        data: &[u8],
26609                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26610                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
26611                                data,
26612                            )
26613                            .map(StakeTableV3Errors::ValidatorNotExited)
26614                    }
26615                    ValidatorNotExited
26616                },
26617                {
26618                    fn InvalidInitialization(
26619                        data: &[u8],
26620                    ) -> alloy_sol_types::Result<StakeTableV3Errors> {
26621                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
26622                                data,
26623                            )
26624                            .map(StakeTableV3Errors::InvalidInitialization)
26625                    }
26626                    InvalidInitialization
26627                },
26628            ];
26629            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
26630                return Err(
26631                    alloy_sol_types::Error::unknown_selector(
26632                        <Self as alloy_sol_types::SolInterface>::NAME,
26633                        selector,
26634                    ),
26635                );
26636            };
26637            DECODE_VALIDATE_SHIMS[idx](data)
26638        }
26639        #[inline]
26640        fn abi_encoded_size(&self) -> usize {
26641            match self {
26642                Self::AccessControlBadConfirmation(inner) => {
26643                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
26644                        inner,
26645                    )
26646                }
26647                Self::AccessControlUnauthorizedAccount(inner) => {
26648                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
26649                        inner,
26650                    )
26651                }
26652                Self::AddressEmptyCode(inner) => {
26653                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
26654                        inner,
26655                    )
26656                }
26657                Self::BLSSigVerificationFailed(inner) => {
26658                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
26659                        inner,
26660                    )
26661                }
26662                Self::BN254PairingProdFailed(inner) => {
26663                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
26664                        inner,
26665                    )
26666                }
26667                Self::BlsKeyAlreadyUsed(inner) => {
26668                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
26669                        inner,
26670                    )
26671                }
26672                Self::CommissionAlreadyInitialized(inner) => {
26673                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
26674                        inner,
26675                    )
26676                }
26677                Self::CommissionIncreaseExceedsMax(inner) => {
26678                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
26679                        inner,
26680                    )
26681                }
26682                Self::CommissionUnchanged(inner) => {
26683                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
26684                        inner,
26685                    )
26686                }
26687                Self::CommissionUpdateTooSoon(inner) => {
26688                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
26689                        inner,
26690                    )
26691                }
26692                Self::DefaultAdminCannotBeRenounced(inner) => {
26693                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
26694                        inner,
26695                    )
26696                }
26697                Self::DefaultAdminCannotBeRevoked(inner) => {
26698                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
26699                        inner,
26700                    )
26701                }
26702                Self::DelegateAmountTooSmall(inner) => {
26703                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
26704                        inner,
26705                    )
26706                }
26707                Self::DeprecatedFunction(inner) => {
26708                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
26709                        inner,
26710                    )
26711                }
26712                Self::ERC1967InvalidImplementation(inner) => {
26713                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
26714                        inner,
26715                    )
26716                }
26717                Self::ERC1967NonPayable(inner) => {
26718                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
26719                        inner,
26720                    )
26721                }
26722                Self::EnforcedPause(inner) => {
26723                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
26724                }
26725                Self::ExitEscrowPeriodInvalid(inner) => {
26726                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
26727                        inner,
26728                    )
26729                }
26730                Self::ExpectedPause(inner) => {
26731                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
26732                }
26733                Self::FailedInnerCall(inner) => {
26734                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
26735                        inner,
26736                    )
26737                }
26738                Self::InitialActiveStakeExceedsBalance(inner) => {
26739                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
26740                        inner,
26741                    )
26742                }
26743                Self::InsufficientAllowance(inner) => {
26744                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
26745                        inner,
26746                    )
26747                }
26748                Self::InsufficientBalance(inner) => {
26749                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
26750                        inner,
26751                    )
26752                }
26753                Self::InvalidCommission(inner) => {
26754                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
26755                        inner,
26756                    )
26757                }
26758                Self::InvalidG1(inner) => {
26759                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
26760                }
26761                Self::InvalidInitialization(inner) => {
26762                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
26763                        inner,
26764                    )
26765                }
26766                Self::InvalidMetadataUriLength(inner) => {
26767                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
26768                        inner,
26769                    )
26770                }
26771                Self::InvalidP2pAddr(inner) => {
26772                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encoded_size(
26773                        inner,
26774                    )
26775                }
26776                Self::InvalidRateLimitParameters(inner) => {
26777                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
26778                        inner,
26779                    )
26780                }
26781                Self::InvalidSchnorrSig(inner) => {
26782                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
26783                        inner,
26784                    )
26785                }
26786                Self::InvalidSchnorrVK(inner) => {
26787                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
26788                        inner,
26789                    )
26790                }
26791                Self::InvalidX25519Key(inner) => {
26792                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encoded_size(
26793                        inner,
26794                    )
26795                }
26796                Self::MinDelegateAmountTooSmall(inner) => {
26797                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
26798                        inner,
26799                    )
26800                }
26801                Self::NoUndelegationFound(inner) => {
26802                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
26803                        inner,
26804                    )
26805                }
26806                Self::NotInitializing(inner) => {
26807                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
26808                        inner,
26809                    )
26810                }
26811                Self::NothingToWithdraw(inner) => {
26812                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
26813                        inner,
26814                    )
26815                }
26816                Self::OwnableInvalidOwner(inner) => {
26817                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
26818                        inner,
26819                    )
26820                }
26821                Self::OwnableUnauthorizedAccount(inner) => {
26822                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
26823                        inner,
26824                    )
26825                }
26826                Self::OwnershipCannotBeRenounced(inner) => {
26827                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
26828                        inner,
26829                    )
26830                }
26831                Self::PowPrecompileFailed(inner) => {
26832                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
26833                        inner,
26834                    )
26835                }
26836                Self::PrematureWithdrawal(inner) => {
26837                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
26838                        inner,
26839                    )
26840                }
26841                Self::SchnorrKeyAlreadyUsed(inner) => {
26842                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
26843                        inner,
26844                    )
26845                }
26846                Self::UUPSUnauthorizedCallContext(inner) => {
26847                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
26848                        inner,
26849                    )
26850                }
26851                Self::UUPSUnsupportedProxiableUUID(inner) => {
26852                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
26853                        inner,
26854                    )
26855                }
26856                Self::UndelegationAlreadyExists(inner) => {
26857                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
26858                        inner,
26859                    )
26860                }
26861                Self::ValidatorAlreadyExited(inner) => {
26862                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
26863                        inner,
26864                    )
26865                }
26866                Self::ValidatorAlreadyRegistered(inner) => {
26867                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
26868                        inner,
26869                    )
26870                }
26871                Self::ValidatorInactive(inner) => {
26872                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
26873                        inner,
26874                    )
26875                }
26876                Self::ValidatorNotExited(inner) => {
26877                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
26878                        inner,
26879                    )
26880                }
26881                Self::X25519KeyAlreadyUsed(inner) => {
26882                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
26883                        inner,
26884                    )
26885                }
26886                Self::ZeroAddress(inner) => {
26887                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
26888                }
26889                Self::ZeroAmount(inner) => {
26890                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
26891                }
26892            }
26893        }
26894        #[inline]
26895        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
26896            match self {
26897                Self::AccessControlBadConfirmation(inner) => {
26898                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
26899                        inner,
26900                        out,
26901                    )
26902                }
26903                Self::AccessControlUnauthorizedAccount(inner) => {
26904                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
26905                        inner,
26906                        out,
26907                    )
26908                }
26909                Self::AddressEmptyCode(inner) => {
26910                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
26911                        inner,
26912                        out,
26913                    )
26914                }
26915                Self::BLSSigVerificationFailed(inner) => {
26916                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
26917                        inner,
26918                        out,
26919                    )
26920                }
26921                Self::BN254PairingProdFailed(inner) => {
26922                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
26923                        inner,
26924                        out,
26925                    )
26926                }
26927                Self::BlsKeyAlreadyUsed(inner) => {
26928                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
26929                        inner,
26930                        out,
26931                    )
26932                }
26933                Self::CommissionAlreadyInitialized(inner) => {
26934                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
26935                        inner,
26936                        out,
26937                    )
26938                }
26939                Self::CommissionIncreaseExceedsMax(inner) => {
26940                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
26941                        inner,
26942                        out,
26943                    )
26944                }
26945                Self::CommissionUnchanged(inner) => {
26946                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
26947                        inner,
26948                        out,
26949                    )
26950                }
26951                Self::CommissionUpdateTooSoon(inner) => {
26952                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
26953                        inner,
26954                        out,
26955                    )
26956                }
26957                Self::DefaultAdminCannotBeRenounced(inner) => {
26958                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
26959                        inner,
26960                        out,
26961                    )
26962                }
26963                Self::DefaultAdminCannotBeRevoked(inner) => {
26964                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
26965                        inner,
26966                        out,
26967                    )
26968                }
26969                Self::DelegateAmountTooSmall(inner) => {
26970                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
26971                        inner,
26972                        out,
26973                    )
26974                }
26975                Self::DeprecatedFunction(inner) => {
26976                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
26977                        inner,
26978                        out,
26979                    )
26980                }
26981                Self::ERC1967InvalidImplementation(inner) => {
26982                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
26983                        inner,
26984                        out,
26985                    )
26986                }
26987                Self::ERC1967NonPayable(inner) => {
26988                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
26989                        inner,
26990                        out,
26991                    )
26992                }
26993                Self::EnforcedPause(inner) => {
26994                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
26995                        inner,
26996                        out,
26997                    )
26998                }
26999                Self::ExitEscrowPeriodInvalid(inner) => {
27000                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
27001                        inner,
27002                        out,
27003                    )
27004                }
27005                Self::ExpectedPause(inner) => {
27006                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
27007                        inner,
27008                        out,
27009                    )
27010                }
27011                Self::FailedInnerCall(inner) => {
27012                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
27013                        inner,
27014                        out,
27015                    )
27016                }
27017                Self::InitialActiveStakeExceedsBalance(inner) => {
27018                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
27019                        inner,
27020                        out,
27021                    )
27022                }
27023                Self::InsufficientAllowance(inner) => {
27024                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
27025                        inner,
27026                        out,
27027                    )
27028                }
27029                Self::InsufficientBalance(inner) => {
27030                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
27031                        inner,
27032                        out,
27033                    )
27034                }
27035                Self::InvalidCommission(inner) => {
27036                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
27037                        inner,
27038                        out,
27039                    )
27040                }
27041                Self::InvalidG1(inner) => {
27042                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27043                }
27044                Self::InvalidInitialization(inner) => {
27045                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
27046                        inner,
27047                        out,
27048                    )
27049                }
27050                Self::InvalidMetadataUriLength(inner) => {
27051                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
27052                        inner,
27053                        out,
27054                    )
27055                }
27056                Self::InvalidP2pAddr(inner) => {
27057                    <InvalidP2pAddr as alloy_sol_types::SolError>::abi_encode_raw(
27058                        inner,
27059                        out,
27060                    )
27061                }
27062                Self::InvalidRateLimitParameters(inner) => {
27063                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
27064                        inner,
27065                        out,
27066                    )
27067                }
27068                Self::InvalidSchnorrSig(inner) => {
27069                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
27070                        inner,
27071                        out,
27072                    )
27073                }
27074                Self::InvalidSchnorrVK(inner) => {
27075                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
27076                        inner,
27077                        out,
27078                    )
27079                }
27080                Self::InvalidX25519Key(inner) => {
27081                    <InvalidX25519Key as alloy_sol_types::SolError>::abi_encode_raw(
27082                        inner,
27083                        out,
27084                    )
27085                }
27086                Self::MinDelegateAmountTooSmall(inner) => {
27087                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
27088                        inner,
27089                        out,
27090                    )
27091                }
27092                Self::NoUndelegationFound(inner) => {
27093                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
27094                        inner,
27095                        out,
27096                    )
27097                }
27098                Self::NotInitializing(inner) => {
27099                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
27100                        inner,
27101                        out,
27102                    )
27103                }
27104                Self::NothingToWithdraw(inner) => {
27105                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
27106                        inner,
27107                        out,
27108                    )
27109                }
27110                Self::OwnableInvalidOwner(inner) => {
27111                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
27112                        inner,
27113                        out,
27114                    )
27115                }
27116                Self::OwnableUnauthorizedAccount(inner) => {
27117                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
27118                        inner,
27119                        out,
27120                    )
27121                }
27122                Self::OwnershipCannotBeRenounced(inner) => {
27123                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
27124                        inner,
27125                        out,
27126                    )
27127                }
27128                Self::PowPrecompileFailed(inner) => {
27129                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
27130                        inner,
27131                        out,
27132                    )
27133                }
27134                Self::PrematureWithdrawal(inner) => {
27135                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
27136                        inner,
27137                        out,
27138                    )
27139                }
27140                Self::SchnorrKeyAlreadyUsed(inner) => {
27141                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27142                        inner,
27143                        out,
27144                    )
27145                }
27146                Self::UUPSUnauthorizedCallContext(inner) => {
27147                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
27148                        inner,
27149                        out,
27150                    )
27151                }
27152                Self::UUPSUnsupportedProxiableUUID(inner) => {
27153                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
27154                        inner,
27155                        out,
27156                    )
27157                }
27158                Self::UndelegationAlreadyExists(inner) => {
27159                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
27160                        inner,
27161                        out,
27162                    )
27163                }
27164                Self::ValidatorAlreadyExited(inner) => {
27165                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
27166                        inner,
27167                        out,
27168                    )
27169                }
27170                Self::ValidatorAlreadyRegistered(inner) => {
27171                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
27172                        inner,
27173                        out,
27174                    )
27175                }
27176                Self::ValidatorInactive(inner) => {
27177                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
27178                        inner,
27179                        out,
27180                    )
27181                }
27182                Self::ValidatorNotExited(inner) => {
27183                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
27184                        inner,
27185                        out,
27186                    )
27187                }
27188                Self::X25519KeyAlreadyUsed(inner) => {
27189                    <X25519KeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
27190                        inner,
27191                        out,
27192                    )
27193                }
27194                Self::ZeroAddress(inner) => {
27195                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
27196                        inner,
27197                        out,
27198                    )
27199                }
27200                Self::ZeroAmount(inner) => {
27201                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
27202                }
27203            }
27204        }
27205    }
27206    ///Container for all the [`StakeTableV3`](self) events.
27207    #[derive(Clone)]
27208    #[derive(serde::Serialize, serde::Deserialize)]
27209    #[derive()]
27210    pub enum StakeTableV3Events {
27211        #[allow(missing_docs)]
27212        CommissionUpdated(CommissionUpdated),
27213        #[allow(missing_docs)]
27214        ConsensusKeysUpdated(ConsensusKeysUpdated),
27215        #[allow(missing_docs)]
27216        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
27217        #[allow(missing_docs)]
27218        Delegated(Delegated),
27219        #[allow(missing_docs)]
27220        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
27221        #[allow(missing_docs)]
27222        Initialized(Initialized),
27223        #[allow(missing_docs)]
27224        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
27225        #[allow(missing_docs)]
27226        MetadataUriUpdated(MetadataUriUpdated),
27227        #[allow(missing_docs)]
27228        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
27229        #[allow(missing_docs)]
27230        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
27231        #[allow(missing_docs)]
27232        OwnershipTransferred(OwnershipTransferred),
27233        #[allow(missing_docs)]
27234        P2pAddrUpdated(P2pAddrUpdated),
27235        #[allow(missing_docs)]
27236        Paused(Paused),
27237        #[allow(missing_docs)]
27238        RoleAdminChanged(RoleAdminChanged),
27239        #[allow(missing_docs)]
27240        RoleGranted(RoleGranted),
27241        #[allow(missing_docs)]
27242        RoleRevoked(RoleRevoked),
27243        #[allow(missing_docs)]
27244        Undelegated(Undelegated),
27245        #[allow(missing_docs)]
27246        UndelegatedV2(UndelegatedV2),
27247        #[allow(missing_docs)]
27248        Unpaused(Unpaused),
27249        #[allow(missing_docs)]
27250        Upgraded(Upgraded),
27251        #[allow(missing_docs)]
27252        ValidatorExit(ValidatorExit),
27253        #[allow(missing_docs)]
27254        ValidatorExitClaimed(ValidatorExitClaimed),
27255        #[allow(missing_docs)]
27256        ValidatorExitV2(ValidatorExitV2),
27257        #[allow(missing_docs)]
27258        ValidatorRegistered(ValidatorRegistered),
27259        #[allow(missing_docs)]
27260        ValidatorRegisteredV2(ValidatorRegisteredV2),
27261        #[allow(missing_docs)]
27262        ValidatorRegisteredV3(ValidatorRegisteredV3),
27263        #[allow(missing_docs)]
27264        Withdrawal(Withdrawal),
27265        #[allow(missing_docs)]
27266        WithdrawalClaimed(WithdrawalClaimed),
27267        #[allow(missing_docs)]
27268        X25519KeyUpdated(X25519KeyUpdated),
27269    }
27270    impl StakeTableV3Events {
27271        /// All the selectors of this enum.
27272        ///
27273        /// Note that the selectors might not be in the same order as the variants.
27274        /// No guarantees are made about the order of the selectors.
27275        ///
27276        /// Prefer using `SolInterface` methods instead.
27277        pub const SELECTORS: &'static [[u8; 32usize]] = &[
27278            [
27279                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
27280                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
27281                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
27282            ],
27283            [
27284                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
27285                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
27286                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
27287            ],
27288            [
27289                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
27290                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
27291                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
27292            ],
27293            [
27294                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
27295                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
27296                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
27297            ],
27298            [
27299                59u8, 76u8, 200u8, 138u8, 254u8, 62u8, 92u8, 230u8, 190u8, 234u8, 121u8,
27300                9u8, 222u8, 32u8, 11u8, 242u8, 24u8, 158u8, 238u8, 204u8, 179u8, 150u8,
27301                87u8, 31u8, 31u8, 148u8, 213u8, 24u8, 53u8, 242u8, 71u8, 223u8,
27302            ],
27303            [
27304                67u8, 6u8, 97u8, 130u8, 175u8, 137u8, 242u8, 48u8, 69u8, 34u8, 7u8, 26u8,
27305                87u8, 192u8, 96u8, 99u8, 225u8, 27u8, 38u8, 89u8, 29u8, 109u8, 156u8,
27306                51u8, 241u8, 135u8, 76u8, 45u8, 10u8, 20u8, 187u8, 34u8,
27307            ],
27308            [
27309                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
27310                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
27311                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
27312            ],
27313            [
27314                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
27315                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
27316                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
27317            ],
27318            [
27319                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
27320                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
27321                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
27322            ],
27323            [
27324                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
27325                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
27326                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
27327            ],
27328            [
27329                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
27330                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
27331                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
27332            ],
27333            [
27334                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
27335                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
27336                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
27337            ],
27338            [
27339                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
27340                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
27341                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
27342            ],
27343            [
27344                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
27345                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
27346                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
27347            ],
27348            [
27349                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
27350                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
27351                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
27352            ],
27353            [
27354                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
27355                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
27356                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
27357            ],
27358            [
27359                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
27360                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
27361                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
27362            ],
27363            [
27364                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
27365                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
27366                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
27367            ],
27368            [
27369                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
27370                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
27371                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
27372            ],
27373            [
27374                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
27375                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
27376                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
27377            ],
27378            [
27379                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
27380                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
27381                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
27382            ],
27383            [
27384                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
27385                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
27386                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
27387            ],
27388            [
27389                191u8, 20u8, 205u8, 127u8, 234u8, 112u8, 67u8, 93u8, 66u8, 79u8, 146u8,
27390                247u8, 163u8, 208u8, 17u8, 9u8, 165u8, 131u8, 68u8, 157u8, 113u8, 136u8,
27391                152u8, 166u8, 169u8, 105u8, 135u8, 156u8, 84u8, 118u8, 236u8, 20u8,
27392            ],
27393            [
27394                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
27395                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
27396                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
27397            ],
27398            [
27399                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
27400                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
27401                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
27402            ],
27403            [
27404                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
27405                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
27406                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
27407            ],
27408            [
27409                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
27410                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
27411                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
27412            ],
27413            [
27414                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
27415                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
27416                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
27417            ],
27418            [
27419                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
27420                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
27421                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
27422            ],
27423        ];
27424        /// The names of the variants in the same order as `SELECTORS`.
27425        pub const VARIANT_NAMES: &'static [&'static str] = &[
27426            ::core::stringify!(MinDelegateAmountUpdated),
27427            ::core::stringify!(MetadataUriUpdated),
27428            ::core::stringify!(ValidatorRegisteredV2),
27429            ::core::stringify!(RoleGranted),
27430            ::core::stringify!(X25519KeyUpdated),
27431            ::core::stringify!(P2pAddrUpdated),
27432            ::core::stringify!(Undelegated),
27433            ::core::stringify!(ValidatorExitV2),
27434            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
27435            ::core::stringify!(Unpaused),
27436            ::core::stringify!(Paused),
27437            ::core::stringify!(UndelegatedV2),
27438            ::core::stringify!(ExitEscrowPeriodUpdated),
27439            ::core::stringify!(Withdrawal),
27440            ::core::stringify!(ConsensusKeysUpdated),
27441            ::core::stringify!(ValidatorExitClaimed),
27442            ::core::stringify!(OwnershipTransferred),
27443            ::core::stringify!(WithdrawalClaimed),
27444            ::core::stringify!(Upgraded),
27445            ::core::stringify!(RoleAdminChanged),
27446            ::core::stringify!(CommissionUpdated),
27447            ::core::stringify!(MaxCommissionIncreaseUpdated),
27448            ::core::stringify!(ValidatorRegisteredV3),
27449            ::core::stringify!(Initialized),
27450            ::core::stringify!(ConsensusKeysUpdatedV2),
27451            ::core::stringify!(Delegated),
27452            ::core::stringify!(RoleRevoked),
27453            ::core::stringify!(ValidatorRegistered),
27454            ::core::stringify!(ValidatorExit),
27455        ];
27456        /// The signatures in the same order as `SELECTORS`.
27457        pub const SIGNATURES: &'static [&'static str] = &[
27458            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27459            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27460            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27461            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
27462            <X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27463            <P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27464            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
27465            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27466            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27467            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
27468            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
27469            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27470            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27471            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
27472            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27473            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
27474            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
27475            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
27476            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
27477            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
27478            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27479            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
27480            <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE,
27481            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
27482            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
27483            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
27484            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
27485            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
27486            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
27487        ];
27488        /// Returns the signature for the given selector, if known.
27489        #[inline]
27490        pub fn signature_by_selector(
27491            selector: [u8; 32usize],
27492        ) -> ::core::option::Option<&'static str> {
27493            match Self::SELECTORS.binary_search(&selector) {
27494                ::core::result::Result::Ok(idx) => {
27495                    ::core::option::Option::Some(Self::SIGNATURES[idx])
27496                }
27497                ::core::result::Result::Err(_) => ::core::option::Option::None,
27498            }
27499        }
27500        /// Returns the enum variant name for the given selector, if known.
27501        #[inline]
27502        pub fn name_by_selector(
27503            selector: [u8; 32usize],
27504        ) -> ::core::option::Option<&'static str> {
27505            let sig = Self::signature_by_selector(selector)?;
27506            sig.split_once('(').map(|(name, _)| name)
27507        }
27508    }
27509    #[automatically_derived]
27510    impl alloy_sol_types::SolEventInterface for StakeTableV3Events {
27511        const NAME: &'static str = "StakeTableV3Events";
27512        const COUNT: usize = 29usize;
27513        fn decode_raw_log(
27514            topics: &[alloy_sol_types::Word],
27515            data: &[u8],
27516        ) -> alloy_sol_types::Result<Self> {
27517            match topics.first().copied() {
27518                Some(
27519                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27520                ) => {
27521                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27522                            topics,
27523                            data,
27524                        )
27525                        .map(Self::CommissionUpdated)
27526                }
27527                Some(
27528                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27529                ) => {
27530                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27531                            topics,
27532                            data,
27533                        )
27534                        .map(Self::ConsensusKeysUpdated)
27535                }
27536                Some(
27537                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27538                ) => {
27539                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
27540                            topics,
27541                            data,
27542                        )
27543                        .map(Self::ConsensusKeysUpdatedV2)
27544                }
27545                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27546                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
27547                            topics,
27548                            data,
27549                        )
27550                        .map(Self::Delegated)
27551                }
27552                Some(
27553                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27554                ) => {
27555                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27556                            topics,
27557                            data,
27558                        )
27559                        .map(Self::ExitEscrowPeriodUpdated)
27560                }
27561                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27562                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
27563                            topics,
27564                            data,
27565                        )
27566                        .map(Self::Initialized)
27567                }
27568                Some(
27569                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27570                ) => {
27571                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27572                            topics,
27573                            data,
27574                        )
27575                        .map(Self::MaxCommissionIncreaseUpdated)
27576                }
27577                Some(
27578                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27579                ) => {
27580                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27581                            topics,
27582                            data,
27583                        )
27584                        .map(Self::MetadataUriUpdated)
27585                }
27586                Some(
27587                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27588                ) => {
27589                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27590                            topics,
27591                            data,
27592                        )
27593                        .map(Self::MinCommissionUpdateIntervalUpdated)
27594                }
27595                Some(
27596                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27597                ) => {
27598                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27599                            topics,
27600                            data,
27601                        )
27602                        .map(Self::MinDelegateAmountUpdated)
27603                }
27604                Some(
27605                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27606                ) => {
27607                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
27608                            topics,
27609                            data,
27610                        )
27611                        .map(Self::OwnershipTransferred)
27612                }
27613                Some(<P2pAddrUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27614                    <P2pAddrUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27615                            topics,
27616                            data,
27617                        )
27618                        .map(Self::P2pAddrUpdated)
27619                }
27620                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27621                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
27622                        .map(Self::Paused)
27623                }
27624                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27625                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
27626                            topics,
27627                            data,
27628                        )
27629                        .map(Self::RoleAdminChanged)
27630                }
27631                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27632                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
27633                            topics,
27634                            data,
27635                        )
27636                        .map(Self::RoleGranted)
27637                }
27638                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27639                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
27640                            topics,
27641                            data,
27642                        )
27643                        .map(Self::RoleRevoked)
27644                }
27645                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27646                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
27647                            topics,
27648                            data,
27649                        )
27650                        .map(Self::Undelegated)
27651                }
27652                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27653                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
27654                            topics,
27655                            data,
27656                        )
27657                        .map(Self::UndelegatedV2)
27658                }
27659                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27660                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
27661                        .map(Self::Unpaused)
27662                }
27663                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27664                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
27665                        .map(Self::Upgraded)
27666                }
27667                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27668                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
27669                            topics,
27670                            data,
27671                        )
27672                        .map(Self::ValidatorExit)
27673                }
27674                Some(
27675                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27676                ) => {
27677                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
27678                            topics,
27679                            data,
27680                        )
27681                        .map(Self::ValidatorExitClaimed)
27682                }
27683                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27684                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log(
27685                            topics,
27686                            data,
27687                        )
27688                        .map(Self::ValidatorExitV2)
27689                }
27690                Some(
27691                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27692                ) => {
27693                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
27694                            topics,
27695                            data,
27696                        )
27697                        .map(Self::ValidatorRegistered)
27698                }
27699                Some(
27700                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27701                ) => {
27702                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
27703                            topics,
27704                            data,
27705                        )
27706                        .map(Self::ValidatorRegisteredV2)
27707                }
27708                Some(
27709                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27710                ) => {
27711                    <ValidatorRegisteredV3 as alloy_sol_types::SolEvent>::decode_raw_log(
27712                            topics,
27713                            data,
27714                        )
27715                        .map(Self::ValidatorRegisteredV3)
27716                }
27717                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27718                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
27719                            topics,
27720                            data,
27721                        )
27722                        .map(Self::Withdrawal)
27723                }
27724                Some(
27725                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
27726                ) => {
27727                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
27728                            topics,
27729                            data,
27730                        )
27731                        .map(Self::WithdrawalClaimed)
27732                }
27733                Some(<X25519KeyUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
27734                    <X25519KeyUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
27735                            topics,
27736                            data,
27737                        )
27738                        .map(Self::X25519KeyUpdated)
27739                }
27740                _ => {
27741                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
27742                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
27743                        log: alloy_sol_types::private::Box::new(
27744                            alloy_sol_types::private::LogData::new_unchecked(
27745                                topics.to_vec(),
27746                                data.to_vec().into(),
27747                            ),
27748                        ),
27749                    })
27750                }
27751            }
27752        }
27753    }
27754    #[automatically_derived]
27755    impl alloy_sol_types::private::IntoLogData for StakeTableV3Events {
27756        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
27757            match self {
27758                Self::CommissionUpdated(inner) => {
27759                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27760                }
27761                Self::ConsensusKeysUpdated(inner) => {
27762                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27763                }
27764                Self::ConsensusKeysUpdatedV2(inner) => {
27765                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27766                }
27767                Self::Delegated(inner) => {
27768                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27769                }
27770                Self::ExitEscrowPeriodUpdated(inner) => {
27771                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27772                }
27773                Self::Initialized(inner) => {
27774                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27775                }
27776                Self::MaxCommissionIncreaseUpdated(inner) => {
27777                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27778                }
27779                Self::MetadataUriUpdated(inner) => {
27780                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27781                }
27782                Self::MinCommissionUpdateIntervalUpdated(inner) => {
27783                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27784                }
27785                Self::MinDelegateAmountUpdated(inner) => {
27786                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27787                }
27788                Self::OwnershipTransferred(inner) => {
27789                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27790                }
27791                Self::P2pAddrUpdated(inner) => {
27792                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27793                }
27794                Self::Paused(inner) => {
27795                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27796                }
27797                Self::RoleAdminChanged(inner) => {
27798                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27799                }
27800                Self::RoleGranted(inner) => {
27801                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27802                }
27803                Self::RoleRevoked(inner) => {
27804                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27805                }
27806                Self::Undelegated(inner) => {
27807                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27808                }
27809                Self::UndelegatedV2(inner) => {
27810                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27811                }
27812                Self::Unpaused(inner) => {
27813                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27814                }
27815                Self::Upgraded(inner) => {
27816                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27817                }
27818                Self::ValidatorExit(inner) => {
27819                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27820                }
27821                Self::ValidatorExitClaimed(inner) => {
27822                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27823                }
27824                Self::ValidatorExitV2(inner) => {
27825                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27826                }
27827                Self::ValidatorRegistered(inner) => {
27828                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27829                }
27830                Self::ValidatorRegisteredV2(inner) => {
27831                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27832                }
27833                Self::ValidatorRegisteredV3(inner) => {
27834                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27835                }
27836                Self::Withdrawal(inner) => {
27837                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27838                }
27839                Self::WithdrawalClaimed(inner) => {
27840                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27841                }
27842                Self::X25519KeyUpdated(inner) => {
27843                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
27844                }
27845            }
27846        }
27847        fn into_log_data(self) -> alloy_sol_types::private::LogData {
27848            match self {
27849                Self::CommissionUpdated(inner) => {
27850                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27851                }
27852                Self::ConsensusKeysUpdated(inner) => {
27853                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27854                }
27855                Self::ConsensusKeysUpdatedV2(inner) => {
27856                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27857                }
27858                Self::Delegated(inner) => {
27859                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27860                }
27861                Self::ExitEscrowPeriodUpdated(inner) => {
27862                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27863                }
27864                Self::Initialized(inner) => {
27865                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27866                }
27867                Self::MaxCommissionIncreaseUpdated(inner) => {
27868                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27869                }
27870                Self::MetadataUriUpdated(inner) => {
27871                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27872                }
27873                Self::MinCommissionUpdateIntervalUpdated(inner) => {
27874                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27875                }
27876                Self::MinDelegateAmountUpdated(inner) => {
27877                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27878                }
27879                Self::OwnershipTransferred(inner) => {
27880                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27881                }
27882                Self::P2pAddrUpdated(inner) => {
27883                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27884                }
27885                Self::Paused(inner) => {
27886                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27887                }
27888                Self::RoleAdminChanged(inner) => {
27889                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27890                }
27891                Self::RoleGranted(inner) => {
27892                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27893                }
27894                Self::RoleRevoked(inner) => {
27895                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27896                }
27897                Self::Undelegated(inner) => {
27898                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27899                }
27900                Self::UndelegatedV2(inner) => {
27901                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27902                }
27903                Self::Unpaused(inner) => {
27904                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27905                }
27906                Self::Upgraded(inner) => {
27907                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27908                }
27909                Self::ValidatorExit(inner) => {
27910                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27911                }
27912                Self::ValidatorExitClaimed(inner) => {
27913                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27914                }
27915                Self::ValidatorExitV2(inner) => {
27916                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27917                }
27918                Self::ValidatorRegistered(inner) => {
27919                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27920                }
27921                Self::ValidatorRegisteredV2(inner) => {
27922                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27923                }
27924                Self::ValidatorRegisteredV3(inner) => {
27925                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27926                }
27927                Self::Withdrawal(inner) => {
27928                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27929                }
27930                Self::WithdrawalClaimed(inner) => {
27931                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27932                }
27933                Self::X25519KeyUpdated(inner) => {
27934                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
27935                }
27936            }
27937        }
27938    }
27939    use alloy::contract as alloy_contract;
27940    /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
27941
27942See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
27943    #[inline]
27944    pub const fn new<
27945        P: alloy_contract::private::Provider<N>,
27946        N: alloy_contract::private::Network,
27947    >(
27948        address: alloy_sol_types::private::Address,
27949        __provider: P,
27950    ) -> StakeTableV3Instance<P, N> {
27951        StakeTableV3Instance::<P, N>::new(address, __provider)
27952    }
27953    /**Deploys this contract using the given `provider` and constructor arguments, if any.
27954
27955Returns a new instance of the contract, if the deployment was successful.
27956
27957For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
27958    #[inline]
27959    pub fn deploy<
27960        P: alloy_contract::private::Provider<N>,
27961        N: alloy_contract::private::Network,
27962    >(
27963        __provider: P,
27964    ) -> impl ::core::future::Future<
27965        Output = alloy_contract::Result<StakeTableV3Instance<P, N>>,
27966    > {
27967        StakeTableV3Instance::<P, N>::deploy(__provider)
27968    }
27969    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
27970and constructor arguments, if any.
27971
27972This is a simple wrapper around creating a `RawCallBuilder` with the data set to
27973the bytecode concatenated with the constructor's ABI-encoded arguments.*/
27974    #[inline]
27975    pub fn deploy_builder<
27976        P: alloy_contract::private::Provider<N>,
27977        N: alloy_contract::private::Network,
27978    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
27979        StakeTableV3Instance::<P, N>::deploy_builder(__provider)
27980    }
27981    /**A [`StakeTableV3`](self) instance.
27982
27983Contains type-safe methods for interacting with an on-chain instance of the
27984[`StakeTableV3`](self) contract located at a given `address`, using a given
27985provider `P`.
27986
27987If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
27988documentation on how to provide it), the `deploy` and `deploy_builder` methods can
27989be used to deploy a new instance of the contract.
27990
27991See the [module-level documentation](self) for all the available methods.*/
27992    #[derive(Clone)]
27993    pub struct StakeTableV3Instance<P, N = alloy_contract::private::Ethereum> {
27994        address: alloy_sol_types::private::Address,
27995        provider: P,
27996        _network: ::core::marker::PhantomData<N>,
27997    }
27998    #[automatically_derived]
27999    impl<P, N> ::core::fmt::Debug for StakeTableV3Instance<P, N> {
28000        #[inline]
28001        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
28002            f.debug_tuple("StakeTableV3Instance").field(&self.address).finish()
28003        }
28004    }
28005    /// Instantiation and getters/setters.
28006    impl<
28007        P: alloy_contract::private::Provider<N>,
28008        N: alloy_contract::private::Network,
28009    > StakeTableV3Instance<P, N> {
28010        /**Creates a new wrapper around an on-chain [`StakeTableV3`](self) contract instance.
28011
28012See the [wrapper's documentation](`StakeTableV3Instance`) for more details.*/
28013        #[inline]
28014        pub const fn new(
28015            address: alloy_sol_types::private::Address,
28016            __provider: P,
28017        ) -> Self {
28018            Self {
28019                address,
28020                provider: __provider,
28021                _network: ::core::marker::PhantomData,
28022            }
28023        }
28024        /**Deploys this contract using the given `provider` and constructor arguments, if any.
28025
28026Returns a new instance of the contract, if the deployment was successful.
28027
28028For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
28029        #[inline]
28030        pub async fn deploy(
28031            __provider: P,
28032        ) -> alloy_contract::Result<StakeTableV3Instance<P, N>> {
28033            let call_builder = Self::deploy_builder(__provider);
28034            let contract_address = call_builder.deploy().await?;
28035            Ok(Self::new(contract_address, call_builder.provider))
28036        }
28037        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
28038and constructor arguments, if any.
28039
28040This is a simple wrapper around creating a `RawCallBuilder` with the data set to
28041the bytecode concatenated with the constructor's ABI-encoded arguments.*/
28042        #[inline]
28043        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
28044            alloy_contract::RawCallBuilder::new_raw_deploy(
28045                __provider,
28046                ::core::clone::Clone::clone(&BYTECODE),
28047            )
28048        }
28049        /// Returns a reference to the address.
28050        #[inline]
28051        pub const fn address(&self) -> &alloy_sol_types::private::Address {
28052            &self.address
28053        }
28054        /// Sets the address.
28055        #[inline]
28056        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
28057            self.address = address;
28058        }
28059        /// Sets the address and returns `self`.
28060        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
28061            self.set_address(address);
28062            self
28063        }
28064        /// Returns a reference to the provider.
28065        #[inline]
28066        pub const fn provider(&self) -> &P {
28067            &self.provider
28068        }
28069    }
28070    impl<P: ::core::clone::Clone, N> StakeTableV3Instance<&P, N> {
28071        /// Clones the provider and returns a new instance with the cloned provider.
28072        #[inline]
28073        pub fn with_cloned_provider(self) -> StakeTableV3Instance<P, N> {
28074            StakeTableV3Instance {
28075                address: self.address,
28076                provider: ::core::clone::Clone::clone(&self.provider),
28077                _network: ::core::marker::PhantomData,
28078            }
28079        }
28080    }
28081    /// Function calls.
28082    impl<
28083        P: alloy_contract::private::Provider<N>,
28084        N: alloy_contract::private::Network,
28085    > StakeTableV3Instance<P, N> {
28086        /// Creates a new call builder using this contract instance's provider and address.
28087        ///
28088        /// Note that the call can be any function call, not just those defined in this
28089        /// contract. Prefer using the other methods for building type-safe contract calls.
28090        pub fn call_builder<C: alloy_sol_types::SolCall>(
28091            &self,
28092            call: &C,
28093        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
28094            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
28095        }
28096        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
28097        pub fn DEFAULT_ADMIN_ROLE(
28098            &self,
28099        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
28100            self.call_builder(&DEFAULT_ADMIN_ROLECall)
28101        }
28102        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
28103        pub fn MAX_COMMISSION_BPS(
28104            &self,
28105        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
28106            self.call_builder(&MAX_COMMISSION_BPSCall)
28107        }
28108        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
28109        pub fn MAX_EXIT_ESCROW_PERIOD(
28110            &self,
28111        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
28112            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
28113        }
28114        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
28115        pub fn MAX_METADATA_URI_LENGTH(
28116            &self,
28117        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
28118            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
28119        }
28120        ///Creates a new call builder for the [`MAX_P2P_ADDR_LENGTH`] function.
28121        pub fn MAX_P2P_ADDR_LENGTH(
28122            &self,
28123        ) -> alloy_contract::SolCallBuilder<&P, MAX_P2P_ADDR_LENGTHCall, N> {
28124            self.call_builder(&MAX_P2P_ADDR_LENGTHCall)
28125        }
28126        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
28127        pub fn MIN_EXIT_ESCROW_PERIOD(
28128            &self,
28129        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
28130            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
28131        }
28132        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
28133        pub fn PAUSER_ROLE(
28134            &self,
28135        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
28136            self.call_builder(&PAUSER_ROLECall)
28137        }
28138        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
28139        pub fn UPGRADE_INTERFACE_VERSION(
28140            &self,
28141        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
28142            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
28143        }
28144        ///Creates a new call builder for the [`_hashBlsKey`] function.
28145        pub fn _hashBlsKey(
28146            &self,
28147            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28148        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
28149            self.call_builder(&_hashBlsKeyCall { blsVK })
28150        }
28151        ///Creates a new call builder for the [`activeStake`] function.
28152        pub fn activeStake(
28153            &self,
28154        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
28155            self.call_builder(&activeStakeCall)
28156        }
28157        ///Creates a new call builder for the [`blsKeys`] function.
28158        pub fn blsKeys(
28159            &self,
28160            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
28161        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
28162            self.call_builder(&blsKeysCall { blsKeyHash })
28163        }
28164        ///Creates a new call builder for the [`claimValidatorExit`] function.
28165        pub fn claimValidatorExit(
28166            &self,
28167            validator: alloy::sol_types::private::Address,
28168        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
28169            self.call_builder(
28170                &claimValidatorExitCall {
28171                    validator,
28172                },
28173            )
28174        }
28175        ///Creates a new call builder for the [`claimWithdrawal`] function.
28176        pub fn claimWithdrawal(
28177            &self,
28178            validator: alloy::sol_types::private::Address,
28179        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
28180            self.call_builder(&claimWithdrawalCall { validator })
28181        }
28182        ///Creates a new call builder for the [`commissionTracking`] function.
28183        pub fn commissionTracking(
28184            &self,
28185            validator: alloy::sol_types::private::Address,
28186        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
28187            self.call_builder(
28188                &commissionTrackingCall {
28189                    validator,
28190                },
28191            )
28192        }
28193        ///Creates a new call builder for the [`delegate`] function.
28194        pub fn delegate(
28195            &self,
28196            validator: alloy::sol_types::private::Address,
28197            amount: alloy::sol_types::private::primitives::aliases::U256,
28198        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
28199            self.call_builder(&delegateCall { validator, amount })
28200        }
28201        ///Creates a new call builder for the [`delegations`] function.
28202        pub fn delegations(
28203            &self,
28204            validator: alloy::sol_types::private::Address,
28205            delegator: alloy::sol_types::private::Address,
28206        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
28207            self.call_builder(
28208                &delegationsCall {
28209                    validator,
28210                    delegator,
28211                },
28212            )
28213        }
28214        ///Creates a new call builder for the [`deregisterValidator`] function.
28215        pub fn deregisterValidator(
28216            &self,
28217        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
28218            self.call_builder(&deregisterValidatorCall)
28219        }
28220        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
28221        pub fn exitEscrowPeriod(
28222            &self,
28223        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
28224            self.call_builder(&exitEscrowPeriodCall)
28225        }
28226        ///Creates a new call builder for the [`getRoleAdmin`] function.
28227        pub fn getRoleAdmin(
28228            &self,
28229            role: alloy::sol_types::private::FixedBytes<32>,
28230        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
28231            self.call_builder(&getRoleAdminCall { role })
28232        }
28233        ///Creates a new call builder for the [`getUndelegation`] function.
28234        pub fn getUndelegation(
28235            &self,
28236            validator: alloy::sol_types::private::Address,
28237            delegator: alloy::sol_types::private::Address,
28238        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
28239            self.call_builder(
28240                &getUndelegationCall {
28241                    validator,
28242                    delegator,
28243                },
28244            )
28245        }
28246        ///Creates a new call builder for the [`getVersion`] function.
28247        pub fn getVersion(
28248            &self,
28249        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
28250            self.call_builder(&getVersionCall)
28251        }
28252        ///Creates a new call builder for the [`grantRole`] function.
28253        pub fn grantRole(
28254            &self,
28255            role: alloy::sol_types::private::FixedBytes<32>,
28256            account: alloy::sol_types::private::Address,
28257        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
28258            self.call_builder(&grantRoleCall { role, account })
28259        }
28260        ///Creates a new call builder for the [`hasRole`] function.
28261        pub fn hasRole(
28262            &self,
28263            role: alloy::sol_types::private::FixedBytes<32>,
28264            account: alloy::sol_types::private::Address,
28265        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
28266            self.call_builder(&hasRoleCall { role, account })
28267        }
28268        ///Creates a new call builder for the [`initialize`] function.
28269        pub fn initialize(
28270            &self,
28271            _tokenAddress: alloy::sol_types::private::Address,
28272            _lightClientAddress: alloy::sol_types::private::Address,
28273            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
28274            _timelock: alloy::sol_types::private::Address,
28275        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
28276            self.call_builder(
28277                &initializeCall {
28278                    _tokenAddress,
28279                    _lightClientAddress,
28280                    _exitEscrowPeriod,
28281                    _timelock,
28282                },
28283            )
28284        }
28285        ///Creates a new call builder for the [`initializeV2`] function.
28286        pub fn initializeV2(
28287            &self,
28288            pauser: alloy::sol_types::private::Address,
28289            admin: alloy::sol_types::private::Address,
28290            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
28291            initialCommissions: alloy::sol_types::private::Vec<
28292                <StakeTableV2::InitialCommission as alloy::sol_types::SolType>::RustType,
28293            >,
28294        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
28295            self.call_builder(
28296                &initializeV2Call {
28297                    pauser,
28298                    admin,
28299                    initialActiveStake,
28300                    initialCommissions,
28301                },
28302            )
28303        }
28304        ///Creates a new call builder for the [`initializeV3`] function.
28305        pub fn initializeV3(
28306            &self,
28307        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
28308            self.call_builder(&initializeV3Call)
28309        }
28310        ///Creates a new call builder for the [`initializedAtBlock`] function.
28311        pub fn initializedAtBlock(
28312            &self,
28313        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
28314            self.call_builder(&initializedAtBlockCall)
28315        }
28316        ///Creates a new call builder for the [`lightClient`] function.
28317        pub fn lightClient(
28318            &self,
28319        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
28320            self.call_builder(&lightClientCall)
28321        }
28322        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
28323        pub fn maxCommissionIncrease(
28324            &self,
28325        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
28326            self.call_builder(&maxCommissionIncreaseCall)
28327        }
28328        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
28329        pub fn minCommissionIncreaseInterval(
28330            &self,
28331        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
28332            self.call_builder(&minCommissionIncreaseIntervalCall)
28333        }
28334        ///Creates a new call builder for the [`minDelegateAmount`] function.
28335        pub fn minDelegateAmount(
28336            &self,
28337        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
28338            self.call_builder(&minDelegateAmountCall)
28339        }
28340        ///Creates a new call builder for the [`owner`] function.
28341        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
28342            self.call_builder(&ownerCall)
28343        }
28344        ///Creates a new call builder for the [`pause`] function.
28345        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
28346            self.call_builder(&pauseCall)
28347        }
28348        ///Creates a new call builder for the [`paused`] function.
28349        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
28350            self.call_builder(&pausedCall)
28351        }
28352        ///Creates a new call builder for the [`proxiableUUID`] function.
28353        pub fn proxiableUUID(
28354            &self,
28355        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
28356            self.call_builder(&proxiableUUIDCall)
28357        }
28358        ///Creates a new call builder for the [`registerValidator`] function.
28359        pub fn registerValidator(
28360            &self,
28361            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28362            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28363            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28364            _3: u16,
28365        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
28366            self.call_builder(
28367                &registerValidatorCall {
28368                    _0,
28369                    _1,
28370                    _2,
28371                    _3,
28372                },
28373            )
28374        }
28375        ///Creates a new call builder for the [`registerValidatorV2`] function.
28376        pub fn registerValidatorV2(
28377            &self,
28378            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28379            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28380            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28381            _3: alloy::sol_types::private::Bytes,
28382            _4: u16,
28383            _5: alloy::sol_types::private::String,
28384        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
28385            self.call_builder(
28386                &registerValidatorV2Call {
28387                    _0,
28388                    _1,
28389                    _2,
28390                    _3,
28391                    _4,
28392                    _5,
28393                },
28394            )
28395        }
28396        ///Creates a new call builder for the [`registerValidatorV3`] function.
28397        pub fn registerValidatorV3(
28398            &self,
28399            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28400            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28401            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28402            schnorrSig: alloy::sol_types::private::Bytes,
28403            commission: u16,
28404            metadataUri: alloy::sol_types::private::String,
28405            x25519Key: alloy::sol_types::private::FixedBytes<32>,
28406            p2pAddr: alloy::sol_types::private::String,
28407        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV3Call, N> {
28408            self.call_builder(
28409                &registerValidatorV3Call {
28410                    blsVK,
28411                    schnorrVK,
28412                    blsSig,
28413                    schnorrSig,
28414                    commission,
28415                    metadataUri,
28416                    x25519Key,
28417                    p2pAddr,
28418                },
28419            )
28420        }
28421        ///Creates a new call builder for the [`renounceOwnership`] function.
28422        pub fn renounceOwnership(
28423            &self,
28424        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
28425            self.call_builder(&renounceOwnershipCall)
28426        }
28427        ///Creates a new call builder for the [`renounceRole`] function.
28428        pub fn renounceRole(
28429            &self,
28430            role: alloy::sol_types::private::FixedBytes<32>,
28431            callerConfirmation: alloy::sol_types::private::Address,
28432        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
28433            self.call_builder(
28434                &renounceRoleCall {
28435                    role,
28436                    callerConfirmation,
28437                },
28438            )
28439        }
28440        ///Creates a new call builder for the [`revokeRole`] function.
28441        pub fn revokeRole(
28442            &self,
28443            role: alloy::sol_types::private::FixedBytes<32>,
28444            account: alloy::sol_types::private::Address,
28445        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
28446            self.call_builder(&revokeRoleCall { role, account })
28447        }
28448        ///Creates a new call builder for the [`schnorrKeys`] function.
28449        pub fn schnorrKeys(
28450            &self,
28451            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
28452        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
28453            self.call_builder(&schnorrKeysCall { schnorrKey })
28454        }
28455        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
28456        pub fn setMaxCommissionIncrease(
28457            &self,
28458            newMaxIncrease: u16,
28459        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
28460            self.call_builder(
28461                &setMaxCommissionIncreaseCall {
28462                    newMaxIncrease,
28463                },
28464            )
28465        }
28466        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
28467        pub fn setMinCommissionUpdateInterval(
28468            &self,
28469            newInterval: alloy::sol_types::private::primitives::aliases::U256,
28470        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
28471            self.call_builder(
28472                &setMinCommissionUpdateIntervalCall {
28473                    newInterval,
28474                },
28475            )
28476        }
28477        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
28478        pub fn setMinDelegateAmount(
28479            &self,
28480            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
28481        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
28482            self.call_builder(
28483                &setMinDelegateAmountCall {
28484                    newMinDelegateAmount,
28485                },
28486            )
28487        }
28488        ///Creates a new call builder for the [`supportsInterface`] function.
28489        pub fn supportsInterface(
28490            &self,
28491            interfaceId: alloy::sol_types::private::FixedBytes<4>,
28492        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
28493            self.call_builder(
28494                &supportsInterfaceCall {
28495                    interfaceId,
28496                },
28497            )
28498        }
28499        ///Creates a new call builder for the [`token`] function.
28500        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
28501            self.call_builder(&tokenCall)
28502        }
28503        ///Creates a new call builder for the [`transferOwnership`] function.
28504        pub fn transferOwnership(
28505            &self,
28506            newOwner: alloy::sol_types::private::Address,
28507        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
28508            self.call_builder(&transferOwnershipCall { newOwner })
28509        }
28510        ///Creates a new call builder for the [`undelegate`] function.
28511        pub fn undelegate(
28512            &self,
28513            validator: alloy::sol_types::private::Address,
28514            amount: alloy::sol_types::private::primitives::aliases::U256,
28515        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
28516            self.call_builder(
28517                &undelegateCall {
28518                    validator,
28519                    amount,
28520                },
28521            )
28522        }
28523        ///Creates a new call builder for the [`undelegations`] function.
28524        pub fn undelegations(
28525            &self,
28526            validator: alloy::sol_types::private::Address,
28527            delegator: alloy::sol_types::private::Address,
28528        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
28529            self.call_builder(
28530                &undelegationsCall {
28531                    validator,
28532                    delegator,
28533                },
28534            )
28535        }
28536        ///Creates a new call builder for the [`unpause`] function.
28537        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
28538            self.call_builder(&unpauseCall)
28539        }
28540        ///Creates a new call builder for the [`updateCommission`] function.
28541        pub fn updateCommission(
28542            &self,
28543            newCommission: u16,
28544        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
28545            self.call_builder(
28546                &updateCommissionCall {
28547                    newCommission,
28548                },
28549            )
28550        }
28551        ///Creates a new call builder for the [`updateConsensusKeys`] function.
28552        pub fn updateConsensusKeys(
28553            &self,
28554            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28555            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28556            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28557        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
28558            self.call_builder(
28559                &updateConsensusKeysCall {
28560                    _0,
28561                    _1,
28562                    _2,
28563                },
28564            )
28565        }
28566        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
28567        pub fn updateConsensusKeysV2(
28568            &self,
28569            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
28570            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
28571            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
28572            schnorrSig: alloy::sol_types::private::Bytes,
28573        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
28574            self.call_builder(
28575                &updateConsensusKeysV2Call {
28576                    blsVK,
28577                    schnorrVK,
28578                    blsSig,
28579                    schnorrSig,
28580                },
28581            )
28582        }
28583        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
28584        pub fn updateExitEscrowPeriod(
28585            &self,
28586            newExitEscrowPeriod: u64,
28587        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
28588            self.call_builder(
28589                &updateExitEscrowPeriodCall {
28590                    newExitEscrowPeriod,
28591                },
28592            )
28593        }
28594        ///Creates a new call builder for the [`updateMetadataUri`] function.
28595        pub fn updateMetadataUri(
28596            &self,
28597            metadataUri: alloy::sol_types::private::String,
28598        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
28599            self.call_builder(
28600                &updateMetadataUriCall {
28601                    metadataUri,
28602                },
28603            )
28604        }
28605        ///Creates a new call builder for the [`updateNetworkConfig`] function.
28606        pub fn updateNetworkConfig(
28607            &self,
28608            x25519Key: alloy::sol_types::private::FixedBytes<32>,
28609            p2pAddr: alloy::sol_types::private::String,
28610        ) -> alloy_contract::SolCallBuilder<&P, updateNetworkConfigCall, N> {
28611            self.call_builder(
28612                &updateNetworkConfigCall {
28613                    x25519Key,
28614                    p2pAddr,
28615                },
28616            )
28617        }
28618        ///Creates a new call builder for the [`updateP2pAddr`] function.
28619        pub fn updateP2pAddr(
28620            &self,
28621            p2pAddr: alloy::sol_types::private::String,
28622        ) -> alloy_contract::SolCallBuilder<&P, updateP2pAddrCall, N> {
28623            self.call_builder(&updateP2pAddrCall { p2pAddr })
28624        }
28625        ///Creates a new call builder for the [`updateX25519Key`] function.
28626        pub fn updateX25519Key(
28627            &self,
28628            x25519Key: alloy::sol_types::private::FixedBytes<32>,
28629        ) -> alloy_contract::SolCallBuilder<&P, updateX25519KeyCall, N> {
28630            self.call_builder(&updateX25519KeyCall { x25519Key })
28631        }
28632        ///Creates a new call builder for the [`upgradeToAndCall`] function.
28633        pub fn upgradeToAndCall(
28634            &self,
28635            newImplementation: alloy::sol_types::private::Address,
28636            data: alloy::sol_types::private::Bytes,
28637        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
28638            self.call_builder(
28639                &upgradeToAndCallCall {
28640                    newImplementation,
28641                    data,
28642                },
28643            )
28644        }
28645        ///Creates a new call builder for the [`validateMetadataUri`] function.
28646        pub fn validateMetadataUri(
28647            &self,
28648            metadataUri: alloy::sol_types::private::String,
28649        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
28650            self.call_builder(
28651                &validateMetadataUriCall {
28652                    metadataUri,
28653                },
28654            )
28655        }
28656        ///Creates a new call builder for the [`validateP2pAddr`] function.
28657        pub fn validateP2pAddr(
28658            &self,
28659            p2pAddr: alloy::sol_types::private::String,
28660        ) -> alloy_contract::SolCallBuilder<&P, validateP2pAddrCall, N> {
28661            self.call_builder(&validateP2pAddrCall { p2pAddr })
28662        }
28663        ///Creates a new call builder for the [`validatorExits`] function.
28664        pub fn validatorExits(
28665            &self,
28666            validator: alloy::sol_types::private::Address,
28667        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
28668            self.call_builder(&validatorExitsCall { validator })
28669        }
28670        ///Creates a new call builder for the [`validators`] function.
28671        pub fn validators(
28672            &self,
28673            account: alloy::sol_types::private::Address,
28674        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
28675            self.call_builder(&validatorsCall { account })
28676        }
28677        ///Creates a new call builder for the [`x25519Keys`] function.
28678        pub fn x25519Keys(
28679            &self,
28680            x25519Key: alloy::sol_types::private::FixedBytes<32>,
28681        ) -> alloy_contract::SolCallBuilder<&P, x25519KeysCall, N> {
28682            self.call_builder(&x25519KeysCall { x25519Key })
28683        }
28684    }
28685    /// Event filters.
28686    impl<
28687        P: alloy_contract::private::Provider<N>,
28688        N: alloy_contract::private::Network,
28689    > StakeTableV3Instance<P, N> {
28690        /// Creates a new event filter using this contract instance's provider and address.
28691        ///
28692        /// Note that the type can be any event, not just those defined in this contract.
28693        /// Prefer using the other methods for building type-safe event filters.
28694        pub fn event_filter<E: alloy_sol_types::SolEvent>(
28695            &self,
28696        ) -> alloy_contract::Event<&P, E, N> {
28697            alloy_contract::Event::new_sol(&self.provider, &self.address)
28698        }
28699        ///Creates a new event filter for the [`CommissionUpdated`] event.
28700        pub fn CommissionUpdated_filter(
28701            &self,
28702        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
28703            self.event_filter::<CommissionUpdated>()
28704        }
28705        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
28706        pub fn ConsensusKeysUpdated_filter(
28707            &self,
28708        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
28709            self.event_filter::<ConsensusKeysUpdated>()
28710        }
28711        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
28712        pub fn ConsensusKeysUpdatedV2_filter(
28713            &self,
28714        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
28715            self.event_filter::<ConsensusKeysUpdatedV2>()
28716        }
28717        ///Creates a new event filter for the [`Delegated`] event.
28718        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
28719            self.event_filter::<Delegated>()
28720        }
28721        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
28722        pub fn ExitEscrowPeriodUpdated_filter(
28723            &self,
28724        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
28725            self.event_filter::<ExitEscrowPeriodUpdated>()
28726        }
28727        ///Creates a new event filter for the [`Initialized`] event.
28728        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
28729            self.event_filter::<Initialized>()
28730        }
28731        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
28732        pub fn MaxCommissionIncreaseUpdated_filter(
28733            &self,
28734        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
28735            self.event_filter::<MaxCommissionIncreaseUpdated>()
28736        }
28737        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
28738        pub fn MetadataUriUpdated_filter(
28739            &self,
28740        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
28741            self.event_filter::<MetadataUriUpdated>()
28742        }
28743        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
28744        pub fn MinCommissionUpdateIntervalUpdated_filter(
28745            &self,
28746        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
28747            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
28748        }
28749        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
28750        pub fn MinDelegateAmountUpdated_filter(
28751            &self,
28752        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
28753            self.event_filter::<MinDelegateAmountUpdated>()
28754        }
28755        ///Creates a new event filter for the [`OwnershipTransferred`] event.
28756        pub fn OwnershipTransferred_filter(
28757            &self,
28758        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
28759            self.event_filter::<OwnershipTransferred>()
28760        }
28761        ///Creates a new event filter for the [`P2pAddrUpdated`] event.
28762        pub fn P2pAddrUpdated_filter(
28763            &self,
28764        ) -> alloy_contract::Event<&P, P2pAddrUpdated, N> {
28765            self.event_filter::<P2pAddrUpdated>()
28766        }
28767        ///Creates a new event filter for the [`Paused`] event.
28768        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
28769            self.event_filter::<Paused>()
28770        }
28771        ///Creates a new event filter for the [`RoleAdminChanged`] event.
28772        pub fn RoleAdminChanged_filter(
28773            &self,
28774        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
28775            self.event_filter::<RoleAdminChanged>()
28776        }
28777        ///Creates a new event filter for the [`RoleGranted`] event.
28778        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
28779            self.event_filter::<RoleGranted>()
28780        }
28781        ///Creates a new event filter for the [`RoleRevoked`] event.
28782        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
28783            self.event_filter::<RoleRevoked>()
28784        }
28785        ///Creates a new event filter for the [`Undelegated`] event.
28786        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
28787            self.event_filter::<Undelegated>()
28788        }
28789        ///Creates a new event filter for the [`UndelegatedV2`] event.
28790        pub fn UndelegatedV2_filter(
28791            &self,
28792        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
28793            self.event_filter::<UndelegatedV2>()
28794        }
28795        ///Creates a new event filter for the [`Unpaused`] event.
28796        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
28797            self.event_filter::<Unpaused>()
28798        }
28799        ///Creates a new event filter for the [`Upgraded`] event.
28800        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
28801            self.event_filter::<Upgraded>()
28802        }
28803        ///Creates a new event filter for the [`ValidatorExit`] event.
28804        pub fn ValidatorExit_filter(
28805            &self,
28806        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
28807            self.event_filter::<ValidatorExit>()
28808        }
28809        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
28810        pub fn ValidatorExitClaimed_filter(
28811            &self,
28812        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
28813            self.event_filter::<ValidatorExitClaimed>()
28814        }
28815        ///Creates a new event filter for the [`ValidatorExitV2`] event.
28816        pub fn ValidatorExitV2_filter(
28817            &self,
28818        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
28819            self.event_filter::<ValidatorExitV2>()
28820        }
28821        ///Creates a new event filter for the [`ValidatorRegistered`] event.
28822        pub fn ValidatorRegistered_filter(
28823            &self,
28824        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
28825            self.event_filter::<ValidatorRegistered>()
28826        }
28827        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
28828        pub fn ValidatorRegisteredV2_filter(
28829            &self,
28830        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
28831            self.event_filter::<ValidatorRegisteredV2>()
28832        }
28833        ///Creates a new event filter for the [`ValidatorRegisteredV3`] event.
28834        pub fn ValidatorRegisteredV3_filter(
28835            &self,
28836        ) -> alloy_contract::Event<&P, ValidatorRegisteredV3, N> {
28837            self.event_filter::<ValidatorRegisteredV3>()
28838        }
28839        ///Creates a new event filter for the [`Withdrawal`] event.
28840        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
28841            self.event_filter::<Withdrawal>()
28842        }
28843        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
28844        pub fn WithdrawalClaimed_filter(
28845            &self,
28846        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
28847            self.event_filter::<WithdrawalClaimed>()
28848        }
28849        ///Creates a new event filter for the [`X25519KeyUpdated`] event.
28850        pub fn X25519KeyUpdated_filter(
28851            &self,
28852        ) -> alloy_contract::Event<&P, X25519KeyUpdated, N> {
28853            self.event_filter::<X25519KeyUpdated>()
28854        }
28855    }
28856}