eigenlayer_contract_deployer/bindings/core/
eigenpod.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use EigenPod::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library BeaconChainProofs {
9    struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; }
10    struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; }
11    struct StateRootProof { bytes32 beaconStateRoot; bytes proof; }
12    struct ValidatorProof { bytes32[] validatorFields; bytes proof; }
13}
14```*/
15#[allow(
16    non_camel_case_types,
17    non_snake_case,
18    clippy::pub_underscore_fields,
19    clippy::style,
20    clippy::empty_structs_with_brackets
21)]
22pub mod BeaconChainProofs {
23    use super::*;
24    use alloy::sol_types as alloy_sol_types;
25    #[derive(Default, Debug, PartialEq, Eq, Hash)]
26    /**```solidity
27struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; }
28```*/
29    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
30    #[derive(Clone)]
31    pub struct BalanceContainerProof {
32        #[allow(missing_docs)]
33        pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>,
34        #[allow(missing_docs)]
35        pub proof: alloy::sol_types::private::Bytes,
36    }
37    #[allow(
38        non_camel_case_types,
39        non_snake_case,
40        clippy::pub_underscore_fields,
41        clippy::style
42    )]
43    const _: () = {
44        use alloy::sol_types as alloy_sol_types;
45        #[doc(hidden)]
46        type UnderlyingSolTuple<'a> = (
47            alloy::sol_types::sol_data::FixedBytes<32>,
48            alloy::sol_types::sol_data::Bytes,
49        );
50        #[doc(hidden)]
51        type UnderlyingRustTuple<'a> = (
52            alloy::sol_types::private::FixedBytes<32>,
53            alloy::sol_types::private::Bytes,
54        );
55        #[cfg(test)]
56        #[allow(dead_code, unreachable_patterns)]
57        fn _type_assertion(
58            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
59        ) {
60            match _t {
61                alloy_sol_types::private::AssertTypeEq::<
62                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
63                >(_) => {}
64            }
65        }
66        #[automatically_derived]
67        #[doc(hidden)]
68        impl ::core::convert::From<BalanceContainerProof> for UnderlyingRustTuple<'_> {
69            fn from(value: BalanceContainerProof) -> Self {
70                (value.balanceContainerRoot, value.proof)
71            }
72        }
73        #[automatically_derived]
74        #[doc(hidden)]
75        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BalanceContainerProof {
76            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
77                Self {
78                    balanceContainerRoot: tuple.0,
79                    proof: tuple.1,
80                }
81            }
82        }
83        #[automatically_derived]
84        impl alloy_sol_types::SolValue for BalanceContainerProof {
85            type SolType = Self;
86        }
87        #[automatically_derived]
88        impl alloy_sol_types::private::SolTypeValue<Self> for BalanceContainerProof {
89            #[inline]
90            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
91                (
92                    <alloy::sol_types::sol_data::FixedBytes<
93                        32,
94                    > as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot),
95                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
96                        &self.proof,
97                    ),
98                )
99            }
100            #[inline]
101            fn stv_abi_encoded_size(&self) -> usize {
102                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
103                    return size;
104                }
105                let tuple = <UnderlyingRustTuple<
106                    '_,
107                > as ::core::convert::From<Self>>::from(self.clone());
108                <UnderlyingSolTuple<
109                    '_,
110                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
111            }
112            #[inline]
113            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
114                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
115            }
116            #[inline]
117            fn stv_abi_encode_packed_to(
118                &self,
119                out: &mut alloy_sol_types::private::Vec<u8>,
120            ) {
121                let tuple = <UnderlyingRustTuple<
122                    '_,
123                > as ::core::convert::From<Self>>::from(self.clone());
124                <UnderlyingSolTuple<
125                    '_,
126                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
127            }
128            #[inline]
129            fn stv_abi_packed_encoded_size(&self) -> usize {
130                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
131                    return size;
132                }
133                let tuple = <UnderlyingRustTuple<
134                    '_,
135                > as ::core::convert::From<Self>>::from(self.clone());
136                <UnderlyingSolTuple<
137                    '_,
138                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
139            }
140        }
141        #[automatically_derived]
142        impl alloy_sol_types::SolType for BalanceContainerProof {
143            type RustType = Self;
144            type Token<'a> = <UnderlyingSolTuple<
145                'a,
146            > as alloy_sol_types::SolType>::Token<'a>;
147            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
148            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
149                '_,
150            > as alloy_sol_types::SolType>::ENCODED_SIZE;
151            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
152                '_,
153            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
154            #[inline]
155            fn valid_token(token: &Self::Token<'_>) -> bool {
156                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
157            }
158            #[inline]
159            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
160                let tuple = <UnderlyingSolTuple<
161                    '_,
162                > as alloy_sol_types::SolType>::detokenize(token);
163                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
164            }
165        }
166        #[automatically_derived]
167        impl alloy_sol_types::SolStruct for BalanceContainerProof {
168            const NAME: &'static str = "BalanceContainerProof";
169            #[inline]
170            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
171                alloy_sol_types::private::Cow::Borrowed(
172                    "BalanceContainerProof(bytes32 balanceContainerRoot,bytes proof)",
173                )
174            }
175            #[inline]
176            fn eip712_components() -> alloy_sol_types::private::Vec<
177                alloy_sol_types::private::Cow<'static, str>,
178            > {
179                alloy_sol_types::private::Vec::new()
180            }
181            #[inline]
182            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
183                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
184            }
185            #[inline]
186            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
187                [
188                    <alloy::sol_types::sol_data::FixedBytes<
189                        32,
190                    > as alloy_sol_types::SolType>::eip712_data_word(
191                            &self.balanceContainerRoot,
192                        )
193                        .0,
194                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
195                            &self.proof,
196                        )
197                        .0,
198                ]
199                    .concat()
200            }
201        }
202        #[automatically_derived]
203        impl alloy_sol_types::EventTopic for BalanceContainerProof {
204            #[inline]
205            fn topic_preimage_length(rust: &Self::RustType) -> usize {
206                0usize
207                    + <alloy::sol_types::sol_data::FixedBytes<
208                        32,
209                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
210                        &rust.balanceContainerRoot,
211                    )
212                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
213                        &rust.proof,
214                    )
215            }
216            #[inline]
217            fn encode_topic_preimage(
218                rust: &Self::RustType,
219                out: &mut alloy_sol_types::private::Vec<u8>,
220            ) {
221                out.reserve(
222                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
223                );
224                <alloy::sol_types::sol_data::FixedBytes<
225                    32,
226                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
227                    &rust.balanceContainerRoot,
228                    out,
229                );
230                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
231                    &rust.proof,
232                    out,
233                );
234            }
235            #[inline]
236            fn encode_topic(
237                rust: &Self::RustType,
238            ) -> alloy_sol_types::abi::token::WordToken {
239                let mut out = alloy_sol_types::private::Vec::new();
240                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
241                    rust,
242                    &mut out,
243                );
244                alloy_sol_types::abi::token::WordToken(
245                    alloy_sol_types::private::keccak256(out),
246                )
247            }
248        }
249    };
250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
251    /**```solidity
252struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; }
253```*/
254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
255    #[derive(Clone)]
256    pub struct BalanceProof {
257        #[allow(missing_docs)]
258        pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
259        #[allow(missing_docs)]
260        pub balanceRoot: alloy::sol_types::private::FixedBytes<32>,
261        #[allow(missing_docs)]
262        pub proof: alloy::sol_types::private::Bytes,
263    }
264    #[allow(
265        non_camel_case_types,
266        non_snake_case,
267        clippy::pub_underscore_fields,
268        clippy::style
269    )]
270    const _: () = {
271        use alloy::sol_types as alloy_sol_types;
272        #[doc(hidden)]
273        type UnderlyingSolTuple<'a> = (
274            alloy::sol_types::sol_data::FixedBytes<32>,
275            alloy::sol_types::sol_data::FixedBytes<32>,
276            alloy::sol_types::sol_data::Bytes,
277        );
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            alloy::sol_types::private::FixedBytes<32>,
281            alloy::sol_types::private::FixedBytes<32>,
282            alloy::sol_types::private::Bytes,
283        );
284        #[cfg(test)]
285        #[allow(dead_code, unreachable_patterns)]
286        fn _type_assertion(
287            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
288        ) {
289            match _t {
290                alloy_sol_types::private::AssertTypeEq::<
291                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
292                >(_) => {}
293            }
294        }
295        #[automatically_derived]
296        #[doc(hidden)]
297        impl ::core::convert::From<BalanceProof> for UnderlyingRustTuple<'_> {
298            fn from(value: BalanceProof) -> Self {
299                (value.pubkeyHash, value.balanceRoot, value.proof)
300            }
301        }
302        #[automatically_derived]
303        #[doc(hidden)]
304        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BalanceProof {
305            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
306                Self {
307                    pubkeyHash: tuple.0,
308                    balanceRoot: tuple.1,
309                    proof: tuple.2,
310                }
311            }
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::SolValue for BalanceProof {
315            type SolType = Self;
316        }
317        #[automatically_derived]
318        impl alloy_sol_types::private::SolTypeValue<Self> for BalanceProof {
319            #[inline]
320            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
321                (
322                    <alloy::sol_types::sol_data::FixedBytes<
323                        32,
324                    > as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
325                    <alloy::sol_types::sol_data::FixedBytes<
326                        32,
327                    > as alloy_sol_types::SolType>::tokenize(&self.balanceRoot),
328                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
329                        &self.proof,
330                    ),
331                )
332            }
333            #[inline]
334            fn stv_abi_encoded_size(&self) -> usize {
335                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
336                    return size;
337                }
338                let tuple = <UnderlyingRustTuple<
339                    '_,
340                > as ::core::convert::From<Self>>::from(self.clone());
341                <UnderlyingSolTuple<
342                    '_,
343                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
344            }
345            #[inline]
346            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
347                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
348            }
349            #[inline]
350            fn stv_abi_encode_packed_to(
351                &self,
352                out: &mut alloy_sol_types::private::Vec<u8>,
353            ) {
354                let tuple = <UnderlyingRustTuple<
355                    '_,
356                > as ::core::convert::From<Self>>::from(self.clone());
357                <UnderlyingSolTuple<
358                    '_,
359                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
360            }
361            #[inline]
362            fn stv_abi_packed_encoded_size(&self) -> usize {
363                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
364                    return size;
365                }
366                let tuple = <UnderlyingRustTuple<
367                    '_,
368                > as ::core::convert::From<Self>>::from(self.clone());
369                <UnderlyingSolTuple<
370                    '_,
371                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolType for BalanceProof {
376            type RustType = Self;
377            type Token<'a> = <UnderlyingSolTuple<
378                'a,
379            > as alloy_sol_types::SolType>::Token<'a>;
380            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
381            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
382                '_,
383            > as alloy_sol_types::SolType>::ENCODED_SIZE;
384            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
385                '_,
386            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
387            #[inline]
388            fn valid_token(token: &Self::Token<'_>) -> bool {
389                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
390            }
391            #[inline]
392            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
393                let tuple = <UnderlyingSolTuple<
394                    '_,
395                > as alloy_sol_types::SolType>::detokenize(token);
396                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
397            }
398        }
399        #[automatically_derived]
400        impl alloy_sol_types::SolStruct for BalanceProof {
401            const NAME: &'static str = "BalanceProof";
402            #[inline]
403            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
404                alloy_sol_types::private::Cow::Borrowed(
405                    "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,bytes proof)",
406                )
407            }
408            #[inline]
409            fn eip712_components() -> alloy_sol_types::private::Vec<
410                alloy_sol_types::private::Cow<'static, str>,
411            > {
412                alloy_sol_types::private::Vec::new()
413            }
414            #[inline]
415            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
416                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
417            }
418            #[inline]
419            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
420                [
421                    <alloy::sol_types::sol_data::FixedBytes<
422                        32,
423                    > as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyHash)
424                        .0,
425                    <alloy::sol_types::sol_data::FixedBytes<
426                        32,
427                    > as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot)
428                        .0,
429                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
430                            &self.proof,
431                        )
432                        .0,
433                ]
434                    .concat()
435            }
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::EventTopic for BalanceProof {
439            #[inline]
440            fn topic_preimage_length(rust: &Self::RustType) -> usize {
441                0usize
442                    + <alloy::sol_types::sol_data::FixedBytes<
443                        32,
444                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
445                        &rust.pubkeyHash,
446                    )
447                    + <alloy::sol_types::sol_data::FixedBytes<
448                        32,
449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
450                        &rust.balanceRoot,
451                    )
452                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
453                        &rust.proof,
454                    )
455            }
456            #[inline]
457            fn encode_topic_preimage(
458                rust: &Self::RustType,
459                out: &mut alloy_sol_types::private::Vec<u8>,
460            ) {
461                out.reserve(
462                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
463                );
464                <alloy::sol_types::sol_data::FixedBytes<
465                    32,
466                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
467                    &rust.pubkeyHash,
468                    out,
469                );
470                <alloy::sol_types::sol_data::FixedBytes<
471                    32,
472                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    &rust.balanceRoot,
474                    out,
475                );
476                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
477                    &rust.proof,
478                    out,
479                );
480            }
481            #[inline]
482            fn encode_topic(
483                rust: &Self::RustType,
484            ) -> alloy_sol_types::abi::token::WordToken {
485                let mut out = alloy_sol_types::private::Vec::new();
486                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
487                    rust,
488                    &mut out,
489                );
490                alloy_sol_types::abi::token::WordToken(
491                    alloy_sol_types::private::keccak256(out),
492                )
493            }
494        }
495    };
496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
497    /**```solidity
498struct StateRootProof { bytes32 beaconStateRoot; bytes proof; }
499```*/
500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
501    #[derive(Clone)]
502    pub struct StateRootProof {
503        #[allow(missing_docs)]
504        pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>,
505        #[allow(missing_docs)]
506        pub proof: alloy::sol_types::private::Bytes,
507    }
508    #[allow(
509        non_camel_case_types,
510        non_snake_case,
511        clippy::pub_underscore_fields,
512        clippy::style
513    )]
514    const _: () = {
515        use alloy::sol_types as alloy_sol_types;
516        #[doc(hidden)]
517        type UnderlyingSolTuple<'a> = (
518            alloy::sol_types::sol_data::FixedBytes<32>,
519            alloy::sol_types::sol_data::Bytes,
520        );
521        #[doc(hidden)]
522        type UnderlyingRustTuple<'a> = (
523            alloy::sol_types::private::FixedBytes<32>,
524            alloy::sol_types::private::Bytes,
525        );
526        #[cfg(test)]
527        #[allow(dead_code, unreachable_patterns)]
528        fn _type_assertion(
529            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
530        ) {
531            match _t {
532                alloy_sol_types::private::AssertTypeEq::<
533                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
534                >(_) => {}
535            }
536        }
537        #[automatically_derived]
538        #[doc(hidden)]
539        impl ::core::convert::From<StateRootProof> for UnderlyingRustTuple<'_> {
540            fn from(value: StateRootProof) -> Self {
541                (value.beaconStateRoot, value.proof)
542            }
543        }
544        #[automatically_derived]
545        #[doc(hidden)]
546        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateRootProof {
547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
548                Self {
549                    beaconStateRoot: tuple.0,
550                    proof: tuple.1,
551                }
552            }
553        }
554        #[automatically_derived]
555        impl alloy_sol_types::SolValue for StateRootProof {
556            type SolType = Self;
557        }
558        #[automatically_derived]
559        impl alloy_sol_types::private::SolTypeValue<Self> for StateRootProof {
560            #[inline]
561            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
562                (
563                    <alloy::sol_types::sol_data::FixedBytes<
564                        32,
565                    > as alloy_sol_types::SolType>::tokenize(&self.beaconStateRoot),
566                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
567                        &self.proof,
568                    ),
569                )
570            }
571            #[inline]
572            fn stv_abi_encoded_size(&self) -> usize {
573                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
574                    return size;
575                }
576                let tuple = <UnderlyingRustTuple<
577                    '_,
578                > as ::core::convert::From<Self>>::from(self.clone());
579                <UnderlyingSolTuple<
580                    '_,
581                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
582            }
583            #[inline]
584            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
585                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
586            }
587            #[inline]
588            fn stv_abi_encode_packed_to(
589                &self,
590                out: &mut alloy_sol_types::private::Vec<u8>,
591            ) {
592                let tuple = <UnderlyingRustTuple<
593                    '_,
594                > as ::core::convert::From<Self>>::from(self.clone());
595                <UnderlyingSolTuple<
596                    '_,
597                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
598            }
599            #[inline]
600            fn stv_abi_packed_encoded_size(&self) -> usize {
601                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
602                    return size;
603                }
604                let tuple = <UnderlyingRustTuple<
605                    '_,
606                > as ::core::convert::From<Self>>::from(self.clone());
607                <UnderlyingSolTuple<
608                    '_,
609                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
610            }
611        }
612        #[automatically_derived]
613        impl alloy_sol_types::SolType for StateRootProof {
614            type RustType = Self;
615            type Token<'a> = <UnderlyingSolTuple<
616                'a,
617            > as alloy_sol_types::SolType>::Token<'a>;
618            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
619            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
620                '_,
621            > as alloy_sol_types::SolType>::ENCODED_SIZE;
622            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
623                '_,
624            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
625            #[inline]
626            fn valid_token(token: &Self::Token<'_>) -> bool {
627                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
628            }
629            #[inline]
630            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
631                let tuple = <UnderlyingSolTuple<
632                    '_,
633                > as alloy_sol_types::SolType>::detokenize(token);
634                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
635            }
636        }
637        #[automatically_derived]
638        impl alloy_sol_types::SolStruct for StateRootProof {
639            const NAME: &'static str = "StateRootProof";
640            #[inline]
641            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
642                alloy_sol_types::private::Cow::Borrowed(
643                    "StateRootProof(bytes32 beaconStateRoot,bytes proof)",
644                )
645            }
646            #[inline]
647            fn eip712_components() -> alloy_sol_types::private::Vec<
648                alloy_sol_types::private::Cow<'static, str>,
649            > {
650                alloy_sol_types::private::Vec::new()
651            }
652            #[inline]
653            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
654                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
655            }
656            #[inline]
657            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
658                [
659                    <alloy::sol_types::sol_data::FixedBytes<
660                        32,
661                    > as alloy_sol_types::SolType>::eip712_data_word(
662                            &self.beaconStateRoot,
663                        )
664                        .0,
665                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
666                            &self.proof,
667                        )
668                        .0,
669                ]
670                    .concat()
671            }
672        }
673        #[automatically_derived]
674        impl alloy_sol_types::EventTopic for StateRootProof {
675            #[inline]
676            fn topic_preimage_length(rust: &Self::RustType) -> usize {
677                0usize
678                    + <alloy::sol_types::sol_data::FixedBytes<
679                        32,
680                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
681                        &rust.beaconStateRoot,
682                    )
683                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
684                        &rust.proof,
685                    )
686            }
687            #[inline]
688            fn encode_topic_preimage(
689                rust: &Self::RustType,
690                out: &mut alloy_sol_types::private::Vec<u8>,
691            ) {
692                out.reserve(
693                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
694                );
695                <alloy::sol_types::sol_data::FixedBytes<
696                    32,
697                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
698                    &rust.beaconStateRoot,
699                    out,
700                );
701                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
702                    &rust.proof,
703                    out,
704                );
705            }
706            #[inline]
707            fn encode_topic(
708                rust: &Self::RustType,
709            ) -> alloy_sol_types::abi::token::WordToken {
710                let mut out = alloy_sol_types::private::Vec::new();
711                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
712                    rust,
713                    &mut out,
714                );
715                alloy_sol_types::abi::token::WordToken(
716                    alloy_sol_types::private::keccak256(out),
717                )
718            }
719        }
720    };
721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
722    /**```solidity
723struct ValidatorProof { bytes32[] validatorFields; bytes proof; }
724```*/
725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
726    #[derive(Clone)]
727    pub struct ValidatorProof {
728        #[allow(missing_docs)]
729        pub validatorFields: alloy::sol_types::private::Vec<
730            alloy::sol_types::private::FixedBytes<32>,
731        >,
732        #[allow(missing_docs)]
733        pub proof: alloy::sol_types::private::Bytes,
734    }
735    #[allow(
736        non_camel_case_types,
737        non_snake_case,
738        clippy::pub_underscore_fields,
739        clippy::style
740    )]
741    const _: () = {
742        use alloy::sol_types as alloy_sol_types;
743        #[doc(hidden)]
744        type UnderlyingSolTuple<'a> = (
745            alloy::sol_types::sol_data::Array<
746                alloy::sol_types::sol_data::FixedBytes<32>,
747            >,
748            alloy::sol_types::sol_data::Bytes,
749        );
750        #[doc(hidden)]
751        type UnderlyingRustTuple<'a> = (
752            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
753            alloy::sol_types::private::Bytes,
754        );
755        #[cfg(test)]
756        #[allow(dead_code, unreachable_patterns)]
757        fn _type_assertion(
758            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
759        ) {
760            match _t {
761                alloy_sol_types::private::AssertTypeEq::<
762                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
763                >(_) => {}
764            }
765        }
766        #[automatically_derived]
767        #[doc(hidden)]
768        impl ::core::convert::From<ValidatorProof> for UnderlyingRustTuple<'_> {
769            fn from(value: ValidatorProof) -> Self {
770                (value.validatorFields, value.proof)
771            }
772        }
773        #[automatically_derived]
774        #[doc(hidden)]
775        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorProof {
776            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
777                Self {
778                    validatorFields: tuple.0,
779                    proof: tuple.1,
780                }
781            }
782        }
783        #[automatically_derived]
784        impl alloy_sol_types::SolValue for ValidatorProof {
785            type SolType = Self;
786        }
787        #[automatically_derived]
788        impl alloy_sol_types::private::SolTypeValue<Self> for ValidatorProof {
789            #[inline]
790            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
791                (
792                    <alloy::sol_types::sol_data::Array<
793                        alloy::sol_types::sol_data::FixedBytes<32>,
794                    > as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
795                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
796                        &self.proof,
797                    ),
798                )
799            }
800            #[inline]
801            fn stv_abi_encoded_size(&self) -> usize {
802                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
803                    return size;
804                }
805                let tuple = <UnderlyingRustTuple<
806                    '_,
807                > as ::core::convert::From<Self>>::from(self.clone());
808                <UnderlyingSolTuple<
809                    '_,
810                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
811            }
812            #[inline]
813            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
814                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
815            }
816            #[inline]
817            fn stv_abi_encode_packed_to(
818                &self,
819                out: &mut alloy_sol_types::private::Vec<u8>,
820            ) {
821                let tuple = <UnderlyingRustTuple<
822                    '_,
823                > as ::core::convert::From<Self>>::from(self.clone());
824                <UnderlyingSolTuple<
825                    '_,
826                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
827            }
828            #[inline]
829            fn stv_abi_packed_encoded_size(&self) -> usize {
830                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
831                    return size;
832                }
833                let tuple = <UnderlyingRustTuple<
834                    '_,
835                > as ::core::convert::From<Self>>::from(self.clone());
836                <UnderlyingSolTuple<
837                    '_,
838                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolType for ValidatorProof {
843            type RustType = Self;
844            type Token<'a> = <UnderlyingSolTuple<
845                'a,
846            > as alloy_sol_types::SolType>::Token<'a>;
847            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
848            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
849                '_,
850            > as alloy_sol_types::SolType>::ENCODED_SIZE;
851            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
852                '_,
853            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
854            #[inline]
855            fn valid_token(token: &Self::Token<'_>) -> bool {
856                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
857            }
858            #[inline]
859            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
860                let tuple = <UnderlyingSolTuple<
861                    '_,
862                > as alloy_sol_types::SolType>::detokenize(token);
863                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
864            }
865        }
866        #[automatically_derived]
867        impl alloy_sol_types::SolStruct for ValidatorProof {
868            const NAME: &'static str = "ValidatorProof";
869            #[inline]
870            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
871                alloy_sol_types::private::Cow::Borrowed(
872                    "ValidatorProof(bytes32[] validatorFields,bytes proof)",
873                )
874            }
875            #[inline]
876            fn eip712_components() -> alloy_sol_types::private::Vec<
877                alloy_sol_types::private::Cow<'static, str>,
878            > {
879                alloy_sol_types::private::Vec::new()
880            }
881            #[inline]
882            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
883                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
884            }
885            #[inline]
886            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
887                [
888                    <alloy::sol_types::sol_data::Array<
889                        alloy::sol_types::sol_data::FixedBytes<32>,
890                    > as alloy_sol_types::SolType>::eip712_data_word(
891                            &self.validatorFields,
892                        )
893                        .0,
894                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
895                            &self.proof,
896                        )
897                        .0,
898                ]
899                    .concat()
900            }
901        }
902        #[automatically_derived]
903        impl alloy_sol_types::EventTopic for ValidatorProof {
904            #[inline]
905            fn topic_preimage_length(rust: &Self::RustType) -> usize {
906                0usize
907                    + <alloy::sol_types::sol_data::Array<
908                        alloy::sol_types::sol_data::FixedBytes<32>,
909                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
910                        &rust.validatorFields,
911                    )
912                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
913                        &rust.proof,
914                    )
915            }
916            #[inline]
917            fn encode_topic_preimage(
918                rust: &Self::RustType,
919                out: &mut alloy_sol_types::private::Vec<u8>,
920            ) {
921                out.reserve(
922                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
923                );
924                <alloy::sol_types::sol_data::Array<
925                    alloy::sol_types::sol_data::FixedBytes<32>,
926                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
927                    &rust.validatorFields,
928                    out,
929                );
930                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
931                    &rust.proof,
932                    out,
933                );
934            }
935            #[inline]
936            fn encode_topic(
937                rust: &Self::RustType,
938            ) -> alloy_sol_types::abi::token::WordToken {
939                let mut out = alloy_sol_types::private::Vec::new();
940                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
941                    rust,
942                    &mut out,
943                );
944                alloy_sol_types::abi::token::WordToken(
945                    alloy_sol_types::private::keccak256(out),
946                )
947            }
948        }
949    };
950    use alloy::contract as alloy_contract;
951    /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance.
952
953See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/
954    #[inline]
955    pub const fn new<
956        T: alloy_contract::private::Transport + ::core::clone::Clone,
957        P: alloy_contract::private::Provider<T, N>,
958        N: alloy_contract::private::Network,
959    >(
960        address: alloy_sol_types::private::Address,
961        provider: P,
962    ) -> BeaconChainProofsInstance<T, P, N> {
963        BeaconChainProofsInstance::<T, P, N>::new(address, provider)
964    }
965    /**A [`BeaconChainProofs`](self) instance.
966
967Contains type-safe methods for interacting with an on-chain instance of the
968[`BeaconChainProofs`](self) contract located at a given `address`, using a given
969provider `P`.
970
971If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
972documentation on how to provide it), the `deploy` and `deploy_builder` methods can
973be used to deploy a new instance of the contract.
974
975See the [module-level documentation](self) for all the available methods.*/
976    #[derive(Clone)]
977    pub struct BeaconChainProofsInstance<T, P, N = alloy_contract::private::Ethereum> {
978        address: alloy_sol_types::private::Address,
979        provider: P,
980        _network_transport: ::core::marker::PhantomData<(N, T)>,
981    }
982    #[automatically_derived]
983    impl<T, P, N> ::core::fmt::Debug for BeaconChainProofsInstance<T, P, N> {
984        #[inline]
985        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
986            f.debug_tuple("BeaconChainProofsInstance").field(&self.address).finish()
987        }
988    }
989    /// Instantiation and getters/setters.
990    #[automatically_derived]
991    impl<
992        T: alloy_contract::private::Transport + ::core::clone::Clone,
993        P: alloy_contract::private::Provider<T, N>,
994        N: alloy_contract::private::Network,
995    > BeaconChainProofsInstance<T, P, N> {
996        /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance.
997
998See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/
999        #[inline]
1000        pub const fn new(
1001            address: alloy_sol_types::private::Address,
1002            provider: P,
1003        ) -> Self {
1004            Self {
1005                address,
1006                provider,
1007                _network_transport: ::core::marker::PhantomData,
1008            }
1009        }
1010        /// Returns a reference to the address.
1011        #[inline]
1012        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1013            &self.address
1014        }
1015        /// Sets the address.
1016        #[inline]
1017        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1018            self.address = address;
1019        }
1020        /// Sets the address and returns `self`.
1021        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1022            self.set_address(address);
1023            self
1024        }
1025        /// Returns a reference to the provider.
1026        #[inline]
1027        pub const fn provider(&self) -> &P {
1028            &self.provider
1029        }
1030    }
1031    impl<T, P: ::core::clone::Clone, N> BeaconChainProofsInstance<T, &P, N> {
1032        /// Clones the provider and returns a new instance with the cloned provider.
1033        #[inline]
1034        pub fn with_cloned_provider(self) -> BeaconChainProofsInstance<T, P, N> {
1035            BeaconChainProofsInstance {
1036                address: self.address,
1037                provider: ::core::clone::Clone::clone(&self.provider),
1038                _network_transport: ::core::marker::PhantomData,
1039            }
1040        }
1041    }
1042    /// Function calls.
1043    #[automatically_derived]
1044    impl<
1045        T: alloy_contract::private::Transport + ::core::clone::Clone,
1046        P: alloy_contract::private::Provider<T, N>,
1047        N: alloy_contract::private::Network,
1048    > BeaconChainProofsInstance<T, P, N> {
1049        /// Creates a new call builder using this contract instance's provider and address.
1050        ///
1051        /// Note that the call can be any function call, not just those defined in this
1052        /// contract. Prefer using the other methods for building type-safe contract calls.
1053        pub fn call_builder<C: alloy_sol_types::SolCall>(
1054            &self,
1055            call: &C,
1056        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1057            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1058        }
1059    }
1060    /// Event filters.
1061    #[automatically_derived]
1062    impl<
1063        T: alloy_contract::private::Transport + ::core::clone::Clone,
1064        P: alloy_contract::private::Provider<T, N>,
1065        N: alloy_contract::private::Network,
1066    > BeaconChainProofsInstance<T, 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<T, &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 IEigenPodTypes {
1083    type VALIDATOR_STATUS is uint8;
1084    struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
1085    struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; }
1086}
1087```*/
1088#[allow(
1089    non_camel_case_types,
1090    non_snake_case,
1091    clippy::pub_underscore_fields,
1092    clippy::style,
1093    clippy::empty_structs_with_brackets
1094)]
1095pub mod IEigenPodTypes {
1096    use super::*;
1097    use alloy::sol_types as alloy_sol_types;
1098    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1100    #[derive(Clone)]
1101    pub struct VALIDATOR_STATUS(u8);
1102    const _: () = {
1103        use alloy::sol_types as alloy_sol_types;
1104        #[automatically_derived]
1105        impl alloy_sol_types::private::SolTypeValue<VALIDATOR_STATUS> for u8 {
1106            #[inline]
1107            fn stv_to_tokens(
1108                &self,
1109            ) -> <alloy::sol_types::sol_data::Uint<
1110                8,
1111            > as alloy_sol_types::SolType>::Token<'_> {
1112                alloy_sol_types::private::SolTypeValue::<
1113                    alloy::sol_types::sol_data::Uint<8>,
1114                >::stv_to_tokens(self)
1115            }
1116            #[inline]
1117            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1118                <alloy::sol_types::sol_data::Uint<
1119                    8,
1120                > as alloy_sol_types::SolType>::tokenize(self)
1121                    .0
1122            }
1123            #[inline]
1124            fn stv_abi_encode_packed_to(
1125                &self,
1126                out: &mut alloy_sol_types::private::Vec<u8>,
1127            ) {
1128                <alloy::sol_types::sol_data::Uint<
1129                    8,
1130                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1131            }
1132            #[inline]
1133            fn stv_abi_packed_encoded_size(&self) -> usize {
1134                <alloy::sol_types::sol_data::Uint<
1135                    8,
1136                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1137            }
1138        }
1139        #[automatically_derived]
1140        impl VALIDATOR_STATUS {
1141            /// The Solidity type name.
1142            pub const NAME: &'static str = stringify!(@ name);
1143            /// Convert from the underlying value type.
1144            #[inline]
1145            pub const fn from(value: u8) -> Self {
1146                Self(value)
1147            }
1148            /// Return the underlying value.
1149            #[inline]
1150            pub const fn into(self) -> u8 {
1151                self.0
1152            }
1153            /// Return the single encoding of this value, delegating to the
1154            /// underlying type.
1155            #[inline]
1156            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1157                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1158            }
1159            /// Return the packed encoding of this value, delegating to the
1160            /// underlying type.
1161            #[inline]
1162            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1163                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1164            }
1165        }
1166        #[automatically_derived]
1167        impl alloy_sol_types::SolType for VALIDATOR_STATUS {
1168            type RustType = u8;
1169            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1170                8,
1171            > as alloy_sol_types::SolType>::Token<'a>;
1172            const SOL_NAME: &'static str = Self::NAME;
1173            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1174                8,
1175            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1176            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1177                8,
1178            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1179            #[inline]
1180            fn valid_token(token: &Self::Token<'_>) -> bool {
1181                Self::type_check(token).is_ok()
1182            }
1183            #[inline]
1184            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1185                <alloy::sol_types::sol_data::Uint<
1186                    8,
1187                > as alloy_sol_types::SolType>::type_check(token)
1188            }
1189            #[inline]
1190            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1191                <alloy::sol_types::sol_data::Uint<
1192                    8,
1193                > as alloy_sol_types::SolType>::detokenize(token)
1194            }
1195        }
1196        #[automatically_derived]
1197        impl alloy_sol_types::EventTopic for VALIDATOR_STATUS {
1198            #[inline]
1199            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1200                <alloy::sol_types::sol_data::Uint<
1201                    8,
1202                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1203            }
1204            #[inline]
1205            fn encode_topic_preimage(
1206                rust: &Self::RustType,
1207                out: &mut alloy_sol_types::private::Vec<u8>,
1208            ) {
1209                <alloy::sol_types::sol_data::Uint<
1210                    8,
1211                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1212            }
1213            #[inline]
1214            fn encode_topic(
1215                rust: &Self::RustType,
1216            ) -> alloy_sol_types::abi::token::WordToken {
1217                <alloy::sol_types::sol_data::Uint<
1218                    8,
1219                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1220            }
1221        }
1222    };
1223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1224    /**```solidity
1225struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
1226```*/
1227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1228    #[derive(Clone)]
1229    pub struct Checkpoint {
1230        #[allow(missing_docs)]
1231        pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>,
1232        #[allow(missing_docs)]
1233        pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24,
1234        #[allow(missing_docs)]
1235        pub podBalanceGwei: u64,
1236        #[allow(missing_docs)]
1237        pub balanceDeltasGwei: i64,
1238        #[allow(missing_docs)]
1239        pub prevBeaconBalanceGwei: u64,
1240    }
1241    #[allow(
1242        non_camel_case_types,
1243        non_snake_case,
1244        clippy::pub_underscore_fields,
1245        clippy::style
1246    )]
1247    const _: () = {
1248        use alloy::sol_types as alloy_sol_types;
1249        #[doc(hidden)]
1250        type UnderlyingSolTuple<'a> = (
1251            alloy::sol_types::sol_data::FixedBytes<32>,
1252            alloy::sol_types::sol_data::Uint<24>,
1253            alloy::sol_types::sol_data::Uint<64>,
1254            alloy::sol_types::sol_data::Int<64>,
1255            alloy::sol_types::sol_data::Uint<64>,
1256        );
1257        #[doc(hidden)]
1258        type UnderlyingRustTuple<'a> = (
1259            alloy::sol_types::private::FixedBytes<32>,
1260            alloy::sol_types::private::primitives::aliases::U24,
1261            u64,
1262            i64,
1263            u64,
1264        );
1265        #[cfg(test)]
1266        #[allow(dead_code, unreachable_patterns)]
1267        fn _type_assertion(
1268            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1269        ) {
1270            match _t {
1271                alloy_sol_types::private::AssertTypeEq::<
1272                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1273                >(_) => {}
1274            }
1275        }
1276        #[automatically_derived]
1277        #[doc(hidden)]
1278        impl ::core::convert::From<Checkpoint> for UnderlyingRustTuple<'_> {
1279            fn from(value: Checkpoint) -> Self {
1280                (
1281                    value.beaconBlockRoot,
1282                    value.proofsRemaining,
1283                    value.podBalanceGwei,
1284                    value.balanceDeltasGwei,
1285                    value.prevBeaconBalanceGwei,
1286                )
1287            }
1288        }
1289        #[automatically_derived]
1290        #[doc(hidden)]
1291        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Checkpoint {
1292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1293                Self {
1294                    beaconBlockRoot: tuple.0,
1295                    proofsRemaining: tuple.1,
1296                    podBalanceGwei: tuple.2,
1297                    balanceDeltasGwei: tuple.3,
1298                    prevBeaconBalanceGwei: tuple.4,
1299                }
1300            }
1301        }
1302        #[automatically_derived]
1303        impl alloy_sol_types::SolValue for Checkpoint {
1304            type SolType = Self;
1305        }
1306        #[automatically_derived]
1307        impl alloy_sol_types::private::SolTypeValue<Self> for Checkpoint {
1308            #[inline]
1309            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1310                (
1311                    <alloy::sol_types::sol_data::FixedBytes<
1312                        32,
1313                    > as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot),
1314                    <alloy::sol_types::sol_data::Uint<
1315                        24,
1316                    > as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining),
1317                    <alloy::sol_types::sol_data::Uint<
1318                        64,
1319                    > as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei),
1320                    <alloy::sol_types::sol_data::Int<
1321                        64,
1322                    > as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei),
1323                    <alloy::sol_types::sol_data::Uint<
1324                        64,
1325                    > as alloy_sol_types::SolType>::tokenize(&self.prevBeaconBalanceGwei),
1326                )
1327            }
1328            #[inline]
1329            fn stv_abi_encoded_size(&self) -> usize {
1330                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1331                    return size;
1332                }
1333                let tuple = <UnderlyingRustTuple<
1334                    '_,
1335                > as ::core::convert::From<Self>>::from(self.clone());
1336                <UnderlyingSolTuple<
1337                    '_,
1338                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1339            }
1340            #[inline]
1341            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1342                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1343            }
1344            #[inline]
1345            fn stv_abi_encode_packed_to(
1346                &self,
1347                out: &mut alloy_sol_types::private::Vec<u8>,
1348            ) {
1349                let tuple = <UnderlyingRustTuple<
1350                    '_,
1351                > as ::core::convert::From<Self>>::from(self.clone());
1352                <UnderlyingSolTuple<
1353                    '_,
1354                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1355            }
1356            #[inline]
1357            fn stv_abi_packed_encoded_size(&self) -> usize {
1358                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1359                    return size;
1360                }
1361                let tuple = <UnderlyingRustTuple<
1362                    '_,
1363                > as ::core::convert::From<Self>>::from(self.clone());
1364                <UnderlyingSolTuple<
1365                    '_,
1366                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1367            }
1368        }
1369        #[automatically_derived]
1370        impl alloy_sol_types::SolType for Checkpoint {
1371            type RustType = Self;
1372            type Token<'a> = <UnderlyingSolTuple<
1373                'a,
1374            > as alloy_sol_types::SolType>::Token<'a>;
1375            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1376            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1377                '_,
1378            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1379            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1380                '_,
1381            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1382            #[inline]
1383            fn valid_token(token: &Self::Token<'_>) -> bool {
1384                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1385            }
1386            #[inline]
1387            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1388                let tuple = <UnderlyingSolTuple<
1389                    '_,
1390                > as alloy_sol_types::SolType>::detokenize(token);
1391                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1392            }
1393        }
1394        #[automatically_derived]
1395        impl alloy_sol_types::SolStruct for Checkpoint {
1396            const NAME: &'static str = "Checkpoint";
1397            #[inline]
1398            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1399                alloy_sol_types::private::Cow::Borrowed(
1400                    "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int64 balanceDeltasGwei,uint64 prevBeaconBalanceGwei)",
1401                )
1402            }
1403            #[inline]
1404            fn eip712_components() -> alloy_sol_types::private::Vec<
1405                alloy_sol_types::private::Cow<'static, str>,
1406            > {
1407                alloy_sol_types::private::Vec::new()
1408            }
1409            #[inline]
1410            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1411                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1412            }
1413            #[inline]
1414            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1415                [
1416                    <alloy::sol_types::sol_data::FixedBytes<
1417                        32,
1418                    > as alloy_sol_types::SolType>::eip712_data_word(
1419                            &self.beaconBlockRoot,
1420                        )
1421                        .0,
1422                    <alloy::sol_types::sol_data::Uint<
1423                        24,
1424                    > as alloy_sol_types::SolType>::eip712_data_word(
1425                            &self.proofsRemaining,
1426                        )
1427                        .0,
1428                    <alloy::sol_types::sol_data::Uint<
1429                        64,
1430                    > as alloy_sol_types::SolType>::eip712_data_word(
1431                            &self.podBalanceGwei,
1432                        )
1433                        .0,
1434                    <alloy::sol_types::sol_data::Int<
1435                        64,
1436                    > as alloy_sol_types::SolType>::eip712_data_word(
1437                            &self.balanceDeltasGwei,
1438                        )
1439                        .0,
1440                    <alloy::sol_types::sol_data::Uint<
1441                        64,
1442                    > as alloy_sol_types::SolType>::eip712_data_word(
1443                            &self.prevBeaconBalanceGwei,
1444                        )
1445                        .0,
1446                ]
1447                    .concat()
1448            }
1449        }
1450        #[automatically_derived]
1451        impl alloy_sol_types::EventTopic for Checkpoint {
1452            #[inline]
1453            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1454                0usize
1455                    + <alloy::sol_types::sol_data::FixedBytes<
1456                        32,
1457                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1458                        &rust.beaconBlockRoot,
1459                    )
1460                    + <alloy::sol_types::sol_data::Uint<
1461                        24,
1462                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1463                        &rust.proofsRemaining,
1464                    )
1465                    + <alloy::sol_types::sol_data::Uint<
1466                        64,
1467                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1468                        &rust.podBalanceGwei,
1469                    )
1470                    + <alloy::sol_types::sol_data::Int<
1471                        64,
1472                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1473                        &rust.balanceDeltasGwei,
1474                    )
1475                    + <alloy::sol_types::sol_data::Uint<
1476                        64,
1477                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1478                        &rust.prevBeaconBalanceGwei,
1479                    )
1480            }
1481            #[inline]
1482            fn encode_topic_preimage(
1483                rust: &Self::RustType,
1484                out: &mut alloy_sol_types::private::Vec<u8>,
1485            ) {
1486                out.reserve(
1487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1488                );
1489                <alloy::sol_types::sol_data::FixedBytes<
1490                    32,
1491                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1492                    &rust.beaconBlockRoot,
1493                    out,
1494                );
1495                <alloy::sol_types::sol_data::Uint<
1496                    24,
1497                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1498                    &rust.proofsRemaining,
1499                    out,
1500                );
1501                <alloy::sol_types::sol_data::Uint<
1502                    64,
1503                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1504                    &rust.podBalanceGwei,
1505                    out,
1506                );
1507                <alloy::sol_types::sol_data::Int<
1508                    64,
1509                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1510                    &rust.balanceDeltasGwei,
1511                    out,
1512                );
1513                <alloy::sol_types::sol_data::Uint<
1514                    64,
1515                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1516                    &rust.prevBeaconBalanceGwei,
1517                    out,
1518                );
1519            }
1520            #[inline]
1521            fn encode_topic(
1522                rust: &Self::RustType,
1523            ) -> alloy_sol_types::abi::token::WordToken {
1524                let mut out = alloy_sol_types::private::Vec::new();
1525                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1526                    rust,
1527                    &mut out,
1528                );
1529                alloy_sol_types::abi::token::WordToken(
1530                    alloy_sol_types::private::keccak256(out),
1531                )
1532            }
1533        }
1534    };
1535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1536    /**```solidity
1537struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; }
1538```*/
1539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1540    #[derive(Clone)]
1541    pub struct ValidatorInfo {
1542        #[allow(missing_docs)]
1543        pub validatorIndex: u64,
1544        #[allow(missing_docs)]
1545        pub restakedBalanceGwei: u64,
1546        #[allow(missing_docs)]
1547        pub lastCheckpointedAt: u64,
1548        #[allow(missing_docs)]
1549        pub status: <VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
1550    }
1551    #[allow(
1552        non_camel_case_types,
1553        non_snake_case,
1554        clippy::pub_underscore_fields,
1555        clippy::style
1556    )]
1557    const _: () = {
1558        use alloy::sol_types as alloy_sol_types;
1559        #[doc(hidden)]
1560        type UnderlyingSolTuple<'a> = (
1561            alloy::sol_types::sol_data::Uint<64>,
1562            alloy::sol_types::sol_data::Uint<64>,
1563            alloy::sol_types::sol_data::Uint<64>,
1564            VALIDATOR_STATUS,
1565        );
1566        #[doc(hidden)]
1567        type UnderlyingRustTuple<'a> = (
1568            u64,
1569            u64,
1570            u64,
1571            <VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
1572        );
1573        #[cfg(test)]
1574        #[allow(dead_code, unreachable_patterns)]
1575        fn _type_assertion(
1576            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1577        ) {
1578            match _t {
1579                alloy_sol_types::private::AssertTypeEq::<
1580                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1581                >(_) => {}
1582            }
1583        }
1584        #[automatically_derived]
1585        #[doc(hidden)]
1586        impl ::core::convert::From<ValidatorInfo> for UnderlyingRustTuple<'_> {
1587            fn from(value: ValidatorInfo) -> Self {
1588                (
1589                    value.validatorIndex,
1590                    value.restakedBalanceGwei,
1591                    value.lastCheckpointedAt,
1592                    value.status,
1593                )
1594            }
1595        }
1596        #[automatically_derived]
1597        #[doc(hidden)]
1598        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInfo {
1599            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1600                Self {
1601                    validatorIndex: tuple.0,
1602                    restakedBalanceGwei: tuple.1,
1603                    lastCheckpointedAt: tuple.2,
1604                    status: tuple.3,
1605                }
1606            }
1607        }
1608        #[automatically_derived]
1609        impl alloy_sol_types::SolValue for ValidatorInfo {
1610            type SolType = Self;
1611        }
1612        #[automatically_derived]
1613        impl alloy_sol_types::private::SolTypeValue<Self> for ValidatorInfo {
1614            #[inline]
1615            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1616                (
1617                    <alloy::sol_types::sol_data::Uint<
1618                        64,
1619                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
1620                    <alloy::sol_types::sol_data::Uint<
1621                        64,
1622                    > as alloy_sol_types::SolType>::tokenize(&self.restakedBalanceGwei),
1623                    <alloy::sol_types::sol_data::Uint<
1624                        64,
1625                    > as alloy_sol_types::SolType>::tokenize(&self.lastCheckpointedAt),
1626                    <VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(
1627                        &self.status,
1628                    ),
1629                )
1630            }
1631            #[inline]
1632            fn stv_abi_encoded_size(&self) -> usize {
1633                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1634                    return size;
1635                }
1636                let tuple = <UnderlyingRustTuple<
1637                    '_,
1638                > as ::core::convert::From<Self>>::from(self.clone());
1639                <UnderlyingSolTuple<
1640                    '_,
1641                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1642            }
1643            #[inline]
1644            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1645                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1646            }
1647            #[inline]
1648            fn stv_abi_encode_packed_to(
1649                &self,
1650                out: &mut alloy_sol_types::private::Vec<u8>,
1651            ) {
1652                let tuple = <UnderlyingRustTuple<
1653                    '_,
1654                > as ::core::convert::From<Self>>::from(self.clone());
1655                <UnderlyingSolTuple<
1656                    '_,
1657                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1658            }
1659            #[inline]
1660            fn stv_abi_packed_encoded_size(&self) -> usize {
1661                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1662                    return size;
1663                }
1664                let tuple = <UnderlyingRustTuple<
1665                    '_,
1666                > as ::core::convert::From<Self>>::from(self.clone());
1667                <UnderlyingSolTuple<
1668                    '_,
1669                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1670            }
1671        }
1672        #[automatically_derived]
1673        impl alloy_sol_types::SolType for ValidatorInfo {
1674            type RustType = Self;
1675            type Token<'a> = <UnderlyingSolTuple<
1676                'a,
1677            > as alloy_sol_types::SolType>::Token<'a>;
1678            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1679            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1680                '_,
1681            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1682            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1683                '_,
1684            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1685            #[inline]
1686            fn valid_token(token: &Self::Token<'_>) -> bool {
1687                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1688            }
1689            #[inline]
1690            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1691                let tuple = <UnderlyingSolTuple<
1692                    '_,
1693                > as alloy_sol_types::SolType>::detokenize(token);
1694                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1695            }
1696        }
1697        #[automatically_derived]
1698        impl alloy_sol_types::SolStruct for ValidatorInfo {
1699            const NAME: &'static str = "ValidatorInfo";
1700            #[inline]
1701            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1702                alloy_sol_types::private::Cow::Borrowed(
1703                    "ValidatorInfo(uint64 validatorIndex,uint64 restakedBalanceGwei,uint64 lastCheckpointedAt,uint8 status)",
1704                )
1705            }
1706            #[inline]
1707            fn eip712_components() -> alloy_sol_types::private::Vec<
1708                alloy_sol_types::private::Cow<'static, str>,
1709            > {
1710                alloy_sol_types::private::Vec::new()
1711            }
1712            #[inline]
1713            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1714                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1715            }
1716            #[inline]
1717            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1718                [
1719                    <alloy::sol_types::sol_data::Uint<
1720                        64,
1721                    > as alloy_sol_types::SolType>::eip712_data_word(
1722                            &self.validatorIndex,
1723                        )
1724                        .0,
1725                    <alloy::sol_types::sol_data::Uint<
1726                        64,
1727                    > as alloy_sol_types::SolType>::eip712_data_word(
1728                            &self.restakedBalanceGwei,
1729                        )
1730                        .0,
1731                    <alloy::sol_types::sol_data::Uint<
1732                        64,
1733                    > as alloy_sol_types::SolType>::eip712_data_word(
1734                            &self.lastCheckpointedAt,
1735                        )
1736                        .0,
1737                    <VALIDATOR_STATUS as alloy_sol_types::SolType>::eip712_data_word(
1738                            &self.status,
1739                        )
1740                        .0,
1741                ]
1742                    .concat()
1743            }
1744        }
1745        #[automatically_derived]
1746        impl alloy_sol_types::EventTopic for ValidatorInfo {
1747            #[inline]
1748            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1749                0usize
1750                    + <alloy::sol_types::sol_data::Uint<
1751                        64,
1752                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1753                        &rust.validatorIndex,
1754                    )
1755                    + <alloy::sol_types::sol_data::Uint<
1756                        64,
1757                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1758                        &rust.restakedBalanceGwei,
1759                    )
1760                    + <alloy::sol_types::sol_data::Uint<
1761                        64,
1762                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1763                        &rust.lastCheckpointedAt,
1764                    )
1765                    + <VALIDATOR_STATUS as alloy_sol_types::EventTopic>::topic_preimage_length(
1766                        &rust.status,
1767                    )
1768            }
1769            #[inline]
1770            fn encode_topic_preimage(
1771                rust: &Self::RustType,
1772                out: &mut alloy_sol_types::private::Vec<u8>,
1773            ) {
1774                out.reserve(
1775                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1776                );
1777                <alloy::sol_types::sol_data::Uint<
1778                    64,
1779                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1780                    &rust.validatorIndex,
1781                    out,
1782                );
1783                <alloy::sol_types::sol_data::Uint<
1784                    64,
1785                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1786                    &rust.restakedBalanceGwei,
1787                    out,
1788                );
1789                <alloy::sol_types::sol_data::Uint<
1790                    64,
1791                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1792                    &rust.lastCheckpointedAt,
1793                    out,
1794                );
1795                <VALIDATOR_STATUS as alloy_sol_types::EventTopic>::encode_topic_preimage(
1796                    &rust.status,
1797                    out,
1798                );
1799            }
1800            #[inline]
1801            fn encode_topic(
1802                rust: &Self::RustType,
1803            ) -> alloy_sol_types::abi::token::WordToken {
1804                let mut out = alloy_sol_types::private::Vec::new();
1805                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1806                    rust,
1807                    &mut out,
1808                );
1809                alloy_sol_types::abi::token::WordToken(
1810                    alloy_sol_types::private::keccak256(out),
1811                )
1812            }
1813        }
1814    };
1815    use alloy::contract as alloy_contract;
1816    /**Creates a new wrapper around an on-chain [`IEigenPodTypes`](self) contract instance.
1817
1818See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
1819    #[inline]
1820    pub const fn new<
1821        T: alloy_contract::private::Transport + ::core::clone::Clone,
1822        P: alloy_contract::private::Provider<T, N>,
1823        N: alloy_contract::private::Network,
1824    >(
1825        address: alloy_sol_types::private::Address,
1826        provider: P,
1827    ) -> IEigenPodTypesInstance<T, P, N> {
1828        IEigenPodTypesInstance::<T, P, N>::new(address, provider)
1829    }
1830    /**A [`IEigenPodTypes`](self) instance.
1831
1832Contains type-safe methods for interacting with an on-chain instance of the
1833[`IEigenPodTypes`](self) contract located at a given `address`, using a given
1834provider `P`.
1835
1836If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1837documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1838be used to deploy a new instance of the contract.
1839
1840See the [module-level documentation](self) for all the available methods.*/
1841    #[derive(Clone)]
1842    pub struct IEigenPodTypesInstance<T, P, N = alloy_contract::private::Ethereum> {
1843        address: alloy_sol_types::private::Address,
1844        provider: P,
1845        _network_transport: ::core::marker::PhantomData<(N, T)>,
1846    }
1847    #[automatically_derived]
1848    impl<T, P, N> ::core::fmt::Debug for IEigenPodTypesInstance<T, P, N> {
1849        #[inline]
1850        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1851            f.debug_tuple("IEigenPodTypesInstance").field(&self.address).finish()
1852        }
1853    }
1854    /// Instantiation and getters/setters.
1855    #[automatically_derived]
1856    impl<
1857        T: alloy_contract::private::Transport + ::core::clone::Clone,
1858        P: alloy_contract::private::Provider<T, N>,
1859        N: alloy_contract::private::Network,
1860    > IEigenPodTypesInstance<T, P, N> {
1861        /**Creates a new wrapper around an on-chain [`IEigenPodTypes`](self) contract instance.
1862
1863See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
1864        #[inline]
1865        pub const fn new(
1866            address: alloy_sol_types::private::Address,
1867            provider: P,
1868        ) -> Self {
1869            Self {
1870                address,
1871                provider,
1872                _network_transport: ::core::marker::PhantomData,
1873            }
1874        }
1875        /// Returns a reference to the address.
1876        #[inline]
1877        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1878            &self.address
1879        }
1880        /// Sets the address.
1881        #[inline]
1882        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1883            self.address = address;
1884        }
1885        /// Sets the address and returns `self`.
1886        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1887            self.set_address(address);
1888            self
1889        }
1890        /// Returns a reference to the provider.
1891        #[inline]
1892        pub const fn provider(&self) -> &P {
1893            &self.provider
1894        }
1895    }
1896    impl<T, P: ::core::clone::Clone, N> IEigenPodTypesInstance<T, &P, N> {
1897        /// Clones the provider and returns a new instance with the cloned provider.
1898        #[inline]
1899        pub fn with_cloned_provider(self) -> IEigenPodTypesInstance<T, P, N> {
1900            IEigenPodTypesInstance {
1901                address: self.address,
1902                provider: ::core::clone::Clone::clone(&self.provider),
1903                _network_transport: ::core::marker::PhantomData,
1904            }
1905        }
1906    }
1907    /// Function calls.
1908    #[automatically_derived]
1909    impl<
1910        T: alloy_contract::private::Transport + ::core::clone::Clone,
1911        P: alloy_contract::private::Provider<T, N>,
1912        N: alloy_contract::private::Network,
1913    > IEigenPodTypesInstance<T, P, N> {
1914        /// Creates a new call builder using this contract instance's provider and address.
1915        ///
1916        /// Note that the call can be any function call, not just those defined in this
1917        /// contract. Prefer using the other methods for building type-safe contract calls.
1918        pub fn call_builder<C: alloy_sol_types::SolCall>(
1919            &self,
1920            call: &C,
1921        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1922            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1923        }
1924    }
1925    /// Event filters.
1926    #[automatically_derived]
1927    impl<
1928        T: alloy_contract::private::Transport + ::core::clone::Clone,
1929        P: alloy_contract::private::Provider<T, N>,
1930        N: alloy_contract::private::Network,
1931    > IEigenPodTypesInstance<T, P, N> {
1932        /// Creates a new event filter using this contract instance's provider and address.
1933        ///
1934        /// Note that the type can be any event, not just those defined in this contract.
1935        /// Prefer using the other methods for building type-safe event filters.
1936        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1937            &self,
1938        ) -> alloy_contract::Event<T, &P, E, N> {
1939            alloy_contract::Event::new_sol(&self.provider, &self.address)
1940        }
1941    }
1942}
1943/**
1944
1945Generated by the following Solidity interface...
1946```solidity
1947library BeaconChainProofs {
1948    struct BalanceContainerProof {
1949        bytes32 balanceContainerRoot;
1950        bytes proof;
1951    }
1952    struct BalanceProof {
1953        bytes32 pubkeyHash;
1954        bytes32 balanceRoot;
1955        bytes proof;
1956    }
1957    struct StateRootProof {
1958        bytes32 beaconStateRoot;
1959        bytes proof;
1960    }
1961    struct ValidatorProof {
1962        bytes32[] validatorFields;
1963        bytes proof;
1964    }
1965}
1966
1967library IEigenPodTypes {
1968    type VALIDATOR_STATUS is uint8;
1969    struct Checkpoint {
1970        bytes32 beaconBlockRoot;
1971        uint24 proofsRemaining;
1972        uint64 podBalanceGwei;
1973        int64 balanceDeltasGwei;
1974        uint64 prevBeaconBalanceGwei;
1975    }
1976    struct ValidatorInfo {
1977        uint64 validatorIndex;
1978        uint64 restakedBalanceGwei;
1979        uint64 lastCheckpointedAt;
1980        VALIDATOR_STATUS status;
1981    }
1982}
1983
1984interface EigenPod {
1985    error BeaconTimestampTooFarInPast();
1986    error CannotCheckpointTwiceInSingleBlock();
1987    error CheckpointAlreadyActive();
1988    error CredentialsAlreadyVerified();
1989    error CurrentlyPaused();
1990    error ForkTimestampZero();
1991    error InputAddressZero();
1992    error InputArrayLengthMismatch();
1993    error InsufficientWithdrawableBalance();
1994    error InvalidEIP4788Response();
1995    error InvalidProof();
1996    error InvalidProofLength();
1997    error InvalidPubKeyLength();
1998    error InvalidShortString();
1999    error InvalidValidatorFieldsLength();
2000    error MsgValueNot32ETH();
2001    error NoActiveCheckpoint();
2002    error NoBalanceToCheckpoint();
2003    error OnlyEigenPodManager();
2004    error OnlyEigenPodOwner();
2005    error OnlyEigenPodOwnerOrProofSubmitter();
2006    error StringTooLong(string str);
2007    error TimestampOutOfRange();
2008    error ValidatorInactiveOnBeaconChain();
2009    error ValidatorIsExitingBeaconChain();
2010    error ValidatorNotActiveInPod();
2011    error ValidatorNotSlashedOnBeaconChain();
2012    error WithdrawalCredentialsNotForEigenPod();
2013
2014    event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount);
2015    event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei);
2016    event EigenPodStaked(bytes pubkey);
2017    event Initialized(uint8 version);
2018    event NonBeaconChainETHReceived(uint256 amountReceived);
2019    event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter);
2020    event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount);
2021    event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei);
2022    event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
2023    event ValidatorRestaked(uint40 validatorIndex);
2024    event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
2025
2026    constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME, string _version);
2027
2028    receive() external payable;
2029
2030    function GENESIS_TIME() external view returns (uint64);
2031    function activeValidatorCount() external view returns (uint256);
2032    function checkpointBalanceExitedGwei(uint64) external view returns (uint64);
2033    function currentCheckpoint() external view returns (IEigenPodTypes.Checkpoint memory);
2034    function currentCheckpointTimestamp() external view returns (uint64);
2035    function eigenPodManager() external view returns (address);
2036    function ethPOS() external view returns (address);
2037    function getParentBlockRoot(uint64 timestamp) external view returns (bytes32);
2038    function initialize(address _podOwner) external;
2039    function lastCheckpointTimestamp() external view returns (uint64);
2040    function podOwner() external view returns (address);
2041    function proofSubmitter() external view returns (address);
2042    function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external;
2043    function setProofSubmitter(address newProofSubmitter) external;
2044    function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable;
2045    function startCheckpoint(bool revertIfNoBalance) external;
2046    function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPodTypes.ValidatorInfo memory);
2047    function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
2048    function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
2049    function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
2050    function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external;
2051    function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external;
2052    function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external;
2053    function version() external view returns (string memory);
2054    function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external;
2055    function withdrawableRestakedExecutionLayerGwei() external view returns (uint64);
2056}
2057```
2058
2059...which was generated by the following JSON ABI:
2060```json
2061[
2062  {
2063    "type": "constructor",
2064    "inputs": [
2065      {
2066        "name": "_ethPOS",
2067        "type": "address",
2068        "internalType": "contract IETHPOSDeposit"
2069      },
2070      {
2071        "name": "_eigenPodManager",
2072        "type": "address",
2073        "internalType": "contract IEigenPodManager"
2074      },
2075      {
2076        "name": "_GENESIS_TIME",
2077        "type": "uint64",
2078        "internalType": "uint64"
2079      },
2080      {
2081        "name": "_version",
2082        "type": "string",
2083        "internalType": "string"
2084      }
2085    ],
2086    "stateMutability": "nonpayable"
2087  },
2088  {
2089    "type": "receive",
2090    "stateMutability": "payable"
2091  },
2092  {
2093    "type": "function",
2094    "name": "GENESIS_TIME",
2095    "inputs": [],
2096    "outputs": [
2097      {
2098        "name": "",
2099        "type": "uint64",
2100        "internalType": "uint64"
2101      }
2102    ],
2103    "stateMutability": "view"
2104  },
2105  {
2106    "type": "function",
2107    "name": "activeValidatorCount",
2108    "inputs": [],
2109    "outputs": [
2110      {
2111        "name": "",
2112        "type": "uint256",
2113        "internalType": "uint256"
2114      }
2115    ],
2116    "stateMutability": "view"
2117  },
2118  {
2119    "type": "function",
2120    "name": "checkpointBalanceExitedGwei",
2121    "inputs": [
2122      {
2123        "name": "",
2124        "type": "uint64",
2125        "internalType": "uint64"
2126      }
2127    ],
2128    "outputs": [
2129      {
2130        "name": "",
2131        "type": "uint64",
2132        "internalType": "uint64"
2133      }
2134    ],
2135    "stateMutability": "view"
2136  },
2137  {
2138    "type": "function",
2139    "name": "currentCheckpoint",
2140    "inputs": [],
2141    "outputs": [
2142      {
2143        "name": "",
2144        "type": "tuple",
2145        "internalType": "struct IEigenPodTypes.Checkpoint",
2146        "components": [
2147          {
2148            "name": "beaconBlockRoot",
2149            "type": "bytes32",
2150            "internalType": "bytes32"
2151          },
2152          {
2153            "name": "proofsRemaining",
2154            "type": "uint24",
2155            "internalType": "uint24"
2156          },
2157          {
2158            "name": "podBalanceGwei",
2159            "type": "uint64",
2160            "internalType": "uint64"
2161          },
2162          {
2163            "name": "balanceDeltasGwei",
2164            "type": "int64",
2165            "internalType": "int64"
2166          },
2167          {
2168            "name": "prevBeaconBalanceGwei",
2169            "type": "uint64",
2170            "internalType": "uint64"
2171          }
2172        ]
2173      }
2174    ],
2175    "stateMutability": "view"
2176  },
2177  {
2178    "type": "function",
2179    "name": "currentCheckpointTimestamp",
2180    "inputs": [],
2181    "outputs": [
2182      {
2183        "name": "",
2184        "type": "uint64",
2185        "internalType": "uint64"
2186      }
2187    ],
2188    "stateMutability": "view"
2189  },
2190  {
2191    "type": "function",
2192    "name": "eigenPodManager",
2193    "inputs": [],
2194    "outputs": [
2195      {
2196        "name": "",
2197        "type": "address",
2198        "internalType": "contract IEigenPodManager"
2199      }
2200    ],
2201    "stateMutability": "view"
2202  },
2203  {
2204    "type": "function",
2205    "name": "ethPOS",
2206    "inputs": [],
2207    "outputs": [
2208      {
2209        "name": "",
2210        "type": "address",
2211        "internalType": "contract IETHPOSDeposit"
2212      }
2213    ],
2214    "stateMutability": "view"
2215  },
2216  {
2217    "type": "function",
2218    "name": "getParentBlockRoot",
2219    "inputs": [
2220      {
2221        "name": "timestamp",
2222        "type": "uint64",
2223        "internalType": "uint64"
2224      }
2225    ],
2226    "outputs": [
2227      {
2228        "name": "",
2229        "type": "bytes32",
2230        "internalType": "bytes32"
2231      }
2232    ],
2233    "stateMutability": "view"
2234  },
2235  {
2236    "type": "function",
2237    "name": "initialize",
2238    "inputs": [
2239      {
2240        "name": "_podOwner",
2241        "type": "address",
2242        "internalType": "address"
2243      }
2244    ],
2245    "outputs": [],
2246    "stateMutability": "nonpayable"
2247  },
2248  {
2249    "type": "function",
2250    "name": "lastCheckpointTimestamp",
2251    "inputs": [],
2252    "outputs": [
2253      {
2254        "name": "",
2255        "type": "uint64",
2256        "internalType": "uint64"
2257      }
2258    ],
2259    "stateMutability": "view"
2260  },
2261  {
2262    "type": "function",
2263    "name": "podOwner",
2264    "inputs": [],
2265    "outputs": [
2266      {
2267        "name": "",
2268        "type": "address",
2269        "internalType": "address"
2270      }
2271    ],
2272    "stateMutability": "view"
2273  },
2274  {
2275    "type": "function",
2276    "name": "proofSubmitter",
2277    "inputs": [],
2278    "outputs": [
2279      {
2280        "name": "",
2281        "type": "address",
2282        "internalType": "address"
2283      }
2284    ],
2285    "stateMutability": "view"
2286  },
2287  {
2288    "type": "function",
2289    "name": "recoverTokens",
2290    "inputs": [
2291      {
2292        "name": "tokenList",
2293        "type": "address[]",
2294        "internalType": "contract IERC20[]"
2295      },
2296      {
2297        "name": "amountsToWithdraw",
2298        "type": "uint256[]",
2299        "internalType": "uint256[]"
2300      },
2301      {
2302        "name": "recipient",
2303        "type": "address",
2304        "internalType": "address"
2305      }
2306    ],
2307    "outputs": [],
2308    "stateMutability": "nonpayable"
2309  },
2310  {
2311    "type": "function",
2312    "name": "setProofSubmitter",
2313    "inputs": [
2314      {
2315        "name": "newProofSubmitter",
2316        "type": "address",
2317        "internalType": "address"
2318      }
2319    ],
2320    "outputs": [],
2321    "stateMutability": "nonpayable"
2322  },
2323  {
2324    "type": "function",
2325    "name": "stake",
2326    "inputs": [
2327      {
2328        "name": "pubkey",
2329        "type": "bytes",
2330        "internalType": "bytes"
2331      },
2332      {
2333        "name": "signature",
2334        "type": "bytes",
2335        "internalType": "bytes"
2336      },
2337      {
2338        "name": "depositDataRoot",
2339        "type": "bytes32",
2340        "internalType": "bytes32"
2341      }
2342    ],
2343    "outputs": [],
2344    "stateMutability": "payable"
2345  },
2346  {
2347    "type": "function",
2348    "name": "startCheckpoint",
2349    "inputs": [
2350      {
2351        "name": "revertIfNoBalance",
2352        "type": "bool",
2353        "internalType": "bool"
2354      }
2355    ],
2356    "outputs": [],
2357    "stateMutability": "nonpayable"
2358  },
2359  {
2360    "type": "function",
2361    "name": "validatorPubkeyHashToInfo",
2362    "inputs": [
2363      {
2364        "name": "validatorPubkeyHash",
2365        "type": "bytes32",
2366        "internalType": "bytes32"
2367      }
2368    ],
2369    "outputs": [
2370      {
2371        "name": "",
2372        "type": "tuple",
2373        "internalType": "struct IEigenPodTypes.ValidatorInfo",
2374        "components": [
2375          {
2376            "name": "validatorIndex",
2377            "type": "uint64",
2378            "internalType": "uint64"
2379          },
2380          {
2381            "name": "restakedBalanceGwei",
2382            "type": "uint64",
2383            "internalType": "uint64"
2384          },
2385          {
2386            "name": "lastCheckpointedAt",
2387            "type": "uint64",
2388            "internalType": "uint64"
2389          },
2390          {
2391            "name": "status",
2392            "type": "uint8",
2393            "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2394          }
2395        ]
2396      }
2397    ],
2398    "stateMutability": "view"
2399  },
2400  {
2401    "type": "function",
2402    "name": "validatorPubkeyToInfo",
2403    "inputs": [
2404      {
2405        "name": "validatorPubkey",
2406        "type": "bytes",
2407        "internalType": "bytes"
2408      }
2409    ],
2410    "outputs": [
2411      {
2412        "name": "",
2413        "type": "tuple",
2414        "internalType": "struct IEigenPodTypes.ValidatorInfo",
2415        "components": [
2416          {
2417            "name": "validatorIndex",
2418            "type": "uint64",
2419            "internalType": "uint64"
2420          },
2421          {
2422            "name": "restakedBalanceGwei",
2423            "type": "uint64",
2424            "internalType": "uint64"
2425          },
2426          {
2427            "name": "lastCheckpointedAt",
2428            "type": "uint64",
2429            "internalType": "uint64"
2430          },
2431          {
2432            "name": "status",
2433            "type": "uint8",
2434            "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2435          }
2436        ]
2437      }
2438    ],
2439    "stateMutability": "view"
2440  },
2441  {
2442    "type": "function",
2443    "name": "validatorStatus",
2444    "inputs": [
2445      {
2446        "name": "validatorPubkey",
2447        "type": "bytes",
2448        "internalType": "bytes"
2449      }
2450    ],
2451    "outputs": [
2452      {
2453        "name": "",
2454        "type": "uint8",
2455        "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2456      }
2457    ],
2458    "stateMutability": "view"
2459  },
2460  {
2461    "type": "function",
2462    "name": "validatorStatus",
2463    "inputs": [
2464      {
2465        "name": "pubkeyHash",
2466        "type": "bytes32",
2467        "internalType": "bytes32"
2468      }
2469    ],
2470    "outputs": [
2471      {
2472        "name": "",
2473        "type": "uint8",
2474        "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2475      }
2476    ],
2477    "stateMutability": "view"
2478  },
2479  {
2480    "type": "function",
2481    "name": "verifyCheckpointProofs",
2482    "inputs": [
2483      {
2484        "name": "balanceContainerProof",
2485        "type": "tuple",
2486        "internalType": "struct BeaconChainProofs.BalanceContainerProof",
2487        "components": [
2488          {
2489            "name": "balanceContainerRoot",
2490            "type": "bytes32",
2491            "internalType": "bytes32"
2492          },
2493          {
2494            "name": "proof",
2495            "type": "bytes",
2496            "internalType": "bytes"
2497          }
2498        ]
2499      },
2500      {
2501        "name": "proofs",
2502        "type": "tuple[]",
2503        "internalType": "struct BeaconChainProofs.BalanceProof[]",
2504        "components": [
2505          {
2506            "name": "pubkeyHash",
2507            "type": "bytes32",
2508            "internalType": "bytes32"
2509          },
2510          {
2511            "name": "balanceRoot",
2512            "type": "bytes32",
2513            "internalType": "bytes32"
2514          },
2515          {
2516            "name": "proof",
2517            "type": "bytes",
2518            "internalType": "bytes"
2519          }
2520        ]
2521      }
2522    ],
2523    "outputs": [],
2524    "stateMutability": "nonpayable"
2525  },
2526  {
2527    "type": "function",
2528    "name": "verifyStaleBalance",
2529    "inputs": [
2530      {
2531        "name": "beaconTimestamp",
2532        "type": "uint64",
2533        "internalType": "uint64"
2534      },
2535      {
2536        "name": "stateRootProof",
2537        "type": "tuple",
2538        "internalType": "struct BeaconChainProofs.StateRootProof",
2539        "components": [
2540          {
2541            "name": "beaconStateRoot",
2542            "type": "bytes32",
2543            "internalType": "bytes32"
2544          },
2545          {
2546            "name": "proof",
2547            "type": "bytes",
2548            "internalType": "bytes"
2549          }
2550        ]
2551      },
2552      {
2553        "name": "proof",
2554        "type": "tuple",
2555        "internalType": "struct BeaconChainProofs.ValidatorProof",
2556        "components": [
2557          {
2558            "name": "validatorFields",
2559            "type": "bytes32[]",
2560            "internalType": "bytes32[]"
2561          },
2562          {
2563            "name": "proof",
2564            "type": "bytes",
2565            "internalType": "bytes"
2566          }
2567        ]
2568      }
2569    ],
2570    "outputs": [],
2571    "stateMutability": "nonpayable"
2572  },
2573  {
2574    "type": "function",
2575    "name": "verifyWithdrawalCredentials",
2576    "inputs": [
2577      {
2578        "name": "beaconTimestamp",
2579        "type": "uint64",
2580        "internalType": "uint64"
2581      },
2582      {
2583        "name": "stateRootProof",
2584        "type": "tuple",
2585        "internalType": "struct BeaconChainProofs.StateRootProof",
2586        "components": [
2587          {
2588            "name": "beaconStateRoot",
2589            "type": "bytes32",
2590            "internalType": "bytes32"
2591          },
2592          {
2593            "name": "proof",
2594            "type": "bytes",
2595            "internalType": "bytes"
2596          }
2597        ]
2598      },
2599      {
2600        "name": "validatorIndices",
2601        "type": "uint40[]",
2602        "internalType": "uint40[]"
2603      },
2604      {
2605        "name": "validatorFieldsProofs",
2606        "type": "bytes[]",
2607        "internalType": "bytes[]"
2608      },
2609      {
2610        "name": "validatorFields",
2611        "type": "bytes32[][]",
2612        "internalType": "bytes32[][]"
2613      }
2614    ],
2615    "outputs": [],
2616    "stateMutability": "nonpayable"
2617  },
2618  {
2619    "type": "function",
2620    "name": "version",
2621    "inputs": [],
2622    "outputs": [
2623      {
2624        "name": "",
2625        "type": "string",
2626        "internalType": "string"
2627      }
2628    ],
2629    "stateMutability": "view"
2630  },
2631  {
2632    "type": "function",
2633    "name": "withdrawRestakedBeaconChainETH",
2634    "inputs": [
2635      {
2636        "name": "recipient",
2637        "type": "address",
2638        "internalType": "address"
2639      },
2640      {
2641        "name": "amountWei",
2642        "type": "uint256",
2643        "internalType": "uint256"
2644      }
2645    ],
2646    "outputs": [],
2647    "stateMutability": "nonpayable"
2648  },
2649  {
2650    "type": "function",
2651    "name": "withdrawableRestakedExecutionLayerGwei",
2652    "inputs": [],
2653    "outputs": [
2654      {
2655        "name": "",
2656        "type": "uint64",
2657        "internalType": "uint64"
2658      }
2659    ],
2660    "stateMutability": "view"
2661  },
2662  {
2663    "type": "event",
2664    "name": "CheckpointCreated",
2665    "inputs": [
2666      {
2667        "name": "checkpointTimestamp",
2668        "type": "uint64",
2669        "indexed": true,
2670        "internalType": "uint64"
2671      },
2672      {
2673        "name": "beaconBlockRoot",
2674        "type": "bytes32",
2675        "indexed": true,
2676        "internalType": "bytes32"
2677      },
2678      {
2679        "name": "validatorCount",
2680        "type": "uint256",
2681        "indexed": false,
2682        "internalType": "uint256"
2683      }
2684    ],
2685    "anonymous": false
2686  },
2687  {
2688    "type": "event",
2689    "name": "CheckpointFinalized",
2690    "inputs": [
2691      {
2692        "name": "checkpointTimestamp",
2693        "type": "uint64",
2694        "indexed": true,
2695        "internalType": "uint64"
2696      },
2697      {
2698        "name": "totalShareDeltaWei",
2699        "type": "int256",
2700        "indexed": false,
2701        "internalType": "int256"
2702      }
2703    ],
2704    "anonymous": false
2705  },
2706  {
2707    "type": "event",
2708    "name": "EigenPodStaked",
2709    "inputs": [
2710      {
2711        "name": "pubkey",
2712        "type": "bytes",
2713        "indexed": false,
2714        "internalType": "bytes"
2715      }
2716    ],
2717    "anonymous": false
2718  },
2719  {
2720    "type": "event",
2721    "name": "Initialized",
2722    "inputs": [
2723      {
2724        "name": "version",
2725        "type": "uint8",
2726        "indexed": false,
2727        "internalType": "uint8"
2728      }
2729    ],
2730    "anonymous": false
2731  },
2732  {
2733    "type": "event",
2734    "name": "NonBeaconChainETHReceived",
2735    "inputs": [
2736      {
2737        "name": "amountReceived",
2738        "type": "uint256",
2739        "indexed": false,
2740        "internalType": "uint256"
2741      }
2742    ],
2743    "anonymous": false
2744  },
2745  {
2746    "type": "event",
2747    "name": "ProofSubmitterUpdated",
2748    "inputs": [
2749      {
2750        "name": "prevProofSubmitter",
2751        "type": "address",
2752        "indexed": false,
2753        "internalType": "address"
2754      },
2755      {
2756        "name": "newProofSubmitter",
2757        "type": "address",
2758        "indexed": false,
2759        "internalType": "address"
2760      }
2761    ],
2762    "anonymous": false
2763  },
2764  {
2765    "type": "event",
2766    "name": "RestakedBeaconChainETHWithdrawn",
2767    "inputs": [
2768      {
2769        "name": "recipient",
2770        "type": "address",
2771        "indexed": true,
2772        "internalType": "address"
2773      },
2774      {
2775        "name": "amount",
2776        "type": "uint256",
2777        "indexed": false,
2778        "internalType": "uint256"
2779      }
2780    ],
2781    "anonymous": false
2782  },
2783  {
2784    "type": "event",
2785    "name": "ValidatorBalanceUpdated",
2786    "inputs": [
2787      {
2788        "name": "validatorIndex",
2789        "type": "uint40",
2790        "indexed": false,
2791        "internalType": "uint40"
2792      },
2793      {
2794        "name": "balanceTimestamp",
2795        "type": "uint64",
2796        "indexed": false,
2797        "internalType": "uint64"
2798      },
2799      {
2800        "name": "newValidatorBalanceGwei",
2801        "type": "uint64",
2802        "indexed": false,
2803        "internalType": "uint64"
2804      }
2805    ],
2806    "anonymous": false
2807  },
2808  {
2809    "type": "event",
2810    "name": "ValidatorCheckpointed",
2811    "inputs": [
2812      {
2813        "name": "checkpointTimestamp",
2814        "type": "uint64",
2815        "indexed": true,
2816        "internalType": "uint64"
2817      },
2818      {
2819        "name": "validatorIndex",
2820        "type": "uint40",
2821        "indexed": true,
2822        "internalType": "uint40"
2823      }
2824    ],
2825    "anonymous": false
2826  },
2827  {
2828    "type": "event",
2829    "name": "ValidatorRestaked",
2830    "inputs": [
2831      {
2832        "name": "validatorIndex",
2833        "type": "uint40",
2834        "indexed": false,
2835        "internalType": "uint40"
2836      }
2837    ],
2838    "anonymous": false
2839  },
2840  {
2841    "type": "event",
2842    "name": "ValidatorWithdrawn",
2843    "inputs": [
2844      {
2845        "name": "checkpointTimestamp",
2846        "type": "uint64",
2847        "indexed": true,
2848        "internalType": "uint64"
2849      },
2850      {
2851        "name": "validatorIndex",
2852        "type": "uint40",
2853        "indexed": true,
2854        "internalType": "uint40"
2855      }
2856    ],
2857    "anonymous": false
2858  },
2859  {
2860    "type": "error",
2861    "name": "BeaconTimestampTooFarInPast",
2862    "inputs": []
2863  },
2864  {
2865    "type": "error",
2866    "name": "CannotCheckpointTwiceInSingleBlock",
2867    "inputs": []
2868  },
2869  {
2870    "type": "error",
2871    "name": "CheckpointAlreadyActive",
2872    "inputs": []
2873  },
2874  {
2875    "type": "error",
2876    "name": "CredentialsAlreadyVerified",
2877    "inputs": []
2878  },
2879  {
2880    "type": "error",
2881    "name": "CurrentlyPaused",
2882    "inputs": []
2883  },
2884  {
2885    "type": "error",
2886    "name": "ForkTimestampZero",
2887    "inputs": []
2888  },
2889  {
2890    "type": "error",
2891    "name": "InputAddressZero",
2892    "inputs": []
2893  },
2894  {
2895    "type": "error",
2896    "name": "InputArrayLengthMismatch",
2897    "inputs": []
2898  },
2899  {
2900    "type": "error",
2901    "name": "InsufficientWithdrawableBalance",
2902    "inputs": []
2903  },
2904  {
2905    "type": "error",
2906    "name": "InvalidEIP4788Response",
2907    "inputs": []
2908  },
2909  {
2910    "type": "error",
2911    "name": "InvalidProof",
2912    "inputs": []
2913  },
2914  {
2915    "type": "error",
2916    "name": "InvalidProofLength",
2917    "inputs": []
2918  },
2919  {
2920    "type": "error",
2921    "name": "InvalidPubKeyLength",
2922    "inputs": []
2923  },
2924  {
2925    "type": "error",
2926    "name": "InvalidShortString",
2927    "inputs": []
2928  },
2929  {
2930    "type": "error",
2931    "name": "InvalidValidatorFieldsLength",
2932    "inputs": []
2933  },
2934  {
2935    "type": "error",
2936    "name": "MsgValueNot32ETH",
2937    "inputs": []
2938  },
2939  {
2940    "type": "error",
2941    "name": "NoActiveCheckpoint",
2942    "inputs": []
2943  },
2944  {
2945    "type": "error",
2946    "name": "NoBalanceToCheckpoint",
2947    "inputs": []
2948  },
2949  {
2950    "type": "error",
2951    "name": "OnlyEigenPodManager",
2952    "inputs": []
2953  },
2954  {
2955    "type": "error",
2956    "name": "OnlyEigenPodOwner",
2957    "inputs": []
2958  },
2959  {
2960    "type": "error",
2961    "name": "OnlyEigenPodOwnerOrProofSubmitter",
2962    "inputs": []
2963  },
2964  {
2965    "type": "error",
2966    "name": "StringTooLong",
2967    "inputs": [
2968      {
2969        "name": "str",
2970        "type": "string",
2971        "internalType": "string"
2972      }
2973    ]
2974  },
2975  {
2976    "type": "error",
2977    "name": "TimestampOutOfRange",
2978    "inputs": []
2979  },
2980  {
2981    "type": "error",
2982    "name": "ValidatorInactiveOnBeaconChain",
2983    "inputs": []
2984  },
2985  {
2986    "type": "error",
2987    "name": "ValidatorIsExitingBeaconChain",
2988    "inputs": []
2989  },
2990  {
2991    "type": "error",
2992    "name": "ValidatorNotActiveInPod",
2993    "inputs": []
2994  },
2995  {
2996    "type": "error",
2997    "name": "ValidatorNotSlashedOnBeaconChain",
2998    "inputs": []
2999  },
3000  {
3001    "type": "error",
3002    "name": "WithdrawalCredentialsNotForEigenPod",
3003    "inputs": []
3004  }
3005]
3006```*/
3007#[allow(
3008    non_camel_case_types,
3009    non_snake_case,
3010    clippy::pub_underscore_fields,
3011    clippy::style,
3012    clippy::empty_structs_with_brackets
3013)]
3014pub mod EigenPod {
3015    use super::*;
3016    use alloy::sol_types as alloy_sol_types;
3017    /// The creation / init bytecode of the contract.
3018    ///
3019    /// ```text
3020    ///0x610100604052348015610010575f5ffd5b506040516140c23803806140c283398101604081905261002f916101b9565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b50505050610303565b5f5f829050601f815111156100a1578260405163305a27a960e01b815260040161009891906102ab565b60405180910390fd5b80516100ac826102dd565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101b1578181015183820152602001610199565b50505f910152565b5f5f5f5f608085870312156101cc575f5ffd5b84516101d78161016c565b60208601519094506101e88161016c565b60408601519093506001600160401b0381168114610204575f5ffd5b60608601519092506001600160401b0381111561021f575f5ffd5b8501601f8101871361022f575f5ffd5b80516001600160401b0381111561024857610248610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561027657610276610183565b60405281815282820160200189101561028d575f5ffd5b61029e826020830160208601610197565b9598949750929550505050565b602081525f82518060208401526102c9816040850160208701610197565b601f01601f19169190910160400192915050565b805160208083015191908110156102fd575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861038a5f395f61062101525f81816102a50152818161065c01528181610704015281816109d101528181610b8701528181610ea101528181610f480152818161117e015281816114cc0152818161160001528181611adf015261296d01525f81816104e30152610fb101525f610c040152613d385ff3fe608060405260043610610160575f3560e01c80636fcd0e53116100be578063c490744211610078578063c490744214610556578063c4d66de814610575578063d06d558714610594578063dda3346c146105b3578063ee94d67c146105d2578063f074ba62146105f1578063f288246114610610575f5ffd5b80636fcd0e53146104715780637439841f1461049d57806374cdd798146104d257806388676cad146105055780639b4e463414610524578063b522538a14610537575f5ffd5b80634665bcda1161011a5780634665bcda1461029457806347d28372146102c757806352396a59146103b257806354fd4d50146103e6578063587533571461040757806358eaee79146104265780636c0d2d5a14610452575f5ffd5b8063039157d21461019e5780630b18ff66146101bf5780632340e8d3146101fb5780633474aa161461021e5780633f65cf191461024f57806342ecff2a1461026e575f5ffd5b3661019a576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101a9575f5ffd5b506101bd6101b8366004613219565b610643565b005b3480156101ca575f5ffd5b506033546101de906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610206575f5ffd5b5061021060395481565b6040519081526020016101f2565b348015610229575f5ffd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101f2565b34801561025a575f5ffd5b506101bd6102693660046132d4565b610978565b348015610279575f5ffd5b50603a5461023790600160401b90046001600160401b031681565b34801561029f575f5ffd5b506101de7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d2575f5ffd5b506103576040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101f291905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103bd575f5ffd5b506102376103cc3660046133ab565b603b6020525f90815260409020546001600160401b031681565b3480156103f1575f5ffd5b506103fa610bfd565b6040516101f29190613413565b348015610412575f5ffd5b50603e546101de906001600160a01b031681565b348015610431575f5ffd5b50610445610440366004613462565b610c2d565b6040516101f291906134d4565b34801561045d575f5ffd5b5061021061046c3660046133ab565b610c8f565b34801561047c575f5ffd5b5061049061048b3660046134e2565b610d9d565b6040516101f291906134f9565b3480156104a8575f5ffd5b506104456104b73660046134e2565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104dd575f5ffd5b506101de7f000000000000000000000000000000000000000000000000000000000000000081565b348015610510575f5ffd5b506101bd61051f366004613559565b610e48565b6101bd610532366004613574565b610f3d565b348015610542575f5ffd5b50610490610551366004613462565b611084565b348015610561575f5ffd5b506101bd610570366004613609565b611173565b348015610580575f5ffd5b506101bd61058f366004613633565b6112aa565b34801561059f575f5ffd5b506101bd6105ae366004613633565b6113f4565b3480156105be575f5ffd5b506101bd6105cd36600461371e565b611488565b3480156105dd575f5ffd5b50603a54610237906001600160401b031681565b3480156105fc575f5ffd5b506101bd61060b3660046137f0565b6115e7565b34801561061b575f5ffd5b506102377f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190613857565b156106eb5760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610751573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107759190613857565b156107935760405163840a48d560e01b815260040160405180910390fd5b5f6107d76107a18580613872565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119ec92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610845576108456134a0565b6002811115610856576108566134a0565b81525050905080604001516001600160401b0316876001600160401b031611610892576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108aa576108aa6134a0565b146108c85760405163d49e19a760e01b815260040160405180910390fd5b61090b6108d58680613872565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b6109285760405163161ce5ed60e31b815260040160405180910390fd5b61093a61093488610c8f565b87611a36565b61096661094688611adb565b87356109528880613872565b61095f60208b018b6138b7565b8751611bb2565b61096f5f611ce6565b50505050505050565b6033546001600160a01b031633148061099b5750603e546001600160a01b031633145b6109b85760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a429190613857565b15610a605760405163840a48d560e01b815260040160405180910390fd5b8584148015610a6e57508382145b610a8b576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ac1576040516337e07ffd60e01b815260040160405180910390fd5b610ad3610acd8a610c8f565b89611a36565b5f805b87811015610b6c57610b588b8b358b8b85818110610af657610af66138f9565b9050602002016020810190610b0b919061390d565b8a8a86818110610b1d57610b1d6138f9565b9050602002810190610b2f91906138b7565b8a8a88818110610b4157610b416138f9565b9050602002810190610b539190613872565b611e61565b610b629083613945565b9150600101610ad6565b5060335460405163a1ca780b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a1ca780b92610bc49291909116905f908690600401613958565b5f604051808303815f87803b158015610bdb575f5ffd5b505af1158015610bed573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c287f0000000000000000000000000000000000000000000000000000000000000000612374565b905090565b5f5f610c6d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123b192505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610c9d611fff600c613979565b610cb06001600160401b03841642613990565b10610cce57604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d15916139a3565b5f60405180830381855afa9150503d805f8114610d4d576040519150601f19603f3d011682016040523d82523d5f602084013e610d52565b606091505b5091509150818015610d6457505f8151115b610d815760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d9591906139be565b949350505050565b610dc4604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e2e57610e2e6134a0565b6002811115610e3f57610e3f6134a0565b90525092915050565b6033546001600160a01b0316331480610e6b5750603e546001600160a01b031633145b610e885760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610eee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f129190613857565b15610f305760405163840a48d560e01b815260040160405180910390fd5b610f3982611ce6565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8657604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610faf5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ff2612442565b8888886040518863ffffffff1660e01b8152600401611016969594939291906139fd565b5f604051808303818588803b15801561102d575f5ffd5b505af115801561103f573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611075929190613a4b565b60405180910390a15050505050565b6110ab604080516080810182525f8082526020820181905291810182905290606082015290565b60365f6110ec85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123b192505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff166002811115611158576111586134a0565b6002811115611169576111696134a0565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111bc57604051633213a66160e21b815260040160405180910390fd5b5f6111cb633b9aca0083613a72565b90506111e4633b9aca006001600160401b038316613979565b6034549092506001600160401b039081169082161115611217576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112349084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161129391815260200190565b60405180910390a26112a58383612472565b505050565b5f54610100900460ff16158080156112c857505f54600160ff909116105b806112e15750303b1580156112e157505f5460ff166001145b6113495760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561136a575f805461ff0019166101001790555b6001600160a01b038216611391576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f39575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461141f5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114b35760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190613857565b1561155b5760405163840a48d560e01b815260040160405180910390fd5b825184511461157d576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115e0576115d88385838151811061159e5761159e6138f9565b60200260200101518784815181106115b8576115b86138f9565b60200260200101516001600160a01b03166125879092919063ffffffff16565b60010161157f565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561164d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116719190613857565b1561168f5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116c357604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261172a61172283611adb565b8251886125d9565b5f805b858110156119935736878783818110611748576117486138f9565b905060200281019061175a9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ca576117ca6134a0565b60028111156117db576117db6134a0565b90525090506001816060015160028111156117f8576117f86134a0565b1461180457505061198b565b856001600160401b031681604001516001600160401b03161061182857505061198b565b5f8080611838848a8f358861269a565b60208b018051939650919450925061184f82613ab8565b62ffffff1690525060808801805184919061186b908390613ad5565b6001600160401b031690525060608801805183919061188b908390613af4565b60070b90525061189b8188613ad5565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561193f5761193f6134a0565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161172d565b506001600160401b038084165f908152603b60205260408120805484939192916119bf91859116613ad5565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061096f826127bd565b5f815f815181106119ff576119ff6138f9565b60200260200101519050919050565b5f81600381518110611a2257611a226138f9565b60200260200101515f5f1b14159050919050565b611a4260036020613979565b611a4f60208301836138b7565b905014611a6f576040516313717da960e21b815260040160405180910390fd5b611abe611a7f60208301836138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036129de565b610f39576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613b23565b9050806001600160401b03165f03611b88576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611ba9576001611bab565b5f5b9392505050565b60088414611bd35760405163200591bd60e01b815260040160405180910390fd5b5f611bdd886129f5565b905080611bec60286001613945565b611bf69190613945565b611c01906020613979565b8314611c20576040516313717da960e21b815260040160405180910390fd5b5f611c5c8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a1d92505050565b90505f64ffffffffff8416611c7360286001613945565b600b901b179050611cbd86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d92508691508590506129de565b611cda576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d165760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d44576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d60633b9aca0047613a72565b611d6a9190613a85565b9050818015611d8057506001600160401b038116155b15611d9e576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611db342610c8f565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b0267ffffffffffffffff60401b199092169190911790559050611e12816127bd565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611e9e8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119ec92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f0c57611f0c6134a0565b6002811115611f1d57611f1d6134a0565b90525090505f81606001516002811115611f3957611f396134a0565b14611f57576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611f9c8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612cad92505050565b6001600160401b031603611fc357604051631958236d60e21b815260040160405180910390fd5b6001600160401b0380166120088686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612cd192505050565b6001600160401b03161461202f57604051632eade63760e01b815260040160405180910390fd5b612037612442565b61204090613b3e565b61207b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce892505050565b14806120d0575061208a612cfc565b61209390613b3e565b6120ce8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce892505050565b145b6120ed57604051633772dd5360e11b815260040160405180910390fd5b5f6121298686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1892505050565b90506121426121378c611adb565b8b88888c8c8f611bb2565b60398054905f61215183613b61565b9091555050603a545f90600160401b90046001600160401b03161561218857603a54600160401b90046001600160401b0316612195565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561226a5761226a6134a0565b021790555050603d8054849250601390612295908490600160981b90046001600160401b0316613ad5565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516122f5919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612364633b9aca006001600160401b038416613979565b9c9b505050505050505050505050565b60605f61238083612d2f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123d457604051634f88323960e11b815260040160405180910390fd5b6040516002906123ea9084905f90602001613b79565b60408051601f1981840301815290829052612404916139a3565b602060405180830381855afa15801561241f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c8991906139be565b60405160609061245e90600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611340565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461250b576040519150601f19603f3d011682016040523d82523d5f602084013e612510565b606091505b50509050806112a55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611340565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112a5908490612d56565b5f6125e3846129f5565b90506125f0816003613945565b6125fb906020613979565b61260860208401846138b7565b905014612628576040516313717da960e21b815260040160405180910390fd5b6003811b600c1761267d61263f60208501856138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508892505086359050846129de565b6115e0576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126b2878388612e29565b9050846001600160401b0316816001600160401b03161461272c576126d78582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127b15760398054905f61275b83613c14565b9091555050600260608a015261277084613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612854578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b039283160217600160581b600160d81b031916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612870916001600160401b0316613ad5565b90505f826060015183604001516128879190613af4565b60408401516034805492935090915f906128ab9084906001600160401b0316613ad5565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506128fb90633b9aca00908516613979565b90505f612910633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a1ca780b926129aa92919091169086908690600401613958565b5f604051808303815f87803b1580156129c1575f5ffd5b505af11580156129d3573d5f5f3e3d5ffd5b505050505050505050565b5f836129eb868585612f07565b1495945050505050565b5f80826001811115612a0957612a096134a0565b14612a15576006610c89565b600592915050565b5f5f60028351612a2d9190613a72565b90505f816001600160401b03811115612a4857612a4861364e565b604051908082528060200260200182016040528015612a71578160200160208202803683370190505b5090505f5b82811015612b6b57600285612a8b8383613979565b81518110612a9b57612a9b6138f9565b602002602001015186836002612ab19190613979565b612abc906001613945565b81518110612acc57612acc6138f9565b6020026020010151604051602001612aee929190918252602082015260400190565b60408051601f1981840301815290829052612b08916139a3565b602060405180830381855afa158015612b23573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b4691906139be565b828281518110612b5857612b586138f9565b6020908102919091010152600101612a76565b50612b77600283613a72565b91505b8115612c8a575f5b82811015612c7757600282612b978383613979565b81518110612ba757612ba76138f9565b602002602001015183836002612bbd9190613979565b612bc8906001613945565b81518110612bd857612bd86138f9565b6020026020010151604051602001612bfa929190918252602082015260400190565b60408051601f1981840301815290829052612c14916139a3565b602060405180830381855afa158015612c2f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c5291906139be565b828281518110612c6457612c646138f9565b6020908102919091010152600101612b82565b50612c83600283613a72565b9150612b7a565b805f81518110612c9c57612c9c6138f9565b602002602001015192505050919050565b5f610c8982600581518110612cc457612cc46138f9565b6020026020010151612fdb565b5f610c8982600681518110612cc457612cc46138f9565b5f816001815181106119ff576119ff6138f9565b60405160609061245e90600160f91b905f903090602001613ba7565b5f610c8982600281518110612cc457612cc46138f9565b5f60ff8216601f811115610c8957604051632cd44ac360e21b815260040160405180910390fd5b5f612daa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661303e9092919063ffffffff16565b905080515f1480612dca575080806020019051810190612dca9190613857565b6112a55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611340565b5f612e3660266001613945565b612e41906020613979565b612e4e60408401846138b7565b905014612e6e576040516313717da960e21b815260040160405180910390fd5b5f612e7a600485613c7d565b64ffffffffff169050612ed3612e9360408501856138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846129de565b612ef0576040516309bde33960e01b815260040160405180910390fd5b612efe83602001358561304c565b95945050505050565b5f83515f14158015612f24575060208451612f229190613ca6565b155b612f41576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612fd157612f65600285613ca6565b5f03612f975781515f528086015160205260208260405f60026107d05a03fa612f8c575f5ffd5b600284049350612fbf565b808601515f52815160205260208260405f60026107d05a03fa612fb8575f5ffd5b6002840493505b612fca602082613945565b9050612f52565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161760ff60381b60889290921c919091161790565b6060610d9584845f85613078565b5f80613059600484613cb9565b613064906040613ce2565b64ffffffffff169050610d9584821b612fdb565b6060824710156130d95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611340565b5f5f866001600160a01b031685876040516130f491906139a3565b5f6040518083038185875af1925050503d805f811461312e576040519150601f19603f3d011682016040523d82523d5f602084013e613133565b606091505b50915091506131448783838761314f565b979650505050505050565b606083156131bd5782515f036131b6576001600160a01b0385163b6131b65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611340565b5081610d95565b610d9583838151156131d25781518083602001fd5b8060405162461bcd60e51b81526004016113409190613413565b6001600160401b0381168114613200575f5ffd5b50565b5f60408284031215613213575f5ffd5b50919050565b5f5f5f6060848603121561322b575f5ffd5b8335613236816131ec565b925060208401356001600160401b03811115613250575f5ffd5b61325c86828701613203565b92505060408401356001600160401b03811115613277575f5ffd5b61328386828701613203565b9150509250925092565b5f5f83601f84011261329d575f5ffd5b5081356001600160401b038111156132b3575f5ffd5b6020830191508360208260051b85010111156132cd575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156132eb575f5ffd5b88356132f6816131ec565b975060208901356001600160401b03811115613310575f5ffd5b61331c8b828c01613203565b97505060408901356001600160401b03811115613337575f5ffd5b6133438b828c0161328d565b90975095505060608901356001600160401b03811115613361575f5ffd5b61336d8b828c0161328d565b90955093505060808901356001600160401b0381111561338b575f5ffd5b6133978b828c0161328d565b999c989b5096995094979396929594505050565b5f602082840312156133bb575f5ffd5b8135611bab816131ec565b5f5b838110156133e05781810151838201526020016133c8565b50505f910152565b5f81518084526133ff8160208601602086016133c6565b601f01601f19169290920160200192915050565b602081525f611bab60208301846133e8565b5f5f83601f840112613435575f5ffd5b5081356001600160401b0381111561344b575f5ffd5b6020830191508360208285010111156132cd575f5ffd5b5f5f60208385031215613473575f5ffd5b82356001600160401b03811115613488575f5ffd5b61349485828601613425565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134d057634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610c8982846134b4565b5f602082840312156134f2575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161354560608401826134b4565b5092915050565b8015158114613200575f5ffd5b5f60208284031215613569575f5ffd5b8135611bab8161354c565b5f5f5f5f5f60608688031215613588575f5ffd5b85356001600160401b0381111561359d575f5ffd5b6135a988828901613425565b90965094505060208601356001600160401b038111156135c7575f5ffd5b6135d388828901613425565b96999598509660400135949350505050565b6001600160a01b0381168114613200575f5ffd5b8035613604816135e5565b919050565b5f5f6040838503121561361a575f5ffd5b8235613625816135e5565b946020939093013593505050565b5f60208284031215613643575f5ffd5b8135611bab816135e5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561368a5761368a61364e565b604052919050565b5f6001600160401b038211156136aa576136aa61364e565b5060051b60200190565b5f82601f8301126136c3575f5ffd5b81356136d66136d182613692565b613662565b8082825260208201915060208360051b8601019250858311156136f7575f5ffd5b602085015b838110156137145780358352602092830192016136fc565b5095945050505050565b5f5f5f60608486031215613730575f5ffd5b83356001600160401b03811115613745575f5ffd5b8401601f81018613613755575f5ffd5b80356137636136d182613692565b8082825260208201915060208360051b850101925088831115613784575f5ffd5b6020840193505b828410156137af57833561379e816135e5565b82526020938401939091019061378b565b955050505060208401356001600160401b038111156137cc575f5ffd5b6137d8868287016136b4565b9250506137e7604085016135f9565b90509250925092565b5f5f5f60408486031215613802575f5ffd5b83356001600160401b03811115613817575f5ffd5b61382386828701613203565b93505060208401356001600160401b0381111561383e575f5ffd5b61384a8682870161328d565b9497909650939450505050565b5f60208284031215613867575f5ffd5b8151611bab8161354c565b5f5f8335601e19843603018112613887575f5ffd5b8301803591506001600160401b038211156138a0575f5ffd5b6020019150600581901b36038213156132cd575f5ffd5b5f5f8335601e198436030181126138cc575f5ffd5b8301803591506001600160401b038211156138e5575f5ffd5b6020019150368190038213156132cd575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561391d575f5ffd5b813564ffffffffff81168114611bab575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c8957610c89613931565b6001600160a01b039390931683526020830191909152604082015260600190565b8082028115828204841417610c8957610c89613931565b81810381811115610c8957610c89613931565b5f82516139b48184602087016133c6565b9190910192915050565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133e8565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610d956020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610c8957610c89613931565b5f8235605e198336030181126139b4575f5ffd5b5f62ffffff821680613acc57613acc613931565b5f190192915050565b6001600160401b038181168382160190811115610c8957610c89613931565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c8957610c89613931565b5f60208284031215613b33575f5ffd5b8151611bab816131ec565b80516020808301519190811015613213575f1960209190910360031b1b16919050565b5f60018201613b7257613b72613931565b5060010190565b5f8351613b8a8184602088016133c6565b6001600160801b0319939093169190920190815260100192915050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c8957610c89613931565b5f81613c2257613c22613931565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c46613931565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c69613931565b8181058314821517610c8957610c89613931565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146135455761354561393156fea2646970667358221220f211b422d72daa88c7f346bfdb89f9350ba992a2adce4bb1e17e1d990df0225264736f6c634300081b0033
3021    /// ```
3022    #[rustfmt::skip]
3023    #[allow(clippy::all)]
3024    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3025        b"a\x01\0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa@\xC28\x03\x80a@\xC2\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xB9V[\x80a\09\x81a\0nV[`\x80RP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x16`\xC0R`\x01`\x01`@\x1B\x03\x82\x16`\xE0Ra\0ea\0\xB4V[PPPPa\x03\x03V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xA1W\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\x98\x91\x90a\x02\xABV[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xAC\x82a\x02\xDDV[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\x98V[_T`\xFF\x90\x81\x16\x14a\x01jW_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x80W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x01\xB1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\x99V[PP_\x91\x01RV[____`\x80\x85\x87\x03\x12\x15a\x01\xCCW__\xFD[\x84Qa\x01\xD7\x81a\x01lV[` \x86\x01Q\x90\x94Pa\x01\xE8\x81a\x01lV[`@\x86\x01Q\x90\x93P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x02\x04W__\xFD[``\x86\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1FW__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x02/W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02HWa\x02Ha\x01\x83V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02vWa\x02va\x01\x83V[`@R\x81\x81R\x82\x82\x01` \x01\x89\x10\x15a\x02\x8DW__\xFD[a\x02\x9E\x82` \x83\x01` \x86\x01a\x01\x97V[\x95\x98\x94\x97P\x92\x95PPPPV[` \x81R_\x82Q\x80` \x84\x01Ra\x02\xC9\x81`@\x85\x01` \x87\x01a\x01\x97V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xFDW_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa=8a\x03\x8A_9_a\x06!\x01R_\x81\x81a\x02\xA5\x01R\x81\x81a\x06\\\x01R\x81\x81a\x07\x04\x01R\x81\x81a\t\xD1\x01R\x81\x81a\x0B\x87\x01R\x81\x81a\x0E\xA1\x01R\x81\x81a\x0FH\x01R\x81\x81a\x11~\x01R\x81\x81a\x14\xCC\x01R\x81\x81a\x16\0\x01R\x81\x81a\x1A\xDF\x01Ra)m\x01R_\x81\x81a\x04\xE3\x01Ra\x0F\xB1\x01R_a\x0C\x04\x01Ra=8_\xF3\xFE`\x80`@R`\x046\x10a\x01`W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xBEW\x80c\xC4\x90tB\x11a\0xW\x80c\xC4\x90tB\x14a\x05VW\x80c\xC4\xD6m\xE8\x14a\x05uW\x80c\xD0mU\x87\x14a\x05\x94W\x80c\xDD\xA34l\x14a\x05\xB3W\x80c\xEE\x94\xD6|\x14a\x05\xD2W\x80c\xF0t\xBAb\x14a\x05\xF1W\x80c\xF2\x88$a\x14a\x06\x10W__\xFD[\x80co\xCD\x0ES\x14a\x04qW\x80ct9\x84\x1F\x14a\x04\x9DW\x80ct\xCD\xD7\x98\x14a\x04\xD2W\x80c\x88gl\xAD\x14a\x05\x05W\x80c\x9BNF4\x14a\x05$W\x80c\xB5\"S\x8A\x14a\x057W__\xFD[\x80cFe\xBC\xDA\x11a\x01\x1AW\x80cFe\xBC\xDA\x14a\x02\x94W\x80cG\xD2\x83r\x14a\x02\xC7W\x80cR9jY\x14a\x03\xB2W\x80cT\xFDMP\x14a\x03\xE6W\x80cXu3W\x14a\x04\x07W\x80cX\xEA\xEEy\x14a\x04&W\x80cl\r-Z\x14a\x04RW__\xFD[\x80c\x03\x91W\xD2\x14a\x01\x9EW\x80c\x0B\x18\xFFf\x14a\x01\xBFW\x80c#@\xE8\xD3\x14a\x01\xFBW\x80c4t\xAA\x16\x14a\x02\x1EW\x80c?e\xCF\x19\x14a\x02OW\x80cB\xEC\xFF*\x14a\x02nW__\xFD[6a\x01\x9AW`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[__\xFD[4\x80\x15a\x01\xA9W__\xFD[Pa\x01\xBDa\x01\xB86`\x04a2\x19V[a\x06CV[\0[4\x80\x15a\x01\xCAW__\xFD[P`3Ta\x01\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x06W__\xFD[Pa\x02\x10`9T\x81V[`@Q\x90\x81R` \x01a\x01\xF2V[4\x80\x15a\x02)W__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xF2V[4\x80\x15a\x02ZW__\xFD[Pa\x01\xBDa\x02i6`\x04a2\xD4V[a\txV[4\x80\x15a\x02yW__\xFD[P`:Ta\x027\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\x9FW__\xFD[Pa\x01\xDE\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\x81V[4\x80\x15a\x02\xD2W__\xFD[Pa\x03W`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x01\xF2\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xBDW__\xFD[Pa\x027a\x03\xCC6`\x04a3\xABV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x03\xF1W__\xFD[Pa\x03\xFAa\x0B\xFDV[`@Qa\x01\xF2\x91\x90a4\x13V[4\x80\x15a\x04\x12W__\xFD[P`>Ta\x01\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x041W__\xFD[Pa\x04Ea\x04@6`\x04a4bV[a\x0C-V[`@Qa\x01\xF2\x91\x90a4\xD4V[4\x80\x15a\x04]W__\xFD[Pa\x02\x10a\x04l6`\x04a3\xABV[a\x0C\x8FV[4\x80\x15a\x04|W__\xFD[Pa\x04\x90a\x04\x8B6`\x04a4\xE2V[a\r\x9DV[`@Qa\x01\xF2\x91\x90a4\xF9V[4\x80\x15a\x04\xA8W__\xFD[Pa\x04Ea\x04\xB76`\x04a4\xE2V[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xDDW__\xFD[Pa\x01\xDE\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\x81V[4\x80\x15a\x05\x10W__\xFD[Pa\x01\xBDa\x05\x1F6`\x04a5YV[a\x0EHV[a\x01\xBDa\x0526`\x04a5tV[a\x0F=V[4\x80\x15a\x05BW__\xFD[Pa\x04\x90a\x05Q6`\x04a4bV[a\x10\x84V[4\x80\x15a\x05aW__\xFD[Pa\x01\xBDa\x05p6`\x04a6\tV[a\x11sV[4\x80\x15a\x05\x80W__\xFD[Pa\x01\xBDa\x05\x8F6`\x04a63V[a\x12\xAAV[4\x80\x15a\x05\x9FW__\xFD[Pa\x01\xBDa\x05\xAE6`\x04a63V[a\x13\xF4V[4\x80\x15a\x05\xBEW__\xFD[Pa\x01\xBDa\x05\xCD6`\x04a7\x1EV[a\x14\x88V[4\x80\x15a\x05\xDDW__\xFD[P`:Ta\x027\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xFCW__\xFD[Pa\x01\xBDa\x06\x0B6`\x04a7\xF0V[a\x15\xE7V[4\x80\x15a\x06\x1BW__\xFD[Pa\x027\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\x81V[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xA9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xCD\x91\x90a8WV[\x15a\x06\xEBW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07QW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07u\x91\x90a8WV[\x15a\x07\x93W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xD7a\x07\xA1\x85\x80a8rV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xEC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x08EWa\x08Ea4\xA0V[`\x02\x81\x11\x15a\x08VWa\x08Va4\xA0V[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\x92W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xAAWa\x08\xAAa4\xA0V[\x14a\x08\xC8W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x0Ba\x08\xD5\x86\x80a8rV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x0E\x92PPPV[a\t(W`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t:a\t4\x88a\x0C\x8FV[\x87a\x1A6V[a\tfa\tF\x88a\x1A\xDBV[\x875a\tR\x88\x80a8rV[a\t_` \x8B\x01\x8Ba8\xB7V[\x87Qa\x1B\xB2V[a\to_a\x1C\xE6V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\x9BWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xB8W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nB\x91\x90a8WV[\x15a\n`W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\nnWP\x83\x82\x14[a\n\x8BW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xC1W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xD3a\n\xCD\x8Aa\x0C\x8FV[\x89a\x1A6V[_\x80[\x87\x81\x10\x15a\x0BlWa\x0BX\x8B\x8B5\x8B\x8B\x85\x81\x81\x10a\n\xF6Wa\n\xF6a8\xF9V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x0B\x91\x90a9\rV[\x8A\x8A\x86\x81\x81\x10a\x0B\x1DWa\x0B\x1Da8\xF9V[\x90P` \x02\x81\x01\x90a\x0B/\x91\x90a8\xB7V[\x8A\x8A\x88\x81\x81\x10a\x0BAWa\x0BAa8\xF9V[\x90P` \x02\x81\x01\x90a\x0BS\x91\x90a8rV[a\x1EaV[a\x0Bb\x90\x83a9EV[\x91P`\x01\x01a\n\xD6V[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\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\x81\x16\x92c\xA1\xCAx\x0B\x92a\x0B\xC4\x92\x91\x90\x91\x16\x90_\x90\x86\x90`\x04\x01a9XV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xDBW__\xFD[PZ\xF1\x15\x80\x15a\x0B\xEDW=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C(\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\0a#tV[\x90P\x90V[__a\x0Cm\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPa#\xB1\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\x9Da\x1F\xFF`\x0Ca9yV[a\x0C\xB0`\x01`\x01`@\x1B\x03\x84\x16Ba9\x90V[\x10a\x0C\xCEW`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x15\x91a9\xA3V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\rMW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rRV[``\x91P[P\x91P\x91P\x81\x80\x15a\rdWP_\x81Q\x11[a\r\x81W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\x95\x91\x90a9\xBEV[\x94\x93PPPPV[a\r\xC4`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x0E.Wa\x0E.a4\xA0V[`\x02\x81\x11\x15a\x0E?Wa\x0E?a4\xA0V[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0EkWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\x88W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xEEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x12\x91\x90a8WV[\x15a\x0F0W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F9\x82a\x1C\xE6V[PPV[3`\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\x0F\x86W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xAFW`@Qc\x04\x96\x96\xB3`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x0F\xF2a$BV[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x16\x96\x95\x94\x93\x92\x91\x90a9\xFDV[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10-W__\xFD[PZ\xF1\x15\x80\x15a\x10?W=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10u\x92\x91\x90a:KV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xAB`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x10\xEC\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPa#\xB1\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x11XWa\x11Xa4\xA0V[`\x02\x81\x11\x15a\x11iWa\x11ia4\xA0V[\x90RP\x93\x92PPPV[3`\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\x11\xBCW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xCBc;\x9A\xCA\0\x83a:rV[\x90Pa\x11\xE4c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a9yV[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12\x17W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x124\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a:\x85V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x12\x93\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xA5\x83\x83a$rV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xC8WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xE1WP0;\x15\x80\x15a\x12\xE1WP_T`\xFF\x16`\x01\x14[a\x13IW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13jW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\x91W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0F9W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\x1FW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xB3W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15=\x91\x90a8WV[\x15a\x15[W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15}W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xE0Wa\x15\xD8\x83\x85\x83\x81Q\x81\x10a\x15\x9EWa\x15\x9Ea8\xF9V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xB8Wa\x15\xB8a8\xF9V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a%\x87\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x7FV[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16MW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16q\x91\x90a8WV[\x15a\x16\x8FW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xC3W`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01Ra\x17*a\x17\"\x83a\x1A\xDBV[\x82Q\x88a%\xD9V[_\x80[\x85\x81\x10\x15a\x19\x93W6\x87\x87\x83\x81\x81\x10a\x17HWa\x17Ha8\xF9V[\x90P` \x02\x81\x01\x90a\x17Z\x91\x90a:\xA4V[\x805_\x90\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x17\xCAWa\x17\xCAa4\xA0V[`\x02\x81\x11\x15a\x17\xDBWa\x17\xDBa4\xA0V[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x17\xF8Wa\x17\xF8a4\xA0V[\x14a\x18\x04WPPa\x19\x8BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x18(WPPa\x19\x8BV[_\x80\x80a\x188\x84\x8A\x8F5\x88a&\x9AV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18O\x82a:\xB8V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18k\x90\x83\x90a:\xD5V[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x8B\x90\x83\x90a:\xF4V[`\x07\x0B\x90RPa\x18\x9B\x81\x88a:\xD5V[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19?Wa\x19?a4\xA0V[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17-V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xBF\x91\x85\x91\x16a:\xD5V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\to\x82a'\xBDV[_\x81_\x81Q\x81\x10a\x19\xFFWa\x19\xFFa8\xF9V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A\"Wa\x1A\"a8\xF9V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AB`\x03` a9yV[a\x1AO` \x83\x01\x83a8\xB7V[\x90P\x14a\x1AoW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xBEa\x1A\x7F` \x83\x01\x83a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x86\x92PP\x845\x90P`\x03a)\xDEV[a\x0F9W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\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\x16c'\x045\x1A`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B]\x91\x90a;#V[\x90P\x80`\x01`\x01`@\x1B\x03\x16_\x03a\x1B\x88W`@QcA\xA0,\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11\x15a\x1B\xA9W`\x01a\x1B\xABV[_[\x93\x92PPPV[`\x08\x84\x14a\x1B\xD3W`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\xDD\x88a)\xF5V[\x90P\x80a\x1B\xEC`(`\x01a9EV[a\x1B\xF6\x91\x90a9EV[a\x1C\x01\x90` a9yV[\x83\x14a\x1C W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\\\x87\x87\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa*\x1D\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x84\x16a\x1Cs`(`\x01a9EV[`\x0B\x90\x1B\x17\x90Pa\x1C\xBD\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x8D\x92P\x86\x91P\x85\x90Pa)\xDEV[a\x1C\xDAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1D\x16W`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1DDW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1D`c;\x9A\xCA\0Ga:rV[a\x1Dj\x91\x90a:\x85V[\x90P\x81\x80\x15a\x1D\x80WP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1D\x9EW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1D\xB3Ba\x0C\x8FV[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1E\x12\x81a'\xBDV[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1E\x9E\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xEC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x1F\x0CWa\x1F\x0Ca4\xA0V[`\x02\x81\x11\x15a\x1F\x1DWa\x1F\x1Da4\xA0V[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1F9Wa\x1F9a4\xA0V[\x14a\x1FWW`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F\x9C\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xAD\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1F\xC3W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a \x08\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xD1\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a /W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a 7a$BV[a @\x90a;>V[a {\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xE8\x92PPPV[\x14\x80a \xD0WPa \x8Aa,\xFCV[a \x93\x90a;>V[a \xCE\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xE8\x92PPPV[\x14[a \xEDW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!)\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa-\x18\x92PPPV[\x90Pa!Ba!7\x8Ca\x1A\xDBV[\x8B\x88\x88\x8C\x8C\x8Fa\x1B\xB2V[`9\x80T\x90_a!Q\x83a;aV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a!\x88W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a!\x95V[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\"jWa\"ja4\xA0V[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a\"\x95\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa\"\xF5\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a#dc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a9yV[\x9C\x9BPPPPPPPPPPPPV[``_a#\x80\x83a-/V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a#\xD4W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a#\xEA\x90\x84\x90_\x90` \x01a;yV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra$\x04\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a$\x1FW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x89\x91\x90a9\xBEV[`@Q``\x90a$^\x90`\x01`\xF8\x1B\x90_\x900\x90` \x01a;\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a$\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13@V[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a%\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\x10V[``\x91P[PP\x90P\x80a\x12\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x13@V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x12\xA5\x90\x84\x90a-VV[_a%\xE3\x84a)\xF5V[\x90Pa%\xF0\x81`\x03a9EV[a%\xFB\x90` a9yV[a&\x08` \x84\x01\x84a8\xB7V[\x90P\x14a&(W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03\x81\x1B`\x0C\x17a&}a&?` \x85\x01\x85a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x88\x92PP\x865\x90P\x84a)\xDEV[a\x15\xE0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a&\xB2\x87\x83\x88a.)V[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a',Wa&\xD7\x85\x82a;\xE5V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01R_\x03a'\xB1W`9\x80T\x90_a'[\x83a<\x14V[\x90\x91UPP`\x02``\x8A\x01Ra'p\x84a<)V[\x92P\x81d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a(TW\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17`\x01`X\x1B`\x01`\xD8\x1B\x03\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a(p\x91`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x90P_\x82``\x01Q\x83`@\x01Qa(\x87\x91\x90a:\xF4V[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a(\xAB\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa(\xFB\x90c;\x9A\xCA\0\x90\x85\x16a9yV[\x90P_a)\x10c;\x9A\xCA\0`\x07\x85\x90\x0Ba<NV[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\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\x81\x16\x92c\xA1\xCAx\x0B\x92a)\xAA\x92\x91\x90\x91\x16\x90\x86\x90\x86\x90`\x04\x01a9XV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a)\xC1W__\xFD[PZ\xF1\x15\x80\x15a)\xD3W=__>=_\xFD[PPPPPPPPPV[_\x83a)\xEB\x86\x85\x85a/\x07V[\x14\x95\x94PPPPPV[_\x80\x82`\x01\x81\x11\x15a*\tWa*\ta4\xA0V[\x14a*\x15W`\x06a\x0C\x89V[`\x05\x92\x91PPV[__`\x02\x83Qa*-\x91\x90a:rV[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a*HWa*Ha6NV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a*qW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a+kW`\x02\x85a*\x8B\x83\x83a9yV[\x81Q\x81\x10a*\x9BWa*\x9Ba8\xF9V[` \x02` \x01\x01Q\x86\x83`\x02a*\xB1\x91\x90a9yV[a*\xBC\x90`\x01a9EV[\x81Q\x81\x10a*\xCCWa*\xCCa8\xF9V[` \x02` \x01\x01Q`@Q` \x01a*\xEE\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\x08\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+#W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+F\x91\x90a9\xBEV[\x82\x82\x81Q\x81\x10a+XWa+Xa8\xF9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*vV[Pa+w`\x02\x83a:rV[\x91P[\x81\x15a,\x8AW_[\x82\x81\x10\x15a,wW`\x02\x82a+\x97\x83\x83a9yV[\x81Q\x81\x10a+\xA7Wa+\xA7a8\xF9V[` \x02` \x01\x01Q\x83\x83`\x02a+\xBD\x91\x90a9yV[a+\xC8\x90`\x01a9EV[\x81Q\x81\x10a+\xD8Wa+\xD8a8\xF9V[` \x02` \x01\x01Q`@Q` \x01a+\xFA\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra,\x14\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a,/W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,R\x91\x90a9\xBEV[\x82\x82\x81Q\x81\x10a,dWa,da8\xF9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a+\x82V[Pa,\x83`\x02\x83a:rV[\x91Pa+zV[\x80_\x81Q\x81\x10a,\x9CWa,\x9Ca8\xF9V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\x89\x82`\x05\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[` \x02` \x01\x01Qa/\xDBV[_a\x0C\x89\x82`\x06\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[_\x81`\x01\x81Q\x81\x10a\x19\xFFWa\x19\xFFa8\xF9V[`@Q``\x90a$^\x90`\x01`\xF9\x1B\x90_\x900\x90` \x01a;\xA7V[_a\x0C\x89\x82`\x02\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\x89W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\xAA\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a0>\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a-\xCAWP\x80\x80` \x01\x90Q\x81\x01\x90a-\xCA\x91\x90a8WV[a\x12\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x13@V[_a.6`&`\x01a9EV[a.A\x90` a9yV[a.N`@\x84\x01\x84a8\xB7V[\x90P\x14a.nW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a.z`\x04\x85a<}V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa.\xD3a.\x93`@\x85\x01\x85a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x89\x92PPP` \x86\x015\x84a)\xDEV[a.\xF0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a.\xFE\x83` \x015\x85a0LV[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a/$WP` \x84Qa/\"\x91\x90a<\xA6V[\x15[a/AW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a/\xD1Wa/e`\x02\x85a<\xA6V[_\x03a/\x97W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa/\x8CW__\xFD[`\x02\x84\x04\x93Pa/\xBFV[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa/\xB8W__\xFD[`\x02\x84\x04\x93P[a/\xCA` \x82a9EV[\x90Pa/RV[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17`\xFF`8\x1B`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\r\x95\x84\x84_\x85a0xV[_\x80a0Y`\x04\x84a<\xB9V[a0d\x90`@a<\xE2V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\x95\x84\x82\x1Ba/\xDBV[``\x82G\x10\x15a0\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x13@V[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa0\xF4\x91\x90a9\xA3V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a1.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a13V[``\x91P[P\x91P\x91Pa1D\x87\x83\x83\x87a1OV[\x97\x96PPPPPPPV[``\x83\x15a1\xBDW\x82Q_\x03a1\xB6W`\x01`\x01`\xA0\x1B\x03\x85\x16;a1\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x13@V[P\x81a\r\x95V[a\r\x95\x83\x83\x81Q\x15a1\xD2W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13@\x91\x90a4\x13V[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a2\0W__\xFD[PV[_`@\x82\x84\x03\x12\x15a2\x13W__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a2+W__\xFD[\x835a26\x81a1\xECV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2PW__\xFD[a2\\\x86\x82\x87\x01a2\x03V[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2wW__\xFD[a2\x83\x86\x82\x87\x01a2\x03V[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a2\x9DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xB3W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a2\xCDW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a2\xEBW__\xFD[\x885a2\xF6\x81a1\xECV[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x10W__\xFD[a3\x1C\x8B\x82\x8C\x01a2\x03V[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a37W__\xFD[a3C\x8B\x82\x8C\x01a2\x8DV[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3aW__\xFD[a3m\x8B\x82\x8C\x01a2\x8DV[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x8BW__\xFD[a3\x97\x8B\x82\x8C\x01a2\x8DV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a3\xBBW__\xFD[\x815a\x1B\xAB\x81a1\xECV[_[\x83\x81\x10\x15a3\xE0W\x81\x81\x01Q\x83\x82\x01R` \x01a3\xC8V[PP_\x91\x01RV[_\x81Q\x80\x84Ra3\xFF\x81` \x86\x01` \x86\x01a3\xC6V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x1B\xAB` \x83\x01\x84a3\xE8V[__\x83`\x1F\x84\x01\x12a45W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4KW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a2\xCDW__\xFD[__` \x83\x85\x03\x12\x15a4sW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x88W__\xFD[a4\x94\x85\x82\x86\x01a4%V[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a4\xD0WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\x89\x82\x84a4\xB4V[_` \x82\x84\x03\x12\x15a4\xF2W__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa5E``\x84\x01\x82a4\xB4V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2\0W__\xFD[_` \x82\x84\x03\x12\x15a5iW__\xFD[\x815a\x1B\xAB\x81a5LV[_____``\x86\x88\x03\x12\x15a5\x88W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x9DW__\xFD[a5\xA9\x88\x82\x89\x01a4%V[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xC7W__\xFD[a5\xD3\x88\x82\x89\x01a4%V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2\0W__\xFD[\x805a6\x04\x81a5\xE5V[\x91\x90PV[__`@\x83\x85\x03\x12\x15a6\x1AW__\xFD[\x825a6%\x81a5\xE5V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a6CW__\xFD[\x815a\x1B\xAB\x81a5\xE5V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a6\x8AWa6\x8Aa6NV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a6\xAAWa6\xAAa6NV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a6\xC3W__\xFD[\x815a6\xD6a6\xD1\x82a6\x92V[a6bV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a6\xF7W__\xFD[` \x85\x01[\x83\x81\x10\x15a7\x14W\x805\x83R` \x92\x83\x01\x92\x01a6\xFCV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a70W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a7EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a7UW__\xFD[\x805a7ca6\xD1\x82a6\x92V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a7\x84W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a7\xAFW\x835a7\x9E\x81a5\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a7\x8BV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xCCW__\xFD[a7\xD8\x86\x82\x87\x01a6\xB4V[\x92PPa7\xE7`@\x85\x01a5\xF9V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a8\x02W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a8\x17W__\xFD[a8#\x86\x82\x87\x01a2\x03V[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a8>W__\xFD[a8J\x86\x82\x87\x01a2\x8DV[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a8gW__\xFD[\x81Qa\x1B\xAB\x81a5LV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a8\x87W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a8\xA0W__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a2\xCDW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a8\xCCW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a8\xE5W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a2\xCDW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\x1DW__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1B\xABW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\x89Wa\x0C\x89a91V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x89Wa\x0C\x89a91V[\x81\x81\x03\x81\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[_\x82Qa9\xB4\x81\x84` \x87\x01a3\xC6V[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a9\xCEW__\xFD[PQ\x91\x90PV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x80\x81R_a:\x10`\x80\x83\x01\x88\x8Aa9\xD5V[\x82\x81\x03` \x84\x01Ra:\"\x81\x88a3\xE8V[\x90P\x82\x81\x03`@\x84\x01Ra:7\x81\x86\x88a9\xD5V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\x95` \x83\x01\x84\x86a9\xD5V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a:\x80Wa:\x80a:^V[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[_\x825`^\x19\x836\x03\x01\x81\x12a9\xB4W__\xFD[_b\xFF\xFF\xFF\x82\x16\x80a:\xCCWa:\xCCa91V[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\x89Wa\x0C\x89a91V[_` \x82\x84\x03\x12\x15a;3W__\xFD[\x81Qa\x1B\xAB\x81a1\xECV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a2\x13W_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a;rWa;ra91V[P`\x01\x01\x90V[_\x83Qa;\x8A\x81\x84` \x88\x01a3\xC6V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83R`\x01`\x01`\xA8\x1B\x03\x19\x91\x90\x91\x16`\x01\x83\x01R``\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x0C\x82\x01R` \x01\x90V[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\x89Wa\x0C\x89a91V[_\x81a<\"Wa<\"a91V[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a<FWa<Fa91V[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a<iWa<ia91V[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\x89Wa\x0C\x89a91V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a<\x93Wa<\x93a:^V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a<\xB4Wa<\xB4a:^V[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a<\xCFWa<\xCFa:^V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a5EWa5Ea91V\xFE\xA2dipfsX\"\x12 \xF2\x11\xB4\"\xD7-\xAA\x88\xC7\xF3F\xBF\xDB\x89\xF95\x0B\xA9\x92\xA2\xAD\xCEK\xB1\xE1~\x1D\x99\r\xF0\"RdsolcC\0\x08\x1B\x003",
3026    );
3027    /// The runtime bytecode of the contract, as deployed on the network.
3028    ///
3029    /// ```text
3030    ///0x608060405260043610610160575f3560e01c80636fcd0e53116100be578063c490744211610078578063c490744214610556578063c4d66de814610575578063d06d558714610594578063dda3346c146105b3578063ee94d67c146105d2578063f074ba62146105f1578063f288246114610610575f5ffd5b80636fcd0e53146104715780637439841f1461049d57806374cdd798146104d257806388676cad146105055780639b4e463414610524578063b522538a14610537575f5ffd5b80634665bcda1161011a5780634665bcda1461029457806347d28372146102c757806352396a59146103b257806354fd4d50146103e6578063587533571461040757806358eaee79146104265780636c0d2d5a14610452575f5ffd5b8063039157d21461019e5780630b18ff66146101bf5780632340e8d3146101fb5780633474aa161461021e5780633f65cf191461024f57806342ecff2a1461026e575f5ffd5b3661019a576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101a9575f5ffd5b506101bd6101b8366004613219565b610643565b005b3480156101ca575f5ffd5b506033546101de906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610206575f5ffd5b5061021060395481565b6040519081526020016101f2565b348015610229575f5ffd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101f2565b34801561025a575f5ffd5b506101bd6102693660046132d4565b610978565b348015610279575f5ffd5b50603a5461023790600160401b90046001600160401b031681565b34801561029f575f5ffd5b506101de7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d2575f5ffd5b506103576040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101f291905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103bd575f5ffd5b506102376103cc3660046133ab565b603b6020525f90815260409020546001600160401b031681565b3480156103f1575f5ffd5b506103fa610bfd565b6040516101f29190613413565b348015610412575f5ffd5b50603e546101de906001600160a01b031681565b348015610431575f5ffd5b50610445610440366004613462565b610c2d565b6040516101f291906134d4565b34801561045d575f5ffd5b5061021061046c3660046133ab565b610c8f565b34801561047c575f5ffd5b5061049061048b3660046134e2565b610d9d565b6040516101f291906134f9565b3480156104a8575f5ffd5b506104456104b73660046134e2565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104dd575f5ffd5b506101de7f000000000000000000000000000000000000000000000000000000000000000081565b348015610510575f5ffd5b506101bd61051f366004613559565b610e48565b6101bd610532366004613574565b610f3d565b348015610542575f5ffd5b50610490610551366004613462565b611084565b348015610561575f5ffd5b506101bd610570366004613609565b611173565b348015610580575f5ffd5b506101bd61058f366004613633565b6112aa565b34801561059f575f5ffd5b506101bd6105ae366004613633565b6113f4565b3480156105be575f5ffd5b506101bd6105cd36600461371e565b611488565b3480156105dd575f5ffd5b50603a54610237906001600160401b031681565b3480156105fc575f5ffd5b506101bd61060b3660046137f0565b6115e7565b34801561061b575f5ffd5b506102377f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190613857565b156106eb5760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610751573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107759190613857565b156107935760405163840a48d560e01b815260040160405180910390fd5b5f6107d76107a18580613872565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119ec92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610845576108456134a0565b6002811115610856576108566134a0565b81525050905080604001516001600160401b0316876001600160401b031611610892576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108aa576108aa6134a0565b146108c85760405163d49e19a760e01b815260040160405180910390fd5b61090b6108d58680613872565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b6109285760405163161ce5ed60e31b815260040160405180910390fd5b61093a61093488610c8f565b87611a36565b61096661094688611adb565b87356109528880613872565b61095f60208b018b6138b7565b8751611bb2565b61096f5f611ce6565b50505050505050565b6033546001600160a01b031633148061099b5750603e546001600160a01b031633145b6109b85760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a429190613857565b15610a605760405163840a48d560e01b815260040160405180910390fd5b8584148015610a6e57508382145b610a8b576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ac1576040516337e07ffd60e01b815260040160405180910390fd5b610ad3610acd8a610c8f565b89611a36565b5f805b87811015610b6c57610b588b8b358b8b85818110610af657610af66138f9565b9050602002016020810190610b0b919061390d565b8a8a86818110610b1d57610b1d6138f9565b9050602002810190610b2f91906138b7565b8a8a88818110610b4157610b416138f9565b9050602002810190610b539190613872565b611e61565b610b629083613945565b9150600101610ad6565b5060335460405163a1ca780b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a1ca780b92610bc49291909116905f908690600401613958565b5f604051808303815f87803b158015610bdb575f5ffd5b505af1158015610bed573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c287f0000000000000000000000000000000000000000000000000000000000000000612374565b905090565b5f5f610c6d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123b192505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610c9d611fff600c613979565b610cb06001600160401b03841642613990565b10610cce57604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d15916139a3565b5f60405180830381855afa9150503d805f8114610d4d576040519150601f19603f3d011682016040523d82523d5f602084013e610d52565b606091505b5091509150818015610d6457505f8151115b610d815760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d9591906139be565b949350505050565b610dc4604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e2e57610e2e6134a0565b6002811115610e3f57610e3f6134a0565b90525092915050565b6033546001600160a01b0316331480610e6b5750603e546001600160a01b031633145b610e885760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610eee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f129190613857565b15610f305760405163840a48d560e01b815260040160405180910390fd5b610f3982611ce6565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8657604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610faf5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ff2612442565b8888886040518863ffffffff1660e01b8152600401611016969594939291906139fd565b5f604051808303818588803b15801561102d575f5ffd5b505af115801561103f573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611075929190613a4b565b60405180910390a15050505050565b6110ab604080516080810182525f8082526020820181905291810182905290606082015290565b60365f6110ec85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123b192505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff166002811115611158576111586134a0565b6002811115611169576111696134a0565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111bc57604051633213a66160e21b815260040160405180910390fd5b5f6111cb633b9aca0083613a72565b90506111e4633b9aca006001600160401b038316613979565b6034549092506001600160401b039081169082161115611217576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112349084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161129391815260200190565b60405180910390a26112a58383612472565b505050565b5f54610100900460ff16158080156112c857505f54600160ff909116105b806112e15750303b1580156112e157505f5460ff166001145b6113495760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561136a575f805461ff0019166101001790555b6001600160a01b038216611391576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f39575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461141f5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114b35760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190613857565b1561155b5760405163840a48d560e01b815260040160405180910390fd5b825184511461157d576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115e0576115d88385838151811061159e5761159e6138f9565b60200260200101518784815181106115b8576115b86138f9565b60200260200101516001600160a01b03166125879092919063ffffffff16565b60010161157f565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561164d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116719190613857565b1561168f5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116c357604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261172a61172283611adb565b8251886125d9565b5f805b858110156119935736878783818110611748576117486138f9565b905060200281019061175a9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ca576117ca6134a0565b60028111156117db576117db6134a0565b90525090506001816060015160028111156117f8576117f86134a0565b1461180457505061198b565b856001600160401b031681604001516001600160401b03161061182857505061198b565b5f8080611838848a8f358861269a565b60208b018051939650919450925061184f82613ab8565b62ffffff1690525060808801805184919061186b908390613ad5565b6001600160401b031690525060608801805183919061188b908390613af4565b60070b90525061189b8188613ad5565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561193f5761193f6134a0565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161172d565b506001600160401b038084165f908152603b60205260408120805484939192916119bf91859116613ad5565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061096f826127bd565b5f815f815181106119ff576119ff6138f9565b60200260200101519050919050565b5f81600381518110611a2257611a226138f9565b60200260200101515f5f1b14159050919050565b611a4260036020613979565b611a4f60208301836138b7565b905014611a6f576040516313717da960e21b815260040160405180910390fd5b611abe611a7f60208301836138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036129de565b610f39576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613b23565b9050806001600160401b03165f03611b88576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611ba9576001611bab565b5f5b9392505050565b60088414611bd35760405163200591bd60e01b815260040160405180910390fd5b5f611bdd886129f5565b905080611bec60286001613945565b611bf69190613945565b611c01906020613979565b8314611c20576040516313717da960e21b815260040160405180910390fd5b5f611c5c8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a1d92505050565b90505f64ffffffffff8416611c7360286001613945565b600b901b179050611cbd86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d92508691508590506129de565b611cda576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d165760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d44576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d60633b9aca0047613a72565b611d6a9190613a85565b9050818015611d8057506001600160401b038116155b15611d9e576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611db342610c8f565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b0267ffffffffffffffff60401b199092169190911790559050611e12816127bd565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611e9e8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119ec92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f0c57611f0c6134a0565b6002811115611f1d57611f1d6134a0565b90525090505f81606001516002811115611f3957611f396134a0565b14611f57576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611f9c8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612cad92505050565b6001600160401b031603611fc357604051631958236d60e21b815260040160405180910390fd5b6001600160401b0380166120088686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612cd192505050565b6001600160401b03161461202f57604051632eade63760e01b815260040160405180910390fd5b612037612442565b61204090613b3e565b61207b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce892505050565b14806120d0575061208a612cfc565b61209390613b3e565b6120ce8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce892505050565b145b6120ed57604051633772dd5360e11b815260040160405180910390fd5b5f6121298686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1892505050565b90506121426121378c611adb565b8b88888c8c8f611bb2565b60398054905f61215183613b61565b9091555050603a545f90600160401b90046001600160401b03161561218857603a54600160401b90046001600160401b0316612195565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561226a5761226a6134a0565b021790555050603d8054849250601390612295908490600160981b90046001600160401b0316613ad5565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516122f5919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612364633b9aca006001600160401b038416613979565b9c9b505050505050505050505050565b60605f61238083612d2f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123d457604051634f88323960e11b815260040160405180910390fd5b6040516002906123ea9084905f90602001613b79565b60408051601f1981840301815290829052612404916139a3565b602060405180830381855afa15801561241f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c8991906139be565b60405160609061245e90600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611340565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461250b576040519150601f19603f3d011682016040523d82523d5f602084013e612510565b606091505b50509050806112a55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611340565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112a5908490612d56565b5f6125e3846129f5565b90506125f0816003613945565b6125fb906020613979565b61260860208401846138b7565b905014612628576040516313717da960e21b815260040160405180910390fd5b6003811b600c1761267d61263f60208501856138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508892505086359050846129de565b6115e0576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126b2878388612e29565b9050846001600160401b0316816001600160401b03161461272c576126d78582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127b15760398054905f61275b83613c14565b9091555050600260608a015261277084613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612854578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b039283160217600160581b600160d81b031916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612870916001600160401b0316613ad5565b90505f826060015183604001516128879190613af4565b60408401516034805492935090915f906128ab9084906001600160401b0316613ad5565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506128fb90633b9aca00908516613979565b90505f612910633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a1ca780b926129aa92919091169086908690600401613958565b5f604051808303815f87803b1580156129c1575f5ffd5b505af11580156129d3573d5f5f3e3d5ffd5b505050505050505050565b5f836129eb868585612f07565b1495945050505050565b5f80826001811115612a0957612a096134a0565b14612a15576006610c89565b600592915050565b5f5f60028351612a2d9190613a72565b90505f816001600160401b03811115612a4857612a4861364e565b604051908082528060200260200182016040528015612a71578160200160208202803683370190505b5090505f5b82811015612b6b57600285612a8b8383613979565b81518110612a9b57612a9b6138f9565b602002602001015186836002612ab19190613979565b612abc906001613945565b81518110612acc57612acc6138f9565b6020026020010151604051602001612aee929190918252602082015260400190565b60408051601f1981840301815290829052612b08916139a3565b602060405180830381855afa158015612b23573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b4691906139be565b828281518110612b5857612b586138f9565b6020908102919091010152600101612a76565b50612b77600283613a72565b91505b8115612c8a575f5b82811015612c7757600282612b978383613979565b81518110612ba757612ba76138f9565b602002602001015183836002612bbd9190613979565b612bc8906001613945565b81518110612bd857612bd86138f9565b6020026020010151604051602001612bfa929190918252602082015260400190565b60408051601f1981840301815290829052612c14916139a3565b602060405180830381855afa158015612c2f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c5291906139be565b828281518110612c6457612c646138f9565b6020908102919091010152600101612b82565b50612c83600283613a72565b9150612b7a565b805f81518110612c9c57612c9c6138f9565b602002602001015192505050919050565b5f610c8982600581518110612cc457612cc46138f9565b6020026020010151612fdb565b5f610c8982600681518110612cc457612cc46138f9565b5f816001815181106119ff576119ff6138f9565b60405160609061245e90600160f91b905f903090602001613ba7565b5f610c8982600281518110612cc457612cc46138f9565b5f60ff8216601f811115610c8957604051632cd44ac360e21b815260040160405180910390fd5b5f612daa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661303e9092919063ffffffff16565b905080515f1480612dca575080806020019051810190612dca9190613857565b6112a55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611340565b5f612e3660266001613945565b612e41906020613979565b612e4e60408401846138b7565b905014612e6e576040516313717da960e21b815260040160405180910390fd5b5f612e7a600485613c7d565b64ffffffffff169050612ed3612e9360408501856138b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846129de565b612ef0576040516309bde33960e01b815260040160405180910390fd5b612efe83602001358561304c565b95945050505050565b5f83515f14158015612f24575060208451612f229190613ca6565b155b612f41576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612fd157612f65600285613ca6565b5f03612f975781515f528086015160205260208260405f60026107d05a03fa612f8c575f5ffd5b600284049350612fbf565b808601515f52815160205260208260405f60026107d05a03fa612fb8575f5ffd5b6002840493505b612fca602082613945565b9050612f52565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161760ff60381b60889290921c919091161790565b6060610d9584845f85613078565b5f80613059600484613cb9565b613064906040613ce2565b64ffffffffff169050610d9584821b612fdb565b6060824710156130d95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611340565b5f5f866001600160a01b031685876040516130f491906139a3565b5f6040518083038185875af1925050503d805f811461312e576040519150601f19603f3d011682016040523d82523d5f602084013e613133565b606091505b50915091506131448783838761314f565b979650505050505050565b606083156131bd5782515f036131b6576001600160a01b0385163b6131b65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611340565b5081610d95565b610d9583838151156131d25781518083602001fd5b8060405162461bcd60e51b81526004016113409190613413565b6001600160401b0381168114613200575f5ffd5b50565b5f60408284031215613213575f5ffd5b50919050565b5f5f5f6060848603121561322b575f5ffd5b8335613236816131ec565b925060208401356001600160401b03811115613250575f5ffd5b61325c86828701613203565b92505060408401356001600160401b03811115613277575f5ffd5b61328386828701613203565b9150509250925092565b5f5f83601f84011261329d575f5ffd5b5081356001600160401b038111156132b3575f5ffd5b6020830191508360208260051b85010111156132cd575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156132eb575f5ffd5b88356132f6816131ec565b975060208901356001600160401b03811115613310575f5ffd5b61331c8b828c01613203565b97505060408901356001600160401b03811115613337575f5ffd5b6133438b828c0161328d565b90975095505060608901356001600160401b03811115613361575f5ffd5b61336d8b828c0161328d565b90955093505060808901356001600160401b0381111561338b575f5ffd5b6133978b828c0161328d565b999c989b5096995094979396929594505050565b5f602082840312156133bb575f5ffd5b8135611bab816131ec565b5f5b838110156133e05781810151838201526020016133c8565b50505f910152565b5f81518084526133ff8160208601602086016133c6565b601f01601f19169290920160200192915050565b602081525f611bab60208301846133e8565b5f5f83601f840112613435575f5ffd5b5081356001600160401b0381111561344b575f5ffd5b6020830191508360208285010111156132cd575f5ffd5b5f5f60208385031215613473575f5ffd5b82356001600160401b03811115613488575f5ffd5b61349485828601613425565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134d057634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610c8982846134b4565b5f602082840312156134f2575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161354560608401826134b4565b5092915050565b8015158114613200575f5ffd5b5f60208284031215613569575f5ffd5b8135611bab8161354c565b5f5f5f5f5f60608688031215613588575f5ffd5b85356001600160401b0381111561359d575f5ffd5b6135a988828901613425565b90965094505060208601356001600160401b038111156135c7575f5ffd5b6135d388828901613425565b96999598509660400135949350505050565b6001600160a01b0381168114613200575f5ffd5b8035613604816135e5565b919050565b5f5f6040838503121561361a575f5ffd5b8235613625816135e5565b946020939093013593505050565b5f60208284031215613643575f5ffd5b8135611bab816135e5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561368a5761368a61364e565b604052919050565b5f6001600160401b038211156136aa576136aa61364e565b5060051b60200190565b5f82601f8301126136c3575f5ffd5b81356136d66136d182613692565b613662565b8082825260208201915060208360051b8601019250858311156136f7575f5ffd5b602085015b838110156137145780358352602092830192016136fc565b5095945050505050565b5f5f5f60608486031215613730575f5ffd5b83356001600160401b03811115613745575f5ffd5b8401601f81018613613755575f5ffd5b80356137636136d182613692565b8082825260208201915060208360051b850101925088831115613784575f5ffd5b6020840193505b828410156137af57833561379e816135e5565b82526020938401939091019061378b565b955050505060208401356001600160401b038111156137cc575f5ffd5b6137d8868287016136b4565b9250506137e7604085016135f9565b90509250925092565b5f5f5f60408486031215613802575f5ffd5b83356001600160401b03811115613817575f5ffd5b61382386828701613203565b93505060208401356001600160401b0381111561383e575f5ffd5b61384a8682870161328d565b9497909650939450505050565b5f60208284031215613867575f5ffd5b8151611bab8161354c565b5f5f8335601e19843603018112613887575f5ffd5b8301803591506001600160401b038211156138a0575f5ffd5b6020019150600581901b36038213156132cd575f5ffd5b5f5f8335601e198436030181126138cc575f5ffd5b8301803591506001600160401b038211156138e5575f5ffd5b6020019150368190038213156132cd575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561391d575f5ffd5b813564ffffffffff81168114611bab575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c8957610c89613931565b6001600160a01b039390931683526020830191909152604082015260600190565b8082028115828204841417610c8957610c89613931565b81810381811115610c8957610c89613931565b5f82516139b48184602087016133c6565b9190910192915050565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133e8565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610d956020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610c8957610c89613931565b5f8235605e198336030181126139b4575f5ffd5b5f62ffffff821680613acc57613acc613931565b5f190192915050565b6001600160401b038181168382160190811115610c8957610c89613931565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c8957610c89613931565b5f60208284031215613b33575f5ffd5b8151611bab816131ec565b80516020808301519190811015613213575f1960209190910360031b1b16919050565b5f60018201613b7257613b72613931565b5060010190565b5f8351613b8a8184602088016133c6565b6001600160801b0319939093169190920190815260100192915050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c8957610c89613931565b5f81613c2257613c22613931565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c46613931565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c69613931565b8181058314821517610c8957610c89613931565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146135455761354561393156fea2646970667358221220f211b422d72daa88c7f346bfdb89f9350ba992a2adce4bb1e17e1d990df0225264736f6c634300081b0033
3031    /// ```
3032    #[rustfmt::skip]
3033    #[allow(clippy::all)]
3034    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3035        b"`\x80`@R`\x046\x10a\x01`W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xBEW\x80c\xC4\x90tB\x11a\0xW\x80c\xC4\x90tB\x14a\x05VW\x80c\xC4\xD6m\xE8\x14a\x05uW\x80c\xD0mU\x87\x14a\x05\x94W\x80c\xDD\xA34l\x14a\x05\xB3W\x80c\xEE\x94\xD6|\x14a\x05\xD2W\x80c\xF0t\xBAb\x14a\x05\xF1W\x80c\xF2\x88$a\x14a\x06\x10W__\xFD[\x80co\xCD\x0ES\x14a\x04qW\x80ct9\x84\x1F\x14a\x04\x9DW\x80ct\xCD\xD7\x98\x14a\x04\xD2W\x80c\x88gl\xAD\x14a\x05\x05W\x80c\x9BNF4\x14a\x05$W\x80c\xB5\"S\x8A\x14a\x057W__\xFD[\x80cFe\xBC\xDA\x11a\x01\x1AW\x80cFe\xBC\xDA\x14a\x02\x94W\x80cG\xD2\x83r\x14a\x02\xC7W\x80cR9jY\x14a\x03\xB2W\x80cT\xFDMP\x14a\x03\xE6W\x80cXu3W\x14a\x04\x07W\x80cX\xEA\xEEy\x14a\x04&W\x80cl\r-Z\x14a\x04RW__\xFD[\x80c\x03\x91W\xD2\x14a\x01\x9EW\x80c\x0B\x18\xFFf\x14a\x01\xBFW\x80c#@\xE8\xD3\x14a\x01\xFBW\x80c4t\xAA\x16\x14a\x02\x1EW\x80c?e\xCF\x19\x14a\x02OW\x80cB\xEC\xFF*\x14a\x02nW__\xFD[6a\x01\x9AW`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[__\xFD[4\x80\x15a\x01\xA9W__\xFD[Pa\x01\xBDa\x01\xB86`\x04a2\x19V[a\x06CV[\0[4\x80\x15a\x01\xCAW__\xFD[P`3Ta\x01\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x06W__\xFD[Pa\x02\x10`9T\x81V[`@Q\x90\x81R` \x01a\x01\xF2V[4\x80\x15a\x02)W__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xF2V[4\x80\x15a\x02ZW__\xFD[Pa\x01\xBDa\x02i6`\x04a2\xD4V[a\txV[4\x80\x15a\x02yW__\xFD[P`:Ta\x027\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\x9FW__\xFD[Pa\x01\xDE\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\x81V[4\x80\x15a\x02\xD2W__\xFD[Pa\x03W`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x01\xF2\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xBDW__\xFD[Pa\x027a\x03\xCC6`\x04a3\xABV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x03\xF1W__\xFD[Pa\x03\xFAa\x0B\xFDV[`@Qa\x01\xF2\x91\x90a4\x13V[4\x80\x15a\x04\x12W__\xFD[P`>Ta\x01\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x041W__\xFD[Pa\x04Ea\x04@6`\x04a4bV[a\x0C-V[`@Qa\x01\xF2\x91\x90a4\xD4V[4\x80\x15a\x04]W__\xFD[Pa\x02\x10a\x04l6`\x04a3\xABV[a\x0C\x8FV[4\x80\x15a\x04|W__\xFD[Pa\x04\x90a\x04\x8B6`\x04a4\xE2V[a\r\x9DV[`@Qa\x01\xF2\x91\x90a4\xF9V[4\x80\x15a\x04\xA8W__\xFD[Pa\x04Ea\x04\xB76`\x04a4\xE2V[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xDDW__\xFD[Pa\x01\xDE\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\x81V[4\x80\x15a\x05\x10W__\xFD[Pa\x01\xBDa\x05\x1F6`\x04a5YV[a\x0EHV[a\x01\xBDa\x0526`\x04a5tV[a\x0F=V[4\x80\x15a\x05BW__\xFD[Pa\x04\x90a\x05Q6`\x04a4bV[a\x10\x84V[4\x80\x15a\x05aW__\xFD[Pa\x01\xBDa\x05p6`\x04a6\tV[a\x11sV[4\x80\x15a\x05\x80W__\xFD[Pa\x01\xBDa\x05\x8F6`\x04a63V[a\x12\xAAV[4\x80\x15a\x05\x9FW__\xFD[Pa\x01\xBDa\x05\xAE6`\x04a63V[a\x13\xF4V[4\x80\x15a\x05\xBEW__\xFD[Pa\x01\xBDa\x05\xCD6`\x04a7\x1EV[a\x14\x88V[4\x80\x15a\x05\xDDW__\xFD[P`:Ta\x027\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\xFCW__\xFD[Pa\x01\xBDa\x06\x0B6`\x04a7\xF0V[a\x15\xE7V[4\x80\x15a\x06\x1BW__\xFD[Pa\x027\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\x81V[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xA9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xCD\x91\x90a8WV[\x15a\x06\xEBW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07QW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07u\x91\x90a8WV[\x15a\x07\x93W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xD7a\x07\xA1\x85\x80a8rV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xEC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x08EWa\x08Ea4\xA0V[`\x02\x81\x11\x15a\x08VWa\x08Va4\xA0V[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\x92W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xAAWa\x08\xAAa4\xA0V[\x14a\x08\xC8W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x0Ba\x08\xD5\x86\x80a8rV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x0E\x92PPPV[a\t(W`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t:a\t4\x88a\x0C\x8FV[\x87a\x1A6V[a\tfa\tF\x88a\x1A\xDBV[\x875a\tR\x88\x80a8rV[a\t_` \x8B\x01\x8Ba8\xB7V[\x87Qa\x1B\xB2V[a\to_a\x1C\xE6V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\x9BWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xB8W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nB\x91\x90a8WV[\x15a\n`W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\nnWP\x83\x82\x14[a\n\x8BW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xC1W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xD3a\n\xCD\x8Aa\x0C\x8FV[\x89a\x1A6V[_\x80[\x87\x81\x10\x15a\x0BlWa\x0BX\x8B\x8B5\x8B\x8B\x85\x81\x81\x10a\n\xF6Wa\n\xF6a8\xF9V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x0B\x91\x90a9\rV[\x8A\x8A\x86\x81\x81\x10a\x0B\x1DWa\x0B\x1Da8\xF9V[\x90P` \x02\x81\x01\x90a\x0B/\x91\x90a8\xB7V[\x8A\x8A\x88\x81\x81\x10a\x0BAWa\x0BAa8\xF9V[\x90P` \x02\x81\x01\x90a\x0BS\x91\x90a8rV[a\x1EaV[a\x0Bb\x90\x83a9EV[\x91P`\x01\x01a\n\xD6V[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\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\x81\x16\x92c\xA1\xCAx\x0B\x92a\x0B\xC4\x92\x91\x90\x91\x16\x90_\x90\x86\x90`\x04\x01a9XV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xDBW__\xFD[PZ\xF1\x15\x80\x15a\x0B\xEDW=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C(\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\0a#tV[\x90P\x90V[__a\x0Cm\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPa#\xB1\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\x9Da\x1F\xFF`\x0Ca9yV[a\x0C\xB0`\x01`\x01`@\x1B\x03\x84\x16Ba9\x90V[\x10a\x0C\xCEW`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x15\x91a9\xA3V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\rMW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rRV[``\x91P[P\x91P\x91P\x81\x80\x15a\rdWP_\x81Q\x11[a\r\x81W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\x95\x91\x90a9\xBEV[\x94\x93PPPPV[a\r\xC4`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x0E.Wa\x0E.a4\xA0V[`\x02\x81\x11\x15a\x0E?Wa\x0E?a4\xA0V[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0EkWP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\x88W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xEEW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x12\x91\x90a8WV[\x15a\x0F0W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F9\x82a\x1C\xE6V[PPV[3`\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\x0F\x86W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xAFW`@Qc\x04\x96\x96\xB3`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x0F\xF2a$BV[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10\x16\x96\x95\x94\x93\x92\x91\x90a9\xFDV[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10-W__\xFD[PZ\xF1\x15\x80\x15a\x10?W=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10u\x92\x91\x90a:KV[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xAB`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x10\xEC\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPa#\xB1\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x11XWa\x11Xa4\xA0V[`\x02\x81\x11\x15a\x11iWa\x11ia4\xA0V[\x90RP\x93\x92PPPV[3`\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\x11\xBCW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xCBc;\x9A\xCA\0\x83a:rV[\x90Pa\x11\xE4c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a9yV[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12\x17W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x124\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a:\x85V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x12\x93\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xA5\x83\x83a$rV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xC8WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xE1WP0;\x15\x80\x15a\x12\xE1WP_T`\xFF\x16`\x01\x14[a\x13IW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13jW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\x91W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0F9W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\x1FW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xB3W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15=\x91\x90a8WV[\x15a\x15[W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15}W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xE0Wa\x15\xD8\x83\x85\x83\x81Q\x81\x10a\x15\x9EWa\x15\x9Ea8\xF9V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xB8Wa\x15\xB8a8\xF9V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a%\x87\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x7FV[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16MW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16q\x91\x90a8WV[\x15a\x16\x8FW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xC3W`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01Ra\x17*a\x17\"\x83a\x1A\xDBV[\x82Q\x88a%\xD9V[_\x80[\x85\x81\x10\x15a\x19\x93W6\x87\x87\x83\x81\x81\x10a\x17HWa\x17Ha8\xF9V[\x90P` \x02\x81\x01\x90a\x17Z\x91\x90a:\xA4V[\x805_\x90\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x17\xCAWa\x17\xCAa4\xA0V[`\x02\x81\x11\x15a\x17\xDBWa\x17\xDBa4\xA0V[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x17\xF8Wa\x17\xF8a4\xA0V[\x14a\x18\x04WPPa\x19\x8BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x18(WPPa\x19\x8BV[_\x80\x80a\x188\x84\x8A\x8F5\x88a&\x9AV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18O\x82a:\xB8V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18k\x90\x83\x90a:\xD5V[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x8B\x90\x83\x90a:\xF4V[`\x07\x0B\x90RPa\x18\x9B\x81\x88a:\xD5V[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19?Wa\x19?a4\xA0V[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17-V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xBF\x91\x85\x91\x16a:\xD5V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\to\x82a'\xBDV[_\x81_\x81Q\x81\x10a\x19\xFFWa\x19\xFFa8\xF9V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A\"Wa\x1A\"a8\xF9V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AB`\x03` a9yV[a\x1AO` \x83\x01\x83a8\xB7V[\x90P\x14a\x1AoW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xBEa\x1A\x7F` \x83\x01\x83a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x86\x92PP\x845\x90P`\x03a)\xDEV[a\x0F9W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\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\x16c'\x045\x1A`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B]\x91\x90a;#V[\x90P\x80`\x01`\x01`@\x1B\x03\x16_\x03a\x1B\x88W`@QcA\xA0,\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11\x15a\x1B\xA9W`\x01a\x1B\xABV[_[\x93\x92PPPV[`\x08\x84\x14a\x1B\xD3W`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\xDD\x88a)\xF5V[\x90P\x80a\x1B\xEC`(`\x01a9EV[a\x1B\xF6\x91\x90a9EV[a\x1C\x01\x90` a9yV[\x83\x14a\x1C W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\\\x87\x87\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa*\x1D\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x84\x16a\x1Cs`(`\x01a9EV[`\x0B\x90\x1B\x17\x90Pa\x1C\xBD\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x8D\x92P\x86\x91P\x85\x90Pa)\xDEV[a\x1C\xDAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1D\x16W`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1DDW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1D`c;\x9A\xCA\0Ga:rV[a\x1Dj\x91\x90a:\x85V[\x90P\x81\x80\x15a\x1D\x80WP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1D\x9EW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1D\xB3Ba\x0C\x8FV[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1E\x12\x81a'\xBDV[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1E\x9E\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xEC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x1F\x0CWa\x1F\x0Ca4\xA0V[`\x02\x81\x11\x15a\x1F\x1DWa\x1F\x1Da4\xA0V[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1F9Wa\x1F9a4\xA0V[\x14a\x1FWW`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F\x9C\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xAD\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1F\xC3W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a \x08\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xD1\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a /W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a 7a$BV[a @\x90a;>V[a {\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xE8\x92PPPV[\x14\x80a \xD0WPa \x8Aa,\xFCV[a \x93\x90a;>V[a \xCE\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa,\xE8\x92PPPV[\x14[a \xEDW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!)\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa-\x18\x92PPPV[\x90Pa!Ba!7\x8Ca\x1A\xDBV[\x8B\x88\x88\x8C\x8C\x8Fa\x1B\xB2V[`9\x80T\x90_a!Q\x83a;aV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a!\x88W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a!\x95V[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\"jWa\"ja4\xA0V[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a\"\x95\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa\"\xF5\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a#dc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a9yV[\x9C\x9BPPPPPPPPPPPPV[``_a#\x80\x83a-/V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a#\xD4W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a#\xEA\x90\x84\x90_\x90` \x01a;yV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra$\x04\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a$\x1FW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x89\x91\x90a9\xBEV[`@Q``\x90a$^\x90`\x01`\xF8\x1B\x90_\x900\x90` \x01a;\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a$\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13@V[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a%\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\x10V[``\x91P[PP\x90P\x80a\x12\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x13@V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x12\xA5\x90\x84\x90a-VV[_a%\xE3\x84a)\xF5V[\x90Pa%\xF0\x81`\x03a9EV[a%\xFB\x90` a9yV[a&\x08` \x84\x01\x84a8\xB7V[\x90P\x14a&(W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03\x81\x1B`\x0C\x17a&}a&?` \x85\x01\x85a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x88\x92PP\x865\x90P\x84a)\xDEV[a\x15\xE0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a&\xB2\x87\x83\x88a.)V[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a',Wa&\xD7\x85\x82a;\xE5V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01R_\x03a'\xB1W`9\x80T\x90_a'[\x83a<\x14V[\x90\x91UPP`\x02``\x8A\x01Ra'p\x84a<)V[\x92P\x81d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a(TW\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17`\x01`X\x1B`\x01`\xD8\x1B\x03\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a(p\x91`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x90P_\x82``\x01Q\x83`@\x01Qa(\x87\x91\x90a:\xF4V[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a(\xAB\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a:\xD5V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa(\xFB\x90c;\x9A\xCA\0\x90\x85\x16a9yV[\x90P_a)\x10c;\x9A\xCA\0`\x07\x85\x90\x0Ba<NV[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\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\x81\x16\x92c\xA1\xCAx\x0B\x92a)\xAA\x92\x91\x90\x91\x16\x90\x86\x90\x86\x90`\x04\x01a9XV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a)\xC1W__\xFD[PZ\xF1\x15\x80\x15a)\xD3W=__>=_\xFD[PPPPPPPPPV[_\x83a)\xEB\x86\x85\x85a/\x07V[\x14\x95\x94PPPPPV[_\x80\x82`\x01\x81\x11\x15a*\tWa*\ta4\xA0V[\x14a*\x15W`\x06a\x0C\x89V[`\x05\x92\x91PPV[__`\x02\x83Qa*-\x91\x90a:rV[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a*HWa*Ha6NV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a*qW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a+kW`\x02\x85a*\x8B\x83\x83a9yV[\x81Q\x81\x10a*\x9BWa*\x9Ba8\xF9V[` \x02` \x01\x01Q\x86\x83`\x02a*\xB1\x91\x90a9yV[a*\xBC\x90`\x01a9EV[\x81Q\x81\x10a*\xCCWa*\xCCa8\xF9V[` \x02` \x01\x01Q`@Q` \x01a*\xEE\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra+\x08\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a+#W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+F\x91\x90a9\xBEV[\x82\x82\x81Q\x81\x10a+XWa+Xa8\xF9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*vV[Pa+w`\x02\x83a:rV[\x91P[\x81\x15a,\x8AW_[\x82\x81\x10\x15a,wW`\x02\x82a+\x97\x83\x83a9yV[\x81Q\x81\x10a+\xA7Wa+\xA7a8\xF9V[` \x02` \x01\x01Q\x83\x83`\x02a+\xBD\x91\x90a9yV[a+\xC8\x90`\x01a9EV[\x81Q\x81\x10a+\xD8Wa+\xD8a8\xF9V[` \x02` \x01\x01Q`@Q` \x01a+\xFA\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra,\x14\x91a9\xA3V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a,/W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,R\x91\x90a9\xBEV[\x82\x82\x81Q\x81\x10a,dWa,da8\xF9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a+\x82V[Pa,\x83`\x02\x83a:rV[\x91Pa+zV[\x80_\x81Q\x81\x10a,\x9CWa,\x9Ca8\xF9V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\x89\x82`\x05\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[` \x02` \x01\x01Qa/\xDBV[_a\x0C\x89\x82`\x06\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[_\x81`\x01\x81Q\x81\x10a\x19\xFFWa\x19\xFFa8\xF9V[`@Q``\x90a$^\x90`\x01`\xF9\x1B\x90_\x900\x90` \x01a;\xA7V[_a\x0C\x89\x82`\x02\x81Q\x81\x10a,\xC4Wa,\xC4a8\xF9V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\x89W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\xAA\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a0>\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a-\xCAWP\x80\x80` \x01\x90Q\x81\x01\x90a-\xCA\x91\x90a8WV[a\x12\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x13@V[_a.6`&`\x01a9EV[a.A\x90` a9yV[a.N`@\x84\x01\x84a8\xB7V[\x90P\x14a.nW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a.z`\x04\x85a<}V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa.\xD3a.\x93`@\x85\x01\x85a8\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RP\x89\x92PPP` \x86\x015\x84a)\xDEV[a.\xF0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a.\xFE\x83` \x015\x85a0LV[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a/$WP` \x84Qa/\"\x91\x90a<\xA6V[\x15[a/AW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a/\xD1Wa/e`\x02\x85a<\xA6V[_\x03a/\x97W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa/\x8CW__\xFD[`\x02\x84\x04\x93Pa/\xBFV[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa/\xB8W__\xFD[`\x02\x84\x04\x93P[a/\xCA` \x82a9EV[\x90Pa/RV[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17`\xFF`8\x1B`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\r\x95\x84\x84_\x85a0xV[_\x80a0Y`\x04\x84a<\xB9V[a0d\x90`@a<\xE2V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\x95\x84\x82\x1Ba/\xDBV[``\x82G\x10\x15a0\xD9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x13@V[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa0\xF4\x91\x90a9\xA3V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a1.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a13V[``\x91P[P\x91P\x91Pa1D\x87\x83\x83\x87a1OV[\x97\x96PPPPPPPV[``\x83\x15a1\xBDW\x82Q_\x03a1\xB6W`\x01`\x01`\xA0\x1B\x03\x85\x16;a1\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x13@V[P\x81a\r\x95V[a\r\x95\x83\x83\x81Q\x15a1\xD2W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13@\x91\x90a4\x13V[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a2\0W__\xFD[PV[_`@\x82\x84\x03\x12\x15a2\x13W__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a2+W__\xFD[\x835a26\x81a1\xECV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2PW__\xFD[a2\\\x86\x82\x87\x01a2\x03V[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2wW__\xFD[a2\x83\x86\x82\x87\x01a2\x03V[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a2\x9DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xB3W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a2\xCDW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a2\xEBW__\xFD[\x885a2\xF6\x81a1\xECV[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x10W__\xFD[a3\x1C\x8B\x82\x8C\x01a2\x03V[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a37W__\xFD[a3C\x8B\x82\x8C\x01a2\x8DV[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3aW__\xFD[a3m\x8B\x82\x8C\x01a2\x8DV[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x8BW__\xFD[a3\x97\x8B\x82\x8C\x01a2\x8DV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a3\xBBW__\xFD[\x815a\x1B\xAB\x81a1\xECV[_[\x83\x81\x10\x15a3\xE0W\x81\x81\x01Q\x83\x82\x01R` \x01a3\xC8V[PP_\x91\x01RV[_\x81Q\x80\x84Ra3\xFF\x81` \x86\x01` \x86\x01a3\xC6V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x1B\xAB` \x83\x01\x84a3\xE8V[__\x83`\x1F\x84\x01\x12a45W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4KW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a2\xCDW__\xFD[__` \x83\x85\x03\x12\x15a4sW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x88W__\xFD[a4\x94\x85\x82\x86\x01a4%V[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a4\xD0WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\x89\x82\x84a4\xB4V[_` \x82\x84\x03\x12\x15a4\xF2W__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa5E``\x84\x01\x82a4\xB4V[P\x92\x91PPV[\x80\x15\x15\x81\x14a2\0W__\xFD[_` \x82\x84\x03\x12\x15a5iW__\xFD[\x815a\x1B\xAB\x81a5LV[_____``\x86\x88\x03\x12\x15a5\x88W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x9DW__\xFD[a5\xA9\x88\x82\x89\x01a4%V[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xC7W__\xFD[a5\xD3\x88\x82\x89\x01a4%V[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a2\0W__\xFD[\x805a6\x04\x81a5\xE5V[\x91\x90PV[__`@\x83\x85\x03\x12\x15a6\x1AW__\xFD[\x825a6%\x81a5\xE5V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a6CW__\xFD[\x815a\x1B\xAB\x81a5\xE5V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a6\x8AWa6\x8Aa6NV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a6\xAAWa6\xAAa6NV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a6\xC3W__\xFD[\x815a6\xD6a6\xD1\x82a6\x92V[a6bV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a6\xF7W__\xFD[` \x85\x01[\x83\x81\x10\x15a7\x14W\x805\x83R` \x92\x83\x01\x92\x01a6\xFCV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a70W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a7EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a7UW__\xFD[\x805a7ca6\xD1\x82a6\x92V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a7\x84W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a7\xAFW\x835a7\x9E\x81a5\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a7\x8BV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xCCW__\xFD[a7\xD8\x86\x82\x87\x01a6\xB4V[\x92PPa7\xE7`@\x85\x01a5\xF9V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a8\x02W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a8\x17W__\xFD[a8#\x86\x82\x87\x01a2\x03V[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a8>W__\xFD[a8J\x86\x82\x87\x01a2\x8DV[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a8gW__\xFD[\x81Qa\x1B\xAB\x81a5LV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a8\x87W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a8\xA0W__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a2\xCDW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a8\xCCW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a8\xE5W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a2\xCDW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\x1DW__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1B\xABW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\x89Wa\x0C\x89a91V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x89Wa\x0C\x89a91V[\x81\x81\x03\x81\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[_\x82Qa9\xB4\x81\x84` \x87\x01a3\xC6V[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a9\xCEW__\xFD[PQ\x91\x90PV[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x80\x81R_a:\x10`\x80\x83\x01\x88\x8Aa9\xD5V[\x82\x81\x03` \x84\x01Ra:\"\x81\x88a3\xE8V[\x90P\x82\x81\x03`@\x84\x01Ra:7\x81\x86\x88a9\xD5V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\x95` \x83\x01\x84\x86a9\xD5V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a:\x80Wa:\x80a:^V[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[_\x825`^\x19\x836\x03\x01\x81\x12a9\xB4W__\xFD[_b\xFF\xFF\xFF\x82\x16\x80a:\xCCWa:\xCCa91V[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\x89Wa\x0C\x89a91V[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\x89Wa\x0C\x89a91V[_` \x82\x84\x03\x12\x15a;3W__\xFD[\x81Qa\x1B\xAB\x81a1\xECV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a2\x13W_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a;rWa;ra91V[P`\x01\x01\x90V[_\x83Qa;\x8A\x81\x84` \x88\x01a3\xC6V[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83R`\x01`\x01`\xA8\x1B\x03\x19\x91\x90\x91\x16`\x01\x83\x01R``\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x0C\x82\x01R` \x01\x90V[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\x89Wa\x0C\x89a91V[_\x81a<\"Wa<\"a91V[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a<FWa<Fa91V[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a<iWa<ia91V[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\x89Wa\x0C\x89a91V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a<\x93Wa<\x93a:^V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a<\xB4Wa<\xB4a:^V[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a<\xCFWa<\xCFa:^V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a5EWa5Ea91V\xFE\xA2dipfsX\"\x12 \xF2\x11\xB4\"\xD7-\xAA\x88\xC7\xF3F\xBF\xDB\x89\xF95\x0B\xA9\x92\xA2\xAD\xCEK\xB1\xE1~\x1D\x99\r\xF0\"RdsolcC\0\x08\x1B\x003",
3036    );
3037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3038    /**Custom error with signature `BeaconTimestampTooFarInPast()` and selector `0x37e07ffd`.
3039```solidity
3040error BeaconTimestampTooFarInPast();
3041```*/
3042    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3043    #[derive(Clone)]
3044    pub struct BeaconTimestampTooFarInPast {}
3045    #[allow(
3046        non_camel_case_types,
3047        non_snake_case,
3048        clippy::pub_underscore_fields,
3049        clippy::style
3050    )]
3051    const _: () = {
3052        use alloy::sol_types as alloy_sol_types;
3053        #[doc(hidden)]
3054        type UnderlyingSolTuple<'a> = ();
3055        #[doc(hidden)]
3056        type UnderlyingRustTuple<'a> = ();
3057        #[cfg(test)]
3058        #[allow(dead_code, unreachable_patterns)]
3059        fn _type_assertion(
3060            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3061        ) {
3062            match _t {
3063                alloy_sol_types::private::AssertTypeEq::<
3064                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3065                >(_) => {}
3066            }
3067        }
3068        #[automatically_derived]
3069        #[doc(hidden)]
3070        impl ::core::convert::From<BeaconTimestampTooFarInPast>
3071        for UnderlyingRustTuple<'_> {
3072            fn from(value: BeaconTimestampTooFarInPast) -> Self {
3073                ()
3074            }
3075        }
3076        #[automatically_derived]
3077        #[doc(hidden)]
3078        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3079        for BeaconTimestampTooFarInPast {
3080            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3081                Self {}
3082            }
3083        }
3084        #[automatically_derived]
3085        impl alloy_sol_types::SolError for BeaconTimestampTooFarInPast {
3086            type Parameters<'a> = UnderlyingSolTuple<'a>;
3087            type Token<'a> = <Self::Parameters<
3088                'a,
3089            > as alloy_sol_types::SolType>::Token<'a>;
3090            const SIGNATURE: &'static str = "BeaconTimestampTooFarInPast()";
3091            const SELECTOR: [u8; 4] = [55u8, 224u8, 127u8, 253u8];
3092            #[inline]
3093            fn new<'a>(
3094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3095            ) -> Self {
3096                tuple.into()
3097            }
3098            #[inline]
3099            fn tokenize(&self) -> Self::Token<'_> {
3100                ()
3101            }
3102        }
3103    };
3104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3105    /**Custom error with signature `CannotCheckpointTwiceInSingleBlock()` and selector `0x67db5b8b`.
3106```solidity
3107error CannotCheckpointTwiceInSingleBlock();
3108```*/
3109    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3110    #[derive(Clone)]
3111    pub struct CannotCheckpointTwiceInSingleBlock {}
3112    #[allow(
3113        non_camel_case_types,
3114        non_snake_case,
3115        clippy::pub_underscore_fields,
3116        clippy::style
3117    )]
3118    const _: () = {
3119        use alloy::sol_types as alloy_sol_types;
3120        #[doc(hidden)]
3121        type UnderlyingSolTuple<'a> = ();
3122        #[doc(hidden)]
3123        type UnderlyingRustTuple<'a> = ();
3124        #[cfg(test)]
3125        #[allow(dead_code, unreachable_patterns)]
3126        fn _type_assertion(
3127            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3128        ) {
3129            match _t {
3130                alloy_sol_types::private::AssertTypeEq::<
3131                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3132                >(_) => {}
3133            }
3134        }
3135        #[automatically_derived]
3136        #[doc(hidden)]
3137        impl ::core::convert::From<CannotCheckpointTwiceInSingleBlock>
3138        for UnderlyingRustTuple<'_> {
3139            fn from(value: CannotCheckpointTwiceInSingleBlock) -> Self {
3140                ()
3141            }
3142        }
3143        #[automatically_derived]
3144        #[doc(hidden)]
3145        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3146        for CannotCheckpointTwiceInSingleBlock {
3147            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3148                Self {}
3149            }
3150        }
3151        #[automatically_derived]
3152        impl alloy_sol_types::SolError for CannotCheckpointTwiceInSingleBlock {
3153            type Parameters<'a> = UnderlyingSolTuple<'a>;
3154            type Token<'a> = <Self::Parameters<
3155                'a,
3156            > as alloy_sol_types::SolType>::Token<'a>;
3157            const SIGNATURE: &'static str = "CannotCheckpointTwiceInSingleBlock()";
3158            const SELECTOR: [u8; 4] = [103u8, 219u8, 91u8, 139u8];
3159            #[inline]
3160            fn new<'a>(
3161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3162            ) -> Self {
3163                tuple.into()
3164            }
3165            #[inline]
3166            fn tokenize(&self) -> Self::Token<'_> {
3167                ()
3168            }
3169        }
3170    };
3171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3172    /**Custom error with signature `CheckpointAlreadyActive()` and selector `0xbe9bc300`.
3173```solidity
3174error CheckpointAlreadyActive();
3175```*/
3176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3177    #[derive(Clone)]
3178    pub struct CheckpointAlreadyActive {}
3179    #[allow(
3180        non_camel_case_types,
3181        non_snake_case,
3182        clippy::pub_underscore_fields,
3183        clippy::style
3184    )]
3185    const _: () = {
3186        use alloy::sol_types as alloy_sol_types;
3187        #[doc(hidden)]
3188        type UnderlyingSolTuple<'a> = ();
3189        #[doc(hidden)]
3190        type UnderlyingRustTuple<'a> = ();
3191        #[cfg(test)]
3192        #[allow(dead_code, unreachable_patterns)]
3193        fn _type_assertion(
3194            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3195        ) {
3196            match _t {
3197                alloy_sol_types::private::AssertTypeEq::<
3198                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3199                >(_) => {}
3200            }
3201        }
3202        #[automatically_derived]
3203        #[doc(hidden)]
3204        impl ::core::convert::From<CheckpointAlreadyActive> for UnderlyingRustTuple<'_> {
3205            fn from(value: CheckpointAlreadyActive) -> Self {
3206                ()
3207            }
3208        }
3209        #[automatically_derived]
3210        #[doc(hidden)]
3211        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckpointAlreadyActive {
3212            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3213                Self {}
3214            }
3215        }
3216        #[automatically_derived]
3217        impl alloy_sol_types::SolError for CheckpointAlreadyActive {
3218            type Parameters<'a> = UnderlyingSolTuple<'a>;
3219            type Token<'a> = <Self::Parameters<
3220                'a,
3221            > as alloy_sol_types::SolType>::Token<'a>;
3222            const SIGNATURE: &'static str = "CheckpointAlreadyActive()";
3223            const SELECTOR: [u8; 4] = [190u8, 155u8, 195u8, 0u8];
3224            #[inline]
3225            fn new<'a>(
3226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3227            ) -> Self {
3228                tuple.into()
3229            }
3230            #[inline]
3231            fn tokenize(&self) -> Self::Token<'_> {
3232                ()
3233            }
3234        }
3235    };
3236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3237    /**Custom error with signature `CredentialsAlreadyVerified()` and selector `0x35e09e9d`.
3238```solidity
3239error CredentialsAlreadyVerified();
3240```*/
3241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3242    #[derive(Clone)]
3243    pub struct CredentialsAlreadyVerified {}
3244    #[allow(
3245        non_camel_case_types,
3246        non_snake_case,
3247        clippy::pub_underscore_fields,
3248        clippy::style
3249    )]
3250    const _: () = {
3251        use alloy::sol_types as alloy_sol_types;
3252        #[doc(hidden)]
3253        type UnderlyingSolTuple<'a> = ();
3254        #[doc(hidden)]
3255        type UnderlyingRustTuple<'a> = ();
3256        #[cfg(test)]
3257        #[allow(dead_code, unreachable_patterns)]
3258        fn _type_assertion(
3259            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3260        ) {
3261            match _t {
3262                alloy_sol_types::private::AssertTypeEq::<
3263                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3264                >(_) => {}
3265            }
3266        }
3267        #[automatically_derived]
3268        #[doc(hidden)]
3269        impl ::core::convert::From<CredentialsAlreadyVerified>
3270        for UnderlyingRustTuple<'_> {
3271            fn from(value: CredentialsAlreadyVerified) -> Self {
3272                ()
3273            }
3274        }
3275        #[automatically_derived]
3276        #[doc(hidden)]
3277        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3278        for CredentialsAlreadyVerified {
3279            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3280                Self {}
3281            }
3282        }
3283        #[automatically_derived]
3284        impl alloy_sol_types::SolError for CredentialsAlreadyVerified {
3285            type Parameters<'a> = UnderlyingSolTuple<'a>;
3286            type Token<'a> = <Self::Parameters<
3287                'a,
3288            > as alloy_sol_types::SolType>::Token<'a>;
3289            const SIGNATURE: &'static str = "CredentialsAlreadyVerified()";
3290            const SELECTOR: [u8; 4] = [53u8, 224u8, 158u8, 157u8];
3291            #[inline]
3292            fn new<'a>(
3293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3294            ) -> Self {
3295                tuple.into()
3296            }
3297            #[inline]
3298            fn tokenize(&self) -> Self::Token<'_> {
3299                ()
3300            }
3301        }
3302    };
3303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3304    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
3305```solidity
3306error CurrentlyPaused();
3307```*/
3308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3309    #[derive(Clone)]
3310    pub struct CurrentlyPaused {}
3311    #[allow(
3312        non_camel_case_types,
3313        non_snake_case,
3314        clippy::pub_underscore_fields,
3315        clippy::style
3316    )]
3317    const _: () = {
3318        use alloy::sol_types as alloy_sol_types;
3319        #[doc(hidden)]
3320        type UnderlyingSolTuple<'a> = ();
3321        #[doc(hidden)]
3322        type UnderlyingRustTuple<'a> = ();
3323        #[cfg(test)]
3324        #[allow(dead_code, unreachable_patterns)]
3325        fn _type_assertion(
3326            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3327        ) {
3328            match _t {
3329                alloy_sol_types::private::AssertTypeEq::<
3330                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3331                >(_) => {}
3332            }
3333        }
3334        #[automatically_derived]
3335        #[doc(hidden)]
3336        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
3337            fn from(value: CurrentlyPaused) -> Self {
3338                ()
3339            }
3340        }
3341        #[automatically_derived]
3342        #[doc(hidden)]
3343        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
3344            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3345                Self {}
3346            }
3347        }
3348        #[automatically_derived]
3349        impl alloy_sol_types::SolError for CurrentlyPaused {
3350            type Parameters<'a> = UnderlyingSolTuple<'a>;
3351            type Token<'a> = <Self::Parameters<
3352                'a,
3353            > as alloy_sol_types::SolType>::Token<'a>;
3354            const SIGNATURE: &'static str = "CurrentlyPaused()";
3355            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
3356            #[inline]
3357            fn new<'a>(
3358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3359            ) -> Self {
3360                tuple.into()
3361            }
3362            #[inline]
3363            fn tokenize(&self) -> Self::Token<'_> {
3364                ()
3365            }
3366        }
3367    };
3368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3369    /**Custom error with signature `ForkTimestampZero()` and selector `0x41a02cc9`.
3370```solidity
3371error ForkTimestampZero();
3372```*/
3373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3374    #[derive(Clone)]
3375    pub struct ForkTimestampZero {}
3376    #[allow(
3377        non_camel_case_types,
3378        non_snake_case,
3379        clippy::pub_underscore_fields,
3380        clippy::style
3381    )]
3382    const _: () = {
3383        use alloy::sol_types as alloy_sol_types;
3384        #[doc(hidden)]
3385        type UnderlyingSolTuple<'a> = ();
3386        #[doc(hidden)]
3387        type UnderlyingRustTuple<'a> = ();
3388        #[cfg(test)]
3389        #[allow(dead_code, unreachable_patterns)]
3390        fn _type_assertion(
3391            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3392        ) {
3393            match _t {
3394                alloy_sol_types::private::AssertTypeEq::<
3395                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3396                >(_) => {}
3397            }
3398        }
3399        #[automatically_derived]
3400        #[doc(hidden)]
3401        impl ::core::convert::From<ForkTimestampZero> for UnderlyingRustTuple<'_> {
3402            fn from(value: ForkTimestampZero) -> Self {
3403                ()
3404            }
3405        }
3406        #[automatically_derived]
3407        #[doc(hidden)]
3408        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ForkTimestampZero {
3409            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3410                Self {}
3411            }
3412        }
3413        #[automatically_derived]
3414        impl alloy_sol_types::SolError for ForkTimestampZero {
3415            type Parameters<'a> = UnderlyingSolTuple<'a>;
3416            type Token<'a> = <Self::Parameters<
3417                'a,
3418            > as alloy_sol_types::SolType>::Token<'a>;
3419            const SIGNATURE: &'static str = "ForkTimestampZero()";
3420            const SELECTOR: [u8; 4] = [65u8, 160u8, 44u8, 201u8];
3421            #[inline]
3422            fn new<'a>(
3423                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3424            ) -> Self {
3425                tuple.into()
3426            }
3427            #[inline]
3428            fn tokenize(&self) -> Self::Token<'_> {
3429                ()
3430            }
3431        }
3432    };
3433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3434    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
3435```solidity
3436error InputAddressZero();
3437```*/
3438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3439    #[derive(Clone)]
3440    pub struct InputAddressZero {}
3441    #[allow(
3442        non_camel_case_types,
3443        non_snake_case,
3444        clippy::pub_underscore_fields,
3445        clippy::style
3446    )]
3447    const _: () = {
3448        use alloy::sol_types as alloy_sol_types;
3449        #[doc(hidden)]
3450        type UnderlyingSolTuple<'a> = ();
3451        #[doc(hidden)]
3452        type UnderlyingRustTuple<'a> = ();
3453        #[cfg(test)]
3454        #[allow(dead_code, unreachable_patterns)]
3455        fn _type_assertion(
3456            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3457        ) {
3458            match _t {
3459                alloy_sol_types::private::AssertTypeEq::<
3460                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3461                >(_) => {}
3462            }
3463        }
3464        #[automatically_derived]
3465        #[doc(hidden)]
3466        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
3467            fn from(value: InputAddressZero) -> Self {
3468                ()
3469            }
3470        }
3471        #[automatically_derived]
3472        #[doc(hidden)]
3473        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
3474            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3475                Self {}
3476            }
3477        }
3478        #[automatically_derived]
3479        impl alloy_sol_types::SolError for InputAddressZero {
3480            type Parameters<'a> = UnderlyingSolTuple<'a>;
3481            type Token<'a> = <Self::Parameters<
3482                'a,
3483            > as alloy_sol_types::SolType>::Token<'a>;
3484            const SIGNATURE: &'static str = "InputAddressZero()";
3485            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
3486            #[inline]
3487            fn new<'a>(
3488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3489            ) -> Self {
3490                tuple.into()
3491            }
3492            #[inline]
3493            fn tokenize(&self) -> Self::Token<'_> {
3494                ()
3495            }
3496        }
3497    };
3498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3499    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3500```solidity
3501error InputArrayLengthMismatch();
3502```*/
3503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3504    #[derive(Clone)]
3505    pub struct InputArrayLengthMismatch {}
3506    #[allow(
3507        non_camel_case_types,
3508        non_snake_case,
3509        clippy::pub_underscore_fields,
3510        clippy::style
3511    )]
3512    const _: () = {
3513        use alloy::sol_types as alloy_sol_types;
3514        #[doc(hidden)]
3515        type UnderlyingSolTuple<'a> = ();
3516        #[doc(hidden)]
3517        type UnderlyingRustTuple<'a> = ();
3518        #[cfg(test)]
3519        #[allow(dead_code, unreachable_patterns)]
3520        fn _type_assertion(
3521            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3522        ) {
3523            match _t {
3524                alloy_sol_types::private::AssertTypeEq::<
3525                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3526                >(_) => {}
3527            }
3528        }
3529        #[automatically_derived]
3530        #[doc(hidden)]
3531        impl ::core::convert::From<InputArrayLengthMismatch>
3532        for UnderlyingRustTuple<'_> {
3533            fn from(value: InputArrayLengthMismatch) -> Self {
3534                ()
3535            }
3536        }
3537        #[automatically_derived]
3538        #[doc(hidden)]
3539        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3540        for InputArrayLengthMismatch {
3541            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3542                Self {}
3543            }
3544        }
3545        #[automatically_derived]
3546        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
3547            type Parameters<'a> = UnderlyingSolTuple<'a>;
3548            type Token<'a> = <Self::Parameters<
3549                'a,
3550            > as alloy_sol_types::SolType>::Token<'a>;
3551            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
3552            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
3553            #[inline]
3554            fn new<'a>(
3555                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3556            ) -> Self {
3557                tuple.into()
3558            }
3559            #[inline]
3560            fn tokenize(&self) -> Self::Token<'_> {
3561                ()
3562            }
3563        }
3564    };
3565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3566    /**Custom error with signature `InsufficientWithdrawableBalance()` and selector `0x0b1bd51c`.
3567```solidity
3568error InsufficientWithdrawableBalance();
3569```*/
3570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3571    #[derive(Clone)]
3572    pub struct InsufficientWithdrawableBalance {}
3573    #[allow(
3574        non_camel_case_types,
3575        non_snake_case,
3576        clippy::pub_underscore_fields,
3577        clippy::style
3578    )]
3579    const _: () = {
3580        use alloy::sol_types as alloy_sol_types;
3581        #[doc(hidden)]
3582        type UnderlyingSolTuple<'a> = ();
3583        #[doc(hidden)]
3584        type UnderlyingRustTuple<'a> = ();
3585        #[cfg(test)]
3586        #[allow(dead_code, unreachable_patterns)]
3587        fn _type_assertion(
3588            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3589        ) {
3590            match _t {
3591                alloy_sol_types::private::AssertTypeEq::<
3592                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3593                >(_) => {}
3594            }
3595        }
3596        #[automatically_derived]
3597        #[doc(hidden)]
3598        impl ::core::convert::From<InsufficientWithdrawableBalance>
3599        for UnderlyingRustTuple<'_> {
3600            fn from(value: InsufficientWithdrawableBalance) -> Self {
3601                ()
3602            }
3603        }
3604        #[automatically_derived]
3605        #[doc(hidden)]
3606        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3607        for InsufficientWithdrawableBalance {
3608            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3609                Self {}
3610            }
3611        }
3612        #[automatically_derived]
3613        impl alloy_sol_types::SolError for InsufficientWithdrawableBalance {
3614            type Parameters<'a> = UnderlyingSolTuple<'a>;
3615            type Token<'a> = <Self::Parameters<
3616                'a,
3617            > as alloy_sol_types::SolType>::Token<'a>;
3618            const SIGNATURE: &'static str = "InsufficientWithdrawableBalance()";
3619            const SELECTOR: [u8; 4] = [11u8, 27u8, 213u8, 28u8];
3620            #[inline]
3621            fn new<'a>(
3622                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3623            ) -> Self {
3624                tuple.into()
3625            }
3626            #[inline]
3627            fn tokenize(&self) -> Self::Token<'_> {
3628                ()
3629            }
3630        }
3631    };
3632    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3633    /**Custom error with signature `InvalidEIP4788Response()` and selector `0x558ad0a3`.
3634```solidity
3635error InvalidEIP4788Response();
3636```*/
3637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3638    #[derive(Clone)]
3639    pub struct InvalidEIP4788Response {}
3640    #[allow(
3641        non_camel_case_types,
3642        non_snake_case,
3643        clippy::pub_underscore_fields,
3644        clippy::style
3645    )]
3646    const _: () = {
3647        use alloy::sol_types as alloy_sol_types;
3648        #[doc(hidden)]
3649        type UnderlyingSolTuple<'a> = ();
3650        #[doc(hidden)]
3651        type UnderlyingRustTuple<'a> = ();
3652        #[cfg(test)]
3653        #[allow(dead_code, unreachable_patterns)]
3654        fn _type_assertion(
3655            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3656        ) {
3657            match _t {
3658                alloy_sol_types::private::AssertTypeEq::<
3659                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3660                >(_) => {}
3661            }
3662        }
3663        #[automatically_derived]
3664        #[doc(hidden)]
3665        impl ::core::convert::From<InvalidEIP4788Response> for UnderlyingRustTuple<'_> {
3666            fn from(value: InvalidEIP4788Response) -> Self {
3667                ()
3668            }
3669        }
3670        #[automatically_derived]
3671        #[doc(hidden)]
3672        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidEIP4788Response {
3673            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3674                Self {}
3675            }
3676        }
3677        #[automatically_derived]
3678        impl alloy_sol_types::SolError for InvalidEIP4788Response {
3679            type Parameters<'a> = UnderlyingSolTuple<'a>;
3680            type Token<'a> = <Self::Parameters<
3681                'a,
3682            > as alloy_sol_types::SolType>::Token<'a>;
3683            const SIGNATURE: &'static str = "InvalidEIP4788Response()";
3684            const SELECTOR: [u8; 4] = [85u8, 138u8, 208u8, 163u8];
3685            #[inline]
3686            fn new<'a>(
3687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3688            ) -> Self {
3689                tuple.into()
3690            }
3691            #[inline]
3692            fn tokenize(&self) -> Self::Token<'_> {
3693                ()
3694            }
3695        }
3696    };
3697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3698    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
3699```solidity
3700error InvalidProof();
3701```*/
3702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3703    #[derive(Clone)]
3704    pub struct InvalidProof {}
3705    #[allow(
3706        non_camel_case_types,
3707        non_snake_case,
3708        clippy::pub_underscore_fields,
3709        clippy::style
3710    )]
3711    const _: () = {
3712        use alloy::sol_types as alloy_sol_types;
3713        #[doc(hidden)]
3714        type UnderlyingSolTuple<'a> = ();
3715        #[doc(hidden)]
3716        type UnderlyingRustTuple<'a> = ();
3717        #[cfg(test)]
3718        #[allow(dead_code, unreachable_patterns)]
3719        fn _type_assertion(
3720            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3721        ) {
3722            match _t {
3723                alloy_sol_types::private::AssertTypeEq::<
3724                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3725                >(_) => {}
3726            }
3727        }
3728        #[automatically_derived]
3729        #[doc(hidden)]
3730        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
3731            fn from(value: InvalidProof) -> Self {
3732                ()
3733            }
3734        }
3735        #[automatically_derived]
3736        #[doc(hidden)]
3737        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
3738            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3739                Self {}
3740            }
3741        }
3742        #[automatically_derived]
3743        impl alloy_sol_types::SolError for InvalidProof {
3744            type Parameters<'a> = UnderlyingSolTuple<'a>;
3745            type Token<'a> = <Self::Parameters<
3746                'a,
3747            > as alloy_sol_types::SolType>::Token<'a>;
3748            const SIGNATURE: &'static str = "InvalidProof()";
3749            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
3750            #[inline]
3751            fn new<'a>(
3752                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3753            ) -> Self {
3754                tuple.into()
3755            }
3756            #[inline]
3757            fn tokenize(&self) -> Self::Token<'_> {
3758                ()
3759            }
3760        }
3761    };
3762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3763    /**Custom error with signature `InvalidProofLength()` and selector `0x4dc5f6a4`.
3764```solidity
3765error InvalidProofLength();
3766```*/
3767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3768    #[derive(Clone)]
3769    pub struct InvalidProofLength {}
3770    #[allow(
3771        non_camel_case_types,
3772        non_snake_case,
3773        clippy::pub_underscore_fields,
3774        clippy::style
3775    )]
3776    const _: () = {
3777        use alloy::sol_types as alloy_sol_types;
3778        #[doc(hidden)]
3779        type UnderlyingSolTuple<'a> = ();
3780        #[doc(hidden)]
3781        type UnderlyingRustTuple<'a> = ();
3782        #[cfg(test)]
3783        #[allow(dead_code, unreachable_patterns)]
3784        fn _type_assertion(
3785            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3786        ) {
3787            match _t {
3788                alloy_sol_types::private::AssertTypeEq::<
3789                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3790                >(_) => {}
3791            }
3792        }
3793        #[automatically_derived]
3794        #[doc(hidden)]
3795        impl ::core::convert::From<InvalidProofLength> for UnderlyingRustTuple<'_> {
3796            fn from(value: InvalidProofLength) -> Self {
3797                ()
3798            }
3799        }
3800        #[automatically_derived]
3801        #[doc(hidden)]
3802        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProofLength {
3803            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3804                Self {}
3805            }
3806        }
3807        #[automatically_derived]
3808        impl alloy_sol_types::SolError for InvalidProofLength {
3809            type Parameters<'a> = UnderlyingSolTuple<'a>;
3810            type Token<'a> = <Self::Parameters<
3811                'a,
3812            > as alloy_sol_types::SolType>::Token<'a>;
3813            const SIGNATURE: &'static str = "InvalidProofLength()";
3814            const SELECTOR: [u8; 4] = [77u8, 197u8, 246u8, 164u8];
3815            #[inline]
3816            fn new<'a>(
3817                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3818            ) -> Self {
3819                tuple.into()
3820            }
3821            #[inline]
3822            fn tokenize(&self) -> Self::Token<'_> {
3823                ()
3824            }
3825        }
3826    };
3827    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3828    /**Custom error with signature `InvalidPubKeyLength()` and selector `0x9f106472`.
3829```solidity
3830error InvalidPubKeyLength();
3831```*/
3832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3833    #[derive(Clone)]
3834    pub struct InvalidPubKeyLength {}
3835    #[allow(
3836        non_camel_case_types,
3837        non_snake_case,
3838        clippy::pub_underscore_fields,
3839        clippy::style
3840    )]
3841    const _: () = {
3842        use alloy::sol_types as alloy_sol_types;
3843        #[doc(hidden)]
3844        type UnderlyingSolTuple<'a> = ();
3845        #[doc(hidden)]
3846        type UnderlyingRustTuple<'a> = ();
3847        #[cfg(test)]
3848        #[allow(dead_code, unreachable_patterns)]
3849        fn _type_assertion(
3850            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3851        ) {
3852            match _t {
3853                alloy_sol_types::private::AssertTypeEq::<
3854                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3855                >(_) => {}
3856            }
3857        }
3858        #[automatically_derived]
3859        #[doc(hidden)]
3860        impl ::core::convert::From<InvalidPubKeyLength> for UnderlyingRustTuple<'_> {
3861            fn from(value: InvalidPubKeyLength) -> Self {
3862                ()
3863            }
3864        }
3865        #[automatically_derived]
3866        #[doc(hidden)]
3867        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPubKeyLength {
3868            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3869                Self {}
3870            }
3871        }
3872        #[automatically_derived]
3873        impl alloy_sol_types::SolError for InvalidPubKeyLength {
3874            type Parameters<'a> = UnderlyingSolTuple<'a>;
3875            type Token<'a> = <Self::Parameters<
3876                'a,
3877            > as alloy_sol_types::SolType>::Token<'a>;
3878            const SIGNATURE: &'static str = "InvalidPubKeyLength()";
3879            const SELECTOR: [u8; 4] = [159u8, 16u8, 100u8, 114u8];
3880            #[inline]
3881            fn new<'a>(
3882                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3883            ) -> Self {
3884                tuple.into()
3885            }
3886            #[inline]
3887            fn tokenize(&self) -> Self::Token<'_> {
3888                ()
3889            }
3890        }
3891    };
3892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3893    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
3894```solidity
3895error InvalidShortString();
3896```*/
3897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3898    #[derive(Clone)]
3899    pub struct InvalidShortString {}
3900    #[allow(
3901        non_camel_case_types,
3902        non_snake_case,
3903        clippy::pub_underscore_fields,
3904        clippy::style
3905    )]
3906    const _: () = {
3907        use alloy::sol_types as alloy_sol_types;
3908        #[doc(hidden)]
3909        type UnderlyingSolTuple<'a> = ();
3910        #[doc(hidden)]
3911        type UnderlyingRustTuple<'a> = ();
3912        #[cfg(test)]
3913        #[allow(dead_code, unreachable_patterns)]
3914        fn _type_assertion(
3915            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3916        ) {
3917            match _t {
3918                alloy_sol_types::private::AssertTypeEq::<
3919                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3920                >(_) => {}
3921            }
3922        }
3923        #[automatically_derived]
3924        #[doc(hidden)]
3925        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
3926            fn from(value: InvalidShortString) -> Self {
3927                ()
3928            }
3929        }
3930        #[automatically_derived]
3931        #[doc(hidden)]
3932        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
3933            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3934                Self {}
3935            }
3936        }
3937        #[automatically_derived]
3938        impl alloy_sol_types::SolError for InvalidShortString {
3939            type Parameters<'a> = UnderlyingSolTuple<'a>;
3940            type Token<'a> = <Self::Parameters<
3941                'a,
3942            > as alloy_sol_types::SolType>::Token<'a>;
3943            const SIGNATURE: &'static str = "InvalidShortString()";
3944            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
3945            #[inline]
3946            fn new<'a>(
3947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3948            ) -> Self {
3949                tuple.into()
3950            }
3951            #[inline]
3952            fn tokenize(&self) -> Self::Token<'_> {
3953                ()
3954            }
3955        }
3956    };
3957    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3958    /**Custom error with signature `InvalidValidatorFieldsLength()` and selector `0x200591bd`.
3959```solidity
3960error InvalidValidatorFieldsLength();
3961```*/
3962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3963    #[derive(Clone)]
3964    pub struct InvalidValidatorFieldsLength {}
3965    #[allow(
3966        non_camel_case_types,
3967        non_snake_case,
3968        clippy::pub_underscore_fields,
3969        clippy::style
3970    )]
3971    const _: () = {
3972        use alloy::sol_types as alloy_sol_types;
3973        #[doc(hidden)]
3974        type UnderlyingSolTuple<'a> = ();
3975        #[doc(hidden)]
3976        type UnderlyingRustTuple<'a> = ();
3977        #[cfg(test)]
3978        #[allow(dead_code, unreachable_patterns)]
3979        fn _type_assertion(
3980            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3981        ) {
3982            match _t {
3983                alloy_sol_types::private::AssertTypeEq::<
3984                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3985                >(_) => {}
3986            }
3987        }
3988        #[automatically_derived]
3989        #[doc(hidden)]
3990        impl ::core::convert::From<InvalidValidatorFieldsLength>
3991        for UnderlyingRustTuple<'_> {
3992            fn from(value: InvalidValidatorFieldsLength) -> Self {
3993                ()
3994            }
3995        }
3996        #[automatically_derived]
3997        #[doc(hidden)]
3998        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3999        for InvalidValidatorFieldsLength {
4000            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4001                Self {}
4002            }
4003        }
4004        #[automatically_derived]
4005        impl alloy_sol_types::SolError for InvalidValidatorFieldsLength {
4006            type Parameters<'a> = UnderlyingSolTuple<'a>;
4007            type Token<'a> = <Self::Parameters<
4008                'a,
4009            > as alloy_sol_types::SolType>::Token<'a>;
4010            const SIGNATURE: &'static str = "InvalidValidatorFieldsLength()";
4011            const SELECTOR: [u8; 4] = [32u8, 5u8, 145u8, 189u8];
4012            #[inline]
4013            fn new<'a>(
4014                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4015            ) -> Self {
4016                tuple.into()
4017            }
4018            #[inline]
4019            fn tokenize(&self) -> Self::Token<'_> {
4020                ()
4021            }
4022        }
4023    };
4024    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4025    /**Custom error with signature `MsgValueNot32ETH()` and selector `0x24b4b598`.
4026```solidity
4027error MsgValueNot32ETH();
4028```*/
4029    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4030    #[derive(Clone)]
4031    pub struct MsgValueNot32ETH {}
4032    #[allow(
4033        non_camel_case_types,
4034        non_snake_case,
4035        clippy::pub_underscore_fields,
4036        clippy::style
4037    )]
4038    const _: () = {
4039        use alloy::sol_types as alloy_sol_types;
4040        #[doc(hidden)]
4041        type UnderlyingSolTuple<'a> = ();
4042        #[doc(hidden)]
4043        type UnderlyingRustTuple<'a> = ();
4044        #[cfg(test)]
4045        #[allow(dead_code, unreachable_patterns)]
4046        fn _type_assertion(
4047            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4048        ) {
4049            match _t {
4050                alloy_sol_types::private::AssertTypeEq::<
4051                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4052                >(_) => {}
4053            }
4054        }
4055        #[automatically_derived]
4056        #[doc(hidden)]
4057        impl ::core::convert::From<MsgValueNot32ETH> for UnderlyingRustTuple<'_> {
4058            fn from(value: MsgValueNot32ETH) -> Self {
4059                ()
4060            }
4061        }
4062        #[automatically_derived]
4063        #[doc(hidden)]
4064        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MsgValueNot32ETH {
4065            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4066                Self {}
4067            }
4068        }
4069        #[automatically_derived]
4070        impl alloy_sol_types::SolError for MsgValueNot32ETH {
4071            type Parameters<'a> = UnderlyingSolTuple<'a>;
4072            type Token<'a> = <Self::Parameters<
4073                'a,
4074            > as alloy_sol_types::SolType>::Token<'a>;
4075            const SIGNATURE: &'static str = "MsgValueNot32ETH()";
4076            const SELECTOR: [u8; 4] = [36u8, 180u8, 181u8, 152u8];
4077            #[inline]
4078            fn new<'a>(
4079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4080            ) -> Self {
4081                tuple.into()
4082            }
4083            #[inline]
4084            fn tokenize(&self) -> Self::Token<'_> {
4085                ()
4086            }
4087        }
4088    };
4089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4090    /**Custom error with signature `NoActiveCheckpoint()` and selector `0x1a544f49`.
4091```solidity
4092error NoActiveCheckpoint();
4093```*/
4094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4095    #[derive(Clone)]
4096    pub struct NoActiveCheckpoint {}
4097    #[allow(
4098        non_camel_case_types,
4099        non_snake_case,
4100        clippy::pub_underscore_fields,
4101        clippy::style
4102    )]
4103    const _: () = {
4104        use alloy::sol_types as alloy_sol_types;
4105        #[doc(hidden)]
4106        type UnderlyingSolTuple<'a> = ();
4107        #[doc(hidden)]
4108        type UnderlyingRustTuple<'a> = ();
4109        #[cfg(test)]
4110        #[allow(dead_code, unreachable_patterns)]
4111        fn _type_assertion(
4112            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4113        ) {
4114            match _t {
4115                alloy_sol_types::private::AssertTypeEq::<
4116                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4117                >(_) => {}
4118            }
4119        }
4120        #[automatically_derived]
4121        #[doc(hidden)]
4122        impl ::core::convert::From<NoActiveCheckpoint> for UnderlyingRustTuple<'_> {
4123            fn from(value: NoActiveCheckpoint) -> Self {
4124                ()
4125            }
4126        }
4127        #[automatically_derived]
4128        #[doc(hidden)]
4129        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoActiveCheckpoint {
4130            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4131                Self {}
4132            }
4133        }
4134        #[automatically_derived]
4135        impl alloy_sol_types::SolError for NoActiveCheckpoint {
4136            type Parameters<'a> = UnderlyingSolTuple<'a>;
4137            type Token<'a> = <Self::Parameters<
4138                'a,
4139            > as alloy_sol_types::SolType>::Token<'a>;
4140            const SIGNATURE: &'static str = "NoActiveCheckpoint()";
4141            const SELECTOR: [u8; 4] = [26u8, 84u8, 79u8, 73u8];
4142            #[inline]
4143            fn new<'a>(
4144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4145            ) -> Self {
4146                tuple.into()
4147            }
4148            #[inline]
4149            fn tokenize(&self) -> Self::Token<'_> {
4150                ()
4151            }
4152        }
4153    };
4154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4155    /**Custom error with signature `NoBalanceToCheckpoint()` and selector `0xcb7aa564`.
4156```solidity
4157error NoBalanceToCheckpoint();
4158```*/
4159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4160    #[derive(Clone)]
4161    pub struct NoBalanceToCheckpoint {}
4162    #[allow(
4163        non_camel_case_types,
4164        non_snake_case,
4165        clippy::pub_underscore_fields,
4166        clippy::style
4167    )]
4168    const _: () = {
4169        use alloy::sol_types as alloy_sol_types;
4170        #[doc(hidden)]
4171        type UnderlyingSolTuple<'a> = ();
4172        #[doc(hidden)]
4173        type UnderlyingRustTuple<'a> = ();
4174        #[cfg(test)]
4175        #[allow(dead_code, unreachable_patterns)]
4176        fn _type_assertion(
4177            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4178        ) {
4179            match _t {
4180                alloy_sol_types::private::AssertTypeEq::<
4181                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4182                >(_) => {}
4183            }
4184        }
4185        #[automatically_derived]
4186        #[doc(hidden)]
4187        impl ::core::convert::From<NoBalanceToCheckpoint> for UnderlyingRustTuple<'_> {
4188            fn from(value: NoBalanceToCheckpoint) -> Self {
4189                ()
4190            }
4191        }
4192        #[automatically_derived]
4193        #[doc(hidden)]
4194        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoBalanceToCheckpoint {
4195            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4196                Self {}
4197            }
4198        }
4199        #[automatically_derived]
4200        impl alloy_sol_types::SolError for NoBalanceToCheckpoint {
4201            type Parameters<'a> = UnderlyingSolTuple<'a>;
4202            type Token<'a> = <Self::Parameters<
4203                'a,
4204            > as alloy_sol_types::SolType>::Token<'a>;
4205            const SIGNATURE: &'static str = "NoBalanceToCheckpoint()";
4206            const SELECTOR: [u8; 4] = [203u8, 122u8, 165u8, 100u8];
4207            #[inline]
4208            fn new<'a>(
4209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4210            ) -> Self {
4211                tuple.into()
4212            }
4213            #[inline]
4214            fn tokenize(&self) -> Self::Token<'_> {
4215                ()
4216            }
4217        }
4218    };
4219    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4220    /**Custom error with signature `OnlyEigenPodManager()` and selector `0xc84e9984`.
4221```solidity
4222error OnlyEigenPodManager();
4223```*/
4224    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4225    #[derive(Clone)]
4226    pub struct OnlyEigenPodManager {}
4227    #[allow(
4228        non_camel_case_types,
4229        non_snake_case,
4230        clippy::pub_underscore_fields,
4231        clippy::style
4232    )]
4233    const _: () = {
4234        use alloy::sol_types as alloy_sol_types;
4235        #[doc(hidden)]
4236        type UnderlyingSolTuple<'a> = ();
4237        #[doc(hidden)]
4238        type UnderlyingRustTuple<'a> = ();
4239        #[cfg(test)]
4240        #[allow(dead_code, unreachable_patterns)]
4241        fn _type_assertion(
4242            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4243        ) {
4244            match _t {
4245                alloy_sol_types::private::AssertTypeEq::<
4246                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4247                >(_) => {}
4248            }
4249        }
4250        #[automatically_derived]
4251        #[doc(hidden)]
4252        impl ::core::convert::From<OnlyEigenPodManager> for UnderlyingRustTuple<'_> {
4253            fn from(value: OnlyEigenPodManager) -> Self {
4254                ()
4255            }
4256        }
4257        #[automatically_derived]
4258        #[doc(hidden)]
4259        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodManager {
4260            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4261                Self {}
4262            }
4263        }
4264        #[automatically_derived]
4265        impl alloy_sol_types::SolError for OnlyEigenPodManager {
4266            type Parameters<'a> = UnderlyingSolTuple<'a>;
4267            type Token<'a> = <Self::Parameters<
4268                'a,
4269            > as alloy_sol_types::SolType>::Token<'a>;
4270            const SIGNATURE: &'static str = "OnlyEigenPodManager()";
4271            const SELECTOR: [u8; 4] = [200u8, 78u8, 153u8, 132u8];
4272            #[inline]
4273            fn new<'a>(
4274                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4275            ) -> Self {
4276                tuple.into()
4277            }
4278            #[inline]
4279            fn tokenize(&self) -> Self::Token<'_> {
4280                ()
4281            }
4282        }
4283    };
4284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4285    /**Custom error with signature `OnlyEigenPodOwner()` and selector `0xe33e6e06`.
4286```solidity
4287error OnlyEigenPodOwner();
4288```*/
4289    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4290    #[derive(Clone)]
4291    pub struct OnlyEigenPodOwner {}
4292    #[allow(
4293        non_camel_case_types,
4294        non_snake_case,
4295        clippy::pub_underscore_fields,
4296        clippy::style
4297    )]
4298    const _: () = {
4299        use alloy::sol_types as alloy_sol_types;
4300        #[doc(hidden)]
4301        type UnderlyingSolTuple<'a> = ();
4302        #[doc(hidden)]
4303        type UnderlyingRustTuple<'a> = ();
4304        #[cfg(test)]
4305        #[allow(dead_code, unreachable_patterns)]
4306        fn _type_assertion(
4307            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4308        ) {
4309            match _t {
4310                alloy_sol_types::private::AssertTypeEq::<
4311                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4312                >(_) => {}
4313            }
4314        }
4315        #[automatically_derived]
4316        #[doc(hidden)]
4317        impl ::core::convert::From<OnlyEigenPodOwner> for UnderlyingRustTuple<'_> {
4318            fn from(value: OnlyEigenPodOwner) -> Self {
4319                ()
4320            }
4321        }
4322        #[automatically_derived]
4323        #[doc(hidden)]
4324        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodOwner {
4325            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4326                Self {}
4327            }
4328        }
4329        #[automatically_derived]
4330        impl alloy_sol_types::SolError for OnlyEigenPodOwner {
4331            type Parameters<'a> = UnderlyingSolTuple<'a>;
4332            type Token<'a> = <Self::Parameters<
4333                'a,
4334            > as alloy_sol_types::SolType>::Token<'a>;
4335            const SIGNATURE: &'static str = "OnlyEigenPodOwner()";
4336            const SELECTOR: [u8; 4] = [227u8, 62u8, 110u8, 6u8];
4337            #[inline]
4338            fn new<'a>(
4339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4340            ) -> Self {
4341                tuple.into()
4342            }
4343            #[inline]
4344            fn tokenize(&self) -> Self::Token<'_> {
4345                ()
4346            }
4347        }
4348    };
4349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4350    /**Custom error with signature `OnlyEigenPodOwnerOrProofSubmitter()` and selector `0x427a7779`.
4351```solidity
4352error OnlyEigenPodOwnerOrProofSubmitter();
4353```*/
4354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4355    #[derive(Clone)]
4356    pub struct OnlyEigenPodOwnerOrProofSubmitter {}
4357    #[allow(
4358        non_camel_case_types,
4359        non_snake_case,
4360        clippy::pub_underscore_fields,
4361        clippy::style
4362    )]
4363    const _: () = {
4364        use alloy::sol_types as alloy_sol_types;
4365        #[doc(hidden)]
4366        type UnderlyingSolTuple<'a> = ();
4367        #[doc(hidden)]
4368        type UnderlyingRustTuple<'a> = ();
4369        #[cfg(test)]
4370        #[allow(dead_code, unreachable_patterns)]
4371        fn _type_assertion(
4372            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4373        ) {
4374            match _t {
4375                alloy_sol_types::private::AssertTypeEq::<
4376                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4377                >(_) => {}
4378            }
4379        }
4380        #[automatically_derived]
4381        #[doc(hidden)]
4382        impl ::core::convert::From<OnlyEigenPodOwnerOrProofSubmitter>
4383        for UnderlyingRustTuple<'_> {
4384            fn from(value: OnlyEigenPodOwnerOrProofSubmitter) -> Self {
4385                ()
4386            }
4387        }
4388        #[automatically_derived]
4389        #[doc(hidden)]
4390        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4391        for OnlyEigenPodOwnerOrProofSubmitter {
4392            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4393                Self {}
4394            }
4395        }
4396        #[automatically_derived]
4397        impl alloy_sol_types::SolError for OnlyEigenPodOwnerOrProofSubmitter {
4398            type Parameters<'a> = UnderlyingSolTuple<'a>;
4399            type Token<'a> = <Self::Parameters<
4400                'a,
4401            > as alloy_sol_types::SolType>::Token<'a>;
4402            const SIGNATURE: &'static str = "OnlyEigenPodOwnerOrProofSubmitter()";
4403            const SELECTOR: [u8; 4] = [66u8, 122u8, 119u8, 121u8];
4404            #[inline]
4405            fn new<'a>(
4406                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4407            ) -> Self {
4408                tuple.into()
4409            }
4410            #[inline]
4411            fn tokenize(&self) -> Self::Token<'_> {
4412                ()
4413            }
4414        }
4415    };
4416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4417    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
4418```solidity
4419error StringTooLong(string str);
4420```*/
4421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4422    #[derive(Clone)]
4423    pub struct StringTooLong {
4424        #[allow(missing_docs)]
4425        pub str: alloy::sol_types::private::String,
4426    }
4427    #[allow(
4428        non_camel_case_types,
4429        non_snake_case,
4430        clippy::pub_underscore_fields,
4431        clippy::style
4432    )]
4433    const _: () = {
4434        use alloy::sol_types as alloy_sol_types;
4435        #[doc(hidden)]
4436        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4437        #[doc(hidden)]
4438        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4439        #[cfg(test)]
4440        #[allow(dead_code, unreachable_patterns)]
4441        fn _type_assertion(
4442            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4443        ) {
4444            match _t {
4445                alloy_sol_types::private::AssertTypeEq::<
4446                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4447                >(_) => {}
4448            }
4449        }
4450        #[automatically_derived]
4451        #[doc(hidden)]
4452        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
4453            fn from(value: StringTooLong) -> Self {
4454                (value.str,)
4455            }
4456        }
4457        #[automatically_derived]
4458        #[doc(hidden)]
4459        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
4460            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4461                Self { str: tuple.0 }
4462            }
4463        }
4464        #[automatically_derived]
4465        impl alloy_sol_types::SolError for StringTooLong {
4466            type Parameters<'a> = UnderlyingSolTuple<'a>;
4467            type Token<'a> = <Self::Parameters<
4468                'a,
4469            > as alloy_sol_types::SolType>::Token<'a>;
4470            const SIGNATURE: &'static str = "StringTooLong(string)";
4471            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
4472            #[inline]
4473            fn new<'a>(
4474                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4475            ) -> Self {
4476                tuple.into()
4477            }
4478            #[inline]
4479            fn tokenize(&self) -> Self::Token<'_> {
4480                (
4481                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4482                        &self.str,
4483                    ),
4484                )
4485            }
4486        }
4487    };
4488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4489    /**Custom error with signature `TimestampOutOfRange()` and selector `0xf289ccda`.
4490```solidity
4491error TimestampOutOfRange();
4492```*/
4493    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4494    #[derive(Clone)]
4495    pub struct TimestampOutOfRange {}
4496    #[allow(
4497        non_camel_case_types,
4498        non_snake_case,
4499        clippy::pub_underscore_fields,
4500        clippy::style
4501    )]
4502    const _: () = {
4503        use alloy::sol_types as alloy_sol_types;
4504        #[doc(hidden)]
4505        type UnderlyingSolTuple<'a> = ();
4506        #[doc(hidden)]
4507        type UnderlyingRustTuple<'a> = ();
4508        #[cfg(test)]
4509        #[allow(dead_code, unreachable_patterns)]
4510        fn _type_assertion(
4511            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4512        ) {
4513            match _t {
4514                alloy_sol_types::private::AssertTypeEq::<
4515                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4516                >(_) => {}
4517            }
4518        }
4519        #[automatically_derived]
4520        #[doc(hidden)]
4521        impl ::core::convert::From<TimestampOutOfRange> for UnderlyingRustTuple<'_> {
4522            fn from(value: TimestampOutOfRange) -> Self {
4523                ()
4524            }
4525        }
4526        #[automatically_derived]
4527        #[doc(hidden)]
4528        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimestampOutOfRange {
4529            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4530                Self {}
4531            }
4532        }
4533        #[automatically_derived]
4534        impl alloy_sol_types::SolError for TimestampOutOfRange {
4535            type Parameters<'a> = UnderlyingSolTuple<'a>;
4536            type Token<'a> = <Self::Parameters<
4537                'a,
4538            > as alloy_sol_types::SolType>::Token<'a>;
4539            const SIGNATURE: &'static str = "TimestampOutOfRange()";
4540            const SELECTOR: [u8; 4] = [242u8, 137u8, 204u8, 218u8];
4541            #[inline]
4542            fn new<'a>(
4543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4544            ) -> Self {
4545                tuple.into()
4546            }
4547            #[inline]
4548            fn tokenize(&self) -> Self::Token<'_> {
4549                ()
4550            }
4551        }
4552    };
4553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4554    /**Custom error with signature `ValidatorInactiveOnBeaconChain()` and selector `0x65608db4`.
4555```solidity
4556error ValidatorInactiveOnBeaconChain();
4557```*/
4558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4559    #[derive(Clone)]
4560    pub struct ValidatorInactiveOnBeaconChain {}
4561    #[allow(
4562        non_camel_case_types,
4563        non_snake_case,
4564        clippy::pub_underscore_fields,
4565        clippy::style
4566    )]
4567    const _: () = {
4568        use alloy::sol_types as alloy_sol_types;
4569        #[doc(hidden)]
4570        type UnderlyingSolTuple<'a> = ();
4571        #[doc(hidden)]
4572        type UnderlyingRustTuple<'a> = ();
4573        #[cfg(test)]
4574        #[allow(dead_code, unreachable_patterns)]
4575        fn _type_assertion(
4576            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4577        ) {
4578            match _t {
4579                alloy_sol_types::private::AssertTypeEq::<
4580                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4581                >(_) => {}
4582            }
4583        }
4584        #[automatically_derived]
4585        #[doc(hidden)]
4586        impl ::core::convert::From<ValidatorInactiveOnBeaconChain>
4587        for UnderlyingRustTuple<'_> {
4588            fn from(value: ValidatorInactiveOnBeaconChain) -> Self {
4589                ()
4590            }
4591        }
4592        #[automatically_derived]
4593        #[doc(hidden)]
4594        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4595        for ValidatorInactiveOnBeaconChain {
4596            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4597                Self {}
4598            }
4599        }
4600        #[automatically_derived]
4601        impl alloy_sol_types::SolError for ValidatorInactiveOnBeaconChain {
4602            type Parameters<'a> = UnderlyingSolTuple<'a>;
4603            type Token<'a> = <Self::Parameters<
4604                'a,
4605            > as alloy_sol_types::SolType>::Token<'a>;
4606            const SIGNATURE: &'static str = "ValidatorInactiveOnBeaconChain()";
4607            const SELECTOR: [u8; 4] = [101u8, 96u8, 141u8, 180u8];
4608            #[inline]
4609            fn new<'a>(
4610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4611            ) -> Self {
4612                tuple.into()
4613            }
4614            #[inline]
4615            fn tokenize(&self) -> Self::Token<'_> {
4616                ()
4617            }
4618        }
4619    };
4620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4621    /**Custom error with signature `ValidatorIsExitingBeaconChain()` and selector `0x2eade637`.
4622```solidity
4623error ValidatorIsExitingBeaconChain();
4624```*/
4625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4626    #[derive(Clone)]
4627    pub struct ValidatorIsExitingBeaconChain {}
4628    #[allow(
4629        non_camel_case_types,
4630        non_snake_case,
4631        clippy::pub_underscore_fields,
4632        clippy::style
4633    )]
4634    const _: () = {
4635        use alloy::sol_types as alloy_sol_types;
4636        #[doc(hidden)]
4637        type UnderlyingSolTuple<'a> = ();
4638        #[doc(hidden)]
4639        type UnderlyingRustTuple<'a> = ();
4640        #[cfg(test)]
4641        #[allow(dead_code, unreachable_patterns)]
4642        fn _type_assertion(
4643            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4644        ) {
4645            match _t {
4646                alloy_sol_types::private::AssertTypeEq::<
4647                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4648                >(_) => {}
4649            }
4650        }
4651        #[automatically_derived]
4652        #[doc(hidden)]
4653        impl ::core::convert::From<ValidatorIsExitingBeaconChain>
4654        for UnderlyingRustTuple<'_> {
4655            fn from(value: ValidatorIsExitingBeaconChain) -> Self {
4656                ()
4657            }
4658        }
4659        #[automatically_derived]
4660        #[doc(hidden)]
4661        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4662        for ValidatorIsExitingBeaconChain {
4663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4664                Self {}
4665            }
4666        }
4667        #[automatically_derived]
4668        impl alloy_sol_types::SolError for ValidatorIsExitingBeaconChain {
4669            type Parameters<'a> = UnderlyingSolTuple<'a>;
4670            type Token<'a> = <Self::Parameters<
4671                'a,
4672            > as alloy_sol_types::SolType>::Token<'a>;
4673            const SIGNATURE: &'static str = "ValidatorIsExitingBeaconChain()";
4674            const SELECTOR: [u8; 4] = [46u8, 173u8, 230u8, 55u8];
4675            #[inline]
4676            fn new<'a>(
4677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4678            ) -> Self {
4679                tuple.into()
4680            }
4681            #[inline]
4682            fn tokenize(&self) -> Self::Token<'_> {
4683                ()
4684            }
4685        }
4686    };
4687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4688    /**Custom error with signature `ValidatorNotActiveInPod()` and selector `0xd49e19a7`.
4689```solidity
4690error ValidatorNotActiveInPod();
4691```*/
4692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4693    #[derive(Clone)]
4694    pub struct ValidatorNotActiveInPod {}
4695    #[allow(
4696        non_camel_case_types,
4697        non_snake_case,
4698        clippy::pub_underscore_fields,
4699        clippy::style
4700    )]
4701    const _: () = {
4702        use alloy::sol_types as alloy_sol_types;
4703        #[doc(hidden)]
4704        type UnderlyingSolTuple<'a> = ();
4705        #[doc(hidden)]
4706        type UnderlyingRustTuple<'a> = ();
4707        #[cfg(test)]
4708        #[allow(dead_code, unreachable_patterns)]
4709        fn _type_assertion(
4710            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4711        ) {
4712            match _t {
4713                alloy_sol_types::private::AssertTypeEq::<
4714                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4715                >(_) => {}
4716            }
4717        }
4718        #[automatically_derived]
4719        #[doc(hidden)]
4720        impl ::core::convert::From<ValidatorNotActiveInPod> for UnderlyingRustTuple<'_> {
4721            fn from(value: ValidatorNotActiveInPod) -> Self {
4722                ()
4723            }
4724        }
4725        #[automatically_derived]
4726        #[doc(hidden)]
4727        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotActiveInPod {
4728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4729                Self {}
4730            }
4731        }
4732        #[automatically_derived]
4733        impl alloy_sol_types::SolError for ValidatorNotActiveInPod {
4734            type Parameters<'a> = UnderlyingSolTuple<'a>;
4735            type Token<'a> = <Self::Parameters<
4736                'a,
4737            > as alloy_sol_types::SolType>::Token<'a>;
4738            const SIGNATURE: &'static str = "ValidatorNotActiveInPod()";
4739            const SELECTOR: [u8; 4] = [212u8, 158u8, 25u8, 167u8];
4740            #[inline]
4741            fn new<'a>(
4742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4743            ) -> Self {
4744                tuple.into()
4745            }
4746            #[inline]
4747            fn tokenize(&self) -> Self::Token<'_> {
4748                ()
4749            }
4750        }
4751    };
4752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4753    /**Custom error with signature `ValidatorNotSlashedOnBeaconChain()` and selector `0xb0e72f68`.
4754```solidity
4755error ValidatorNotSlashedOnBeaconChain();
4756```*/
4757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4758    #[derive(Clone)]
4759    pub struct ValidatorNotSlashedOnBeaconChain {}
4760    #[allow(
4761        non_camel_case_types,
4762        non_snake_case,
4763        clippy::pub_underscore_fields,
4764        clippy::style
4765    )]
4766    const _: () = {
4767        use alloy::sol_types as alloy_sol_types;
4768        #[doc(hidden)]
4769        type UnderlyingSolTuple<'a> = ();
4770        #[doc(hidden)]
4771        type UnderlyingRustTuple<'a> = ();
4772        #[cfg(test)]
4773        #[allow(dead_code, unreachable_patterns)]
4774        fn _type_assertion(
4775            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4776        ) {
4777            match _t {
4778                alloy_sol_types::private::AssertTypeEq::<
4779                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4780                >(_) => {}
4781            }
4782        }
4783        #[automatically_derived]
4784        #[doc(hidden)]
4785        impl ::core::convert::From<ValidatorNotSlashedOnBeaconChain>
4786        for UnderlyingRustTuple<'_> {
4787            fn from(value: ValidatorNotSlashedOnBeaconChain) -> Self {
4788                ()
4789            }
4790        }
4791        #[automatically_derived]
4792        #[doc(hidden)]
4793        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4794        for ValidatorNotSlashedOnBeaconChain {
4795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4796                Self {}
4797            }
4798        }
4799        #[automatically_derived]
4800        impl alloy_sol_types::SolError for ValidatorNotSlashedOnBeaconChain {
4801            type Parameters<'a> = UnderlyingSolTuple<'a>;
4802            type Token<'a> = <Self::Parameters<
4803                'a,
4804            > as alloy_sol_types::SolType>::Token<'a>;
4805            const SIGNATURE: &'static str = "ValidatorNotSlashedOnBeaconChain()";
4806            const SELECTOR: [u8; 4] = [176u8, 231u8, 47u8, 104u8];
4807            #[inline]
4808            fn new<'a>(
4809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4810            ) -> Self {
4811                tuple.into()
4812            }
4813            #[inline]
4814            fn tokenize(&self) -> Self::Token<'_> {
4815                ()
4816            }
4817        }
4818    };
4819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4820    /**Custom error with signature `WithdrawalCredentialsNotForEigenPod()` and selector `0x6ee5baa6`.
4821```solidity
4822error WithdrawalCredentialsNotForEigenPod();
4823```*/
4824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4825    #[derive(Clone)]
4826    pub struct WithdrawalCredentialsNotForEigenPod {}
4827    #[allow(
4828        non_camel_case_types,
4829        non_snake_case,
4830        clippy::pub_underscore_fields,
4831        clippy::style
4832    )]
4833    const _: () = {
4834        use alloy::sol_types as alloy_sol_types;
4835        #[doc(hidden)]
4836        type UnderlyingSolTuple<'a> = ();
4837        #[doc(hidden)]
4838        type UnderlyingRustTuple<'a> = ();
4839        #[cfg(test)]
4840        #[allow(dead_code, unreachable_patterns)]
4841        fn _type_assertion(
4842            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4843        ) {
4844            match _t {
4845                alloy_sol_types::private::AssertTypeEq::<
4846                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4847                >(_) => {}
4848            }
4849        }
4850        #[automatically_derived]
4851        #[doc(hidden)]
4852        impl ::core::convert::From<WithdrawalCredentialsNotForEigenPod>
4853        for UnderlyingRustTuple<'_> {
4854            fn from(value: WithdrawalCredentialsNotForEigenPod) -> Self {
4855                ()
4856            }
4857        }
4858        #[automatically_derived]
4859        #[doc(hidden)]
4860        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4861        for WithdrawalCredentialsNotForEigenPod {
4862            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4863                Self {}
4864            }
4865        }
4866        #[automatically_derived]
4867        impl alloy_sol_types::SolError for WithdrawalCredentialsNotForEigenPod {
4868            type Parameters<'a> = UnderlyingSolTuple<'a>;
4869            type Token<'a> = <Self::Parameters<
4870                'a,
4871            > as alloy_sol_types::SolType>::Token<'a>;
4872            const SIGNATURE: &'static str = "WithdrawalCredentialsNotForEigenPod()";
4873            const SELECTOR: [u8; 4] = [110u8, 229u8, 186u8, 166u8];
4874            #[inline]
4875            fn new<'a>(
4876                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4877            ) -> Self {
4878                tuple.into()
4879            }
4880            #[inline]
4881            fn tokenize(&self) -> Self::Token<'_> {
4882                ()
4883            }
4884        }
4885    };
4886    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4887    /**Event with signature `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`.
4888```solidity
4889event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount);
4890```*/
4891    #[allow(
4892        non_camel_case_types,
4893        non_snake_case,
4894        clippy::pub_underscore_fields,
4895        clippy::style
4896    )]
4897    #[derive(Clone)]
4898    pub struct CheckpointCreated {
4899        #[allow(missing_docs)]
4900        pub checkpointTimestamp: u64,
4901        #[allow(missing_docs)]
4902        pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>,
4903        #[allow(missing_docs)]
4904        pub validatorCount: alloy::sol_types::private::primitives::aliases::U256,
4905    }
4906    #[allow(
4907        non_camel_case_types,
4908        non_snake_case,
4909        clippy::pub_underscore_fields,
4910        clippy::style
4911    )]
4912    const _: () = {
4913        use alloy::sol_types as alloy_sol_types;
4914        #[automatically_derived]
4915        impl alloy_sol_types::SolEvent for CheckpointCreated {
4916            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4917            type DataToken<'a> = <Self::DataTuple<
4918                'a,
4919            > as alloy_sol_types::SolType>::Token<'a>;
4920            type TopicList = (
4921                alloy_sol_types::sol_data::FixedBytes<32>,
4922                alloy::sol_types::sol_data::Uint<64>,
4923                alloy::sol_types::sol_data::FixedBytes<32>,
4924            );
4925            const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)";
4926            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4927                87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8,
4928                164u8, 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8,
4929                244u8, 183u8, 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8,
4930            ]);
4931            const ANONYMOUS: bool = false;
4932            #[allow(unused_variables)]
4933            #[inline]
4934            fn new(
4935                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4936                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4937            ) -> Self {
4938                Self {
4939                    checkpointTimestamp: topics.1,
4940                    beaconBlockRoot: topics.2,
4941                    validatorCount: data.0,
4942                }
4943            }
4944            #[inline]
4945            fn check_signature(
4946                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4947            ) -> alloy_sol_types::Result<()> {
4948                if topics.0 != Self::SIGNATURE_HASH {
4949                    return Err(
4950                        alloy_sol_types::Error::invalid_event_signature_hash(
4951                            Self::SIGNATURE,
4952                            topics.0,
4953                            Self::SIGNATURE_HASH,
4954                        ),
4955                    );
4956                }
4957                Ok(())
4958            }
4959            #[inline]
4960            fn tokenize_body(&self) -> Self::DataToken<'_> {
4961                (
4962                    <alloy::sol_types::sol_data::Uint<
4963                        256,
4964                    > as alloy_sol_types::SolType>::tokenize(&self.validatorCount),
4965                )
4966            }
4967            #[inline]
4968            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4969                (
4970                    Self::SIGNATURE_HASH.into(),
4971                    self.checkpointTimestamp.clone(),
4972                    self.beaconBlockRoot.clone(),
4973                )
4974            }
4975            #[inline]
4976            fn encode_topics_raw(
4977                &self,
4978                out: &mut [alloy_sol_types::abi::token::WordToken],
4979            ) -> alloy_sol_types::Result<()> {
4980                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4981                    return Err(alloy_sol_types::Error::Overrun);
4982                }
4983                out[0usize] = alloy_sol_types::abi::token::WordToken(
4984                    Self::SIGNATURE_HASH,
4985                );
4986                out[1usize] = <alloy::sol_types::sol_data::Uint<
4987                    64,
4988                > as alloy_sol_types::EventTopic>::encode_topic(
4989                    &self.checkpointTimestamp,
4990                );
4991                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
4992                    32,
4993                > as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot);
4994                Ok(())
4995            }
4996        }
4997        #[automatically_derived]
4998        impl alloy_sol_types::private::IntoLogData for CheckpointCreated {
4999            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5000                From::from(self)
5001            }
5002            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5003                From::from(&self)
5004            }
5005        }
5006        #[automatically_derived]
5007        impl From<&CheckpointCreated> for alloy_sol_types::private::LogData {
5008            #[inline]
5009            fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData {
5010                alloy_sol_types::SolEvent::encode_log_data(this)
5011            }
5012        }
5013    };
5014    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5015    /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`.
5016```solidity
5017event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei);
5018```*/
5019    #[allow(
5020        non_camel_case_types,
5021        non_snake_case,
5022        clippy::pub_underscore_fields,
5023        clippy::style
5024    )]
5025    #[derive(Clone)]
5026    pub struct CheckpointFinalized {
5027        #[allow(missing_docs)]
5028        pub checkpointTimestamp: u64,
5029        #[allow(missing_docs)]
5030        pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256,
5031    }
5032    #[allow(
5033        non_camel_case_types,
5034        non_snake_case,
5035        clippy::pub_underscore_fields,
5036        clippy::style
5037    )]
5038    const _: () = {
5039        use alloy::sol_types as alloy_sol_types;
5040        #[automatically_derived]
5041        impl alloy_sol_types::SolEvent for CheckpointFinalized {
5042            type DataTuple<'a> = (alloy::sol_types::sol_data::Int<256>,);
5043            type DataToken<'a> = <Self::DataTuple<
5044                'a,
5045            > as alloy_sol_types::SolType>::Token<'a>;
5046            type TopicList = (
5047                alloy_sol_types::sol_data::FixedBytes<32>,
5048                alloy::sol_types::sol_data::Uint<64>,
5049            );
5050            const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)";
5051            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5052                82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8,
5053                111u8, 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8,
5054                59u8, 207u8, 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8,
5055            ]);
5056            const ANONYMOUS: bool = false;
5057            #[allow(unused_variables)]
5058            #[inline]
5059            fn new(
5060                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5061                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5062            ) -> Self {
5063                Self {
5064                    checkpointTimestamp: topics.1,
5065                    totalShareDeltaWei: data.0,
5066                }
5067            }
5068            #[inline]
5069            fn check_signature(
5070                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5071            ) -> alloy_sol_types::Result<()> {
5072                if topics.0 != Self::SIGNATURE_HASH {
5073                    return Err(
5074                        alloy_sol_types::Error::invalid_event_signature_hash(
5075                            Self::SIGNATURE,
5076                            topics.0,
5077                            Self::SIGNATURE_HASH,
5078                        ),
5079                    );
5080                }
5081                Ok(())
5082            }
5083            #[inline]
5084            fn tokenize_body(&self) -> Self::DataToken<'_> {
5085                (
5086                    <alloy::sol_types::sol_data::Int<
5087                        256,
5088                    > as alloy_sol_types::SolType>::tokenize(&self.totalShareDeltaWei),
5089                )
5090            }
5091            #[inline]
5092            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5093                (Self::SIGNATURE_HASH.into(), self.checkpointTimestamp.clone())
5094            }
5095            #[inline]
5096            fn encode_topics_raw(
5097                &self,
5098                out: &mut [alloy_sol_types::abi::token::WordToken],
5099            ) -> alloy_sol_types::Result<()> {
5100                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5101                    return Err(alloy_sol_types::Error::Overrun);
5102                }
5103                out[0usize] = alloy_sol_types::abi::token::WordToken(
5104                    Self::SIGNATURE_HASH,
5105                );
5106                out[1usize] = <alloy::sol_types::sol_data::Uint<
5107                    64,
5108                > as alloy_sol_types::EventTopic>::encode_topic(
5109                    &self.checkpointTimestamp,
5110                );
5111                Ok(())
5112            }
5113        }
5114        #[automatically_derived]
5115        impl alloy_sol_types::private::IntoLogData for CheckpointFinalized {
5116            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5117                From::from(self)
5118            }
5119            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5120                From::from(&self)
5121            }
5122        }
5123        #[automatically_derived]
5124        impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData {
5125            #[inline]
5126            fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData {
5127                alloy_sol_types::SolEvent::encode_log_data(this)
5128            }
5129        }
5130    };
5131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5132    /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`.
5133```solidity
5134event EigenPodStaked(bytes pubkey);
5135```*/
5136    #[allow(
5137        non_camel_case_types,
5138        non_snake_case,
5139        clippy::pub_underscore_fields,
5140        clippy::style
5141    )]
5142    #[derive(Clone)]
5143    pub struct EigenPodStaked {
5144        #[allow(missing_docs)]
5145        pub pubkey: alloy::sol_types::private::Bytes,
5146    }
5147    #[allow(
5148        non_camel_case_types,
5149        non_snake_case,
5150        clippy::pub_underscore_fields,
5151        clippy::style
5152    )]
5153    const _: () = {
5154        use alloy::sol_types as alloy_sol_types;
5155        #[automatically_derived]
5156        impl alloy_sol_types::SolEvent for EigenPodStaked {
5157            type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
5158            type DataToken<'a> = <Self::DataTuple<
5159                'a,
5160            > as alloy_sol_types::SolType>::Token<'a>;
5161            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5162            const SIGNATURE: &'static str = "EigenPodStaked(bytes)";
5163            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5164                96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8,
5165                108u8, 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8,
5166                77u8, 34u8, 132u8, 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8,
5167            ]);
5168            const ANONYMOUS: bool = false;
5169            #[allow(unused_variables)]
5170            #[inline]
5171            fn new(
5172                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5173                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5174            ) -> Self {
5175                Self { pubkey: data.0 }
5176            }
5177            #[inline]
5178            fn check_signature(
5179                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5180            ) -> alloy_sol_types::Result<()> {
5181                if topics.0 != Self::SIGNATURE_HASH {
5182                    return Err(
5183                        alloy_sol_types::Error::invalid_event_signature_hash(
5184                            Self::SIGNATURE,
5185                            topics.0,
5186                            Self::SIGNATURE_HASH,
5187                        ),
5188                    );
5189                }
5190                Ok(())
5191            }
5192            #[inline]
5193            fn tokenize_body(&self) -> Self::DataToken<'_> {
5194                (
5195                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5196                        &self.pubkey,
5197                    ),
5198                )
5199            }
5200            #[inline]
5201            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5202                (Self::SIGNATURE_HASH.into(),)
5203            }
5204            #[inline]
5205            fn encode_topics_raw(
5206                &self,
5207                out: &mut [alloy_sol_types::abi::token::WordToken],
5208            ) -> alloy_sol_types::Result<()> {
5209                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5210                    return Err(alloy_sol_types::Error::Overrun);
5211                }
5212                out[0usize] = alloy_sol_types::abi::token::WordToken(
5213                    Self::SIGNATURE_HASH,
5214                );
5215                Ok(())
5216            }
5217        }
5218        #[automatically_derived]
5219        impl alloy_sol_types::private::IntoLogData for EigenPodStaked {
5220            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5221                From::from(self)
5222            }
5223            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5224                From::from(&self)
5225            }
5226        }
5227        #[automatically_derived]
5228        impl From<&EigenPodStaked> for alloy_sol_types::private::LogData {
5229            #[inline]
5230            fn from(this: &EigenPodStaked) -> alloy_sol_types::private::LogData {
5231                alloy_sol_types::SolEvent::encode_log_data(this)
5232            }
5233        }
5234    };
5235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5236    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5237```solidity
5238event Initialized(uint8 version);
5239```*/
5240    #[allow(
5241        non_camel_case_types,
5242        non_snake_case,
5243        clippy::pub_underscore_fields,
5244        clippy::style
5245    )]
5246    #[derive(Clone)]
5247    pub struct Initialized {
5248        #[allow(missing_docs)]
5249        pub version: u8,
5250    }
5251    #[allow(
5252        non_camel_case_types,
5253        non_snake_case,
5254        clippy::pub_underscore_fields,
5255        clippy::style
5256    )]
5257    const _: () = {
5258        use alloy::sol_types as alloy_sol_types;
5259        #[automatically_derived]
5260        impl alloy_sol_types::SolEvent for Initialized {
5261            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5262            type DataToken<'a> = <Self::DataTuple<
5263                'a,
5264            > as alloy_sol_types::SolType>::Token<'a>;
5265            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5266            const SIGNATURE: &'static str = "Initialized(uint8)";
5267            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5268                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5269                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5270                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5271            ]);
5272            const ANONYMOUS: bool = false;
5273            #[allow(unused_variables)]
5274            #[inline]
5275            fn new(
5276                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5277                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5278            ) -> Self {
5279                Self { version: data.0 }
5280            }
5281            #[inline]
5282            fn check_signature(
5283                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5284            ) -> alloy_sol_types::Result<()> {
5285                if topics.0 != Self::SIGNATURE_HASH {
5286                    return Err(
5287                        alloy_sol_types::Error::invalid_event_signature_hash(
5288                            Self::SIGNATURE,
5289                            topics.0,
5290                            Self::SIGNATURE_HASH,
5291                        ),
5292                    );
5293                }
5294                Ok(())
5295            }
5296            #[inline]
5297            fn tokenize_body(&self) -> Self::DataToken<'_> {
5298                (
5299                    <alloy::sol_types::sol_data::Uint<
5300                        8,
5301                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5302                )
5303            }
5304            #[inline]
5305            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5306                (Self::SIGNATURE_HASH.into(),)
5307            }
5308            #[inline]
5309            fn encode_topics_raw(
5310                &self,
5311                out: &mut [alloy_sol_types::abi::token::WordToken],
5312            ) -> alloy_sol_types::Result<()> {
5313                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5314                    return Err(alloy_sol_types::Error::Overrun);
5315                }
5316                out[0usize] = alloy_sol_types::abi::token::WordToken(
5317                    Self::SIGNATURE_HASH,
5318                );
5319                Ok(())
5320            }
5321        }
5322        #[automatically_derived]
5323        impl alloy_sol_types::private::IntoLogData for Initialized {
5324            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5325                From::from(self)
5326            }
5327            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5328                From::from(&self)
5329            }
5330        }
5331        #[automatically_derived]
5332        impl From<&Initialized> for alloy_sol_types::private::LogData {
5333            #[inline]
5334            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5335                alloy_sol_types::SolEvent::encode_log_data(this)
5336            }
5337        }
5338    };
5339    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5340    /**Event with signature `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`.
5341```solidity
5342event NonBeaconChainETHReceived(uint256 amountReceived);
5343```*/
5344    #[allow(
5345        non_camel_case_types,
5346        non_snake_case,
5347        clippy::pub_underscore_fields,
5348        clippy::style
5349    )]
5350    #[derive(Clone)]
5351    pub struct NonBeaconChainETHReceived {
5352        #[allow(missing_docs)]
5353        pub amountReceived: alloy::sol_types::private::primitives::aliases::U256,
5354    }
5355    #[allow(
5356        non_camel_case_types,
5357        non_snake_case,
5358        clippy::pub_underscore_fields,
5359        clippy::style
5360    )]
5361    const _: () = {
5362        use alloy::sol_types as alloy_sol_types;
5363        #[automatically_derived]
5364        impl alloy_sol_types::SolEvent for NonBeaconChainETHReceived {
5365            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5366            type DataToken<'a> = <Self::DataTuple<
5367                'a,
5368            > as alloy_sol_types::SolType>::Token<'a>;
5369            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5370            const SIGNATURE: &'static str = "NonBeaconChainETHReceived(uint256)";
5371            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5372                111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8,
5373                159u8, 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8,
5374                56u8, 146u8, 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8,
5375            ]);
5376            const ANONYMOUS: bool = false;
5377            #[allow(unused_variables)]
5378            #[inline]
5379            fn new(
5380                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5381                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5382            ) -> Self {
5383                Self { amountReceived: data.0 }
5384            }
5385            #[inline]
5386            fn check_signature(
5387                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5388            ) -> alloy_sol_types::Result<()> {
5389                if topics.0 != Self::SIGNATURE_HASH {
5390                    return Err(
5391                        alloy_sol_types::Error::invalid_event_signature_hash(
5392                            Self::SIGNATURE,
5393                            topics.0,
5394                            Self::SIGNATURE_HASH,
5395                        ),
5396                    );
5397                }
5398                Ok(())
5399            }
5400            #[inline]
5401            fn tokenize_body(&self) -> Self::DataToken<'_> {
5402                (
5403                    <alloy::sol_types::sol_data::Uint<
5404                        256,
5405                    > as alloy_sol_types::SolType>::tokenize(&self.amountReceived),
5406                )
5407            }
5408            #[inline]
5409            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5410                (Self::SIGNATURE_HASH.into(),)
5411            }
5412            #[inline]
5413            fn encode_topics_raw(
5414                &self,
5415                out: &mut [alloy_sol_types::abi::token::WordToken],
5416            ) -> alloy_sol_types::Result<()> {
5417                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5418                    return Err(alloy_sol_types::Error::Overrun);
5419                }
5420                out[0usize] = alloy_sol_types::abi::token::WordToken(
5421                    Self::SIGNATURE_HASH,
5422                );
5423                Ok(())
5424            }
5425        }
5426        #[automatically_derived]
5427        impl alloy_sol_types::private::IntoLogData for NonBeaconChainETHReceived {
5428            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5429                From::from(self)
5430            }
5431            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5432                From::from(&self)
5433            }
5434        }
5435        #[automatically_derived]
5436        impl From<&NonBeaconChainETHReceived> for alloy_sol_types::private::LogData {
5437            #[inline]
5438            fn from(
5439                this: &NonBeaconChainETHReceived,
5440            ) -> alloy_sol_types::private::LogData {
5441                alloy_sol_types::SolEvent::encode_log_data(this)
5442            }
5443        }
5444    };
5445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5446    /**Event with signature `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`.
5447```solidity
5448event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter);
5449```*/
5450    #[allow(
5451        non_camel_case_types,
5452        non_snake_case,
5453        clippy::pub_underscore_fields,
5454        clippy::style
5455    )]
5456    #[derive(Clone)]
5457    pub struct ProofSubmitterUpdated {
5458        #[allow(missing_docs)]
5459        pub prevProofSubmitter: alloy::sol_types::private::Address,
5460        #[allow(missing_docs)]
5461        pub newProofSubmitter: alloy::sol_types::private::Address,
5462    }
5463    #[allow(
5464        non_camel_case_types,
5465        non_snake_case,
5466        clippy::pub_underscore_fields,
5467        clippy::style
5468    )]
5469    const _: () = {
5470        use alloy::sol_types as alloy_sol_types;
5471        #[automatically_derived]
5472        impl alloy_sol_types::SolEvent for ProofSubmitterUpdated {
5473            type DataTuple<'a> = (
5474                alloy::sol_types::sol_data::Address,
5475                alloy::sol_types::sol_data::Address,
5476            );
5477            type DataToken<'a> = <Self::DataTuple<
5478                'a,
5479            > as alloy_sol_types::SolType>::Token<'a>;
5480            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5481            const SIGNATURE: &'static str = "ProofSubmitterUpdated(address,address)";
5482            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5483                251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8,
5484                186u8, 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8,
5485                99u8, 205u8, 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8,
5486            ]);
5487            const ANONYMOUS: bool = false;
5488            #[allow(unused_variables)]
5489            #[inline]
5490            fn new(
5491                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5492                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5493            ) -> Self {
5494                Self {
5495                    prevProofSubmitter: data.0,
5496                    newProofSubmitter: data.1,
5497                }
5498            }
5499            #[inline]
5500            fn check_signature(
5501                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5502            ) -> alloy_sol_types::Result<()> {
5503                if topics.0 != Self::SIGNATURE_HASH {
5504                    return Err(
5505                        alloy_sol_types::Error::invalid_event_signature_hash(
5506                            Self::SIGNATURE,
5507                            topics.0,
5508                            Self::SIGNATURE_HASH,
5509                        ),
5510                    );
5511                }
5512                Ok(())
5513            }
5514            #[inline]
5515            fn tokenize_body(&self) -> Self::DataToken<'_> {
5516                (
5517                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5518                        &self.prevProofSubmitter,
5519                    ),
5520                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5521                        &self.newProofSubmitter,
5522                    ),
5523                )
5524            }
5525            #[inline]
5526            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5527                (Self::SIGNATURE_HASH.into(),)
5528            }
5529            #[inline]
5530            fn encode_topics_raw(
5531                &self,
5532                out: &mut [alloy_sol_types::abi::token::WordToken],
5533            ) -> alloy_sol_types::Result<()> {
5534                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5535                    return Err(alloy_sol_types::Error::Overrun);
5536                }
5537                out[0usize] = alloy_sol_types::abi::token::WordToken(
5538                    Self::SIGNATURE_HASH,
5539                );
5540                Ok(())
5541            }
5542        }
5543        #[automatically_derived]
5544        impl alloy_sol_types::private::IntoLogData for ProofSubmitterUpdated {
5545            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5546                From::from(self)
5547            }
5548            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5549                From::from(&self)
5550            }
5551        }
5552        #[automatically_derived]
5553        impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData {
5554            #[inline]
5555            fn from(this: &ProofSubmitterUpdated) -> alloy_sol_types::private::LogData {
5556                alloy_sol_types::SolEvent::encode_log_data(this)
5557            }
5558        }
5559    };
5560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5561    /**Event with signature `RestakedBeaconChainETHWithdrawn(address,uint256)` and selector `0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e`.
5562```solidity
5563event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount);
5564```*/
5565    #[allow(
5566        non_camel_case_types,
5567        non_snake_case,
5568        clippy::pub_underscore_fields,
5569        clippy::style
5570    )]
5571    #[derive(Clone)]
5572    pub struct RestakedBeaconChainETHWithdrawn {
5573        #[allow(missing_docs)]
5574        pub recipient: alloy::sol_types::private::Address,
5575        #[allow(missing_docs)]
5576        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5577    }
5578    #[allow(
5579        non_camel_case_types,
5580        non_snake_case,
5581        clippy::pub_underscore_fields,
5582        clippy::style
5583    )]
5584    const _: () = {
5585        use alloy::sol_types as alloy_sol_types;
5586        #[automatically_derived]
5587        impl alloy_sol_types::SolEvent for RestakedBeaconChainETHWithdrawn {
5588            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5589            type DataToken<'a> = <Self::DataTuple<
5590                'a,
5591            > as alloy_sol_types::SolType>::Token<'a>;
5592            type TopicList = (
5593                alloy_sol_types::sol_data::FixedBytes<32>,
5594                alloy::sol_types::sol_data::Address,
5595            );
5596            const SIGNATURE: &'static str = "RestakedBeaconChainETHWithdrawn(address,uint256)";
5597            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5598                137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8,
5599                143u8, 4u8, 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8,
5600                57u8, 233u8, 28u8, 200u8, 4u8, 194u8, 244u8, 157u8, 142u8,
5601            ]);
5602            const ANONYMOUS: bool = false;
5603            #[allow(unused_variables)]
5604            #[inline]
5605            fn new(
5606                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5607                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5608            ) -> Self {
5609                Self {
5610                    recipient: topics.1,
5611                    amount: data.0,
5612                }
5613            }
5614            #[inline]
5615            fn check_signature(
5616                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5617            ) -> alloy_sol_types::Result<()> {
5618                if topics.0 != Self::SIGNATURE_HASH {
5619                    return Err(
5620                        alloy_sol_types::Error::invalid_event_signature_hash(
5621                            Self::SIGNATURE,
5622                            topics.0,
5623                            Self::SIGNATURE_HASH,
5624                        ),
5625                    );
5626                }
5627                Ok(())
5628            }
5629            #[inline]
5630            fn tokenize_body(&self) -> Self::DataToken<'_> {
5631                (
5632                    <alloy::sol_types::sol_data::Uint<
5633                        256,
5634                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5635                )
5636            }
5637            #[inline]
5638            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5639                (Self::SIGNATURE_HASH.into(), self.recipient.clone())
5640            }
5641            #[inline]
5642            fn encode_topics_raw(
5643                &self,
5644                out: &mut [alloy_sol_types::abi::token::WordToken],
5645            ) -> alloy_sol_types::Result<()> {
5646                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5647                    return Err(alloy_sol_types::Error::Overrun);
5648                }
5649                out[0usize] = alloy_sol_types::abi::token::WordToken(
5650                    Self::SIGNATURE_HASH,
5651                );
5652                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5653                    &self.recipient,
5654                );
5655                Ok(())
5656            }
5657        }
5658        #[automatically_derived]
5659        impl alloy_sol_types::private::IntoLogData for RestakedBeaconChainETHWithdrawn {
5660            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5661                From::from(self)
5662            }
5663            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5664                From::from(&self)
5665            }
5666        }
5667        #[automatically_derived]
5668        impl From<&RestakedBeaconChainETHWithdrawn>
5669        for alloy_sol_types::private::LogData {
5670            #[inline]
5671            fn from(
5672                this: &RestakedBeaconChainETHWithdrawn,
5673            ) -> alloy_sol_types::private::LogData {
5674                alloy_sol_types::SolEvent::encode_log_data(this)
5675            }
5676        }
5677    };
5678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5679    /**Event with signature `ValidatorBalanceUpdated(uint40,uint64,uint64)` and selector `0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df`.
5680```solidity
5681event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei);
5682```*/
5683    #[allow(
5684        non_camel_case_types,
5685        non_snake_case,
5686        clippy::pub_underscore_fields,
5687        clippy::style
5688    )]
5689    #[derive(Clone)]
5690    pub struct ValidatorBalanceUpdated {
5691        #[allow(missing_docs)]
5692        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
5693        #[allow(missing_docs)]
5694        pub balanceTimestamp: u64,
5695        #[allow(missing_docs)]
5696        pub newValidatorBalanceGwei: u64,
5697    }
5698    #[allow(
5699        non_camel_case_types,
5700        non_snake_case,
5701        clippy::pub_underscore_fields,
5702        clippy::style
5703    )]
5704    const _: () = {
5705        use alloy::sol_types as alloy_sol_types;
5706        #[automatically_derived]
5707        impl alloy_sol_types::SolEvent for ValidatorBalanceUpdated {
5708            type DataTuple<'a> = (
5709                alloy::sol_types::sol_data::Uint<40>,
5710                alloy::sol_types::sol_data::Uint<64>,
5711                alloy::sol_types::sol_data::Uint<64>,
5712            );
5713            type DataToken<'a> = <Self::DataTuple<
5714                'a,
5715            > as alloy_sol_types::SolType>::Token<'a>;
5716            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5717            const SIGNATURE: &'static str = "ValidatorBalanceUpdated(uint40,uint64,uint64)";
5718            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5719                14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8,
5720                30u8, 3u8, 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8,
5721                34u8, 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8,
5722            ]);
5723            const ANONYMOUS: bool = false;
5724            #[allow(unused_variables)]
5725            #[inline]
5726            fn new(
5727                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5728                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5729            ) -> Self {
5730                Self {
5731                    validatorIndex: data.0,
5732                    balanceTimestamp: data.1,
5733                    newValidatorBalanceGwei: data.2,
5734                }
5735            }
5736            #[inline]
5737            fn check_signature(
5738                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5739            ) -> alloy_sol_types::Result<()> {
5740                if topics.0 != Self::SIGNATURE_HASH {
5741                    return Err(
5742                        alloy_sol_types::Error::invalid_event_signature_hash(
5743                            Self::SIGNATURE,
5744                            topics.0,
5745                            Self::SIGNATURE_HASH,
5746                        ),
5747                    );
5748                }
5749                Ok(())
5750            }
5751            #[inline]
5752            fn tokenize_body(&self) -> Self::DataToken<'_> {
5753                (
5754                    <alloy::sol_types::sol_data::Uint<
5755                        40,
5756                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
5757                    <alloy::sol_types::sol_data::Uint<
5758                        64,
5759                    > as alloy_sol_types::SolType>::tokenize(&self.balanceTimestamp),
5760                    <alloy::sol_types::sol_data::Uint<
5761                        64,
5762                    > as alloy_sol_types::SolType>::tokenize(
5763                        &self.newValidatorBalanceGwei,
5764                    ),
5765                )
5766            }
5767            #[inline]
5768            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5769                (Self::SIGNATURE_HASH.into(),)
5770            }
5771            #[inline]
5772            fn encode_topics_raw(
5773                &self,
5774                out: &mut [alloy_sol_types::abi::token::WordToken],
5775            ) -> alloy_sol_types::Result<()> {
5776                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5777                    return Err(alloy_sol_types::Error::Overrun);
5778                }
5779                out[0usize] = alloy_sol_types::abi::token::WordToken(
5780                    Self::SIGNATURE_HASH,
5781                );
5782                Ok(())
5783            }
5784        }
5785        #[automatically_derived]
5786        impl alloy_sol_types::private::IntoLogData for ValidatorBalanceUpdated {
5787            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5788                From::from(self)
5789            }
5790            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5791                From::from(&self)
5792            }
5793        }
5794        #[automatically_derived]
5795        impl From<&ValidatorBalanceUpdated> for alloy_sol_types::private::LogData {
5796            #[inline]
5797            fn from(
5798                this: &ValidatorBalanceUpdated,
5799            ) -> alloy_sol_types::private::LogData {
5800                alloy_sol_types::SolEvent::encode_log_data(this)
5801            }
5802        }
5803    };
5804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5805    /**Event with signature `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`.
5806```solidity
5807event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
5808```*/
5809    #[allow(
5810        non_camel_case_types,
5811        non_snake_case,
5812        clippy::pub_underscore_fields,
5813        clippy::style
5814    )]
5815    #[derive(Clone)]
5816    pub struct ValidatorCheckpointed {
5817        #[allow(missing_docs)]
5818        pub checkpointTimestamp: u64,
5819        #[allow(missing_docs)]
5820        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
5821    }
5822    #[allow(
5823        non_camel_case_types,
5824        non_snake_case,
5825        clippy::pub_underscore_fields,
5826        clippy::style
5827    )]
5828    const _: () = {
5829        use alloy::sol_types as alloy_sol_types;
5830        #[automatically_derived]
5831        impl alloy_sol_types::SolEvent for ValidatorCheckpointed {
5832            type DataTuple<'a> = ();
5833            type DataToken<'a> = <Self::DataTuple<
5834                'a,
5835            > as alloy_sol_types::SolType>::Token<'a>;
5836            type TopicList = (
5837                alloy_sol_types::sol_data::FixedBytes<32>,
5838                alloy::sol_types::sol_data::Uint<64>,
5839                alloy::sol_types::sol_data::Uint<40>,
5840            );
5841            const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)";
5842            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5843                169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8,
5844                172u8, 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8,
5845                245u8, 244u8, 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8,
5846            ]);
5847            const ANONYMOUS: bool = false;
5848            #[allow(unused_variables)]
5849            #[inline]
5850            fn new(
5851                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5852                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5853            ) -> Self {
5854                Self {
5855                    checkpointTimestamp: topics.1,
5856                    validatorIndex: topics.2,
5857                }
5858            }
5859            #[inline]
5860            fn check_signature(
5861                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5862            ) -> alloy_sol_types::Result<()> {
5863                if topics.0 != Self::SIGNATURE_HASH {
5864                    return Err(
5865                        alloy_sol_types::Error::invalid_event_signature_hash(
5866                            Self::SIGNATURE,
5867                            topics.0,
5868                            Self::SIGNATURE_HASH,
5869                        ),
5870                    );
5871                }
5872                Ok(())
5873            }
5874            #[inline]
5875            fn tokenize_body(&self) -> Self::DataToken<'_> {
5876                ()
5877            }
5878            #[inline]
5879            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5880                (
5881                    Self::SIGNATURE_HASH.into(),
5882                    self.checkpointTimestamp.clone(),
5883                    self.validatorIndex.clone(),
5884                )
5885            }
5886            #[inline]
5887            fn encode_topics_raw(
5888                &self,
5889                out: &mut [alloy_sol_types::abi::token::WordToken],
5890            ) -> alloy_sol_types::Result<()> {
5891                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5892                    return Err(alloy_sol_types::Error::Overrun);
5893                }
5894                out[0usize] = alloy_sol_types::abi::token::WordToken(
5895                    Self::SIGNATURE_HASH,
5896                );
5897                out[1usize] = <alloy::sol_types::sol_data::Uint<
5898                    64,
5899                > as alloy_sol_types::EventTopic>::encode_topic(
5900                    &self.checkpointTimestamp,
5901                );
5902                out[2usize] = <alloy::sol_types::sol_data::Uint<
5903                    40,
5904                > as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex);
5905                Ok(())
5906            }
5907        }
5908        #[automatically_derived]
5909        impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed {
5910            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5911                From::from(self)
5912            }
5913            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5914                From::from(&self)
5915            }
5916        }
5917        #[automatically_derived]
5918        impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData {
5919            #[inline]
5920            fn from(this: &ValidatorCheckpointed) -> alloy_sol_types::private::LogData {
5921                alloy_sol_types::SolEvent::encode_log_data(this)
5922            }
5923        }
5924    };
5925    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5926    /**Event with signature `ValidatorRestaked(uint40)` and selector `0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449`.
5927```solidity
5928event ValidatorRestaked(uint40 validatorIndex);
5929```*/
5930    #[allow(
5931        non_camel_case_types,
5932        non_snake_case,
5933        clippy::pub_underscore_fields,
5934        clippy::style
5935    )]
5936    #[derive(Clone)]
5937    pub struct ValidatorRestaked {
5938        #[allow(missing_docs)]
5939        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
5940    }
5941    #[allow(
5942        non_camel_case_types,
5943        non_snake_case,
5944        clippy::pub_underscore_fields,
5945        clippy::style
5946    )]
5947    const _: () = {
5948        use alloy::sol_types as alloy_sol_types;
5949        #[automatically_derived]
5950        impl alloy_sol_types::SolEvent for ValidatorRestaked {
5951            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<40>,);
5952            type DataToken<'a> = <Self::DataTuple<
5953                'a,
5954            > as alloy_sol_types::SolType>::Token<'a>;
5955            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5956            const SIGNATURE: &'static str = "ValidatorRestaked(uint40)";
5957            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5958                45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8,
5959                182u8, 168u8, 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8,
5960                208u8, 237u8, 161u8, 16u8, 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8,
5961            ]);
5962            const ANONYMOUS: bool = false;
5963            #[allow(unused_variables)]
5964            #[inline]
5965            fn new(
5966                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5967                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5968            ) -> Self {
5969                Self { validatorIndex: data.0 }
5970            }
5971            #[inline]
5972            fn check_signature(
5973                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5974            ) -> alloy_sol_types::Result<()> {
5975                if topics.0 != Self::SIGNATURE_HASH {
5976                    return Err(
5977                        alloy_sol_types::Error::invalid_event_signature_hash(
5978                            Self::SIGNATURE,
5979                            topics.0,
5980                            Self::SIGNATURE_HASH,
5981                        ),
5982                    );
5983                }
5984                Ok(())
5985            }
5986            #[inline]
5987            fn tokenize_body(&self) -> Self::DataToken<'_> {
5988                (
5989                    <alloy::sol_types::sol_data::Uint<
5990                        40,
5991                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
5992                )
5993            }
5994            #[inline]
5995            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5996                (Self::SIGNATURE_HASH.into(),)
5997            }
5998            #[inline]
5999            fn encode_topics_raw(
6000                &self,
6001                out: &mut [alloy_sol_types::abi::token::WordToken],
6002            ) -> alloy_sol_types::Result<()> {
6003                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6004                    return Err(alloy_sol_types::Error::Overrun);
6005                }
6006                out[0usize] = alloy_sol_types::abi::token::WordToken(
6007                    Self::SIGNATURE_HASH,
6008                );
6009                Ok(())
6010            }
6011        }
6012        #[automatically_derived]
6013        impl alloy_sol_types::private::IntoLogData for ValidatorRestaked {
6014            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6015                From::from(self)
6016            }
6017            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6018                From::from(&self)
6019            }
6020        }
6021        #[automatically_derived]
6022        impl From<&ValidatorRestaked> for alloy_sol_types::private::LogData {
6023            #[inline]
6024            fn from(this: &ValidatorRestaked) -> alloy_sol_types::private::LogData {
6025                alloy_sol_types::SolEvent::encode_log_data(this)
6026            }
6027        }
6028    };
6029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6030    /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`.
6031```solidity
6032event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
6033```*/
6034    #[allow(
6035        non_camel_case_types,
6036        non_snake_case,
6037        clippy::pub_underscore_fields,
6038        clippy::style
6039    )]
6040    #[derive(Clone)]
6041    pub struct ValidatorWithdrawn {
6042        #[allow(missing_docs)]
6043        pub checkpointTimestamp: u64,
6044        #[allow(missing_docs)]
6045        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
6046    }
6047    #[allow(
6048        non_camel_case_types,
6049        non_snake_case,
6050        clippy::pub_underscore_fields,
6051        clippy::style
6052    )]
6053    const _: () = {
6054        use alloy::sol_types as alloy_sol_types;
6055        #[automatically_derived]
6056        impl alloy_sol_types::SolEvent for ValidatorWithdrawn {
6057            type DataTuple<'a> = ();
6058            type DataToken<'a> = <Self::DataTuple<
6059                'a,
6060            > as alloy_sol_types::SolType>::Token<'a>;
6061            type TopicList = (
6062                alloy_sol_types::sol_data::FixedBytes<32>,
6063                alloy::sol_types::sol_data::Uint<64>,
6064                alloy::sol_types::sol_data::Uint<40>,
6065            );
6066            const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,uint40)";
6067            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6068                42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8,
6069                44u8, 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8,
6070                230u8, 86u8, 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8,
6071            ]);
6072            const ANONYMOUS: bool = false;
6073            #[allow(unused_variables)]
6074            #[inline]
6075            fn new(
6076                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6077                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6078            ) -> Self {
6079                Self {
6080                    checkpointTimestamp: topics.1,
6081                    validatorIndex: topics.2,
6082                }
6083            }
6084            #[inline]
6085            fn check_signature(
6086                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6087            ) -> alloy_sol_types::Result<()> {
6088                if topics.0 != Self::SIGNATURE_HASH {
6089                    return Err(
6090                        alloy_sol_types::Error::invalid_event_signature_hash(
6091                            Self::SIGNATURE,
6092                            topics.0,
6093                            Self::SIGNATURE_HASH,
6094                        ),
6095                    );
6096                }
6097                Ok(())
6098            }
6099            #[inline]
6100            fn tokenize_body(&self) -> Self::DataToken<'_> {
6101                ()
6102            }
6103            #[inline]
6104            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6105                (
6106                    Self::SIGNATURE_HASH.into(),
6107                    self.checkpointTimestamp.clone(),
6108                    self.validatorIndex.clone(),
6109                )
6110            }
6111            #[inline]
6112            fn encode_topics_raw(
6113                &self,
6114                out: &mut [alloy_sol_types::abi::token::WordToken],
6115            ) -> alloy_sol_types::Result<()> {
6116                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6117                    return Err(alloy_sol_types::Error::Overrun);
6118                }
6119                out[0usize] = alloy_sol_types::abi::token::WordToken(
6120                    Self::SIGNATURE_HASH,
6121                );
6122                out[1usize] = <alloy::sol_types::sol_data::Uint<
6123                    64,
6124                > as alloy_sol_types::EventTopic>::encode_topic(
6125                    &self.checkpointTimestamp,
6126                );
6127                out[2usize] = <alloy::sol_types::sol_data::Uint<
6128                    40,
6129                > as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex);
6130                Ok(())
6131            }
6132        }
6133        #[automatically_derived]
6134        impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn {
6135            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6136                From::from(self)
6137            }
6138            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6139                From::from(&self)
6140            }
6141        }
6142        #[automatically_derived]
6143        impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData {
6144            #[inline]
6145            fn from(this: &ValidatorWithdrawn) -> alloy_sol_types::private::LogData {
6146                alloy_sol_types::SolEvent::encode_log_data(this)
6147            }
6148        }
6149    };
6150    /**Constructor`.
6151```solidity
6152constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME, string _version);
6153```*/
6154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6155    #[derive(Clone)]
6156    pub struct constructorCall {
6157        #[allow(missing_docs)]
6158        pub _ethPOS: alloy::sol_types::private::Address,
6159        #[allow(missing_docs)]
6160        pub _eigenPodManager: alloy::sol_types::private::Address,
6161        #[allow(missing_docs)]
6162        pub _GENESIS_TIME: u64,
6163        #[allow(missing_docs)]
6164        pub _version: alloy::sol_types::private::String,
6165    }
6166    const _: () = {
6167        use alloy::sol_types as alloy_sol_types;
6168        {
6169            #[doc(hidden)]
6170            type UnderlyingSolTuple<'a> = (
6171                alloy::sol_types::sol_data::Address,
6172                alloy::sol_types::sol_data::Address,
6173                alloy::sol_types::sol_data::Uint<64>,
6174                alloy::sol_types::sol_data::String,
6175            );
6176            #[doc(hidden)]
6177            type UnderlyingRustTuple<'a> = (
6178                alloy::sol_types::private::Address,
6179                alloy::sol_types::private::Address,
6180                u64,
6181                alloy::sol_types::private::String,
6182            );
6183            #[cfg(test)]
6184            #[allow(dead_code, unreachable_patterns)]
6185            fn _type_assertion(
6186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6187            ) {
6188                match _t {
6189                    alloy_sol_types::private::AssertTypeEq::<
6190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6191                    >(_) => {}
6192                }
6193            }
6194            #[automatically_derived]
6195            #[doc(hidden)]
6196            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6197                fn from(value: constructorCall) -> Self {
6198                    (
6199                        value._ethPOS,
6200                        value._eigenPodManager,
6201                        value._GENESIS_TIME,
6202                        value._version,
6203                    )
6204                }
6205            }
6206            #[automatically_derived]
6207            #[doc(hidden)]
6208            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6210                    Self {
6211                        _ethPOS: tuple.0,
6212                        _eigenPodManager: tuple.1,
6213                        _GENESIS_TIME: tuple.2,
6214                        _version: tuple.3,
6215                    }
6216                }
6217            }
6218        }
6219        #[automatically_derived]
6220        impl alloy_sol_types::SolConstructor for constructorCall {
6221            type Parameters<'a> = (
6222                alloy::sol_types::sol_data::Address,
6223                alloy::sol_types::sol_data::Address,
6224                alloy::sol_types::sol_data::Uint<64>,
6225                alloy::sol_types::sol_data::String,
6226            );
6227            type Token<'a> = <Self::Parameters<
6228                'a,
6229            > as alloy_sol_types::SolType>::Token<'a>;
6230            #[inline]
6231            fn new<'a>(
6232                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6233            ) -> Self {
6234                tuple.into()
6235            }
6236            #[inline]
6237            fn tokenize(&self) -> Self::Token<'_> {
6238                (
6239                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6240                        &self._ethPOS,
6241                    ),
6242                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6243                        &self._eigenPodManager,
6244                    ),
6245                    <alloy::sol_types::sol_data::Uint<
6246                        64,
6247                    > as alloy_sol_types::SolType>::tokenize(&self._GENESIS_TIME),
6248                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6249                        &self._version,
6250                    ),
6251                )
6252            }
6253        }
6254    };
6255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6256    /**Function with signature `GENESIS_TIME()` and selector `0xf2882461`.
6257```solidity
6258function GENESIS_TIME() external view returns (uint64);
6259```*/
6260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6261    #[derive(Clone)]
6262    pub struct GENESIS_TIMECall {}
6263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6264    ///Container type for the return parameters of the [`GENESIS_TIME()`](GENESIS_TIMECall) function.
6265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6266    #[derive(Clone)]
6267    pub struct GENESIS_TIMEReturn {
6268        #[allow(missing_docs)]
6269        pub _0: u64,
6270    }
6271    #[allow(
6272        non_camel_case_types,
6273        non_snake_case,
6274        clippy::pub_underscore_fields,
6275        clippy::style
6276    )]
6277    const _: () = {
6278        use alloy::sol_types as alloy_sol_types;
6279        {
6280            #[doc(hidden)]
6281            type UnderlyingSolTuple<'a> = ();
6282            #[doc(hidden)]
6283            type UnderlyingRustTuple<'a> = ();
6284            #[cfg(test)]
6285            #[allow(dead_code, unreachable_patterns)]
6286            fn _type_assertion(
6287                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6288            ) {
6289                match _t {
6290                    alloy_sol_types::private::AssertTypeEq::<
6291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6292                    >(_) => {}
6293                }
6294            }
6295            #[automatically_derived]
6296            #[doc(hidden)]
6297            impl ::core::convert::From<GENESIS_TIMECall> for UnderlyingRustTuple<'_> {
6298                fn from(value: GENESIS_TIMECall) -> Self {
6299                    ()
6300                }
6301            }
6302            #[automatically_derived]
6303            #[doc(hidden)]
6304            impl ::core::convert::From<UnderlyingRustTuple<'_>> for GENESIS_TIMECall {
6305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6306                    Self {}
6307                }
6308            }
6309        }
6310        {
6311            #[doc(hidden)]
6312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6313            #[doc(hidden)]
6314            type UnderlyingRustTuple<'a> = (u64,);
6315            #[cfg(test)]
6316            #[allow(dead_code, unreachable_patterns)]
6317            fn _type_assertion(
6318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6319            ) {
6320                match _t {
6321                    alloy_sol_types::private::AssertTypeEq::<
6322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6323                    >(_) => {}
6324                }
6325            }
6326            #[automatically_derived]
6327            #[doc(hidden)]
6328            impl ::core::convert::From<GENESIS_TIMEReturn> for UnderlyingRustTuple<'_> {
6329                fn from(value: GENESIS_TIMEReturn) -> Self {
6330                    (value._0,)
6331                }
6332            }
6333            #[automatically_derived]
6334            #[doc(hidden)]
6335            impl ::core::convert::From<UnderlyingRustTuple<'_>> for GENESIS_TIMEReturn {
6336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6337                    Self { _0: tuple.0 }
6338                }
6339            }
6340        }
6341        #[automatically_derived]
6342        impl alloy_sol_types::SolCall for GENESIS_TIMECall {
6343            type Parameters<'a> = ();
6344            type Token<'a> = <Self::Parameters<
6345                'a,
6346            > as alloy_sol_types::SolType>::Token<'a>;
6347            type Return = GENESIS_TIMEReturn;
6348            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6349            type ReturnToken<'a> = <Self::ReturnTuple<
6350                'a,
6351            > as alloy_sol_types::SolType>::Token<'a>;
6352            const SIGNATURE: &'static str = "GENESIS_TIME()";
6353            const SELECTOR: [u8; 4] = [242u8, 136u8, 36u8, 97u8];
6354            #[inline]
6355            fn new<'a>(
6356                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6357            ) -> Self {
6358                tuple.into()
6359            }
6360            #[inline]
6361            fn tokenize(&self) -> Self::Token<'_> {
6362                ()
6363            }
6364            #[inline]
6365            fn abi_decode_returns(
6366                data: &[u8],
6367                validate: bool,
6368            ) -> alloy_sol_types::Result<Self::Return> {
6369                <Self::ReturnTuple<
6370                    '_,
6371                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6372                    .map(Into::into)
6373            }
6374        }
6375    };
6376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6377    /**Function with signature `activeValidatorCount()` and selector `0x2340e8d3`.
6378```solidity
6379function activeValidatorCount() external view returns (uint256);
6380```*/
6381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6382    #[derive(Clone)]
6383    pub struct activeValidatorCountCall {}
6384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6385    ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function.
6386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6387    #[derive(Clone)]
6388    pub struct activeValidatorCountReturn {
6389        #[allow(missing_docs)]
6390        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6391    }
6392    #[allow(
6393        non_camel_case_types,
6394        non_snake_case,
6395        clippy::pub_underscore_fields,
6396        clippy::style
6397    )]
6398    const _: () = {
6399        use alloy::sol_types as alloy_sol_types;
6400        {
6401            #[doc(hidden)]
6402            type UnderlyingSolTuple<'a> = ();
6403            #[doc(hidden)]
6404            type UnderlyingRustTuple<'a> = ();
6405            #[cfg(test)]
6406            #[allow(dead_code, unreachable_patterns)]
6407            fn _type_assertion(
6408                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6409            ) {
6410                match _t {
6411                    alloy_sol_types::private::AssertTypeEq::<
6412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6413                    >(_) => {}
6414                }
6415            }
6416            #[automatically_derived]
6417            #[doc(hidden)]
6418            impl ::core::convert::From<activeValidatorCountCall>
6419            for UnderlyingRustTuple<'_> {
6420                fn from(value: activeValidatorCountCall) -> Self {
6421                    ()
6422                }
6423            }
6424            #[automatically_derived]
6425            #[doc(hidden)]
6426            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6427            for activeValidatorCountCall {
6428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6429                    Self {}
6430                }
6431            }
6432        }
6433        {
6434            #[doc(hidden)]
6435            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6436            #[doc(hidden)]
6437            type UnderlyingRustTuple<'a> = (
6438                alloy::sol_types::private::primitives::aliases::U256,
6439            );
6440            #[cfg(test)]
6441            #[allow(dead_code, unreachable_patterns)]
6442            fn _type_assertion(
6443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6444            ) {
6445                match _t {
6446                    alloy_sol_types::private::AssertTypeEq::<
6447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6448                    >(_) => {}
6449                }
6450            }
6451            #[automatically_derived]
6452            #[doc(hidden)]
6453            impl ::core::convert::From<activeValidatorCountReturn>
6454            for UnderlyingRustTuple<'_> {
6455                fn from(value: activeValidatorCountReturn) -> Self {
6456                    (value._0,)
6457                }
6458            }
6459            #[automatically_derived]
6460            #[doc(hidden)]
6461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6462            for activeValidatorCountReturn {
6463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6464                    Self { _0: tuple.0 }
6465                }
6466            }
6467        }
6468        #[automatically_derived]
6469        impl alloy_sol_types::SolCall for activeValidatorCountCall {
6470            type Parameters<'a> = ();
6471            type Token<'a> = <Self::Parameters<
6472                'a,
6473            > as alloy_sol_types::SolType>::Token<'a>;
6474            type Return = activeValidatorCountReturn;
6475            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6476            type ReturnToken<'a> = <Self::ReturnTuple<
6477                'a,
6478            > as alloy_sol_types::SolType>::Token<'a>;
6479            const SIGNATURE: &'static str = "activeValidatorCount()";
6480            const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 211u8];
6481            #[inline]
6482            fn new<'a>(
6483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6484            ) -> Self {
6485                tuple.into()
6486            }
6487            #[inline]
6488            fn tokenize(&self) -> Self::Token<'_> {
6489                ()
6490            }
6491            #[inline]
6492            fn abi_decode_returns(
6493                data: &[u8],
6494                validate: bool,
6495            ) -> alloy_sol_types::Result<Self::Return> {
6496                <Self::ReturnTuple<
6497                    '_,
6498                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6499                    .map(Into::into)
6500            }
6501        }
6502    };
6503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6504    /**Function with signature `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`.
6505```solidity
6506function checkpointBalanceExitedGwei(uint64) external view returns (uint64);
6507```*/
6508    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6509    #[derive(Clone)]
6510    pub struct checkpointBalanceExitedGweiCall {
6511        #[allow(missing_docs)]
6512        pub _0: u64,
6513    }
6514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6515    ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function.
6516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6517    #[derive(Clone)]
6518    pub struct checkpointBalanceExitedGweiReturn {
6519        #[allow(missing_docs)]
6520        pub _0: u64,
6521    }
6522    #[allow(
6523        non_camel_case_types,
6524        non_snake_case,
6525        clippy::pub_underscore_fields,
6526        clippy::style
6527    )]
6528    const _: () = {
6529        use alloy::sol_types as alloy_sol_types;
6530        {
6531            #[doc(hidden)]
6532            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6533            #[doc(hidden)]
6534            type UnderlyingRustTuple<'a> = (u64,);
6535            #[cfg(test)]
6536            #[allow(dead_code, unreachable_patterns)]
6537            fn _type_assertion(
6538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6539            ) {
6540                match _t {
6541                    alloy_sol_types::private::AssertTypeEq::<
6542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6543                    >(_) => {}
6544                }
6545            }
6546            #[automatically_derived]
6547            #[doc(hidden)]
6548            impl ::core::convert::From<checkpointBalanceExitedGweiCall>
6549            for UnderlyingRustTuple<'_> {
6550                fn from(value: checkpointBalanceExitedGweiCall) -> Self {
6551                    (value._0,)
6552                }
6553            }
6554            #[automatically_derived]
6555            #[doc(hidden)]
6556            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6557            for checkpointBalanceExitedGweiCall {
6558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6559                    Self { _0: tuple.0 }
6560                }
6561            }
6562        }
6563        {
6564            #[doc(hidden)]
6565            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6566            #[doc(hidden)]
6567            type UnderlyingRustTuple<'a> = (u64,);
6568            #[cfg(test)]
6569            #[allow(dead_code, unreachable_patterns)]
6570            fn _type_assertion(
6571                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6572            ) {
6573                match _t {
6574                    alloy_sol_types::private::AssertTypeEq::<
6575                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6576                    >(_) => {}
6577                }
6578            }
6579            #[automatically_derived]
6580            #[doc(hidden)]
6581            impl ::core::convert::From<checkpointBalanceExitedGweiReturn>
6582            for UnderlyingRustTuple<'_> {
6583                fn from(value: checkpointBalanceExitedGweiReturn) -> Self {
6584                    (value._0,)
6585                }
6586            }
6587            #[automatically_derived]
6588            #[doc(hidden)]
6589            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6590            for checkpointBalanceExitedGweiReturn {
6591                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6592                    Self { _0: tuple.0 }
6593                }
6594            }
6595        }
6596        #[automatically_derived]
6597        impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall {
6598            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6599            type Token<'a> = <Self::Parameters<
6600                'a,
6601            > as alloy_sol_types::SolType>::Token<'a>;
6602            type Return = checkpointBalanceExitedGweiReturn;
6603            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6604            type ReturnToken<'a> = <Self::ReturnTuple<
6605                'a,
6606            > as alloy_sol_types::SolType>::Token<'a>;
6607            const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)";
6608            const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8];
6609            #[inline]
6610            fn new<'a>(
6611                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6612            ) -> Self {
6613                tuple.into()
6614            }
6615            #[inline]
6616            fn tokenize(&self) -> Self::Token<'_> {
6617                (
6618                    <alloy::sol_types::sol_data::Uint<
6619                        64,
6620                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6621                )
6622            }
6623            #[inline]
6624            fn abi_decode_returns(
6625                data: &[u8],
6626                validate: bool,
6627            ) -> alloy_sol_types::Result<Self::Return> {
6628                <Self::ReturnTuple<
6629                    '_,
6630                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6631                    .map(Into::into)
6632            }
6633        }
6634    };
6635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6636    /**Function with signature `currentCheckpoint()` and selector `0x47d28372`.
6637```solidity
6638function currentCheckpoint() external view returns (IEigenPodTypes.Checkpoint memory);
6639```*/
6640    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6641    #[derive(Clone)]
6642    pub struct currentCheckpointCall {}
6643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6644    ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function.
6645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6646    #[derive(Clone)]
6647    pub struct currentCheckpointReturn {
6648        #[allow(missing_docs)]
6649        pub _0: <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType,
6650    }
6651    #[allow(
6652        non_camel_case_types,
6653        non_snake_case,
6654        clippy::pub_underscore_fields,
6655        clippy::style
6656    )]
6657    const _: () = {
6658        use alloy::sol_types as alloy_sol_types;
6659        {
6660            #[doc(hidden)]
6661            type UnderlyingSolTuple<'a> = ();
6662            #[doc(hidden)]
6663            type UnderlyingRustTuple<'a> = ();
6664            #[cfg(test)]
6665            #[allow(dead_code, unreachable_patterns)]
6666            fn _type_assertion(
6667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6668            ) {
6669                match _t {
6670                    alloy_sol_types::private::AssertTypeEq::<
6671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6672                    >(_) => {}
6673                }
6674            }
6675            #[automatically_derived]
6676            #[doc(hidden)]
6677            impl ::core::convert::From<currentCheckpointCall>
6678            for UnderlyingRustTuple<'_> {
6679                fn from(value: currentCheckpointCall) -> Self {
6680                    ()
6681                }
6682            }
6683            #[automatically_derived]
6684            #[doc(hidden)]
6685            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6686            for currentCheckpointCall {
6687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6688                    Self {}
6689                }
6690            }
6691        }
6692        {
6693            #[doc(hidden)]
6694            type UnderlyingSolTuple<'a> = (IEigenPodTypes::Checkpoint,);
6695            #[doc(hidden)]
6696            type UnderlyingRustTuple<'a> = (
6697                <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType,
6698            );
6699            #[cfg(test)]
6700            #[allow(dead_code, unreachable_patterns)]
6701            fn _type_assertion(
6702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6703            ) {
6704                match _t {
6705                    alloy_sol_types::private::AssertTypeEq::<
6706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6707                    >(_) => {}
6708                }
6709            }
6710            #[automatically_derived]
6711            #[doc(hidden)]
6712            impl ::core::convert::From<currentCheckpointReturn>
6713            for UnderlyingRustTuple<'_> {
6714                fn from(value: currentCheckpointReturn) -> Self {
6715                    (value._0,)
6716                }
6717            }
6718            #[automatically_derived]
6719            #[doc(hidden)]
6720            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6721            for currentCheckpointReturn {
6722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6723                    Self { _0: tuple.0 }
6724                }
6725            }
6726        }
6727        #[automatically_derived]
6728        impl alloy_sol_types::SolCall for currentCheckpointCall {
6729            type Parameters<'a> = ();
6730            type Token<'a> = <Self::Parameters<
6731                'a,
6732            > as alloy_sol_types::SolType>::Token<'a>;
6733            type Return = currentCheckpointReturn;
6734            type ReturnTuple<'a> = (IEigenPodTypes::Checkpoint,);
6735            type ReturnToken<'a> = <Self::ReturnTuple<
6736                'a,
6737            > as alloy_sol_types::SolType>::Token<'a>;
6738            const SIGNATURE: &'static str = "currentCheckpoint()";
6739            const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8];
6740            #[inline]
6741            fn new<'a>(
6742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6743            ) -> Self {
6744                tuple.into()
6745            }
6746            #[inline]
6747            fn tokenize(&self) -> Self::Token<'_> {
6748                ()
6749            }
6750            #[inline]
6751            fn abi_decode_returns(
6752                data: &[u8],
6753                validate: bool,
6754            ) -> alloy_sol_types::Result<Self::Return> {
6755                <Self::ReturnTuple<
6756                    '_,
6757                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6758                    .map(Into::into)
6759            }
6760        }
6761    };
6762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6763    /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`.
6764```solidity
6765function currentCheckpointTimestamp() external view returns (uint64);
6766```*/
6767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6768    #[derive(Clone)]
6769    pub struct currentCheckpointTimestampCall {}
6770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6771    ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function.
6772    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6773    #[derive(Clone)]
6774    pub struct currentCheckpointTimestampReturn {
6775        #[allow(missing_docs)]
6776        pub _0: u64,
6777    }
6778    #[allow(
6779        non_camel_case_types,
6780        non_snake_case,
6781        clippy::pub_underscore_fields,
6782        clippy::style
6783    )]
6784    const _: () = {
6785        use alloy::sol_types as alloy_sol_types;
6786        {
6787            #[doc(hidden)]
6788            type UnderlyingSolTuple<'a> = ();
6789            #[doc(hidden)]
6790            type UnderlyingRustTuple<'a> = ();
6791            #[cfg(test)]
6792            #[allow(dead_code, unreachable_patterns)]
6793            fn _type_assertion(
6794                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6795            ) {
6796                match _t {
6797                    alloy_sol_types::private::AssertTypeEq::<
6798                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6799                    >(_) => {}
6800                }
6801            }
6802            #[automatically_derived]
6803            #[doc(hidden)]
6804            impl ::core::convert::From<currentCheckpointTimestampCall>
6805            for UnderlyingRustTuple<'_> {
6806                fn from(value: currentCheckpointTimestampCall) -> Self {
6807                    ()
6808                }
6809            }
6810            #[automatically_derived]
6811            #[doc(hidden)]
6812            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6813            for currentCheckpointTimestampCall {
6814                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6815                    Self {}
6816                }
6817            }
6818        }
6819        {
6820            #[doc(hidden)]
6821            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6822            #[doc(hidden)]
6823            type UnderlyingRustTuple<'a> = (u64,);
6824            #[cfg(test)]
6825            #[allow(dead_code, unreachable_patterns)]
6826            fn _type_assertion(
6827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6828            ) {
6829                match _t {
6830                    alloy_sol_types::private::AssertTypeEq::<
6831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6832                    >(_) => {}
6833                }
6834            }
6835            #[automatically_derived]
6836            #[doc(hidden)]
6837            impl ::core::convert::From<currentCheckpointTimestampReturn>
6838            for UnderlyingRustTuple<'_> {
6839                fn from(value: currentCheckpointTimestampReturn) -> Self {
6840                    (value._0,)
6841                }
6842            }
6843            #[automatically_derived]
6844            #[doc(hidden)]
6845            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6846            for currentCheckpointTimestampReturn {
6847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6848                    Self { _0: tuple.0 }
6849                }
6850            }
6851        }
6852        #[automatically_derived]
6853        impl alloy_sol_types::SolCall for currentCheckpointTimestampCall {
6854            type Parameters<'a> = ();
6855            type Token<'a> = <Self::Parameters<
6856                'a,
6857            > as alloy_sol_types::SolType>::Token<'a>;
6858            type Return = currentCheckpointTimestampReturn;
6859            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6860            type ReturnToken<'a> = <Self::ReturnTuple<
6861                'a,
6862            > as alloy_sol_types::SolType>::Token<'a>;
6863            const SIGNATURE: &'static str = "currentCheckpointTimestamp()";
6864            const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 42u8];
6865            #[inline]
6866            fn new<'a>(
6867                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6868            ) -> Self {
6869                tuple.into()
6870            }
6871            #[inline]
6872            fn tokenize(&self) -> Self::Token<'_> {
6873                ()
6874            }
6875            #[inline]
6876            fn abi_decode_returns(
6877                data: &[u8],
6878                validate: bool,
6879            ) -> alloy_sol_types::Result<Self::Return> {
6880                <Self::ReturnTuple<
6881                    '_,
6882                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6883                    .map(Into::into)
6884            }
6885        }
6886    };
6887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6888    /**Function with signature `eigenPodManager()` and selector `0x4665bcda`.
6889```solidity
6890function eigenPodManager() external view returns (address);
6891```*/
6892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6893    #[derive(Clone)]
6894    pub struct eigenPodManagerCall {}
6895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6896    ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function.
6897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6898    #[derive(Clone)]
6899    pub struct eigenPodManagerReturn {
6900        #[allow(missing_docs)]
6901        pub _0: alloy::sol_types::private::Address,
6902    }
6903    #[allow(
6904        non_camel_case_types,
6905        non_snake_case,
6906        clippy::pub_underscore_fields,
6907        clippy::style
6908    )]
6909    const _: () = {
6910        use alloy::sol_types as alloy_sol_types;
6911        {
6912            #[doc(hidden)]
6913            type UnderlyingSolTuple<'a> = ();
6914            #[doc(hidden)]
6915            type UnderlyingRustTuple<'a> = ();
6916            #[cfg(test)]
6917            #[allow(dead_code, unreachable_patterns)]
6918            fn _type_assertion(
6919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6920            ) {
6921                match _t {
6922                    alloy_sol_types::private::AssertTypeEq::<
6923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6924                    >(_) => {}
6925                }
6926            }
6927            #[automatically_derived]
6928            #[doc(hidden)]
6929            impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
6930                fn from(value: eigenPodManagerCall) -> Self {
6931                    ()
6932                }
6933            }
6934            #[automatically_derived]
6935            #[doc(hidden)]
6936            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerCall {
6937                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6938                    Self {}
6939                }
6940            }
6941        }
6942        {
6943            #[doc(hidden)]
6944            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6945            #[doc(hidden)]
6946            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6947            #[cfg(test)]
6948            #[allow(dead_code, unreachable_patterns)]
6949            fn _type_assertion(
6950                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6951            ) {
6952                match _t {
6953                    alloy_sol_types::private::AssertTypeEq::<
6954                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6955                    >(_) => {}
6956                }
6957            }
6958            #[automatically_derived]
6959            #[doc(hidden)]
6960            impl ::core::convert::From<eigenPodManagerReturn>
6961            for UnderlyingRustTuple<'_> {
6962                fn from(value: eigenPodManagerReturn) -> Self {
6963                    (value._0,)
6964                }
6965            }
6966            #[automatically_derived]
6967            #[doc(hidden)]
6968            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6969            for eigenPodManagerReturn {
6970                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6971                    Self { _0: tuple.0 }
6972                }
6973            }
6974        }
6975        #[automatically_derived]
6976        impl alloy_sol_types::SolCall for eigenPodManagerCall {
6977            type Parameters<'a> = ();
6978            type Token<'a> = <Self::Parameters<
6979                'a,
6980            > as alloy_sol_types::SolType>::Token<'a>;
6981            type Return = eigenPodManagerReturn;
6982            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6983            type ReturnToken<'a> = <Self::ReturnTuple<
6984                'a,
6985            > as alloy_sol_types::SolType>::Token<'a>;
6986            const SIGNATURE: &'static str = "eigenPodManager()";
6987            const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8];
6988            #[inline]
6989            fn new<'a>(
6990                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6991            ) -> Self {
6992                tuple.into()
6993            }
6994            #[inline]
6995            fn tokenize(&self) -> Self::Token<'_> {
6996                ()
6997            }
6998            #[inline]
6999            fn abi_decode_returns(
7000                data: &[u8],
7001                validate: bool,
7002            ) -> alloy_sol_types::Result<Self::Return> {
7003                <Self::ReturnTuple<
7004                    '_,
7005                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7006                    .map(Into::into)
7007            }
7008        }
7009    };
7010    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7011    /**Function with signature `ethPOS()` and selector `0x74cdd798`.
7012```solidity
7013function ethPOS() external view returns (address);
7014```*/
7015    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7016    #[derive(Clone)]
7017    pub struct ethPOSCall {}
7018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7019    ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function.
7020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7021    #[derive(Clone)]
7022    pub struct ethPOSReturn {
7023        #[allow(missing_docs)]
7024        pub _0: alloy::sol_types::private::Address,
7025    }
7026    #[allow(
7027        non_camel_case_types,
7028        non_snake_case,
7029        clippy::pub_underscore_fields,
7030        clippy::style
7031    )]
7032    const _: () = {
7033        use alloy::sol_types as alloy_sol_types;
7034        {
7035            #[doc(hidden)]
7036            type UnderlyingSolTuple<'a> = ();
7037            #[doc(hidden)]
7038            type UnderlyingRustTuple<'a> = ();
7039            #[cfg(test)]
7040            #[allow(dead_code, unreachable_patterns)]
7041            fn _type_assertion(
7042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7043            ) {
7044                match _t {
7045                    alloy_sol_types::private::AssertTypeEq::<
7046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7047                    >(_) => {}
7048                }
7049            }
7050            #[automatically_derived]
7051            #[doc(hidden)]
7052            impl ::core::convert::From<ethPOSCall> for UnderlyingRustTuple<'_> {
7053                fn from(value: ethPOSCall) -> Self {
7054                    ()
7055                }
7056            }
7057            #[automatically_derived]
7058            #[doc(hidden)]
7059            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ethPOSCall {
7060                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7061                    Self {}
7062                }
7063            }
7064        }
7065        {
7066            #[doc(hidden)]
7067            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7068            #[doc(hidden)]
7069            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7070            #[cfg(test)]
7071            #[allow(dead_code, unreachable_patterns)]
7072            fn _type_assertion(
7073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7074            ) {
7075                match _t {
7076                    alloy_sol_types::private::AssertTypeEq::<
7077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7078                    >(_) => {}
7079                }
7080            }
7081            #[automatically_derived]
7082            #[doc(hidden)]
7083            impl ::core::convert::From<ethPOSReturn> for UnderlyingRustTuple<'_> {
7084                fn from(value: ethPOSReturn) -> Self {
7085                    (value._0,)
7086                }
7087            }
7088            #[automatically_derived]
7089            #[doc(hidden)]
7090            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ethPOSReturn {
7091                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7092                    Self { _0: tuple.0 }
7093                }
7094            }
7095        }
7096        #[automatically_derived]
7097        impl alloy_sol_types::SolCall for ethPOSCall {
7098            type Parameters<'a> = ();
7099            type Token<'a> = <Self::Parameters<
7100                'a,
7101            > as alloy_sol_types::SolType>::Token<'a>;
7102            type Return = ethPOSReturn;
7103            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7104            type ReturnToken<'a> = <Self::ReturnTuple<
7105                'a,
7106            > as alloy_sol_types::SolType>::Token<'a>;
7107            const SIGNATURE: &'static str = "ethPOS()";
7108            const SELECTOR: [u8; 4] = [116u8, 205u8, 215u8, 152u8];
7109            #[inline]
7110            fn new<'a>(
7111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7112            ) -> Self {
7113                tuple.into()
7114            }
7115            #[inline]
7116            fn tokenize(&self) -> Self::Token<'_> {
7117                ()
7118            }
7119            #[inline]
7120            fn abi_decode_returns(
7121                data: &[u8],
7122                validate: bool,
7123            ) -> alloy_sol_types::Result<Self::Return> {
7124                <Self::ReturnTuple<
7125                    '_,
7126                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7127                    .map(Into::into)
7128            }
7129        }
7130    };
7131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7132    /**Function with signature `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`.
7133```solidity
7134function getParentBlockRoot(uint64 timestamp) external view returns (bytes32);
7135```*/
7136    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7137    #[derive(Clone)]
7138    pub struct getParentBlockRootCall {
7139        #[allow(missing_docs)]
7140        pub timestamp: u64,
7141    }
7142    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7143    ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function.
7144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7145    #[derive(Clone)]
7146    pub struct getParentBlockRootReturn {
7147        #[allow(missing_docs)]
7148        pub _0: alloy::sol_types::private::FixedBytes<32>,
7149    }
7150    #[allow(
7151        non_camel_case_types,
7152        non_snake_case,
7153        clippy::pub_underscore_fields,
7154        clippy::style
7155    )]
7156    const _: () = {
7157        use alloy::sol_types as alloy_sol_types;
7158        {
7159            #[doc(hidden)]
7160            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7161            #[doc(hidden)]
7162            type UnderlyingRustTuple<'a> = (u64,);
7163            #[cfg(test)]
7164            #[allow(dead_code, unreachable_patterns)]
7165            fn _type_assertion(
7166                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7167            ) {
7168                match _t {
7169                    alloy_sol_types::private::AssertTypeEq::<
7170                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7171                    >(_) => {}
7172                }
7173            }
7174            #[automatically_derived]
7175            #[doc(hidden)]
7176            impl ::core::convert::From<getParentBlockRootCall>
7177            for UnderlyingRustTuple<'_> {
7178                fn from(value: getParentBlockRootCall) -> Self {
7179                    (value.timestamp,)
7180                }
7181            }
7182            #[automatically_derived]
7183            #[doc(hidden)]
7184            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7185            for getParentBlockRootCall {
7186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7187                    Self { timestamp: tuple.0 }
7188                }
7189            }
7190        }
7191        {
7192            #[doc(hidden)]
7193            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7194            #[doc(hidden)]
7195            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7196            #[cfg(test)]
7197            #[allow(dead_code, unreachable_patterns)]
7198            fn _type_assertion(
7199                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7200            ) {
7201                match _t {
7202                    alloy_sol_types::private::AssertTypeEq::<
7203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7204                    >(_) => {}
7205                }
7206            }
7207            #[automatically_derived]
7208            #[doc(hidden)]
7209            impl ::core::convert::From<getParentBlockRootReturn>
7210            for UnderlyingRustTuple<'_> {
7211                fn from(value: getParentBlockRootReturn) -> Self {
7212                    (value._0,)
7213                }
7214            }
7215            #[automatically_derived]
7216            #[doc(hidden)]
7217            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7218            for getParentBlockRootReturn {
7219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7220                    Self { _0: tuple.0 }
7221                }
7222            }
7223        }
7224        #[automatically_derived]
7225        impl alloy_sol_types::SolCall for getParentBlockRootCall {
7226            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7227            type Token<'a> = <Self::Parameters<
7228                'a,
7229            > as alloy_sol_types::SolType>::Token<'a>;
7230            type Return = getParentBlockRootReturn;
7231            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7232            type ReturnToken<'a> = <Self::ReturnTuple<
7233                'a,
7234            > as alloy_sol_types::SolType>::Token<'a>;
7235            const SIGNATURE: &'static str = "getParentBlockRoot(uint64)";
7236            const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8];
7237            #[inline]
7238            fn new<'a>(
7239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7240            ) -> Self {
7241                tuple.into()
7242            }
7243            #[inline]
7244            fn tokenize(&self) -> Self::Token<'_> {
7245                (
7246                    <alloy::sol_types::sol_data::Uint<
7247                        64,
7248                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
7249                )
7250            }
7251            #[inline]
7252            fn abi_decode_returns(
7253                data: &[u8],
7254                validate: bool,
7255            ) -> alloy_sol_types::Result<Self::Return> {
7256                <Self::ReturnTuple<
7257                    '_,
7258                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7259                    .map(Into::into)
7260            }
7261        }
7262    };
7263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7264    /**Function with signature `initialize(address)` and selector `0xc4d66de8`.
7265```solidity
7266function initialize(address _podOwner) external;
7267```*/
7268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7269    #[derive(Clone)]
7270    pub struct initializeCall {
7271        #[allow(missing_docs)]
7272        pub _podOwner: alloy::sol_types::private::Address,
7273    }
7274    ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function.
7275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7276    #[derive(Clone)]
7277    pub struct initializeReturn {}
7278    #[allow(
7279        non_camel_case_types,
7280        non_snake_case,
7281        clippy::pub_underscore_fields,
7282        clippy::style
7283    )]
7284    const _: () = {
7285        use alloy::sol_types as alloy_sol_types;
7286        {
7287            #[doc(hidden)]
7288            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7289            #[doc(hidden)]
7290            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7291            #[cfg(test)]
7292            #[allow(dead_code, unreachable_patterns)]
7293            fn _type_assertion(
7294                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7295            ) {
7296                match _t {
7297                    alloy_sol_types::private::AssertTypeEq::<
7298                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7299                    >(_) => {}
7300                }
7301            }
7302            #[automatically_derived]
7303            #[doc(hidden)]
7304            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7305                fn from(value: initializeCall) -> Self {
7306                    (value._podOwner,)
7307                }
7308            }
7309            #[automatically_derived]
7310            #[doc(hidden)]
7311            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7313                    Self { _podOwner: tuple.0 }
7314                }
7315            }
7316        }
7317        {
7318            #[doc(hidden)]
7319            type UnderlyingSolTuple<'a> = ();
7320            #[doc(hidden)]
7321            type UnderlyingRustTuple<'a> = ();
7322            #[cfg(test)]
7323            #[allow(dead_code, unreachable_patterns)]
7324            fn _type_assertion(
7325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7326            ) {
7327                match _t {
7328                    alloy_sol_types::private::AssertTypeEq::<
7329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7330                    >(_) => {}
7331                }
7332            }
7333            #[automatically_derived]
7334            #[doc(hidden)]
7335            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7336                fn from(value: initializeReturn) -> Self {
7337                    ()
7338                }
7339            }
7340            #[automatically_derived]
7341            #[doc(hidden)]
7342            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7343                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7344                    Self {}
7345                }
7346            }
7347        }
7348        #[automatically_derived]
7349        impl alloy_sol_types::SolCall for initializeCall {
7350            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7351            type Token<'a> = <Self::Parameters<
7352                'a,
7353            > as alloy_sol_types::SolType>::Token<'a>;
7354            type Return = initializeReturn;
7355            type ReturnTuple<'a> = ();
7356            type ReturnToken<'a> = <Self::ReturnTuple<
7357                'a,
7358            > as alloy_sol_types::SolType>::Token<'a>;
7359            const SIGNATURE: &'static str = "initialize(address)";
7360            const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8];
7361            #[inline]
7362            fn new<'a>(
7363                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7364            ) -> Self {
7365                tuple.into()
7366            }
7367            #[inline]
7368            fn tokenize(&self) -> Self::Token<'_> {
7369                (
7370                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7371                        &self._podOwner,
7372                    ),
7373                )
7374            }
7375            #[inline]
7376            fn abi_decode_returns(
7377                data: &[u8],
7378                validate: bool,
7379            ) -> alloy_sol_types::Result<Self::Return> {
7380                <Self::ReturnTuple<
7381                    '_,
7382                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7383                    .map(Into::into)
7384            }
7385        }
7386    };
7387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7388    /**Function with signature `lastCheckpointTimestamp()` and selector `0xee94d67c`.
7389```solidity
7390function lastCheckpointTimestamp() external view returns (uint64);
7391```*/
7392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7393    #[derive(Clone)]
7394    pub struct lastCheckpointTimestampCall {}
7395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7396    ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function.
7397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7398    #[derive(Clone)]
7399    pub struct lastCheckpointTimestampReturn {
7400        #[allow(missing_docs)]
7401        pub _0: u64,
7402    }
7403    #[allow(
7404        non_camel_case_types,
7405        non_snake_case,
7406        clippy::pub_underscore_fields,
7407        clippy::style
7408    )]
7409    const _: () = {
7410        use alloy::sol_types as alloy_sol_types;
7411        {
7412            #[doc(hidden)]
7413            type UnderlyingSolTuple<'a> = ();
7414            #[doc(hidden)]
7415            type UnderlyingRustTuple<'a> = ();
7416            #[cfg(test)]
7417            #[allow(dead_code, unreachable_patterns)]
7418            fn _type_assertion(
7419                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7420            ) {
7421                match _t {
7422                    alloy_sol_types::private::AssertTypeEq::<
7423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7424                    >(_) => {}
7425                }
7426            }
7427            #[automatically_derived]
7428            #[doc(hidden)]
7429            impl ::core::convert::From<lastCheckpointTimestampCall>
7430            for UnderlyingRustTuple<'_> {
7431                fn from(value: lastCheckpointTimestampCall) -> Self {
7432                    ()
7433                }
7434            }
7435            #[automatically_derived]
7436            #[doc(hidden)]
7437            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7438            for lastCheckpointTimestampCall {
7439                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7440                    Self {}
7441                }
7442            }
7443        }
7444        {
7445            #[doc(hidden)]
7446            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7447            #[doc(hidden)]
7448            type UnderlyingRustTuple<'a> = (u64,);
7449            #[cfg(test)]
7450            #[allow(dead_code, unreachable_patterns)]
7451            fn _type_assertion(
7452                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7453            ) {
7454                match _t {
7455                    alloy_sol_types::private::AssertTypeEq::<
7456                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7457                    >(_) => {}
7458                }
7459            }
7460            #[automatically_derived]
7461            #[doc(hidden)]
7462            impl ::core::convert::From<lastCheckpointTimestampReturn>
7463            for UnderlyingRustTuple<'_> {
7464                fn from(value: lastCheckpointTimestampReturn) -> Self {
7465                    (value._0,)
7466                }
7467            }
7468            #[automatically_derived]
7469            #[doc(hidden)]
7470            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7471            for lastCheckpointTimestampReturn {
7472                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7473                    Self { _0: tuple.0 }
7474                }
7475            }
7476        }
7477        #[automatically_derived]
7478        impl alloy_sol_types::SolCall for lastCheckpointTimestampCall {
7479            type Parameters<'a> = ();
7480            type Token<'a> = <Self::Parameters<
7481                'a,
7482            > as alloy_sol_types::SolType>::Token<'a>;
7483            type Return = lastCheckpointTimestampReturn;
7484            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7485            type ReturnToken<'a> = <Self::ReturnTuple<
7486                'a,
7487            > as alloy_sol_types::SolType>::Token<'a>;
7488            const SIGNATURE: &'static str = "lastCheckpointTimestamp()";
7489            const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8];
7490            #[inline]
7491            fn new<'a>(
7492                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7493            ) -> Self {
7494                tuple.into()
7495            }
7496            #[inline]
7497            fn tokenize(&self) -> Self::Token<'_> {
7498                ()
7499            }
7500            #[inline]
7501            fn abi_decode_returns(
7502                data: &[u8],
7503                validate: bool,
7504            ) -> alloy_sol_types::Result<Self::Return> {
7505                <Self::ReturnTuple<
7506                    '_,
7507                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7508                    .map(Into::into)
7509            }
7510        }
7511    };
7512    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7513    /**Function with signature `podOwner()` and selector `0x0b18ff66`.
7514```solidity
7515function podOwner() external view returns (address);
7516```*/
7517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7518    #[derive(Clone)]
7519    pub struct podOwnerCall {}
7520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7521    ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function.
7522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7523    #[derive(Clone)]
7524    pub struct podOwnerReturn {
7525        #[allow(missing_docs)]
7526        pub _0: alloy::sol_types::private::Address,
7527    }
7528    #[allow(
7529        non_camel_case_types,
7530        non_snake_case,
7531        clippy::pub_underscore_fields,
7532        clippy::style
7533    )]
7534    const _: () = {
7535        use alloy::sol_types as alloy_sol_types;
7536        {
7537            #[doc(hidden)]
7538            type UnderlyingSolTuple<'a> = ();
7539            #[doc(hidden)]
7540            type UnderlyingRustTuple<'a> = ();
7541            #[cfg(test)]
7542            #[allow(dead_code, unreachable_patterns)]
7543            fn _type_assertion(
7544                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7545            ) {
7546                match _t {
7547                    alloy_sol_types::private::AssertTypeEq::<
7548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7549                    >(_) => {}
7550                }
7551            }
7552            #[automatically_derived]
7553            #[doc(hidden)]
7554            impl ::core::convert::From<podOwnerCall> for UnderlyingRustTuple<'_> {
7555                fn from(value: podOwnerCall) -> Self {
7556                    ()
7557                }
7558            }
7559            #[automatically_derived]
7560            #[doc(hidden)]
7561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for podOwnerCall {
7562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7563                    Self {}
7564                }
7565            }
7566        }
7567        {
7568            #[doc(hidden)]
7569            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7570            #[doc(hidden)]
7571            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7572            #[cfg(test)]
7573            #[allow(dead_code, unreachable_patterns)]
7574            fn _type_assertion(
7575                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7576            ) {
7577                match _t {
7578                    alloy_sol_types::private::AssertTypeEq::<
7579                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7580                    >(_) => {}
7581                }
7582            }
7583            #[automatically_derived]
7584            #[doc(hidden)]
7585            impl ::core::convert::From<podOwnerReturn> for UnderlyingRustTuple<'_> {
7586                fn from(value: podOwnerReturn) -> Self {
7587                    (value._0,)
7588                }
7589            }
7590            #[automatically_derived]
7591            #[doc(hidden)]
7592            impl ::core::convert::From<UnderlyingRustTuple<'_>> for podOwnerReturn {
7593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7594                    Self { _0: tuple.0 }
7595                }
7596            }
7597        }
7598        #[automatically_derived]
7599        impl alloy_sol_types::SolCall for podOwnerCall {
7600            type Parameters<'a> = ();
7601            type Token<'a> = <Self::Parameters<
7602                'a,
7603            > as alloy_sol_types::SolType>::Token<'a>;
7604            type Return = podOwnerReturn;
7605            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7606            type ReturnToken<'a> = <Self::ReturnTuple<
7607                'a,
7608            > as alloy_sol_types::SolType>::Token<'a>;
7609            const SIGNATURE: &'static str = "podOwner()";
7610            const SELECTOR: [u8; 4] = [11u8, 24u8, 255u8, 102u8];
7611            #[inline]
7612            fn new<'a>(
7613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7614            ) -> Self {
7615                tuple.into()
7616            }
7617            #[inline]
7618            fn tokenize(&self) -> Self::Token<'_> {
7619                ()
7620            }
7621            #[inline]
7622            fn abi_decode_returns(
7623                data: &[u8],
7624                validate: bool,
7625            ) -> alloy_sol_types::Result<Self::Return> {
7626                <Self::ReturnTuple<
7627                    '_,
7628                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7629                    .map(Into::into)
7630            }
7631        }
7632    };
7633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7634    /**Function with signature `proofSubmitter()` and selector `0x58753357`.
7635```solidity
7636function proofSubmitter() external view returns (address);
7637```*/
7638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7639    #[derive(Clone)]
7640    pub struct proofSubmitterCall {}
7641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7642    ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function.
7643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7644    #[derive(Clone)]
7645    pub struct proofSubmitterReturn {
7646        #[allow(missing_docs)]
7647        pub _0: alloy::sol_types::private::Address,
7648    }
7649    #[allow(
7650        non_camel_case_types,
7651        non_snake_case,
7652        clippy::pub_underscore_fields,
7653        clippy::style
7654    )]
7655    const _: () = {
7656        use alloy::sol_types as alloy_sol_types;
7657        {
7658            #[doc(hidden)]
7659            type UnderlyingSolTuple<'a> = ();
7660            #[doc(hidden)]
7661            type UnderlyingRustTuple<'a> = ();
7662            #[cfg(test)]
7663            #[allow(dead_code, unreachable_patterns)]
7664            fn _type_assertion(
7665                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7666            ) {
7667                match _t {
7668                    alloy_sol_types::private::AssertTypeEq::<
7669                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7670                    >(_) => {}
7671                }
7672            }
7673            #[automatically_derived]
7674            #[doc(hidden)]
7675            impl ::core::convert::From<proofSubmitterCall> for UnderlyingRustTuple<'_> {
7676                fn from(value: proofSubmitterCall) -> Self {
7677                    ()
7678                }
7679            }
7680            #[automatically_derived]
7681            #[doc(hidden)]
7682            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proofSubmitterCall {
7683                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7684                    Self {}
7685                }
7686            }
7687        }
7688        {
7689            #[doc(hidden)]
7690            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7691            #[doc(hidden)]
7692            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7693            #[cfg(test)]
7694            #[allow(dead_code, unreachable_patterns)]
7695            fn _type_assertion(
7696                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7697            ) {
7698                match _t {
7699                    alloy_sol_types::private::AssertTypeEq::<
7700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7701                    >(_) => {}
7702                }
7703            }
7704            #[automatically_derived]
7705            #[doc(hidden)]
7706            impl ::core::convert::From<proofSubmitterReturn>
7707            for UnderlyingRustTuple<'_> {
7708                fn from(value: proofSubmitterReturn) -> Self {
7709                    (value._0,)
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7715            for proofSubmitterReturn {
7716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7717                    Self { _0: tuple.0 }
7718                }
7719            }
7720        }
7721        #[automatically_derived]
7722        impl alloy_sol_types::SolCall for proofSubmitterCall {
7723            type Parameters<'a> = ();
7724            type Token<'a> = <Self::Parameters<
7725                'a,
7726            > as alloy_sol_types::SolType>::Token<'a>;
7727            type Return = proofSubmitterReturn;
7728            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7729            type ReturnToken<'a> = <Self::ReturnTuple<
7730                'a,
7731            > as alloy_sol_types::SolType>::Token<'a>;
7732            const SIGNATURE: &'static str = "proofSubmitter()";
7733            const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8];
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_returns(
7746                data: &[u8],
7747                validate: bool,
7748            ) -> alloy_sol_types::Result<Self::Return> {
7749                <Self::ReturnTuple<
7750                    '_,
7751                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7752                    .map(Into::into)
7753            }
7754        }
7755    };
7756    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7757    /**Function with signature `recoverTokens(address[],uint256[],address)` and selector `0xdda3346c`.
7758```solidity
7759function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external;
7760```*/
7761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7762    #[derive(Clone)]
7763    pub struct recoverTokensCall {
7764        #[allow(missing_docs)]
7765        pub tokenList: alloy::sol_types::private::Vec<
7766            alloy::sol_types::private::Address,
7767        >,
7768        #[allow(missing_docs)]
7769        pub amountsToWithdraw: alloy::sol_types::private::Vec<
7770            alloy::sol_types::private::primitives::aliases::U256,
7771        >,
7772        #[allow(missing_docs)]
7773        pub recipient: alloy::sol_types::private::Address,
7774    }
7775    ///Container type for the return parameters of the [`recoverTokens(address[],uint256[],address)`](recoverTokensCall) function.
7776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7777    #[derive(Clone)]
7778    pub struct recoverTokensReturn {}
7779    #[allow(
7780        non_camel_case_types,
7781        non_snake_case,
7782        clippy::pub_underscore_fields,
7783        clippy::style
7784    )]
7785    const _: () = {
7786        use alloy::sol_types as alloy_sol_types;
7787        {
7788            #[doc(hidden)]
7789            type UnderlyingSolTuple<'a> = (
7790                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7791                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7792                alloy::sol_types::sol_data::Address,
7793            );
7794            #[doc(hidden)]
7795            type UnderlyingRustTuple<'a> = (
7796                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7797                alloy::sol_types::private::Vec<
7798                    alloy::sol_types::private::primitives::aliases::U256,
7799                >,
7800                alloy::sol_types::private::Address,
7801            );
7802            #[cfg(test)]
7803            #[allow(dead_code, unreachable_patterns)]
7804            fn _type_assertion(
7805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7806            ) {
7807                match _t {
7808                    alloy_sol_types::private::AssertTypeEq::<
7809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7810                    >(_) => {}
7811                }
7812            }
7813            #[automatically_derived]
7814            #[doc(hidden)]
7815            impl ::core::convert::From<recoverTokensCall> for UnderlyingRustTuple<'_> {
7816                fn from(value: recoverTokensCall) -> Self {
7817                    (value.tokenList, value.amountsToWithdraw, value.recipient)
7818                }
7819            }
7820            #[automatically_derived]
7821            #[doc(hidden)]
7822            impl ::core::convert::From<UnderlyingRustTuple<'_>> for recoverTokensCall {
7823                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7824                    Self {
7825                        tokenList: tuple.0,
7826                        amountsToWithdraw: tuple.1,
7827                        recipient: tuple.2,
7828                    }
7829                }
7830            }
7831        }
7832        {
7833            #[doc(hidden)]
7834            type UnderlyingSolTuple<'a> = ();
7835            #[doc(hidden)]
7836            type UnderlyingRustTuple<'a> = ();
7837            #[cfg(test)]
7838            #[allow(dead_code, unreachable_patterns)]
7839            fn _type_assertion(
7840                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7841            ) {
7842                match _t {
7843                    alloy_sol_types::private::AssertTypeEq::<
7844                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7845                    >(_) => {}
7846                }
7847            }
7848            #[automatically_derived]
7849            #[doc(hidden)]
7850            impl ::core::convert::From<recoverTokensReturn> for UnderlyingRustTuple<'_> {
7851                fn from(value: recoverTokensReturn) -> Self {
7852                    ()
7853                }
7854            }
7855            #[automatically_derived]
7856            #[doc(hidden)]
7857            impl ::core::convert::From<UnderlyingRustTuple<'_>> for recoverTokensReturn {
7858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7859                    Self {}
7860                }
7861            }
7862        }
7863        #[automatically_derived]
7864        impl alloy_sol_types::SolCall for recoverTokensCall {
7865            type Parameters<'a> = (
7866                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7867                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7868                alloy::sol_types::sol_data::Address,
7869            );
7870            type Token<'a> = <Self::Parameters<
7871                'a,
7872            > as alloy_sol_types::SolType>::Token<'a>;
7873            type Return = recoverTokensReturn;
7874            type ReturnTuple<'a> = ();
7875            type ReturnToken<'a> = <Self::ReturnTuple<
7876                'a,
7877            > as alloy_sol_types::SolType>::Token<'a>;
7878            const SIGNATURE: &'static str = "recoverTokens(address[],uint256[],address)";
7879            const SELECTOR: [u8; 4] = [221u8, 163u8, 52u8, 108u8];
7880            #[inline]
7881            fn new<'a>(
7882                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7883            ) -> Self {
7884                tuple.into()
7885            }
7886            #[inline]
7887            fn tokenize(&self) -> Self::Token<'_> {
7888                (
7889                    <alloy::sol_types::sol_data::Array<
7890                        alloy::sol_types::sol_data::Address,
7891                    > as alloy_sol_types::SolType>::tokenize(&self.tokenList),
7892                    <alloy::sol_types::sol_data::Array<
7893                        alloy::sol_types::sol_data::Uint<256>,
7894                    > as alloy_sol_types::SolType>::tokenize(&self.amountsToWithdraw),
7895                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7896                        &self.recipient,
7897                    ),
7898                )
7899            }
7900            #[inline]
7901            fn abi_decode_returns(
7902                data: &[u8],
7903                validate: bool,
7904            ) -> alloy_sol_types::Result<Self::Return> {
7905                <Self::ReturnTuple<
7906                    '_,
7907                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7908                    .map(Into::into)
7909            }
7910        }
7911    };
7912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7913    /**Function with signature `setProofSubmitter(address)` and selector `0xd06d5587`.
7914```solidity
7915function setProofSubmitter(address newProofSubmitter) external;
7916```*/
7917    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7918    #[derive(Clone)]
7919    pub struct setProofSubmitterCall {
7920        #[allow(missing_docs)]
7921        pub newProofSubmitter: alloy::sol_types::private::Address,
7922    }
7923    ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function.
7924    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7925    #[derive(Clone)]
7926    pub struct setProofSubmitterReturn {}
7927    #[allow(
7928        non_camel_case_types,
7929        non_snake_case,
7930        clippy::pub_underscore_fields,
7931        clippy::style
7932    )]
7933    const _: () = {
7934        use alloy::sol_types as alloy_sol_types;
7935        {
7936            #[doc(hidden)]
7937            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7938            #[doc(hidden)]
7939            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7940            #[cfg(test)]
7941            #[allow(dead_code, unreachable_patterns)]
7942            fn _type_assertion(
7943                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7944            ) {
7945                match _t {
7946                    alloy_sol_types::private::AssertTypeEq::<
7947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7948                    >(_) => {}
7949                }
7950            }
7951            #[automatically_derived]
7952            #[doc(hidden)]
7953            impl ::core::convert::From<setProofSubmitterCall>
7954            for UnderlyingRustTuple<'_> {
7955                fn from(value: setProofSubmitterCall) -> Self {
7956                    (value.newProofSubmitter,)
7957                }
7958            }
7959            #[automatically_derived]
7960            #[doc(hidden)]
7961            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7962            for setProofSubmitterCall {
7963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7964                    Self { newProofSubmitter: tuple.0 }
7965                }
7966            }
7967        }
7968        {
7969            #[doc(hidden)]
7970            type UnderlyingSolTuple<'a> = ();
7971            #[doc(hidden)]
7972            type UnderlyingRustTuple<'a> = ();
7973            #[cfg(test)]
7974            #[allow(dead_code, unreachable_patterns)]
7975            fn _type_assertion(
7976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7977            ) {
7978                match _t {
7979                    alloy_sol_types::private::AssertTypeEq::<
7980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7981                    >(_) => {}
7982                }
7983            }
7984            #[automatically_derived]
7985            #[doc(hidden)]
7986            impl ::core::convert::From<setProofSubmitterReturn>
7987            for UnderlyingRustTuple<'_> {
7988                fn from(value: setProofSubmitterReturn) -> Self {
7989                    ()
7990                }
7991            }
7992            #[automatically_derived]
7993            #[doc(hidden)]
7994            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7995            for setProofSubmitterReturn {
7996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7997                    Self {}
7998                }
7999            }
8000        }
8001        #[automatically_derived]
8002        impl alloy_sol_types::SolCall for setProofSubmitterCall {
8003            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8004            type Token<'a> = <Self::Parameters<
8005                'a,
8006            > as alloy_sol_types::SolType>::Token<'a>;
8007            type Return = setProofSubmitterReturn;
8008            type ReturnTuple<'a> = ();
8009            type ReturnToken<'a> = <Self::ReturnTuple<
8010                'a,
8011            > as alloy_sol_types::SolType>::Token<'a>;
8012            const SIGNATURE: &'static str = "setProofSubmitter(address)";
8013            const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8];
8014            #[inline]
8015            fn new<'a>(
8016                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8017            ) -> Self {
8018                tuple.into()
8019            }
8020            #[inline]
8021            fn tokenize(&self) -> Self::Token<'_> {
8022                (
8023                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8024                        &self.newProofSubmitter,
8025                    ),
8026                )
8027            }
8028            #[inline]
8029            fn abi_decode_returns(
8030                data: &[u8],
8031                validate: bool,
8032            ) -> alloy_sol_types::Result<Self::Return> {
8033                <Self::ReturnTuple<
8034                    '_,
8035                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8036                    .map(Into::into)
8037            }
8038        }
8039    };
8040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8041    /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`.
8042```solidity
8043function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable;
8044```*/
8045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8046    #[derive(Clone)]
8047    pub struct stakeCall {
8048        #[allow(missing_docs)]
8049        pub pubkey: alloy::sol_types::private::Bytes,
8050        #[allow(missing_docs)]
8051        pub signature: alloy::sol_types::private::Bytes,
8052        #[allow(missing_docs)]
8053        pub depositDataRoot: alloy::sol_types::private::FixedBytes<32>,
8054    }
8055    ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function.
8056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8057    #[derive(Clone)]
8058    pub struct stakeReturn {}
8059    #[allow(
8060        non_camel_case_types,
8061        non_snake_case,
8062        clippy::pub_underscore_fields,
8063        clippy::style
8064    )]
8065    const _: () = {
8066        use alloy::sol_types as alloy_sol_types;
8067        {
8068            #[doc(hidden)]
8069            type UnderlyingSolTuple<'a> = (
8070                alloy::sol_types::sol_data::Bytes,
8071                alloy::sol_types::sol_data::Bytes,
8072                alloy::sol_types::sol_data::FixedBytes<32>,
8073            );
8074            #[doc(hidden)]
8075            type UnderlyingRustTuple<'a> = (
8076                alloy::sol_types::private::Bytes,
8077                alloy::sol_types::private::Bytes,
8078                alloy::sol_types::private::FixedBytes<32>,
8079            );
8080            #[cfg(test)]
8081            #[allow(dead_code, unreachable_patterns)]
8082            fn _type_assertion(
8083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8084            ) {
8085                match _t {
8086                    alloy_sol_types::private::AssertTypeEq::<
8087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8088                    >(_) => {}
8089                }
8090            }
8091            #[automatically_derived]
8092            #[doc(hidden)]
8093            impl ::core::convert::From<stakeCall> for UnderlyingRustTuple<'_> {
8094                fn from(value: stakeCall) -> Self {
8095                    (value.pubkey, value.signature, value.depositDataRoot)
8096                }
8097            }
8098            #[automatically_derived]
8099            #[doc(hidden)]
8100            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeCall {
8101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8102                    Self {
8103                        pubkey: tuple.0,
8104                        signature: tuple.1,
8105                        depositDataRoot: tuple.2,
8106                    }
8107                }
8108            }
8109        }
8110        {
8111            #[doc(hidden)]
8112            type UnderlyingSolTuple<'a> = ();
8113            #[doc(hidden)]
8114            type UnderlyingRustTuple<'a> = ();
8115            #[cfg(test)]
8116            #[allow(dead_code, unreachable_patterns)]
8117            fn _type_assertion(
8118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8119            ) {
8120                match _t {
8121                    alloy_sol_types::private::AssertTypeEq::<
8122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8123                    >(_) => {}
8124                }
8125            }
8126            #[automatically_derived]
8127            #[doc(hidden)]
8128            impl ::core::convert::From<stakeReturn> for UnderlyingRustTuple<'_> {
8129                fn from(value: stakeReturn) -> Self {
8130                    ()
8131                }
8132            }
8133            #[automatically_derived]
8134            #[doc(hidden)]
8135            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeReturn {
8136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8137                    Self {}
8138                }
8139            }
8140        }
8141        #[automatically_derived]
8142        impl alloy_sol_types::SolCall for stakeCall {
8143            type Parameters<'a> = (
8144                alloy::sol_types::sol_data::Bytes,
8145                alloy::sol_types::sol_data::Bytes,
8146                alloy::sol_types::sol_data::FixedBytes<32>,
8147            );
8148            type Token<'a> = <Self::Parameters<
8149                'a,
8150            > as alloy_sol_types::SolType>::Token<'a>;
8151            type Return = stakeReturn;
8152            type ReturnTuple<'a> = ();
8153            type ReturnToken<'a> = <Self::ReturnTuple<
8154                'a,
8155            > as alloy_sol_types::SolType>::Token<'a>;
8156            const SIGNATURE: &'static str = "stake(bytes,bytes,bytes32)";
8157            const SELECTOR: [u8; 4] = [155u8, 78u8, 70u8, 52u8];
8158            #[inline]
8159            fn new<'a>(
8160                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8161            ) -> Self {
8162                tuple.into()
8163            }
8164            #[inline]
8165            fn tokenize(&self) -> Self::Token<'_> {
8166                (
8167                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8168                        &self.pubkey,
8169                    ),
8170                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8171                        &self.signature,
8172                    ),
8173                    <alloy::sol_types::sol_data::FixedBytes<
8174                        32,
8175                    > as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot),
8176                )
8177            }
8178            #[inline]
8179            fn abi_decode_returns(
8180                data: &[u8],
8181                validate: bool,
8182            ) -> alloy_sol_types::Result<Self::Return> {
8183                <Self::ReturnTuple<
8184                    '_,
8185                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8186                    .map(Into::into)
8187            }
8188        }
8189    };
8190    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8191    /**Function with signature `startCheckpoint(bool)` and selector `0x88676cad`.
8192```solidity
8193function startCheckpoint(bool revertIfNoBalance) external;
8194```*/
8195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8196    #[derive(Clone)]
8197    pub struct startCheckpointCall {
8198        #[allow(missing_docs)]
8199        pub revertIfNoBalance: bool,
8200    }
8201    ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function.
8202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8203    #[derive(Clone)]
8204    pub struct startCheckpointReturn {}
8205    #[allow(
8206        non_camel_case_types,
8207        non_snake_case,
8208        clippy::pub_underscore_fields,
8209        clippy::style
8210    )]
8211    const _: () = {
8212        use alloy::sol_types as alloy_sol_types;
8213        {
8214            #[doc(hidden)]
8215            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8216            #[doc(hidden)]
8217            type UnderlyingRustTuple<'a> = (bool,);
8218            #[cfg(test)]
8219            #[allow(dead_code, unreachable_patterns)]
8220            fn _type_assertion(
8221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8222            ) {
8223                match _t {
8224                    alloy_sol_types::private::AssertTypeEq::<
8225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8226                    >(_) => {}
8227                }
8228            }
8229            #[automatically_derived]
8230            #[doc(hidden)]
8231            impl ::core::convert::From<startCheckpointCall> for UnderlyingRustTuple<'_> {
8232                fn from(value: startCheckpointCall) -> Self {
8233                    (value.revertIfNoBalance,)
8234                }
8235            }
8236            #[automatically_derived]
8237            #[doc(hidden)]
8238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for startCheckpointCall {
8239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8240                    Self { revertIfNoBalance: tuple.0 }
8241                }
8242            }
8243        }
8244        {
8245            #[doc(hidden)]
8246            type UnderlyingSolTuple<'a> = ();
8247            #[doc(hidden)]
8248            type UnderlyingRustTuple<'a> = ();
8249            #[cfg(test)]
8250            #[allow(dead_code, unreachable_patterns)]
8251            fn _type_assertion(
8252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8253            ) {
8254                match _t {
8255                    alloy_sol_types::private::AssertTypeEq::<
8256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8257                    >(_) => {}
8258                }
8259            }
8260            #[automatically_derived]
8261            #[doc(hidden)]
8262            impl ::core::convert::From<startCheckpointReturn>
8263            for UnderlyingRustTuple<'_> {
8264                fn from(value: startCheckpointReturn) -> Self {
8265                    ()
8266                }
8267            }
8268            #[automatically_derived]
8269            #[doc(hidden)]
8270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8271            for startCheckpointReturn {
8272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8273                    Self {}
8274                }
8275            }
8276        }
8277        #[automatically_derived]
8278        impl alloy_sol_types::SolCall for startCheckpointCall {
8279            type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
8280            type Token<'a> = <Self::Parameters<
8281                'a,
8282            > as alloy_sol_types::SolType>::Token<'a>;
8283            type Return = startCheckpointReturn;
8284            type ReturnTuple<'a> = ();
8285            type ReturnToken<'a> = <Self::ReturnTuple<
8286                'a,
8287            > as alloy_sol_types::SolType>::Token<'a>;
8288            const SIGNATURE: &'static str = "startCheckpoint(bool)";
8289            const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8];
8290            #[inline]
8291            fn new<'a>(
8292                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8293            ) -> Self {
8294                tuple.into()
8295            }
8296            #[inline]
8297            fn tokenize(&self) -> Self::Token<'_> {
8298                (
8299                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8300                        &self.revertIfNoBalance,
8301                    ),
8302                )
8303            }
8304            #[inline]
8305            fn abi_decode_returns(
8306                data: &[u8],
8307                validate: bool,
8308            ) -> alloy_sol_types::Result<Self::Return> {
8309                <Self::ReturnTuple<
8310                    '_,
8311                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8312                    .map(Into::into)
8313            }
8314        }
8315    };
8316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8317    /**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`.
8318```solidity
8319function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPodTypes.ValidatorInfo memory);
8320```*/
8321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8322    #[derive(Clone)]
8323    pub struct validatorPubkeyHashToInfoCall {
8324        #[allow(missing_docs)]
8325        pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>,
8326    }
8327    #[derive()]
8328    ///Container type for the return parameters of the [`validatorPubkeyHashToInfo(bytes32)`](validatorPubkeyHashToInfoCall) function.
8329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8330    #[derive(Clone)]
8331    pub struct validatorPubkeyHashToInfoReturn {
8332        #[allow(missing_docs)]
8333        pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8334    }
8335    #[allow(
8336        non_camel_case_types,
8337        non_snake_case,
8338        clippy::pub_underscore_fields,
8339        clippy::style
8340    )]
8341    const _: () = {
8342        use alloy::sol_types as alloy_sol_types;
8343        {
8344            #[doc(hidden)]
8345            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8346            #[doc(hidden)]
8347            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8348            #[cfg(test)]
8349            #[allow(dead_code, unreachable_patterns)]
8350            fn _type_assertion(
8351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8352            ) {
8353                match _t {
8354                    alloy_sol_types::private::AssertTypeEq::<
8355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8356                    >(_) => {}
8357                }
8358            }
8359            #[automatically_derived]
8360            #[doc(hidden)]
8361            impl ::core::convert::From<validatorPubkeyHashToInfoCall>
8362            for UnderlyingRustTuple<'_> {
8363                fn from(value: validatorPubkeyHashToInfoCall) -> Self {
8364                    (value.validatorPubkeyHash,)
8365                }
8366            }
8367            #[automatically_derived]
8368            #[doc(hidden)]
8369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8370            for validatorPubkeyHashToInfoCall {
8371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8372                    Self {
8373                        validatorPubkeyHash: tuple.0,
8374                    }
8375                }
8376            }
8377        }
8378        {
8379            #[doc(hidden)]
8380            type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8381            #[doc(hidden)]
8382            type UnderlyingRustTuple<'a> = (
8383                <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8384            );
8385            #[cfg(test)]
8386            #[allow(dead_code, unreachable_patterns)]
8387            fn _type_assertion(
8388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8389            ) {
8390                match _t {
8391                    alloy_sol_types::private::AssertTypeEq::<
8392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8393                    >(_) => {}
8394                }
8395            }
8396            #[automatically_derived]
8397            #[doc(hidden)]
8398            impl ::core::convert::From<validatorPubkeyHashToInfoReturn>
8399            for UnderlyingRustTuple<'_> {
8400                fn from(value: validatorPubkeyHashToInfoReturn) -> Self {
8401                    (value._0,)
8402                }
8403            }
8404            #[automatically_derived]
8405            #[doc(hidden)]
8406            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8407            for validatorPubkeyHashToInfoReturn {
8408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8409                    Self { _0: tuple.0 }
8410                }
8411            }
8412        }
8413        #[automatically_derived]
8414        impl alloy_sol_types::SolCall for validatorPubkeyHashToInfoCall {
8415            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8416            type Token<'a> = <Self::Parameters<
8417                'a,
8418            > as alloy_sol_types::SolType>::Token<'a>;
8419            type Return = validatorPubkeyHashToInfoReturn;
8420            type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8421            type ReturnToken<'a> = <Self::ReturnTuple<
8422                'a,
8423            > as alloy_sol_types::SolType>::Token<'a>;
8424            const SIGNATURE: &'static str = "validatorPubkeyHashToInfo(bytes32)";
8425            const SELECTOR: [u8; 4] = [111u8, 205u8, 14u8, 83u8];
8426            #[inline]
8427            fn new<'a>(
8428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8429            ) -> Self {
8430                tuple.into()
8431            }
8432            #[inline]
8433            fn tokenize(&self) -> Self::Token<'_> {
8434                (
8435                    <alloy::sol_types::sol_data::FixedBytes<
8436                        32,
8437                    > as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash),
8438                )
8439            }
8440            #[inline]
8441            fn abi_decode_returns(
8442                data: &[u8],
8443                validate: bool,
8444            ) -> alloy_sol_types::Result<Self::Return> {
8445                <Self::ReturnTuple<
8446                    '_,
8447                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8448                    .map(Into::into)
8449            }
8450        }
8451    };
8452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8453    /**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`.
8454```solidity
8455function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
8456```*/
8457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8458    #[derive(Clone)]
8459    pub struct validatorPubkeyToInfoCall {
8460        #[allow(missing_docs)]
8461        pub validatorPubkey: alloy::sol_types::private::Bytes,
8462    }
8463    #[derive()]
8464    ///Container type for the return parameters of the [`validatorPubkeyToInfo(bytes)`](validatorPubkeyToInfoCall) function.
8465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8466    #[derive(Clone)]
8467    pub struct validatorPubkeyToInfoReturn {
8468        #[allow(missing_docs)]
8469        pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8470    }
8471    #[allow(
8472        non_camel_case_types,
8473        non_snake_case,
8474        clippy::pub_underscore_fields,
8475        clippy::style
8476    )]
8477    const _: () = {
8478        use alloy::sol_types as alloy_sol_types;
8479        {
8480            #[doc(hidden)]
8481            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
8482            #[doc(hidden)]
8483            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,);
8484            #[cfg(test)]
8485            #[allow(dead_code, unreachable_patterns)]
8486            fn _type_assertion(
8487                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8488            ) {
8489                match _t {
8490                    alloy_sol_types::private::AssertTypeEq::<
8491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8492                    >(_) => {}
8493                }
8494            }
8495            #[automatically_derived]
8496            #[doc(hidden)]
8497            impl ::core::convert::From<validatorPubkeyToInfoCall>
8498            for UnderlyingRustTuple<'_> {
8499                fn from(value: validatorPubkeyToInfoCall) -> Self {
8500                    (value.validatorPubkey,)
8501                }
8502            }
8503            #[automatically_derived]
8504            #[doc(hidden)]
8505            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8506            for validatorPubkeyToInfoCall {
8507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8508                    Self { validatorPubkey: tuple.0 }
8509                }
8510            }
8511        }
8512        {
8513            #[doc(hidden)]
8514            type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8515            #[doc(hidden)]
8516            type UnderlyingRustTuple<'a> = (
8517                <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8518            );
8519            #[cfg(test)]
8520            #[allow(dead_code, unreachable_patterns)]
8521            fn _type_assertion(
8522                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8523            ) {
8524                match _t {
8525                    alloy_sol_types::private::AssertTypeEq::<
8526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8527                    >(_) => {}
8528                }
8529            }
8530            #[automatically_derived]
8531            #[doc(hidden)]
8532            impl ::core::convert::From<validatorPubkeyToInfoReturn>
8533            for UnderlyingRustTuple<'_> {
8534                fn from(value: validatorPubkeyToInfoReturn) -> Self {
8535                    (value._0,)
8536                }
8537            }
8538            #[automatically_derived]
8539            #[doc(hidden)]
8540            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8541            for validatorPubkeyToInfoReturn {
8542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8543                    Self { _0: tuple.0 }
8544                }
8545            }
8546        }
8547        #[automatically_derived]
8548        impl alloy_sol_types::SolCall for validatorPubkeyToInfoCall {
8549            type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,);
8550            type Token<'a> = <Self::Parameters<
8551                'a,
8552            > as alloy_sol_types::SolType>::Token<'a>;
8553            type Return = validatorPubkeyToInfoReturn;
8554            type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8555            type ReturnToken<'a> = <Self::ReturnTuple<
8556                'a,
8557            > as alloy_sol_types::SolType>::Token<'a>;
8558            const SIGNATURE: &'static str = "validatorPubkeyToInfo(bytes)";
8559            const SELECTOR: [u8; 4] = [181u8, 34u8, 83u8, 138u8];
8560            #[inline]
8561            fn new<'a>(
8562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8563            ) -> Self {
8564                tuple.into()
8565            }
8566            #[inline]
8567            fn tokenize(&self) -> Self::Token<'_> {
8568                (
8569                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8570                        &self.validatorPubkey,
8571                    ),
8572                )
8573            }
8574            #[inline]
8575            fn abi_decode_returns(
8576                data: &[u8],
8577                validate: bool,
8578            ) -> alloy_sol_types::Result<Self::Return> {
8579                <Self::ReturnTuple<
8580                    '_,
8581                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8582                    .map(Into::into)
8583            }
8584        }
8585    };
8586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8587    /**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`.
8588```solidity
8589function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
8590```*/
8591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8592    #[derive(Clone)]
8593    pub struct validatorStatus_0Call {
8594        #[allow(missing_docs)]
8595        pub validatorPubkey: alloy::sol_types::private::Bytes,
8596    }
8597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8598    ///Container type for the return parameters of the [`validatorStatus(bytes)`](validatorStatus_0Call) function.
8599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8600    #[derive(Clone)]
8601    pub struct validatorStatus_0Return {
8602        #[allow(missing_docs)]
8603        pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
8604    }
8605    #[allow(
8606        non_camel_case_types,
8607        non_snake_case,
8608        clippy::pub_underscore_fields,
8609        clippy::style
8610    )]
8611    const _: () = {
8612        use alloy::sol_types as alloy_sol_types;
8613        {
8614            #[doc(hidden)]
8615            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
8616            #[doc(hidden)]
8617            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,);
8618            #[cfg(test)]
8619            #[allow(dead_code, unreachable_patterns)]
8620            fn _type_assertion(
8621                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8622            ) {
8623                match _t {
8624                    alloy_sol_types::private::AssertTypeEq::<
8625                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8626                    >(_) => {}
8627                }
8628            }
8629            #[automatically_derived]
8630            #[doc(hidden)]
8631            impl ::core::convert::From<validatorStatus_0Call>
8632            for UnderlyingRustTuple<'_> {
8633                fn from(value: validatorStatus_0Call) -> Self {
8634                    (value.validatorPubkey,)
8635                }
8636            }
8637            #[automatically_derived]
8638            #[doc(hidden)]
8639            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8640            for validatorStatus_0Call {
8641                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8642                    Self { validatorPubkey: tuple.0 }
8643                }
8644            }
8645        }
8646        {
8647            #[doc(hidden)]
8648            type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
8649            #[doc(hidden)]
8650            type UnderlyingRustTuple<'a> = (
8651                <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
8652            );
8653            #[cfg(test)]
8654            #[allow(dead_code, unreachable_patterns)]
8655            fn _type_assertion(
8656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8657            ) {
8658                match _t {
8659                    alloy_sol_types::private::AssertTypeEq::<
8660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8661                    >(_) => {}
8662                }
8663            }
8664            #[automatically_derived]
8665            #[doc(hidden)]
8666            impl ::core::convert::From<validatorStatus_0Return>
8667            for UnderlyingRustTuple<'_> {
8668                fn from(value: validatorStatus_0Return) -> Self {
8669                    (value._0,)
8670                }
8671            }
8672            #[automatically_derived]
8673            #[doc(hidden)]
8674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8675            for validatorStatus_0Return {
8676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8677                    Self { _0: tuple.0 }
8678                }
8679            }
8680        }
8681        #[automatically_derived]
8682        impl alloy_sol_types::SolCall for validatorStatus_0Call {
8683            type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,);
8684            type Token<'a> = <Self::Parameters<
8685                'a,
8686            > as alloy_sol_types::SolType>::Token<'a>;
8687            type Return = validatorStatus_0Return;
8688            type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
8689            type ReturnToken<'a> = <Self::ReturnTuple<
8690                'a,
8691            > as alloy_sol_types::SolType>::Token<'a>;
8692            const SIGNATURE: &'static str = "validatorStatus(bytes)";
8693            const SELECTOR: [u8; 4] = [88u8, 234u8, 238u8, 121u8];
8694            #[inline]
8695            fn new<'a>(
8696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8697            ) -> Self {
8698                tuple.into()
8699            }
8700            #[inline]
8701            fn tokenize(&self) -> Self::Token<'_> {
8702                (
8703                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8704                        &self.validatorPubkey,
8705                    ),
8706                )
8707            }
8708            #[inline]
8709            fn abi_decode_returns(
8710                data: &[u8],
8711                validate: bool,
8712            ) -> alloy_sol_types::Result<Self::Return> {
8713                <Self::ReturnTuple<
8714                    '_,
8715                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8716                    .map(Into::into)
8717            }
8718        }
8719    };
8720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8721    /**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`.
8722```solidity
8723function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
8724```*/
8725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8726    #[derive(Clone)]
8727    pub struct validatorStatus_1Call {
8728        #[allow(missing_docs)]
8729        pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
8730    }
8731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8732    ///Container type for the return parameters of the [`validatorStatus(bytes32)`](validatorStatus_1Call) function.
8733    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8734    #[derive(Clone)]
8735    pub struct validatorStatus_1Return {
8736        #[allow(missing_docs)]
8737        pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
8738    }
8739    #[allow(
8740        non_camel_case_types,
8741        non_snake_case,
8742        clippy::pub_underscore_fields,
8743        clippy::style
8744    )]
8745    const _: () = {
8746        use alloy::sol_types as alloy_sol_types;
8747        {
8748            #[doc(hidden)]
8749            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8750            #[doc(hidden)]
8751            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8752            #[cfg(test)]
8753            #[allow(dead_code, unreachable_patterns)]
8754            fn _type_assertion(
8755                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8756            ) {
8757                match _t {
8758                    alloy_sol_types::private::AssertTypeEq::<
8759                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8760                    >(_) => {}
8761                }
8762            }
8763            #[automatically_derived]
8764            #[doc(hidden)]
8765            impl ::core::convert::From<validatorStatus_1Call>
8766            for UnderlyingRustTuple<'_> {
8767                fn from(value: validatorStatus_1Call) -> Self {
8768                    (value.pubkeyHash,)
8769                }
8770            }
8771            #[automatically_derived]
8772            #[doc(hidden)]
8773            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8774            for validatorStatus_1Call {
8775                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8776                    Self { pubkeyHash: tuple.0 }
8777                }
8778            }
8779        }
8780        {
8781            #[doc(hidden)]
8782            type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
8783            #[doc(hidden)]
8784            type UnderlyingRustTuple<'a> = (
8785                <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
8786            );
8787            #[cfg(test)]
8788            #[allow(dead_code, unreachable_patterns)]
8789            fn _type_assertion(
8790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8791            ) {
8792                match _t {
8793                    alloy_sol_types::private::AssertTypeEq::<
8794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8795                    >(_) => {}
8796                }
8797            }
8798            #[automatically_derived]
8799            #[doc(hidden)]
8800            impl ::core::convert::From<validatorStatus_1Return>
8801            for UnderlyingRustTuple<'_> {
8802                fn from(value: validatorStatus_1Return) -> Self {
8803                    (value._0,)
8804                }
8805            }
8806            #[automatically_derived]
8807            #[doc(hidden)]
8808            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8809            for validatorStatus_1Return {
8810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8811                    Self { _0: tuple.0 }
8812                }
8813            }
8814        }
8815        #[automatically_derived]
8816        impl alloy_sol_types::SolCall for validatorStatus_1Call {
8817            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8818            type Token<'a> = <Self::Parameters<
8819                'a,
8820            > as alloy_sol_types::SolType>::Token<'a>;
8821            type Return = validatorStatus_1Return;
8822            type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
8823            type ReturnToken<'a> = <Self::ReturnTuple<
8824                'a,
8825            > as alloy_sol_types::SolType>::Token<'a>;
8826            const SIGNATURE: &'static str = "validatorStatus(bytes32)";
8827            const SELECTOR: [u8; 4] = [116u8, 57u8, 132u8, 31u8];
8828            #[inline]
8829            fn new<'a>(
8830                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8831            ) -> Self {
8832                tuple.into()
8833            }
8834            #[inline]
8835            fn tokenize(&self) -> Self::Token<'_> {
8836                (
8837                    <alloy::sol_types::sol_data::FixedBytes<
8838                        32,
8839                    > as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
8840                )
8841            }
8842            #[inline]
8843            fn abi_decode_returns(
8844                data: &[u8],
8845                validate: bool,
8846            ) -> alloy_sol_types::Result<Self::Return> {
8847                <Self::ReturnTuple<
8848                    '_,
8849                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8850                    .map(Into::into)
8851            }
8852        }
8853    };
8854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8855    /**Function with signature `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`.
8856```solidity
8857function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external;
8858```*/
8859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8860    #[derive(Clone)]
8861    pub struct verifyCheckpointProofsCall {
8862        #[allow(missing_docs)]
8863        pub balanceContainerProof: <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
8864        #[allow(missing_docs)]
8865        pub proofs: alloy::sol_types::private::Vec<
8866            <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
8867        >,
8868    }
8869    ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function.
8870    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8871    #[derive(Clone)]
8872    pub struct verifyCheckpointProofsReturn {}
8873    #[allow(
8874        non_camel_case_types,
8875        non_snake_case,
8876        clippy::pub_underscore_fields,
8877        clippy::style
8878    )]
8879    const _: () = {
8880        use alloy::sol_types as alloy_sol_types;
8881        {
8882            #[doc(hidden)]
8883            type UnderlyingSolTuple<'a> = (
8884                BeaconChainProofs::BalanceContainerProof,
8885                alloy::sol_types::sol_data::Array<BeaconChainProofs::BalanceProof>,
8886            );
8887            #[doc(hidden)]
8888            type UnderlyingRustTuple<'a> = (
8889                <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
8890                alloy::sol_types::private::Vec<
8891                    <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
8892                >,
8893            );
8894            #[cfg(test)]
8895            #[allow(dead_code, unreachable_patterns)]
8896            fn _type_assertion(
8897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8898            ) {
8899                match _t {
8900                    alloy_sol_types::private::AssertTypeEq::<
8901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8902                    >(_) => {}
8903                }
8904            }
8905            #[automatically_derived]
8906            #[doc(hidden)]
8907            impl ::core::convert::From<verifyCheckpointProofsCall>
8908            for UnderlyingRustTuple<'_> {
8909                fn from(value: verifyCheckpointProofsCall) -> Self {
8910                    (value.balanceContainerProof, value.proofs)
8911                }
8912            }
8913            #[automatically_derived]
8914            #[doc(hidden)]
8915            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8916            for verifyCheckpointProofsCall {
8917                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8918                    Self {
8919                        balanceContainerProof: tuple.0,
8920                        proofs: tuple.1,
8921                    }
8922                }
8923            }
8924        }
8925        {
8926            #[doc(hidden)]
8927            type UnderlyingSolTuple<'a> = ();
8928            #[doc(hidden)]
8929            type UnderlyingRustTuple<'a> = ();
8930            #[cfg(test)]
8931            #[allow(dead_code, unreachable_patterns)]
8932            fn _type_assertion(
8933                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8934            ) {
8935                match _t {
8936                    alloy_sol_types::private::AssertTypeEq::<
8937                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8938                    >(_) => {}
8939                }
8940            }
8941            #[automatically_derived]
8942            #[doc(hidden)]
8943            impl ::core::convert::From<verifyCheckpointProofsReturn>
8944            for UnderlyingRustTuple<'_> {
8945                fn from(value: verifyCheckpointProofsReturn) -> Self {
8946                    ()
8947                }
8948            }
8949            #[automatically_derived]
8950            #[doc(hidden)]
8951            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8952            for verifyCheckpointProofsReturn {
8953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8954                    Self {}
8955                }
8956            }
8957        }
8958        #[automatically_derived]
8959        impl alloy_sol_types::SolCall for verifyCheckpointProofsCall {
8960            type Parameters<'a> = (
8961                BeaconChainProofs::BalanceContainerProof,
8962                alloy::sol_types::sol_data::Array<BeaconChainProofs::BalanceProof>,
8963            );
8964            type Token<'a> = <Self::Parameters<
8965                'a,
8966            > as alloy_sol_types::SolType>::Token<'a>;
8967            type Return = verifyCheckpointProofsReturn;
8968            type ReturnTuple<'a> = ();
8969            type ReturnToken<'a> = <Self::ReturnTuple<
8970                'a,
8971            > as alloy_sol_types::SolType>::Token<'a>;
8972            const SIGNATURE: &'static str = "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])";
8973            const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8];
8974            #[inline]
8975            fn new<'a>(
8976                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8977            ) -> Self {
8978                tuple.into()
8979            }
8980            #[inline]
8981            fn tokenize(&self) -> Self::Token<'_> {
8982                (
8983                    <BeaconChainProofs::BalanceContainerProof as alloy_sol_types::SolType>::tokenize(
8984                        &self.balanceContainerProof,
8985                    ),
8986                    <alloy::sol_types::sol_data::Array<
8987                        BeaconChainProofs::BalanceProof,
8988                    > as alloy_sol_types::SolType>::tokenize(&self.proofs),
8989                )
8990            }
8991            #[inline]
8992            fn abi_decode_returns(
8993                data: &[u8],
8994                validate: bool,
8995            ) -> alloy_sol_types::Result<Self::Return> {
8996                <Self::ReturnTuple<
8997                    '_,
8998                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8999                    .map(Into::into)
9000            }
9001        }
9002    };
9003    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9004    /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`.
9005```solidity
9006function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external;
9007```*/
9008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9009    #[derive(Clone)]
9010    pub struct verifyStaleBalanceCall {
9011        #[allow(missing_docs)]
9012        pub beaconTimestamp: u64,
9013        #[allow(missing_docs)]
9014        pub stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9015        #[allow(missing_docs)]
9016        pub proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
9017    }
9018    ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function.
9019    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9020    #[derive(Clone)]
9021    pub struct verifyStaleBalanceReturn {}
9022    #[allow(
9023        non_camel_case_types,
9024        non_snake_case,
9025        clippy::pub_underscore_fields,
9026        clippy::style
9027    )]
9028    const _: () = {
9029        use alloy::sol_types as alloy_sol_types;
9030        {
9031            #[doc(hidden)]
9032            type UnderlyingSolTuple<'a> = (
9033                alloy::sol_types::sol_data::Uint<64>,
9034                BeaconChainProofs::StateRootProof,
9035                BeaconChainProofs::ValidatorProof,
9036            );
9037            #[doc(hidden)]
9038            type UnderlyingRustTuple<'a> = (
9039                u64,
9040                <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9041                <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
9042            );
9043            #[cfg(test)]
9044            #[allow(dead_code, unreachable_patterns)]
9045            fn _type_assertion(
9046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9047            ) {
9048                match _t {
9049                    alloy_sol_types::private::AssertTypeEq::<
9050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9051                    >(_) => {}
9052                }
9053            }
9054            #[automatically_derived]
9055            #[doc(hidden)]
9056            impl ::core::convert::From<verifyStaleBalanceCall>
9057            for UnderlyingRustTuple<'_> {
9058                fn from(value: verifyStaleBalanceCall) -> Self {
9059                    (value.beaconTimestamp, value.stateRootProof, value.proof)
9060                }
9061            }
9062            #[automatically_derived]
9063            #[doc(hidden)]
9064            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9065            for verifyStaleBalanceCall {
9066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9067                    Self {
9068                        beaconTimestamp: tuple.0,
9069                        stateRootProof: tuple.1,
9070                        proof: tuple.2,
9071                    }
9072                }
9073            }
9074        }
9075        {
9076            #[doc(hidden)]
9077            type UnderlyingSolTuple<'a> = ();
9078            #[doc(hidden)]
9079            type UnderlyingRustTuple<'a> = ();
9080            #[cfg(test)]
9081            #[allow(dead_code, unreachable_patterns)]
9082            fn _type_assertion(
9083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9084            ) {
9085                match _t {
9086                    alloy_sol_types::private::AssertTypeEq::<
9087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9088                    >(_) => {}
9089                }
9090            }
9091            #[automatically_derived]
9092            #[doc(hidden)]
9093            impl ::core::convert::From<verifyStaleBalanceReturn>
9094            for UnderlyingRustTuple<'_> {
9095                fn from(value: verifyStaleBalanceReturn) -> Self {
9096                    ()
9097                }
9098            }
9099            #[automatically_derived]
9100            #[doc(hidden)]
9101            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9102            for verifyStaleBalanceReturn {
9103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9104                    Self {}
9105                }
9106            }
9107        }
9108        #[automatically_derived]
9109        impl alloy_sol_types::SolCall for verifyStaleBalanceCall {
9110            type Parameters<'a> = (
9111                alloy::sol_types::sol_data::Uint<64>,
9112                BeaconChainProofs::StateRootProof,
9113                BeaconChainProofs::ValidatorProof,
9114            );
9115            type Token<'a> = <Self::Parameters<
9116                'a,
9117            > as alloy_sol_types::SolType>::Token<'a>;
9118            type Return = verifyStaleBalanceReturn;
9119            type ReturnTuple<'a> = ();
9120            type ReturnToken<'a> = <Self::ReturnTuple<
9121                'a,
9122            > as alloy_sol_types::SolType>::Token<'a>;
9123            const SIGNATURE: &'static str = "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))";
9124            const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8];
9125            #[inline]
9126            fn new<'a>(
9127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9128            ) -> Self {
9129                tuple.into()
9130            }
9131            #[inline]
9132            fn tokenize(&self) -> Self::Token<'_> {
9133                (
9134                    <alloy::sol_types::sol_data::Uint<
9135                        64,
9136                    > as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp),
9137                    <BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
9138                        &self.stateRootProof,
9139                    ),
9140                    <BeaconChainProofs::ValidatorProof as alloy_sol_types::SolType>::tokenize(
9141                        &self.proof,
9142                    ),
9143                )
9144            }
9145            #[inline]
9146            fn abi_decode_returns(
9147                data: &[u8],
9148                validate: bool,
9149            ) -> alloy_sol_types::Result<Self::Return> {
9150                <Self::ReturnTuple<
9151                    '_,
9152                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9153                    .map(Into::into)
9154            }
9155        }
9156    };
9157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9158    /**Function with signature `verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])` and selector `0x3f65cf19`.
9159```solidity
9160function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external;
9161```*/
9162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9163    #[derive(Clone)]
9164    pub struct verifyWithdrawalCredentialsCall {
9165        #[allow(missing_docs)]
9166        pub beaconTimestamp: u64,
9167        #[allow(missing_docs)]
9168        pub stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9169        #[allow(missing_docs)]
9170        pub validatorIndices: alloy::sol_types::private::Vec<
9171            alloy::sol_types::private::primitives::aliases::U40,
9172        >,
9173        #[allow(missing_docs)]
9174        pub validatorFieldsProofs: alloy::sol_types::private::Vec<
9175            alloy::sol_types::private::Bytes,
9176        >,
9177        #[allow(missing_docs)]
9178        pub validatorFields: alloy::sol_types::private::Vec<
9179            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
9180        >,
9181    }
9182    ///Container type for the return parameters of the [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function.
9183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9184    #[derive(Clone)]
9185    pub struct verifyWithdrawalCredentialsReturn {}
9186    #[allow(
9187        non_camel_case_types,
9188        non_snake_case,
9189        clippy::pub_underscore_fields,
9190        clippy::style
9191    )]
9192    const _: () = {
9193        use alloy::sol_types as alloy_sol_types;
9194        {
9195            #[doc(hidden)]
9196            type UnderlyingSolTuple<'a> = (
9197                alloy::sol_types::sol_data::Uint<64>,
9198                BeaconChainProofs::StateRootProof,
9199                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<40>>,
9200                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
9201                alloy::sol_types::sol_data::Array<
9202                    alloy::sol_types::sol_data::Array<
9203                        alloy::sol_types::sol_data::FixedBytes<32>,
9204                    >,
9205                >,
9206            );
9207            #[doc(hidden)]
9208            type UnderlyingRustTuple<'a> = (
9209                u64,
9210                <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9211                alloy::sol_types::private::Vec<
9212                    alloy::sol_types::private::primitives::aliases::U40,
9213                >,
9214                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9215                alloy::sol_types::private::Vec<
9216                    alloy::sol_types::private::Vec<
9217                        alloy::sol_types::private::FixedBytes<32>,
9218                    >,
9219                >,
9220            );
9221            #[cfg(test)]
9222            #[allow(dead_code, unreachable_patterns)]
9223            fn _type_assertion(
9224                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9225            ) {
9226                match _t {
9227                    alloy_sol_types::private::AssertTypeEq::<
9228                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9229                    >(_) => {}
9230                }
9231            }
9232            #[automatically_derived]
9233            #[doc(hidden)]
9234            impl ::core::convert::From<verifyWithdrawalCredentialsCall>
9235            for UnderlyingRustTuple<'_> {
9236                fn from(value: verifyWithdrawalCredentialsCall) -> Self {
9237                    (
9238                        value.beaconTimestamp,
9239                        value.stateRootProof,
9240                        value.validatorIndices,
9241                        value.validatorFieldsProofs,
9242                        value.validatorFields,
9243                    )
9244                }
9245            }
9246            #[automatically_derived]
9247            #[doc(hidden)]
9248            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9249            for verifyWithdrawalCredentialsCall {
9250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9251                    Self {
9252                        beaconTimestamp: tuple.0,
9253                        stateRootProof: tuple.1,
9254                        validatorIndices: tuple.2,
9255                        validatorFieldsProofs: tuple.3,
9256                        validatorFields: tuple.4,
9257                    }
9258                }
9259            }
9260        }
9261        {
9262            #[doc(hidden)]
9263            type UnderlyingSolTuple<'a> = ();
9264            #[doc(hidden)]
9265            type UnderlyingRustTuple<'a> = ();
9266            #[cfg(test)]
9267            #[allow(dead_code, unreachable_patterns)]
9268            fn _type_assertion(
9269                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9270            ) {
9271                match _t {
9272                    alloy_sol_types::private::AssertTypeEq::<
9273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9274                    >(_) => {}
9275                }
9276            }
9277            #[automatically_derived]
9278            #[doc(hidden)]
9279            impl ::core::convert::From<verifyWithdrawalCredentialsReturn>
9280            for UnderlyingRustTuple<'_> {
9281                fn from(value: verifyWithdrawalCredentialsReturn) -> Self {
9282                    ()
9283                }
9284            }
9285            #[automatically_derived]
9286            #[doc(hidden)]
9287            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9288            for verifyWithdrawalCredentialsReturn {
9289                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9290                    Self {}
9291                }
9292            }
9293        }
9294        #[automatically_derived]
9295        impl alloy_sol_types::SolCall for verifyWithdrawalCredentialsCall {
9296            type Parameters<'a> = (
9297                alloy::sol_types::sol_data::Uint<64>,
9298                BeaconChainProofs::StateRootProof,
9299                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<40>>,
9300                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
9301                alloy::sol_types::sol_data::Array<
9302                    alloy::sol_types::sol_data::Array<
9303                        alloy::sol_types::sol_data::FixedBytes<32>,
9304                    >,
9305                >,
9306            );
9307            type Token<'a> = <Self::Parameters<
9308                'a,
9309            > as alloy_sol_types::SolType>::Token<'a>;
9310            type Return = verifyWithdrawalCredentialsReturn;
9311            type ReturnTuple<'a> = ();
9312            type ReturnToken<'a> = <Self::ReturnTuple<
9313                'a,
9314            > as alloy_sol_types::SolType>::Token<'a>;
9315            const SIGNATURE: &'static str = "verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])";
9316            const SELECTOR: [u8; 4] = [63u8, 101u8, 207u8, 25u8];
9317            #[inline]
9318            fn new<'a>(
9319                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9320            ) -> Self {
9321                tuple.into()
9322            }
9323            #[inline]
9324            fn tokenize(&self) -> Self::Token<'_> {
9325                (
9326                    <alloy::sol_types::sol_data::Uint<
9327                        64,
9328                    > as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp),
9329                    <BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
9330                        &self.stateRootProof,
9331                    ),
9332                    <alloy::sol_types::sol_data::Array<
9333                        alloy::sol_types::sol_data::Uint<40>,
9334                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices),
9335                    <alloy::sol_types::sol_data::Array<
9336                        alloy::sol_types::sol_data::Bytes,
9337                    > as alloy_sol_types::SolType>::tokenize(
9338                        &self.validatorFieldsProofs,
9339                    ),
9340                    <alloy::sol_types::sol_data::Array<
9341                        alloy::sol_types::sol_data::Array<
9342                            alloy::sol_types::sol_data::FixedBytes<32>,
9343                        >,
9344                    > as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
9345                )
9346            }
9347            #[inline]
9348            fn abi_decode_returns(
9349                data: &[u8],
9350                validate: bool,
9351            ) -> alloy_sol_types::Result<Self::Return> {
9352                <Self::ReturnTuple<
9353                    '_,
9354                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9355                    .map(Into::into)
9356            }
9357        }
9358    };
9359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9360    /**Function with signature `version()` and selector `0x54fd4d50`.
9361```solidity
9362function version() external view returns (string memory);
9363```*/
9364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9365    #[derive(Clone)]
9366    pub struct versionCall {}
9367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9368    ///Container type for the return parameters of the [`version()`](versionCall) function.
9369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9370    #[derive(Clone)]
9371    pub struct versionReturn {
9372        #[allow(missing_docs)]
9373        pub _0: alloy::sol_types::private::String,
9374    }
9375    #[allow(
9376        non_camel_case_types,
9377        non_snake_case,
9378        clippy::pub_underscore_fields,
9379        clippy::style
9380    )]
9381    const _: () = {
9382        use alloy::sol_types as alloy_sol_types;
9383        {
9384            #[doc(hidden)]
9385            type UnderlyingSolTuple<'a> = ();
9386            #[doc(hidden)]
9387            type UnderlyingRustTuple<'a> = ();
9388            #[cfg(test)]
9389            #[allow(dead_code, unreachable_patterns)]
9390            fn _type_assertion(
9391                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9392            ) {
9393                match _t {
9394                    alloy_sol_types::private::AssertTypeEq::<
9395                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9396                    >(_) => {}
9397                }
9398            }
9399            #[automatically_derived]
9400            #[doc(hidden)]
9401            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
9402                fn from(value: versionCall) -> Self {
9403                    ()
9404                }
9405            }
9406            #[automatically_derived]
9407            #[doc(hidden)]
9408            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
9409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9410                    Self {}
9411                }
9412            }
9413        }
9414        {
9415            #[doc(hidden)]
9416            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
9417            #[doc(hidden)]
9418            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
9419            #[cfg(test)]
9420            #[allow(dead_code, unreachable_patterns)]
9421            fn _type_assertion(
9422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9423            ) {
9424                match _t {
9425                    alloy_sol_types::private::AssertTypeEq::<
9426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9427                    >(_) => {}
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
9433                fn from(value: versionReturn) -> Self {
9434                    (value._0,)
9435                }
9436            }
9437            #[automatically_derived]
9438            #[doc(hidden)]
9439            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
9440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9441                    Self { _0: tuple.0 }
9442                }
9443            }
9444        }
9445        #[automatically_derived]
9446        impl alloy_sol_types::SolCall for versionCall {
9447            type Parameters<'a> = ();
9448            type Token<'a> = <Self::Parameters<
9449                'a,
9450            > as alloy_sol_types::SolType>::Token<'a>;
9451            type Return = versionReturn;
9452            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
9453            type ReturnToken<'a> = <Self::ReturnTuple<
9454                'a,
9455            > as alloy_sol_types::SolType>::Token<'a>;
9456            const SIGNATURE: &'static str = "version()";
9457            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
9458            #[inline]
9459            fn new<'a>(
9460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9461            ) -> Self {
9462                tuple.into()
9463            }
9464            #[inline]
9465            fn tokenize(&self) -> Self::Token<'_> {
9466                ()
9467            }
9468            #[inline]
9469            fn abi_decode_returns(
9470                data: &[u8],
9471                validate: bool,
9472            ) -> alloy_sol_types::Result<Self::Return> {
9473                <Self::ReturnTuple<
9474                    '_,
9475                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9476                    .map(Into::into)
9477            }
9478        }
9479    };
9480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9481    /**Function with signature `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`.
9482```solidity
9483function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external;
9484```*/
9485    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9486    #[derive(Clone)]
9487    pub struct withdrawRestakedBeaconChainETHCall {
9488        #[allow(missing_docs)]
9489        pub recipient: alloy::sol_types::private::Address,
9490        #[allow(missing_docs)]
9491        pub amountWei: alloy::sol_types::private::primitives::aliases::U256,
9492    }
9493    ///Container type for the return parameters of the [`withdrawRestakedBeaconChainETH(address,uint256)`](withdrawRestakedBeaconChainETHCall) function.
9494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9495    #[derive(Clone)]
9496    pub struct withdrawRestakedBeaconChainETHReturn {}
9497    #[allow(
9498        non_camel_case_types,
9499        non_snake_case,
9500        clippy::pub_underscore_fields,
9501        clippy::style
9502    )]
9503    const _: () = {
9504        use alloy::sol_types as alloy_sol_types;
9505        {
9506            #[doc(hidden)]
9507            type UnderlyingSolTuple<'a> = (
9508                alloy::sol_types::sol_data::Address,
9509                alloy::sol_types::sol_data::Uint<256>,
9510            );
9511            #[doc(hidden)]
9512            type UnderlyingRustTuple<'a> = (
9513                alloy::sol_types::private::Address,
9514                alloy::sol_types::private::primitives::aliases::U256,
9515            );
9516            #[cfg(test)]
9517            #[allow(dead_code, unreachable_patterns)]
9518            fn _type_assertion(
9519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9520            ) {
9521                match _t {
9522                    alloy_sol_types::private::AssertTypeEq::<
9523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9524                    >(_) => {}
9525                }
9526            }
9527            #[automatically_derived]
9528            #[doc(hidden)]
9529            impl ::core::convert::From<withdrawRestakedBeaconChainETHCall>
9530            for UnderlyingRustTuple<'_> {
9531                fn from(value: withdrawRestakedBeaconChainETHCall) -> Self {
9532                    (value.recipient, value.amountWei)
9533                }
9534            }
9535            #[automatically_derived]
9536            #[doc(hidden)]
9537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9538            for withdrawRestakedBeaconChainETHCall {
9539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9540                    Self {
9541                        recipient: tuple.0,
9542                        amountWei: tuple.1,
9543                    }
9544                }
9545            }
9546        }
9547        {
9548            #[doc(hidden)]
9549            type UnderlyingSolTuple<'a> = ();
9550            #[doc(hidden)]
9551            type UnderlyingRustTuple<'a> = ();
9552            #[cfg(test)]
9553            #[allow(dead_code, unreachable_patterns)]
9554            fn _type_assertion(
9555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9556            ) {
9557                match _t {
9558                    alloy_sol_types::private::AssertTypeEq::<
9559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9560                    >(_) => {}
9561                }
9562            }
9563            #[automatically_derived]
9564            #[doc(hidden)]
9565            impl ::core::convert::From<withdrawRestakedBeaconChainETHReturn>
9566            for UnderlyingRustTuple<'_> {
9567                fn from(value: withdrawRestakedBeaconChainETHReturn) -> Self {
9568                    ()
9569                }
9570            }
9571            #[automatically_derived]
9572            #[doc(hidden)]
9573            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9574            for withdrawRestakedBeaconChainETHReturn {
9575                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9576                    Self {}
9577                }
9578            }
9579        }
9580        #[automatically_derived]
9581        impl alloy_sol_types::SolCall for withdrawRestakedBeaconChainETHCall {
9582            type Parameters<'a> = (
9583                alloy::sol_types::sol_data::Address,
9584                alloy::sol_types::sol_data::Uint<256>,
9585            );
9586            type Token<'a> = <Self::Parameters<
9587                'a,
9588            > as alloy_sol_types::SolType>::Token<'a>;
9589            type Return = withdrawRestakedBeaconChainETHReturn;
9590            type ReturnTuple<'a> = ();
9591            type ReturnToken<'a> = <Self::ReturnTuple<
9592                'a,
9593            > as alloy_sol_types::SolType>::Token<'a>;
9594            const SIGNATURE: &'static str = "withdrawRestakedBeaconChainETH(address,uint256)";
9595            const SELECTOR: [u8; 4] = [196u8, 144u8, 116u8, 66u8];
9596            #[inline]
9597            fn new<'a>(
9598                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9599            ) -> Self {
9600                tuple.into()
9601            }
9602            #[inline]
9603            fn tokenize(&self) -> Self::Token<'_> {
9604                (
9605                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9606                        &self.recipient,
9607                    ),
9608                    <alloy::sol_types::sol_data::Uint<
9609                        256,
9610                    > as alloy_sol_types::SolType>::tokenize(&self.amountWei),
9611                )
9612            }
9613            #[inline]
9614            fn abi_decode_returns(
9615                data: &[u8],
9616                validate: bool,
9617            ) -> alloy_sol_types::Result<Self::Return> {
9618                <Self::ReturnTuple<
9619                    '_,
9620                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9621                    .map(Into::into)
9622            }
9623        }
9624    };
9625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9626    /**Function with signature `withdrawableRestakedExecutionLayerGwei()` and selector `0x3474aa16`.
9627```solidity
9628function withdrawableRestakedExecutionLayerGwei() external view returns (uint64);
9629```*/
9630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9631    #[derive(Clone)]
9632    pub struct withdrawableRestakedExecutionLayerGweiCall {}
9633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9634    ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function.
9635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9636    #[derive(Clone)]
9637    pub struct withdrawableRestakedExecutionLayerGweiReturn {
9638        #[allow(missing_docs)]
9639        pub _0: u64,
9640    }
9641    #[allow(
9642        non_camel_case_types,
9643        non_snake_case,
9644        clippy::pub_underscore_fields,
9645        clippy::style
9646    )]
9647    const _: () = {
9648        use alloy::sol_types as alloy_sol_types;
9649        {
9650            #[doc(hidden)]
9651            type UnderlyingSolTuple<'a> = ();
9652            #[doc(hidden)]
9653            type UnderlyingRustTuple<'a> = ();
9654            #[cfg(test)]
9655            #[allow(dead_code, unreachable_patterns)]
9656            fn _type_assertion(
9657                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9658            ) {
9659                match _t {
9660                    alloy_sol_types::private::AssertTypeEq::<
9661                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9662                    >(_) => {}
9663                }
9664            }
9665            #[automatically_derived]
9666            #[doc(hidden)]
9667            impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiCall>
9668            for UnderlyingRustTuple<'_> {
9669                fn from(value: withdrawableRestakedExecutionLayerGweiCall) -> Self {
9670                    ()
9671                }
9672            }
9673            #[automatically_derived]
9674            #[doc(hidden)]
9675            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9676            for withdrawableRestakedExecutionLayerGweiCall {
9677                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9678                    Self {}
9679                }
9680            }
9681        }
9682        {
9683            #[doc(hidden)]
9684            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9685            #[doc(hidden)]
9686            type UnderlyingRustTuple<'a> = (u64,);
9687            #[cfg(test)]
9688            #[allow(dead_code, unreachable_patterns)]
9689            fn _type_assertion(
9690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9691            ) {
9692                match _t {
9693                    alloy_sol_types::private::AssertTypeEq::<
9694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9695                    >(_) => {}
9696                }
9697            }
9698            #[automatically_derived]
9699            #[doc(hidden)]
9700            impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiReturn>
9701            for UnderlyingRustTuple<'_> {
9702                fn from(value: withdrawableRestakedExecutionLayerGweiReturn) -> Self {
9703                    (value._0,)
9704                }
9705            }
9706            #[automatically_derived]
9707            #[doc(hidden)]
9708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9709            for withdrawableRestakedExecutionLayerGweiReturn {
9710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9711                    Self { _0: tuple.0 }
9712                }
9713            }
9714        }
9715        #[automatically_derived]
9716        impl alloy_sol_types::SolCall for withdrawableRestakedExecutionLayerGweiCall {
9717            type Parameters<'a> = ();
9718            type Token<'a> = <Self::Parameters<
9719                'a,
9720            > as alloy_sol_types::SolType>::Token<'a>;
9721            type Return = withdrawableRestakedExecutionLayerGweiReturn;
9722            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9723            type ReturnToken<'a> = <Self::ReturnTuple<
9724                'a,
9725            > as alloy_sol_types::SolType>::Token<'a>;
9726            const SIGNATURE: &'static str = "withdrawableRestakedExecutionLayerGwei()";
9727            const SELECTOR: [u8; 4] = [52u8, 116u8, 170u8, 22u8];
9728            #[inline]
9729            fn new<'a>(
9730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9731            ) -> Self {
9732                tuple.into()
9733            }
9734            #[inline]
9735            fn tokenize(&self) -> Self::Token<'_> {
9736                ()
9737            }
9738            #[inline]
9739            fn abi_decode_returns(
9740                data: &[u8],
9741                validate: bool,
9742            ) -> alloy_sol_types::Result<Self::Return> {
9743                <Self::ReturnTuple<
9744                    '_,
9745                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9746                    .map(Into::into)
9747            }
9748        }
9749    };
9750    ///Container for all the [`EigenPod`](self) function calls.
9751    #[derive()]
9752    pub enum EigenPodCalls {
9753        #[allow(missing_docs)]
9754        GENESIS_TIME(GENESIS_TIMECall),
9755        #[allow(missing_docs)]
9756        activeValidatorCount(activeValidatorCountCall),
9757        #[allow(missing_docs)]
9758        checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall),
9759        #[allow(missing_docs)]
9760        currentCheckpoint(currentCheckpointCall),
9761        #[allow(missing_docs)]
9762        currentCheckpointTimestamp(currentCheckpointTimestampCall),
9763        #[allow(missing_docs)]
9764        eigenPodManager(eigenPodManagerCall),
9765        #[allow(missing_docs)]
9766        ethPOS(ethPOSCall),
9767        #[allow(missing_docs)]
9768        getParentBlockRoot(getParentBlockRootCall),
9769        #[allow(missing_docs)]
9770        initialize(initializeCall),
9771        #[allow(missing_docs)]
9772        lastCheckpointTimestamp(lastCheckpointTimestampCall),
9773        #[allow(missing_docs)]
9774        podOwner(podOwnerCall),
9775        #[allow(missing_docs)]
9776        proofSubmitter(proofSubmitterCall),
9777        #[allow(missing_docs)]
9778        recoverTokens(recoverTokensCall),
9779        #[allow(missing_docs)]
9780        setProofSubmitter(setProofSubmitterCall),
9781        #[allow(missing_docs)]
9782        stake(stakeCall),
9783        #[allow(missing_docs)]
9784        startCheckpoint(startCheckpointCall),
9785        #[allow(missing_docs)]
9786        validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall),
9787        #[allow(missing_docs)]
9788        validatorPubkeyToInfo(validatorPubkeyToInfoCall),
9789        #[allow(missing_docs)]
9790        validatorStatus_0(validatorStatus_0Call),
9791        #[allow(missing_docs)]
9792        validatorStatus_1(validatorStatus_1Call),
9793        #[allow(missing_docs)]
9794        verifyCheckpointProofs(verifyCheckpointProofsCall),
9795        #[allow(missing_docs)]
9796        verifyStaleBalance(verifyStaleBalanceCall),
9797        #[allow(missing_docs)]
9798        verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall),
9799        #[allow(missing_docs)]
9800        version(versionCall),
9801        #[allow(missing_docs)]
9802        withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall),
9803        #[allow(missing_docs)]
9804        withdrawableRestakedExecutionLayerGwei(
9805            withdrawableRestakedExecutionLayerGweiCall,
9806        ),
9807    }
9808    #[automatically_derived]
9809    impl EigenPodCalls {
9810        /// All the selectors of this enum.
9811        ///
9812        /// Note that the selectors might not be in the same order as the variants.
9813        /// No guarantees are made about the order of the selectors.
9814        ///
9815        /// Prefer using `SolInterface` methods instead.
9816        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9817            [3u8, 145u8, 87u8, 210u8],
9818            [11u8, 24u8, 255u8, 102u8],
9819            [35u8, 64u8, 232u8, 211u8],
9820            [52u8, 116u8, 170u8, 22u8],
9821            [63u8, 101u8, 207u8, 25u8],
9822            [66u8, 236u8, 255u8, 42u8],
9823            [70u8, 101u8, 188u8, 218u8],
9824            [71u8, 210u8, 131u8, 114u8],
9825            [82u8, 57u8, 106u8, 89u8],
9826            [84u8, 253u8, 77u8, 80u8],
9827            [88u8, 117u8, 51u8, 87u8],
9828            [88u8, 234u8, 238u8, 121u8],
9829            [108u8, 13u8, 45u8, 90u8],
9830            [111u8, 205u8, 14u8, 83u8],
9831            [116u8, 57u8, 132u8, 31u8],
9832            [116u8, 205u8, 215u8, 152u8],
9833            [136u8, 103u8, 108u8, 173u8],
9834            [155u8, 78u8, 70u8, 52u8],
9835            [181u8, 34u8, 83u8, 138u8],
9836            [196u8, 144u8, 116u8, 66u8],
9837            [196u8, 214u8, 109u8, 232u8],
9838            [208u8, 109u8, 85u8, 135u8],
9839            [221u8, 163u8, 52u8, 108u8],
9840            [238u8, 148u8, 214u8, 124u8],
9841            [240u8, 116u8, 186u8, 98u8],
9842            [242u8, 136u8, 36u8, 97u8],
9843        ];
9844    }
9845    #[automatically_derived]
9846    impl alloy_sol_types::SolInterface for EigenPodCalls {
9847        const NAME: &'static str = "EigenPodCalls";
9848        const MIN_DATA_LENGTH: usize = 0usize;
9849        const COUNT: usize = 26usize;
9850        #[inline]
9851        fn selector(&self) -> [u8; 4] {
9852            match self {
9853                Self::GENESIS_TIME(_) => {
9854                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::SELECTOR
9855                }
9856                Self::activeValidatorCount(_) => {
9857                    <activeValidatorCountCall as alloy_sol_types::SolCall>::SELECTOR
9858                }
9859                Self::checkpointBalanceExitedGwei(_) => {
9860                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::SELECTOR
9861                }
9862                Self::currentCheckpoint(_) => {
9863                    <currentCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
9864                }
9865                Self::currentCheckpointTimestamp(_) => {
9866                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
9867                }
9868                Self::eigenPodManager(_) => {
9869                    <eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
9870                }
9871                Self::ethPOS(_) => <ethPOSCall as alloy_sol_types::SolCall>::SELECTOR,
9872                Self::getParentBlockRoot(_) => {
9873                    <getParentBlockRootCall as alloy_sol_types::SolCall>::SELECTOR
9874                }
9875                Self::initialize(_) => {
9876                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9877                }
9878                Self::lastCheckpointTimestamp(_) => {
9879                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
9880                }
9881                Self::podOwner(_) => <podOwnerCall as alloy_sol_types::SolCall>::SELECTOR,
9882                Self::proofSubmitter(_) => {
9883                    <proofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
9884                }
9885                Self::recoverTokens(_) => {
9886                    <recoverTokensCall as alloy_sol_types::SolCall>::SELECTOR
9887                }
9888                Self::setProofSubmitter(_) => {
9889                    <setProofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
9890                }
9891                Self::stake(_) => <stakeCall as alloy_sol_types::SolCall>::SELECTOR,
9892                Self::startCheckpoint(_) => {
9893                    <startCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
9894                }
9895                Self::validatorPubkeyHashToInfo(_) => {
9896                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::SELECTOR
9897                }
9898                Self::validatorPubkeyToInfo(_) => {
9899                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::SELECTOR
9900                }
9901                Self::validatorStatus_0(_) => {
9902                    <validatorStatus_0Call as alloy_sol_types::SolCall>::SELECTOR
9903                }
9904                Self::validatorStatus_1(_) => {
9905                    <validatorStatus_1Call as alloy_sol_types::SolCall>::SELECTOR
9906                }
9907                Self::verifyCheckpointProofs(_) => {
9908                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::SELECTOR
9909                }
9910                Self::verifyStaleBalance(_) => {
9911                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::SELECTOR
9912                }
9913                Self::verifyWithdrawalCredentials(_) => {
9914                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::SELECTOR
9915                }
9916                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
9917                Self::withdrawRestakedBeaconChainETH(_) => {
9918                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::SELECTOR
9919                }
9920                Self::withdrawableRestakedExecutionLayerGwei(_) => {
9921                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::SELECTOR
9922                }
9923            }
9924        }
9925        #[inline]
9926        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9927            Self::SELECTORS.get(i).copied()
9928        }
9929        #[inline]
9930        fn valid_selector(selector: [u8; 4]) -> bool {
9931            Self::SELECTORS.binary_search(&selector).is_ok()
9932        }
9933        #[inline]
9934        #[allow(non_snake_case)]
9935        fn abi_decode_raw(
9936            selector: [u8; 4],
9937            data: &[u8],
9938            validate: bool,
9939        ) -> alloy_sol_types::Result<Self> {
9940            static DECODE_SHIMS: &[fn(
9941                &[u8],
9942                bool,
9943            ) -> alloy_sol_types::Result<EigenPodCalls>] = &[
9944                {
9945                    fn verifyStaleBalance(
9946                        data: &[u8],
9947                        validate: bool,
9948                    ) -> alloy_sol_types::Result<EigenPodCalls> {
9949                        <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_decode_raw(
9950                                data,
9951                                validate,
9952                            )
9953                            .map(EigenPodCalls::verifyStaleBalance)
9954                    }
9955                    verifyStaleBalance
9956                },
9957                {
9958                    fn podOwner(
9959                        data: &[u8],
9960                        validate: bool,
9961                    ) -> alloy_sol_types::Result<EigenPodCalls> {
9962                        <podOwnerCall as alloy_sol_types::SolCall>::abi_decode_raw(
9963                                data,
9964                                validate,
9965                            )
9966                            .map(EigenPodCalls::podOwner)
9967                    }
9968                    podOwner
9969                },
9970                {
9971                    fn activeValidatorCount(
9972                        data: &[u8],
9973                        validate: bool,
9974                    ) -> alloy_sol_types::Result<EigenPodCalls> {
9975                        <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
9976                                data,
9977                                validate,
9978                            )
9979                            .map(EigenPodCalls::activeValidatorCount)
9980                    }
9981                    activeValidatorCount
9982                },
9983                {
9984                    fn withdrawableRestakedExecutionLayerGwei(
9985                        data: &[u8],
9986                        validate: bool,
9987                    ) -> alloy_sol_types::Result<EigenPodCalls> {
9988                        <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
9989                                data,
9990                                validate,
9991                            )
9992                            .map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei)
9993                    }
9994                    withdrawableRestakedExecutionLayerGwei
9995                },
9996                {
9997                    fn verifyWithdrawalCredentials(
9998                        data: &[u8],
9999                        validate: bool,
10000                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10001                        <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10002                                data,
10003                                validate,
10004                            )
10005                            .map(EigenPodCalls::verifyWithdrawalCredentials)
10006                    }
10007                    verifyWithdrawalCredentials
10008                },
10009                {
10010                    fn currentCheckpointTimestamp(
10011                        data: &[u8],
10012                        validate: bool,
10013                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10014                        <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
10015                                data,
10016                                validate,
10017                            )
10018                            .map(EigenPodCalls::currentCheckpointTimestamp)
10019                    }
10020                    currentCheckpointTimestamp
10021                },
10022                {
10023                    fn eigenPodManager(
10024                        data: &[u8],
10025                        validate: bool,
10026                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10027                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
10028                                data,
10029                                validate,
10030                            )
10031                            .map(EigenPodCalls::eigenPodManager)
10032                    }
10033                    eigenPodManager
10034                },
10035                {
10036                    fn currentCheckpoint(
10037                        data: &[u8],
10038                        validate: bool,
10039                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10040                        <currentCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(
10041                                data,
10042                                validate,
10043                            )
10044                            .map(EigenPodCalls::currentCheckpoint)
10045                    }
10046                    currentCheckpoint
10047                },
10048                {
10049                    fn checkpointBalanceExitedGwei(
10050                        data: &[u8],
10051                        validate: bool,
10052                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10053                        <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
10054                                data,
10055                                validate,
10056                            )
10057                            .map(EigenPodCalls::checkpointBalanceExitedGwei)
10058                    }
10059                    checkpointBalanceExitedGwei
10060                },
10061                {
10062                    fn version(
10063                        data: &[u8],
10064                        validate: bool,
10065                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10066                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10067                                data,
10068                                validate,
10069                            )
10070                            .map(EigenPodCalls::version)
10071                    }
10072                    version
10073                },
10074                {
10075                    fn proofSubmitter(
10076                        data: &[u8],
10077                        validate: bool,
10078                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10079                        <proofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(
10080                                data,
10081                                validate,
10082                            )
10083                            .map(EigenPodCalls::proofSubmitter)
10084                    }
10085                    proofSubmitter
10086                },
10087                {
10088                    fn validatorStatus_0(
10089                        data: &[u8],
10090                        validate: bool,
10091                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10092                        <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
10093                                data,
10094                                validate,
10095                            )
10096                            .map(EigenPodCalls::validatorStatus_0)
10097                    }
10098                    validatorStatus_0
10099                },
10100                {
10101                    fn getParentBlockRoot(
10102                        data: &[u8],
10103                        validate: bool,
10104                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10105                        <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
10106                                data,
10107                                validate,
10108                            )
10109                            .map(EigenPodCalls::getParentBlockRoot)
10110                    }
10111                    getParentBlockRoot
10112                },
10113                {
10114                    fn validatorPubkeyHashToInfo(
10115                        data: &[u8],
10116                        validate: bool,
10117                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10118                        <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
10119                                data,
10120                                validate,
10121                            )
10122                            .map(EigenPodCalls::validatorPubkeyHashToInfo)
10123                    }
10124                    validatorPubkeyHashToInfo
10125                },
10126                {
10127                    fn validatorStatus_1(
10128                        data: &[u8],
10129                        validate: bool,
10130                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10131                        <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
10132                                data,
10133                                validate,
10134                            )
10135                            .map(EigenPodCalls::validatorStatus_1)
10136                    }
10137                    validatorStatus_1
10138                },
10139                {
10140                    fn ethPOS(
10141                        data: &[u8],
10142                        validate: bool,
10143                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10144                        <ethPOSCall as alloy_sol_types::SolCall>::abi_decode_raw(
10145                                data,
10146                                validate,
10147                            )
10148                            .map(EigenPodCalls::ethPOS)
10149                    }
10150                    ethPOS
10151                },
10152                {
10153                    fn startCheckpoint(
10154                        data: &[u8],
10155                        validate: bool,
10156                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10157                        <startCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(
10158                                data,
10159                                validate,
10160                            )
10161                            .map(EigenPodCalls::startCheckpoint)
10162                    }
10163                    startCheckpoint
10164                },
10165                {
10166                    fn stake(
10167                        data: &[u8],
10168                        validate: bool,
10169                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10170                        <stakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10171                                data,
10172                                validate,
10173                            )
10174                            .map(EigenPodCalls::stake)
10175                    }
10176                    stake
10177                },
10178                {
10179                    fn validatorPubkeyToInfo(
10180                        data: &[u8],
10181                        validate: bool,
10182                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10183                        <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
10184                                data,
10185                                validate,
10186                            )
10187                            .map(EigenPodCalls::validatorPubkeyToInfo)
10188                    }
10189                    validatorPubkeyToInfo
10190                },
10191                {
10192                    fn withdrawRestakedBeaconChainETH(
10193                        data: &[u8],
10194                        validate: bool,
10195                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10196                        <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_decode_raw(
10197                                data,
10198                                validate,
10199                            )
10200                            .map(EigenPodCalls::withdrawRestakedBeaconChainETH)
10201                    }
10202                    withdrawRestakedBeaconChainETH
10203                },
10204                {
10205                    fn initialize(
10206                        data: &[u8],
10207                        validate: bool,
10208                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10209                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10210                                data,
10211                                validate,
10212                            )
10213                            .map(EigenPodCalls::initialize)
10214                    }
10215                    initialize
10216                },
10217                {
10218                    fn setProofSubmitter(
10219                        data: &[u8],
10220                        validate: bool,
10221                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10222                        <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(
10223                                data,
10224                                validate,
10225                            )
10226                            .map(EigenPodCalls::setProofSubmitter)
10227                    }
10228                    setProofSubmitter
10229                },
10230                {
10231                    fn recoverTokens(
10232                        data: &[u8],
10233                        validate: bool,
10234                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10235                        <recoverTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(
10236                                data,
10237                                validate,
10238                            )
10239                            .map(EigenPodCalls::recoverTokens)
10240                    }
10241                    recoverTokens
10242                },
10243                {
10244                    fn lastCheckpointTimestamp(
10245                        data: &[u8],
10246                        validate: bool,
10247                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10248                        <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
10249                                data,
10250                                validate,
10251                            )
10252                            .map(EigenPodCalls::lastCheckpointTimestamp)
10253                    }
10254                    lastCheckpointTimestamp
10255                },
10256                {
10257                    fn verifyCheckpointProofs(
10258                        data: &[u8],
10259                        validate: bool,
10260                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10261                        <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10262                                data,
10263                                validate,
10264                            )
10265                            .map(EigenPodCalls::verifyCheckpointProofs)
10266                    }
10267                    verifyCheckpointProofs
10268                },
10269                {
10270                    fn GENESIS_TIME(
10271                        data: &[u8],
10272                        validate: bool,
10273                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10274                        <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_decode_raw(
10275                                data,
10276                                validate,
10277                            )
10278                            .map(EigenPodCalls::GENESIS_TIME)
10279                    }
10280                    GENESIS_TIME
10281                },
10282            ];
10283            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10284                return Err(
10285                    alloy_sol_types::Error::unknown_selector(
10286                        <Self as alloy_sol_types::SolInterface>::NAME,
10287                        selector,
10288                    ),
10289                );
10290            };
10291            DECODE_SHIMS[idx](data, validate)
10292        }
10293        #[inline]
10294        fn abi_encoded_size(&self) -> usize {
10295            match self {
10296                Self::GENESIS_TIME(inner) => {
10297                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encoded_size(
10298                        inner,
10299                    )
10300                }
10301                Self::activeValidatorCount(inner) => {
10302                    <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
10303                        inner,
10304                    )
10305                }
10306                Self::checkpointBalanceExitedGwei(inner) => {
10307                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
10308                        inner,
10309                    )
10310                }
10311                Self::currentCheckpoint(inner) => {
10312                    <currentCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
10313                        inner,
10314                    )
10315                }
10316                Self::currentCheckpointTimestamp(inner) => {
10317                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
10318                        inner,
10319                    )
10320                }
10321                Self::eigenPodManager(inner) => {
10322                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
10323                        inner,
10324                    )
10325                }
10326                Self::ethPOS(inner) => {
10327                    <ethPOSCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10328                }
10329                Self::getParentBlockRoot(inner) => {
10330                    <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
10331                        inner,
10332                    )
10333                }
10334                Self::initialize(inner) => {
10335                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10336                }
10337                Self::lastCheckpointTimestamp(inner) => {
10338                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
10339                        inner,
10340                    )
10341                }
10342                Self::podOwner(inner) => {
10343                    <podOwnerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10344                }
10345                Self::proofSubmitter(inner) => {
10346                    <proofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
10347                        inner,
10348                    )
10349                }
10350                Self::recoverTokens(inner) => {
10351                    <recoverTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
10352                        inner,
10353                    )
10354                }
10355                Self::setProofSubmitter(inner) => {
10356                    <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
10357                        inner,
10358                    )
10359                }
10360                Self::stake(inner) => {
10361                    <stakeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10362                }
10363                Self::startCheckpoint(inner) => {
10364                    <startCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
10365                        inner,
10366                    )
10367                }
10368                Self::validatorPubkeyHashToInfo(inner) => {
10369                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
10370                        inner,
10371                    )
10372                }
10373                Self::validatorPubkeyToInfo(inner) => {
10374                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
10375                        inner,
10376                    )
10377                }
10378                Self::validatorStatus_0(inner) => {
10379                    <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
10380                        inner,
10381                    )
10382                }
10383                Self::validatorStatus_1(inner) => {
10384                    <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
10385                        inner,
10386                    )
10387                }
10388                Self::verifyCheckpointProofs(inner) => {
10389                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10390                        inner,
10391                    )
10392                }
10393                Self::verifyStaleBalance(inner) => {
10394                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encoded_size(
10395                        inner,
10396                    )
10397                }
10398                Self::verifyWithdrawalCredentials(inner) => {
10399                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10400                        inner,
10401                    )
10402                }
10403                Self::version(inner) => {
10404                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10405                }
10406                Self::withdrawRestakedBeaconChainETH(inner) => {
10407                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encoded_size(
10408                        inner,
10409                    )
10410                }
10411                Self::withdrawableRestakedExecutionLayerGwei(inner) => {
10412                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
10413                        inner,
10414                    )
10415                }
10416            }
10417        }
10418        #[inline]
10419        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10420            match self {
10421                Self::GENESIS_TIME(inner) => {
10422                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encode_raw(
10423                        inner,
10424                        out,
10425                    )
10426                }
10427                Self::activeValidatorCount(inner) => {
10428                    <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
10429                        inner,
10430                        out,
10431                    )
10432                }
10433                Self::checkpointBalanceExitedGwei(inner) => {
10434                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
10435                        inner,
10436                        out,
10437                    )
10438                }
10439                Self::currentCheckpoint(inner) => {
10440                    <currentCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
10441                        inner,
10442                        out,
10443                    )
10444                }
10445                Self::currentCheckpointTimestamp(inner) => {
10446                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
10447                        inner,
10448                        out,
10449                    )
10450                }
10451                Self::eigenPodManager(inner) => {
10452                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
10453                        inner,
10454                        out,
10455                    )
10456                }
10457                Self::ethPOS(inner) => {
10458                    <ethPOSCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10459                }
10460                Self::getParentBlockRoot(inner) => {
10461                    <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
10462                        inner,
10463                        out,
10464                    )
10465                }
10466                Self::initialize(inner) => {
10467                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10468                        inner,
10469                        out,
10470                    )
10471                }
10472                Self::lastCheckpointTimestamp(inner) => {
10473                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
10474                        inner,
10475                        out,
10476                    )
10477                }
10478                Self::podOwner(inner) => {
10479                    <podOwnerCall as alloy_sol_types::SolCall>::abi_encode_raw(
10480                        inner,
10481                        out,
10482                    )
10483                }
10484                Self::proofSubmitter(inner) => {
10485                    <proofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
10486                        inner,
10487                        out,
10488                    )
10489                }
10490                Self::recoverTokens(inner) => {
10491                    <recoverTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
10492                        inner,
10493                        out,
10494                    )
10495                }
10496                Self::setProofSubmitter(inner) => {
10497                    <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
10498                        inner,
10499                        out,
10500                    )
10501                }
10502                Self::stake(inner) => {
10503                    <stakeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10504                }
10505                Self::startCheckpoint(inner) => {
10506                    <startCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
10507                        inner,
10508                        out,
10509                    )
10510                }
10511                Self::validatorPubkeyHashToInfo(inner) => {
10512                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
10513                        inner,
10514                        out,
10515                    )
10516                }
10517                Self::validatorPubkeyToInfo(inner) => {
10518                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
10519                        inner,
10520                        out,
10521                    )
10522                }
10523                Self::validatorStatus_0(inner) => {
10524                    <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
10525                        inner,
10526                        out,
10527                    )
10528                }
10529                Self::validatorStatus_1(inner) => {
10530                    <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
10531                        inner,
10532                        out,
10533                    )
10534                }
10535                Self::verifyCheckpointProofs(inner) => {
10536                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10537                        inner,
10538                        out,
10539                    )
10540                }
10541                Self::verifyStaleBalance(inner) => {
10542                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encode_raw(
10543                        inner,
10544                        out,
10545                    )
10546                }
10547                Self::verifyWithdrawalCredentials(inner) => {
10548                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10549                        inner,
10550                        out,
10551                    )
10552                }
10553                Self::version(inner) => {
10554                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10555                }
10556                Self::withdrawRestakedBeaconChainETH(inner) => {
10557                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encode_raw(
10558                        inner,
10559                        out,
10560                    )
10561                }
10562                Self::withdrawableRestakedExecutionLayerGwei(inner) => {
10563                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
10564                        inner,
10565                        out,
10566                    )
10567                }
10568            }
10569        }
10570    }
10571    ///Container for all the [`EigenPod`](self) custom errors.
10572    #[derive(Debug, PartialEq, Eq, Hash)]
10573    pub enum EigenPodErrors {
10574        #[allow(missing_docs)]
10575        BeaconTimestampTooFarInPast(BeaconTimestampTooFarInPast),
10576        #[allow(missing_docs)]
10577        CannotCheckpointTwiceInSingleBlock(CannotCheckpointTwiceInSingleBlock),
10578        #[allow(missing_docs)]
10579        CheckpointAlreadyActive(CheckpointAlreadyActive),
10580        #[allow(missing_docs)]
10581        CredentialsAlreadyVerified(CredentialsAlreadyVerified),
10582        #[allow(missing_docs)]
10583        CurrentlyPaused(CurrentlyPaused),
10584        #[allow(missing_docs)]
10585        ForkTimestampZero(ForkTimestampZero),
10586        #[allow(missing_docs)]
10587        InputAddressZero(InputAddressZero),
10588        #[allow(missing_docs)]
10589        InputArrayLengthMismatch(InputArrayLengthMismatch),
10590        #[allow(missing_docs)]
10591        InsufficientWithdrawableBalance(InsufficientWithdrawableBalance),
10592        #[allow(missing_docs)]
10593        InvalidEIP4788Response(InvalidEIP4788Response),
10594        #[allow(missing_docs)]
10595        InvalidProof(InvalidProof),
10596        #[allow(missing_docs)]
10597        InvalidProofLength(InvalidProofLength),
10598        #[allow(missing_docs)]
10599        InvalidPubKeyLength(InvalidPubKeyLength),
10600        #[allow(missing_docs)]
10601        InvalidShortString(InvalidShortString),
10602        #[allow(missing_docs)]
10603        InvalidValidatorFieldsLength(InvalidValidatorFieldsLength),
10604        #[allow(missing_docs)]
10605        MsgValueNot32ETH(MsgValueNot32ETH),
10606        #[allow(missing_docs)]
10607        NoActiveCheckpoint(NoActiveCheckpoint),
10608        #[allow(missing_docs)]
10609        NoBalanceToCheckpoint(NoBalanceToCheckpoint),
10610        #[allow(missing_docs)]
10611        OnlyEigenPodManager(OnlyEigenPodManager),
10612        #[allow(missing_docs)]
10613        OnlyEigenPodOwner(OnlyEigenPodOwner),
10614        #[allow(missing_docs)]
10615        OnlyEigenPodOwnerOrProofSubmitter(OnlyEigenPodOwnerOrProofSubmitter),
10616        #[allow(missing_docs)]
10617        StringTooLong(StringTooLong),
10618        #[allow(missing_docs)]
10619        TimestampOutOfRange(TimestampOutOfRange),
10620        #[allow(missing_docs)]
10621        ValidatorInactiveOnBeaconChain(ValidatorInactiveOnBeaconChain),
10622        #[allow(missing_docs)]
10623        ValidatorIsExitingBeaconChain(ValidatorIsExitingBeaconChain),
10624        #[allow(missing_docs)]
10625        ValidatorNotActiveInPod(ValidatorNotActiveInPod),
10626        #[allow(missing_docs)]
10627        ValidatorNotSlashedOnBeaconChain(ValidatorNotSlashedOnBeaconChain),
10628        #[allow(missing_docs)]
10629        WithdrawalCredentialsNotForEigenPod(WithdrawalCredentialsNotForEigenPod),
10630    }
10631    #[automatically_derived]
10632    impl EigenPodErrors {
10633        /// All the selectors of this enum.
10634        ///
10635        /// Note that the selectors might not be in the same order as the variants.
10636        /// No guarantees are made about the order of the selectors.
10637        ///
10638        /// Prefer using `SolInterface` methods instead.
10639        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10640            [9u8, 189u8, 227u8, 57u8],
10641            [11u8, 27u8, 213u8, 28u8],
10642            [26u8, 84u8, 79u8, 73u8],
10643            [32u8, 5u8, 145u8, 189u8],
10644            [36u8, 180u8, 181u8, 152u8],
10645            [46u8, 173u8, 230u8, 55u8],
10646            [48u8, 90u8, 39u8, 169u8],
10647            [53u8, 224u8, 158u8, 157u8],
10648            [55u8, 224u8, 127u8, 253u8],
10649            [65u8, 160u8, 44u8, 201u8],
10650            [66u8, 122u8, 119u8, 121u8],
10651            [67u8, 113u8, 74u8, 253u8],
10652            [77u8, 197u8, 246u8, 164u8],
10653            [85u8, 138u8, 208u8, 163u8],
10654            [101u8, 96u8, 141u8, 180u8],
10655            [103u8, 219u8, 91u8, 139u8],
10656            [110u8, 229u8, 186u8, 166u8],
10657            [115u8, 99u8, 33u8, 118u8],
10658            [132u8, 10u8, 72u8, 213u8],
10659            [159u8, 16u8, 100u8, 114u8],
10660            [176u8, 231u8, 47u8, 104u8],
10661            [179u8, 81u8, 43u8, 12u8],
10662            [190u8, 155u8, 195u8, 0u8],
10663            [200u8, 78u8, 153u8, 132u8],
10664            [203u8, 122u8, 165u8, 100u8],
10665            [212u8, 158u8, 25u8, 167u8],
10666            [227u8, 62u8, 110u8, 6u8],
10667            [242u8, 137u8, 204u8, 218u8],
10668        ];
10669    }
10670    #[automatically_derived]
10671    impl alloy_sol_types::SolInterface for EigenPodErrors {
10672        const NAME: &'static str = "EigenPodErrors";
10673        const MIN_DATA_LENGTH: usize = 0usize;
10674        const COUNT: usize = 28usize;
10675        #[inline]
10676        fn selector(&self) -> [u8; 4] {
10677            match self {
10678                Self::BeaconTimestampTooFarInPast(_) => {
10679                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::SELECTOR
10680                }
10681                Self::CannotCheckpointTwiceInSingleBlock(_) => {
10682                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::SELECTOR
10683                }
10684                Self::CheckpointAlreadyActive(_) => {
10685                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::SELECTOR
10686                }
10687                Self::CredentialsAlreadyVerified(_) => {
10688                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::SELECTOR
10689                }
10690                Self::CurrentlyPaused(_) => {
10691                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
10692                }
10693                Self::ForkTimestampZero(_) => {
10694                    <ForkTimestampZero as alloy_sol_types::SolError>::SELECTOR
10695                }
10696                Self::InputAddressZero(_) => {
10697                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
10698                }
10699                Self::InputArrayLengthMismatch(_) => {
10700                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
10701                }
10702                Self::InsufficientWithdrawableBalance(_) => {
10703                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::SELECTOR
10704                }
10705                Self::InvalidEIP4788Response(_) => {
10706                    <InvalidEIP4788Response as alloy_sol_types::SolError>::SELECTOR
10707                }
10708                Self::InvalidProof(_) => {
10709                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
10710                }
10711                Self::InvalidProofLength(_) => {
10712                    <InvalidProofLength as alloy_sol_types::SolError>::SELECTOR
10713                }
10714                Self::InvalidPubKeyLength(_) => {
10715                    <InvalidPubKeyLength as alloy_sol_types::SolError>::SELECTOR
10716                }
10717                Self::InvalidShortString(_) => {
10718                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
10719                }
10720                Self::InvalidValidatorFieldsLength(_) => {
10721                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::SELECTOR
10722                }
10723                Self::MsgValueNot32ETH(_) => {
10724                    <MsgValueNot32ETH as alloy_sol_types::SolError>::SELECTOR
10725                }
10726                Self::NoActiveCheckpoint(_) => {
10727                    <NoActiveCheckpoint as alloy_sol_types::SolError>::SELECTOR
10728                }
10729                Self::NoBalanceToCheckpoint(_) => {
10730                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::SELECTOR
10731                }
10732                Self::OnlyEigenPodManager(_) => {
10733                    <OnlyEigenPodManager as alloy_sol_types::SolError>::SELECTOR
10734                }
10735                Self::OnlyEigenPodOwner(_) => {
10736                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::SELECTOR
10737                }
10738                Self::OnlyEigenPodOwnerOrProofSubmitter(_) => {
10739                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::SELECTOR
10740                }
10741                Self::StringTooLong(_) => {
10742                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
10743                }
10744                Self::TimestampOutOfRange(_) => {
10745                    <TimestampOutOfRange as alloy_sol_types::SolError>::SELECTOR
10746                }
10747                Self::ValidatorInactiveOnBeaconChain(_) => {
10748                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
10749                }
10750                Self::ValidatorIsExitingBeaconChain(_) => {
10751                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::SELECTOR
10752                }
10753                Self::ValidatorNotActiveInPod(_) => {
10754                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::SELECTOR
10755                }
10756                Self::ValidatorNotSlashedOnBeaconChain(_) => {
10757                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
10758                }
10759                Self::WithdrawalCredentialsNotForEigenPod(_) => {
10760                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::SELECTOR
10761                }
10762            }
10763        }
10764        #[inline]
10765        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10766            Self::SELECTORS.get(i).copied()
10767        }
10768        #[inline]
10769        fn valid_selector(selector: [u8; 4]) -> bool {
10770            Self::SELECTORS.binary_search(&selector).is_ok()
10771        }
10772        #[inline]
10773        #[allow(non_snake_case)]
10774        fn abi_decode_raw(
10775            selector: [u8; 4],
10776            data: &[u8],
10777            validate: bool,
10778        ) -> alloy_sol_types::Result<Self> {
10779            static DECODE_SHIMS: &[fn(
10780                &[u8],
10781                bool,
10782            ) -> alloy_sol_types::Result<EigenPodErrors>] = &[
10783                {
10784                    fn InvalidProof(
10785                        data: &[u8],
10786                        validate: bool,
10787                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10788                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
10789                                data,
10790                                validate,
10791                            )
10792                            .map(EigenPodErrors::InvalidProof)
10793                    }
10794                    InvalidProof
10795                },
10796                {
10797                    fn InsufficientWithdrawableBalance(
10798                        data: &[u8],
10799                        validate: bool,
10800                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10801                        <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_decode_raw(
10802                                data,
10803                                validate,
10804                            )
10805                            .map(EigenPodErrors::InsufficientWithdrawableBalance)
10806                    }
10807                    InsufficientWithdrawableBalance
10808                },
10809                {
10810                    fn NoActiveCheckpoint(
10811                        data: &[u8],
10812                        validate: bool,
10813                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10814                        <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(
10815                                data,
10816                                validate,
10817                            )
10818                            .map(EigenPodErrors::NoActiveCheckpoint)
10819                    }
10820                    NoActiveCheckpoint
10821                },
10822                {
10823                    fn InvalidValidatorFieldsLength(
10824                        data: &[u8],
10825                        validate: bool,
10826                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10827                        <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_decode_raw(
10828                                data,
10829                                validate,
10830                            )
10831                            .map(EigenPodErrors::InvalidValidatorFieldsLength)
10832                    }
10833                    InvalidValidatorFieldsLength
10834                },
10835                {
10836                    fn MsgValueNot32ETH(
10837                        data: &[u8],
10838                        validate: bool,
10839                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10840                        <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_decode_raw(
10841                                data,
10842                                validate,
10843                            )
10844                            .map(EigenPodErrors::MsgValueNot32ETH)
10845                    }
10846                    MsgValueNot32ETH
10847                },
10848                {
10849                    fn ValidatorIsExitingBeaconChain(
10850                        data: &[u8],
10851                        validate: bool,
10852                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10853                        <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
10854                                data,
10855                                validate,
10856                            )
10857                            .map(EigenPodErrors::ValidatorIsExitingBeaconChain)
10858                    }
10859                    ValidatorIsExitingBeaconChain
10860                },
10861                {
10862                    fn StringTooLong(
10863                        data: &[u8],
10864                        validate: bool,
10865                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10866                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
10867                                data,
10868                                validate,
10869                            )
10870                            .map(EigenPodErrors::StringTooLong)
10871                    }
10872                    StringTooLong
10873                },
10874                {
10875                    fn CredentialsAlreadyVerified(
10876                        data: &[u8],
10877                        validate: bool,
10878                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10879                        <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_decode_raw(
10880                                data,
10881                                validate,
10882                            )
10883                            .map(EigenPodErrors::CredentialsAlreadyVerified)
10884                    }
10885                    CredentialsAlreadyVerified
10886                },
10887                {
10888                    fn BeaconTimestampTooFarInPast(
10889                        data: &[u8],
10890                        validate: bool,
10891                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10892                        <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_decode_raw(
10893                                data,
10894                                validate,
10895                            )
10896                            .map(EigenPodErrors::BeaconTimestampTooFarInPast)
10897                    }
10898                    BeaconTimestampTooFarInPast
10899                },
10900                {
10901                    fn ForkTimestampZero(
10902                        data: &[u8],
10903                        validate: bool,
10904                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10905                        <ForkTimestampZero as alloy_sol_types::SolError>::abi_decode_raw(
10906                                data,
10907                                validate,
10908                            )
10909                            .map(EigenPodErrors::ForkTimestampZero)
10910                    }
10911                    ForkTimestampZero
10912                },
10913                {
10914                    fn OnlyEigenPodOwnerOrProofSubmitter(
10915                        data: &[u8],
10916                        validate: bool,
10917                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10918                        <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_decode_raw(
10919                                data,
10920                                validate,
10921                            )
10922                            .map(EigenPodErrors::OnlyEigenPodOwnerOrProofSubmitter)
10923                    }
10924                    OnlyEigenPodOwnerOrProofSubmitter
10925                },
10926                {
10927                    fn InputArrayLengthMismatch(
10928                        data: &[u8],
10929                        validate: bool,
10930                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10931                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
10932                                data,
10933                                validate,
10934                            )
10935                            .map(EigenPodErrors::InputArrayLengthMismatch)
10936                    }
10937                    InputArrayLengthMismatch
10938                },
10939                {
10940                    fn InvalidProofLength(
10941                        data: &[u8],
10942                        validate: bool,
10943                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10944                        <InvalidProofLength as alloy_sol_types::SolError>::abi_decode_raw(
10945                                data,
10946                                validate,
10947                            )
10948                            .map(EigenPodErrors::InvalidProofLength)
10949                    }
10950                    InvalidProofLength
10951                },
10952                {
10953                    fn InvalidEIP4788Response(
10954                        data: &[u8],
10955                        validate: bool,
10956                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10957                        <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_decode_raw(
10958                                data,
10959                                validate,
10960                            )
10961                            .map(EigenPodErrors::InvalidEIP4788Response)
10962                    }
10963                    InvalidEIP4788Response
10964                },
10965                {
10966                    fn ValidatorInactiveOnBeaconChain(
10967                        data: &[u8],
10968                        validate: bool,
10969                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10970                        <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
10971                                data,
10972                                validate,
10973                            )
10974                            .map(EigenPodErrors::ValidatorInactiveOnBeaconChain)
10975                    }
10976                    ValidatorInactiveOnBeaconChain
10977                },
10978                {
10979                    fn CannotCheckpointTwiceInSingleBlock(
10980                        data: &[u8],
10981                        validate: bool,
10982                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10983                        <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_decode_raw(
10984                                data,
10985                                validate,
10986                            )
10987                            .map(EigenPodErrors::CannotCheckpointTwiceInSingleBlock)
10988                    }
10989                    CannotCheckpointTwiceInSingleBlock
10990                },
10991                {
10992                    fn WithdrawalCredentialsNotForEigenPod(
10993                        data: &[u8],
10994                        validate: bool,
10995                    ) -> alloy_sol_types::Result<EigenPodErrors> {
10996                        <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_decode_raw(
10997                                data,
10998                                validate,
10999                            )
11000                            .map(EigenPodErrors::WithdrawalCredentialsNotForEigenPod)
11001                    }
11002                    WithdrawalCredentialsNotForEigenPod
11003                },
11004                {
11005                    fn InputAddressZero(
11006                        data: &[u8],
11007                        validate: bool,
11008                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11009                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
11010                                data,
11011                                validate,
11012                            )
11013                            .map(EigenPodErrors::InputAddressZero)
11014                    }
11015                    InputAddressZero
11016                },
11017                {
11018                    fn CurrentlyPaused(
11019                        data: &[u8],
11020                        validate: bool,
11021                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11022                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
11023                                data,
11024                                validate,
11025                            )
11026                            .map(EigenPodErrors::CurrentlyPaused)
11027                    }
11028                    CurrentlyPaused
11029                },
11030                {
11031                    fn InvalidPubKeyLength(
11032                        data: &[u8],
11033                        validate: bool,
11034                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11035                        <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_decode_raw(
11036                                data,
11037                                validate,
11038                            )
11039                            .map(EigenPodErrors::InvalidPubKeyLength)
11040                    }
11041                    InvalidPubKeyLength
11042                },
11043                {
11044                    fn ValidatorNotSlashedOnBeaconChain(
11045                        data: &[u8],
11046                        validate: bool,
11047                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11048                        <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
11049                                data,
11050                                validate,
11051                            )
11052                            .map(EigenPodErrors::ValidatorNotSlashedOnBeaconChain)
11053                    }
11054                    ValidatorNotSlashedOnBeaconChain
11055                },
11056                {
11057                    fn InvalidShortString(
11058                        data: &[u8],
11059                        validate: bool,
11060                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11061                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
11062                                data,
11063                                validate,
11064                            )
11065                            .map(EigenPodErrors::InvalidShortString)
11066                    }
11067                    InvalidShortString
11068                },
11069                {
11070                    fn CheckpointAlreadyActive(
11071                        data: &[u8],
11072                        validate: bool,
11073                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11074                        <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_decode_raw(
11075                                data,
11076                                validate,
11077                            )
11078                            .map(EigenPodErrors::CheckpointAlreadyActive)
11079                    }
11080                    CheckpointAlreadyActive
11081                },
11082                {
11083                    fn OnlyEigenPodManager(
11084                        data: &[u8],
11085                        validate: bool,
11086                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11087                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
11088                                data,
11089                                validate,
11090                            )
11091                            .map(EigenPodErrors::OnlyEigenPodManager)
11092                    }
11093                    OnlyEigenPodManager
11094                },
11095                {
11096                    fn NoBalanceToCheckpoint(
11097                        data: &[u8],
11098                        validate: bool,
11099                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11100                        <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(
11101                                data,
11102                                validate,
11103                            )
11104                            .map(EigenPodErrors::NoBalanceToCheckpoint)
11105                    }
11106                    NoBalanceToCheckpoint
11107                },
11108                {
11109                    fn ValidatorNotActiveInPod(
11110                        data: &[u8],
11111                        validate: bool,
11112                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11113                        <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_decode_raw(
11114                                data,
11115                                validate,
11116                            )
11117                            .map(EigenPodErrors::ValidatorNotActiveInPod)
11118                    }
11119                    ValidatorNotActiveInPod
11120                },
11121                {
11122                    fn OnlyEigenPodOwner(
11123                        data: &[u8],
11124                        validate: bool,
11125                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11126                        <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_decode_raw(
11127                                data,
11128                                validate,
11129                            )
11130                            .map(EigenPodErrors::OnlyEigenPodOwner)
11131                    }
11132                    OnlyEigenPodOwner
11133                },
11134                {
11135                    fn TimestampOutOfRange(
11136                        data: &[u8],
11137                        validate: bool,
11138                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11139                        <TimestampOutOfRange as alloy_sol_types::SolError>::abi_decode_raw(
11140                                data,
11141                                validate,
11142                            )
11143                            .map(EigenPodErrors::TimestampOutOfRange)
11144                    }
11145                    TimestampOutOfRange
11146                },
11147            ];
11148            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11149                return Err(
11150                    alloy_sol_types::Error::unknown_selector(
11151                        <Self as alloy_sol_types::SolInterface>::NAME,
11152                        selector,
11153                    ),
11154                );
11155            };
11156            DECODE_SHIMS[idx](data, validate)
11157        }
11158        #[inline]
11159        fn abi_encoded_size(&self) -> usize {
11160            match self {
11161                Self::BeaconTimestampTooFarInPast(inner) => {
11162                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encoded_size(
11163                        inner,
11164                    )
11165                }
11166                Self::CannotCheckpointTwiceInSingleBlock(inner) => {
11167                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encoded_size(
11168                        inner,
11169                    )
11170                }
11171                Self::CheckpointAlreadyActive(inner) => {
11172                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encoded_size(
11173                        inner,
11174                    )
11175                }
11176                Self::CredentialsAlreadyVerified(inner) => {
11177                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encoded_size(
11178                        inner,
11179                    )
11180                }
11181                Self::CurrentlyPaused(inner) => {
11182                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
11183                        inner,
11184                    )
11185                }
11186                Self::ForkTimestampZero(inner) => {
11187                    <ForkTimestampZero as alloy_sol_types::SolError>::abi_encoded_size(
11188                        inner,
11189                    )
11190                }
11191                Self::InputAddressZero(inner) => {
11192                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
11193                        inner,
11194                    )
11195                }
11196                Self::InputArrayLengthMismatch(inner) => {
11197                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
11198                        inner,
11199                    )
11200                }
11201                Self::InsufficientWithdrawableBalance(inner) => {
11202                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encoded_size(
11203                        inner,
11204                    )
11205                }
11206                Self::InvalidEIP4788Response(inner) => {
11207                    <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encoded_size(
11208                        inner,
11209                    )
11210                }
11211                Self::InvalidProof(inner) => {
11212                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
11213                }
11214                Self::InvalidProofLength(inner) => {
11215                    <InvalidProofLength as alloy_sol_types::SolError>::abi_encoded_size(
11216                        inner,
11217                    )
11218                }
11219                Self::InvalidPubKeyLength(inner) => {
11220                    <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encoded_size(
11221                        inner,
11222                    )
11223                }
11224                Self::InvalidShortString(inner) => {
11225                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
11226                        inner,
11227                    )
11228                }
11229                Self::InvalidValidatorFieldsLength(inner) => {
11230                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encoded_size(
11231                        inner,
11232                    )
11233                }
11234                Self::MsgValueNot32ETH(inner) => {
11235                    <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encoded_size(
11236                        inner,
11237                    )
11238                }
11239                Self::NoActiveCheckpoint(inner) => {
11240                    <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
11241                        inner,
11242                    )
11243                }
11244                Self::NoBalanceToCheckpoint(inner) => {
11245                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
11246                        inner,
11247                    )
11248                }
11249                Self::OnlyEigenPodManager(inner) => {
11250                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
11251                        inner,
11252                    )
11253                }
11254                Self::OnlyEigenPodOwner(inner) => {
11255                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encoded_size(
11256                        inner,
11257                    )
11258                }
11259                Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
11260                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encoded_size(
11261                        inner,
11262                    )
11263                }
11264                Self::StringTooLong(inner) => {
11265                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
11266                }
11267                Self::TimestampOutOfRange(inner) => {
11268                    <TimestampOutOfRange as alloy_sol_types::SolError>::abi_encoded_size(
11269                        inner,
11270                    )
11271                }
11272                Self::ValidatorInactiveOnBeaconChain(inner) => {
11273                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
11274                        inner,
11275                    )
11276                }
11277                Self::ValidatorIsExitingBeaconChain(inner) => {
11278                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
11279                        inner,
11280                    )
11281                }
11282                Self::ValidatorNotActiveInPod(inner) => {
11283                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encoded_size(
11284                        inner,
11285                    )
11286                }
11287                Self::ValidatorNotSlashedOnBeaconChain(inner) => {
11288                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
11289                        inner,
11290                    )
11291                }
11292                Self::WithdrawalCredentialsNotForEigenPod(inner) => {
11293                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encoded_size(
11294                        inner,
11295                    )
11296                }
11297            }
11298        }
11299        #[inline]
11300        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11301            match self {
11302                Self::BeaconTimestampTooFarInPast(inner) => {
11303                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encode_raw(
11304                        inner,
11305                        out,
11306                    )
11307                }
11308                Self::CannotCheckpointTwiceInSingleBlock(inner) => {
11309                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encode_raw(
11310                        inner,
11311                        out,
11312                    )
11313                }
11314                Self::CheckpointAlreadyActive(inner) => {
11315                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encode_raw(
11316                        inner,
11317                        out,
11318                    )
11319                }
11320                Self::CredentialsAlreadyVerified(inner) => {
11321                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encode_raw(
11322                        inner,
11323                        out,
11324                    )
11325                }
11326                Self::CurrentlyPaused(inner) => {
11327                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
11328                        inner,
11329                        out,
11330                    )
11331                }
11332                Self::ForkTimestampZero(inner) => {
11333                    <ForkTimestampZero as alloy_sol_types::SolError>::abi_encode_raw(
11334                        inner,
11335                        out,
11336                    )
11337                }
11338                Self::InputAddressZero(inner) => {
11339                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
11340                        inner,
11341                        out,
11342                    )
11343                }
11344                Self::InputArrayLengthMismatch(inner) => {
11345                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
11346                        inner,
11347                        out,
11348                    )
11349                }
11350                Self::InsufficientWithdrawableBalance(inner) => {
11351                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encode_raw(
11352                        inner,
11353                        out,
11354                    )
11355                }
11356                Self::InvalidEIP4788Response(inner) => {
11357                    <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encode_raw(
11358                        inner,
11359                        out,
11360                    )
11361                }
11362                Self::InvalidProof(inner) => {
11363                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
11364                        inner,
11365                        out,
11366                    )
11367                }
11368                Self::InvalidProofLength(inner) => {
11369                    <InvalidProofLength as alloy_sol_types::SolError>::abi_encode_raw(
11370                        inner,
11371                        out,
11372                    )
11373                }
11374                Self::InvalidPubKeyLength(inner) => {
11375                    <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encode_raw(
11376                        inner,
11377                        out,
11378                    )
11379                }
11380                Self::InvalidShortString(inner) => {
11381                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
11382                        inner,
11383                        out,
11384                    )
11385                }
11386                Self::InvalidValidatorFieldsLength(inner) => {
11387                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encode_raw(
11388                        inner,
11389                        out,
11390                    )
11391                }
11392                Self::MsgValueNot32ETH(inner) => {
11393                    <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encode_raw(
11394                        inner,
11395                        out,
11396                    )
11397                }
11398                Self::NoActiveCheckpoint(inner) => {
11399                    <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
11400                        inner,
11401                        out,
11402                    )
11403                }
11404                Self::NoBalanceToCheckpoint(inner) => {
11405                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
11406                        inner,
11407                        out,
11408                    )
11409                }
11410                Self::OnlyEigenPodManager(inner) => {
11411                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
11412                        inner,
11413                        out,
11414                    )
11415                }
11416                Self::OnlyEigenPodOwner(inner) => {
11417                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encode_raw(
11418                        inner,
11419                        out,
11420                    )
11421                }
11422                Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
11423                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encode_raw(
11424                        inner,
11425                        out,
11426                    )
11427                }
11428                Self::StringTooLong(inner) => {
11429                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
11430                        inner,
11431                        out,
11432                    )
11433                }
11434                Self::TimestampOutOfRange(inner) => {
11435                    <TimestampOutOfRange as alloy_sol_types::SolError>::abi_encode_raw(
11436                        inner,
11437                        out,
11438                    )
11439                }
11440                Self::ValidatorInactiveOnBeaconChain(inner) => {
11441                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
11442                        inner,
11443                        out,
11444                    )
11445                }
11446                Self::ValidatorIsExitingBeaconChain(inner) => {
11447                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
11448                        inner,
11449                        out,
11450                    )
11451                }
11452                Self::ValidatorNotActiveInPod(inner) => {
11453                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encode_raw(
11454                        inner,
11455                        out,
11456                    )
11457                }
11458                Self::ValidatorNotSlashedOnBeaconChain(inner) => {
11459                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
11460                        inner,
11461                        out,
11462                    )
11463                }
11464                Self::WithdrawalCredentialsNotForEigenPod(inner) => {
11465                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encode_raw(
11466                        inner,
11467                        out,
11468                    )
11469                }
11470            }
11471        }
11472    }
11473    ///Container for all the [`EigenPod`](self) events.
11474    #[derive(Debug, PartialEq, Eq, Hash)]
11475    pub enum EigenPodEvents {
11476        #[allow(missing_docs)]
11477        CheckpointCreated(CheckpointCreated),
11478        #[allow(missing_docs)]
11479        CheckpointFinalized(CheckpointFinalized),
11480        #[allow(missing_docs)]
11481        EigenPodStaked(EigenPodStaked),
11482        #[allow(missing_docs)]
11483        Initialized(Initialized),
11484        #[allow(missing_docs)]
11485        NonBeaconChainETHReceived(NonBeaconChainETHReceived),
11486        #[allow(missing_docs)]
11487        ProofSubmitterUpdated(ProofSubmitterUpdated),
11488        #[allow(missing_docs)]
11489        RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn),
11490        #[allow(missing_docs)]
11491        ValidatorBalanceUpdated(ValidatorBalanceUpdated),
11492        #[allow(missing_docs)]
11493        ValidatorCheckpointed(ValidatorCheckpointed),
11494        #[allow(missing_docs)]
11495        ValidatorRestaked(ValidatorRestaked),
11496        #[allow(missing_docs)]
11497        ValidatorWithdrawn(ValidatorWithdrawn),
11498    }
11499    #[automatically_derived]
11500    impl EigenPodEvents {
11501        /// All the selectors of this enum.
11502        ///
11503        /// Note that the selectors might not be in the same order as the variants.
11504        /// No guarantees are made about the order of the selectors.
11505        ///
11506        /// Prefer using `SolInterface` methods instead.
11507        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11508            [
11509                14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8,
11510                30u8, 3u8, 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8,
11511                34u8, 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8,
11512            ],
11513            [
11514                42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8,
11515                44u8, 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8,
11516                230u8, 86u8, 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8,
11517            ],
11518            [
11519                45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8,
11520                182u8, 168u8, 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8,
11521                208u8, 237u8, 161u8, 16u8, 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8,
11522            ],
11523            [
11524                82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8,
11525                111u8, 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8,
11526                59u8, 207u8, 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8,
11527            ],
11528            [
11529                87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8,
11530                164u8, 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8,
11531                244u8, 183u8, 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8,
11532            ],
11533            [
11534                96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8,
11535                108u8, 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8,
11536                77u8, 34u8, 132u8, 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8,
11537            ],
11538            [
11539                111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8,
11540                159u8, 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8,
11541                56u8, 146u8, 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8,
11542            ],
11543            [
11544                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
11545                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
11546                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
11547            ],
11548            [
11549                137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8,
11550                143u8, 4u8, 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8,
11551                57u8, 233u8, 28u8, 200u8, 4u8, 194u8, 244u8, 157u8, 142u8,
11552            ],
11553            [
11554                169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8,
11555                172u8, 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8,
11556                245u8, 244u8, 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8,
11557            ],
11558            [
11559                251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8,
11560                186u8, 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8,
11561                99u8, 205u8, 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8,
11562            ],
11563        ];
11564    }
11565    #[automatically_derived]
11566    impl alloy_sol_types::SolEventInterface for EigenPodEvents {
11567        const NAME: &'static str = "EigenPodEvents";
11568        const COUNT: usize = 11usize;
11569        fn decode_raw_log(
11570            topics: &[alloy_sol_types::Word],
11571            data: &[u8],
11572            validate: bool,
11573        ) -> alloy_sol_types::Result<Self> {
11574            match topics.first().copied() {
11575                Some(
11576                    <CheckpointCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11577                ) => {
11578                    <CheckpointCreated as alloy_sol_types::SolEvent>::decode_raw_log(
11579                            topics,
11580                            data,
11581                            validate,
11582                        )
11583                        .map(Self::CheckpointCreated)
11584                }
11585                Some(
11586                    <CheckpointFinalized as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11587                ) => {
11588                    <CheckpointFinalized as alloy_sol_types::SolEvent>::decode_raw_log(
11589                            topics,
11590                            data,
11591                            validate,
11592                        )
11593                        .map(Self::CheckpointFinalized)
11594                }
11595                Some(<EigenPodStaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11596                    <EigenPodStaked as alloy_sol_types::SolEvent>::decode_raw_log(
11597                            topics,
11598                            data,
11599                            validate,
11600                        )
11601                        .map(Self::EigenPodStaked)
11602                }
11603                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11604                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11605                            topics,
11606                            data,
11607                            validate,
11608                        )
11609                        .map(Self::Initialized)
11610                }
11611                Some(
11612                    <NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11613                ) => {
11614                    <NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::decode_raw_log(
11615                            topics,
11616                            data,
11617                            validate,
11618                        )
11619                        .map(Self::NonBeaconChainETHReceived)
11620                }
11621                Some(
11622                    <ProofSubmitterUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11623                ) => {
11624                    <ProofSubmitterUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11625                            topics,
11626                            data,
11627                            validate,
11628                        )
11629                        .map(Self::ProofSubmitterUpdated)
11630                }
11631                Some(
11632                    <RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11633                ) => {
11634                    <RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(
11635                            topics,
11636                            data,
11637                            validate,
11638                        )
11639                        .map(Self::RestakedBeaconChainETHWithdrawn)
11640                }
11641                Some(
11642                    <ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11643                ) => {
11644                    <ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11645                            topics,
11646                            data,
11647                            validate,
11648                        )
11649                        .map(Self::ValidatorBalanceUpdated)
11650                }
11651                Some(
11652                    <ValidatorCheckpointed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11653                ) => {
11654                    <ValidatorCheckpointed as alloy_sol_types::SolEvent>::decode_raw_log(
11655                            topics,
11656                            data,
11657                            validate,
11658                        )
11659                        .map(Self::ValidatorCheckpointed)
11660                }
11661                Some(
11662                    <ValidatorRestaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11663                ) => {
11664                    <ValidatorRestaked as alloy_sol_types::SolEvent>::decode_raw_log(
11665                            topics,
11666                            data,
11667                            validate,
11668                        )
11669                        .map(Self::ValidatorRestaked)
11670                }
11671                Some(
11672                    <ValidatorWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11673                ) => {
11674                    <ValidatorWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(
11675                            topics,
11676                            data,
11677                            validate,
11678                        )
11679                        .map(Self::ValidatorWithdrawn)
11680                }
11681                _ => {
11682                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11683                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11684                        log: alloy_sol_types::private::Box::new(
11685                            alloy_sol_types::private::LogData::new_unchecked(
11686                                topics.to_vec(),
11687                                data.to_vec().into(),
11688                            ),
11689                        ),
11690                    })
11691                }
11692            }
11693        }
11694    }
11695    #[automatically_derived]
11696    impl alloy_sol_types::private::IntoLogData for EigenPodEvents {
11697        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11698            match self {
11699                Self::CheckpointCreated(inner) => {
11700                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11701                }
11702                Self::CheckpointFinalized(inner) => {
11703                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11704                }
11705                Self::EigenPodStaked(inner) => {
11706                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11707                }
11708                Self::Initialized(inner) => {
11709                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11710                }
11711                Self::NonBeaconChainETHReceived(inner) => {
11712                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11713                }
11714                Self::ProofSubmitterUpdated(inner) => {
11715                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11716                }
11717                Self::RestakedBeaconChainETHWithdrawn(inner) => {
11718                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11719                }
11720                Self::ValidatorBalanceUpdated(inner) => {
11721                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11722                }
11723                Self::ValidatorCheckpointed(inner) => {
11724                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11725                }
11726                Self::ValidatorRestaked(inner) => {
11727                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11728                }
11729                Self::ValidatorWithdrawn(inner) => {
11730                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11731                }
11732            }
11733        }
11734        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11735            match self {
11736                Self::CheckpointCreated(inner) => {
11737                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11738                }
11739                Self::CheckpointFinalized(inner) => {
11740                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11741                }
11742                Self::EigenPodStaked(inner) => {
11743                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11744                }
11745                Self::Initialized(inner) => {
11746                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11747                }
11748                Self::NonBeaconChainETHReceived(inner) => {
11749                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11750                }
11751                Self::ProofSubmitterUpdated(inner) => {
11752                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11753                }
11754                Self::RestakedBeaconChainETHWithdrawn(inner) => {
11755                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11756                }
11757                Self::ValidatorBalanceUpdated(inner) => {
11758                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11759                }
11760                Self::ValidatorCheckpointed(inner) => {
11761                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11762                }
11763                Self::ValidatorRestaked(inner) => {
11764                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11765                }
11766                Self::ValidatorWithdrawn(inner) => {
11767                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11768                }
11769            }
11770        }
11771    }
11772    use alloy::contract as alloy_contract;
11773    /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance.
11774
11775See the [wrapper's documentation](`EigenPodInstance`) for more details.*/
11776    #[inline]
11777    pub const fn new<
11778        T: alloy_contract::private::Transport + ::core::clone::Clone,
11779        P: alloy_contract::private::Provider<T, N>,
11780        N: alloy_contract::private::Network,
11781    >(
11782        address: alloy_sol_types::private::Address,
11783        provider: P,
11784    ) -> EigenPodInstance<T, P, N> {
11785        EigenPodInstance::<T, P, N>::new(address, provider)
11786    }
11787    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11788
11789Returns a new instance of the contract, if the deployment was successful.
11790
11791For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11792    #[inline]
11793    pub fn deploy<
11794        T: alloy_contract::private::Transport + ::core::clone::Clone,
11795        P: alloy_contract::private::Provider<T, N>,
11796        N: alloy_contract::private::Network,
11797    >(
11798        provider: P,
11799        _ethPOS: alloy::sol_types::private::Address,
11800        _eigenPodManager: alloy::sol_types::private::Address,
11801        _GENESIS_TIME: u64,
11802        _version: alloy::sol_types::private::String,
11803    ) -> impl ::core::future::Future<
11804        Output = alloy_contract::Result<EigenPodInstance<T, P, N>>,
11805    > {
11806        EigenPodInstance::<
11807            T,
11808            P,
11809            N,
11810        >::deploy(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME, _version)
11811    }
11812    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11813and constructor arguments, if any.
11814
11815This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11816the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11817    #[inline]
11818    pub fn deploy_builder<
11819        T: alloy_contract::private::Transport + ::core::clone::Clone,
11820        P: alloy_contract::private::Provider<T, N>,
11821        N: alloy_contract::private::Network,
11822    >(
11823        provider: P,
11824        _ethPOS: alloy::sol_types::private::Address,
11825        _eigenPodManager: alloy::sol_types::private::Address,
11826        _GENESIS_TIME: u64,
11827        _version: alloy::sol_types::private::String,
11828    ) -> alloy_contract::RawCallBuilder<T, P, N> {
11829        EigenPodInstance::<
11830            T,
11831            P,
11832            N,
11833        >::deploy_builder(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME, _version)
11834    }
11835    /**A [`EigenPod`](self) instance.
11836
11837Contains type-safe methods for interacting with an on-chain instance of the
11838[`EigenPod`](self) contract located at a given `address`, using a given
11839provider `P`.
11840
11841If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11842documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11843be used to deploy a new instance of the contract.
11844
11845See the [module-level documentation](self) for all the available methods.*/
11846    #[derive(Clone)]
11847    pub struct EigenPodInstance<T, P, N = alloy_contract::private::Ethereum> {
11848        address: alloy_sol_types::private::Address,
11849        provider: P,
11850        _network_transport: ::core::marker::PhantomData<(N, T)>,
11851    }
11852    #[automatically_derived]
11853    impl<T, P, N> ::core::fmt::Debug for EigenPodInstance<T, P, N> {
11854        #[inline]
11855        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11856            f.debug_tuple("EigenPodInstance").field(&self.address).finish()
11857        }
11858    }
11859    /// Instantiation and getters/setters.
11860    #[automatically_derived]
11861    impl<
11862        T: alloy_contract::private::Transport + ::core::clone::Clone,
11863        P: alloy_contract::private::Provider<T, N>,
11864        N: alloy_contract::private::Network,
11865    > EigenPodInstance<T, P, N> {
11866        /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance.
11867
11868See the [wrapper's documentation](`EigenPodInstance`) for more details.*/
11869        #[inline]
11870        pub const fn new(
11871            address: alloy_sol_types::private::Address,
11872            provider: P,
11873        ) -> Self {
11874            Self {
11875                address,
11876                provider,
11877                _network_transport: ::core::marker::PhantomData,
11878            }
11879        }
11880        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11881
11882Returns a new instance of the contract, if the deployment was successful.
11883
11884For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11885        #[inline]
11886        pub async fn deploy(
11887            provider: P,
11888            _ethPOS: alloy::sol_types::private::Address,
11889            _eigenPodManager: alloy::sol_types::private::Address,
11890            _GENESIS_TIME: u64,
11891            _version: alloy::sol_types::private::String,
11892        ) -> alloy_contract::Result<EigenPodInstance<T, P, N>> {
11893            let call_builder = Self::deploy_builder(
11894                provider,
11895                _ethPOS,
11896                _eigenPodManager,
11897                _GENESIS_TIME,
11898                _version,
11899            );
11900            let contract_address = call_builder.deploy().await?;
11901            Ok(Self::new(contract_address, call_builder.provider))
11902        }
11903        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11904and constructor arguments, if any.
11905
11906This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11907the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11908        #[inline]
11909        pub fn deploy_builder(
11910            provider: P,
11911            _ethPOS: alloy::sol_types::private::Address,
11912            _eigenPodManager: alloy::sol_types::private::Address,
11913            _GENESIS_TIME: u64,
11914            _version: alloy::sol_types::private::String,
11915        ) -> alloy_contract::RawCallBuilder<T, P, N> {
11916            alloy_contract::RawCallBuilder::new_raw_deploy(
11917                provider,
11918                [
11919                    &BYTECODE[..],
11920                    &alloy_sol_types::SolConstructor::abi_encode(
11921                        &constructorCall {
11922                            _ethPOS,
11923                            _eigenPodManager,
11924                            _GENESIS_TIME,
11925                            _version,
11926                        },
11927                    )[..],
11928                ]
11929                    .concat()
11930                    .into(),
11931            )
11932        }
11933        /// Returns a reference to the address.
11934        #[inline]
11935        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11936            &self.address
11937        }
11938        /// Sets the address.
11939        #[inline]
11940        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11941            self.address = address;
11942        }
11943        /// Sets the address and returns `self`.
11944        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11945            self.set_address(address);
11946            self
11947        }
11948        /// Returns a reference to the provider.
11949        #[inline]
11950        pub const fn provider(&self) -> &P {
11951            &self.provider
11952        }
11953    }
11954    impl<T, P: ::core::clone::Clone, N> EigenPodInstance<T, &P, N> {
11955        /// Clones the provider and returns a new instance with the cloned provider.
11956        #[inline]
11957        pub fn with_cloned_provider(self) -> EigenPodInstance<T, P, N> {
11958            EigenPodInstance {
11959                address: self.address,
11960                provider: ::core::clone::Clone::clone(&self.provider),
11961                _network_transport: ::core::marker::PhantomData,
11962            }
11963        }
11964    }
11965    /// Function calls.
11966    #[automatically_derived]
11967    impl<
11968        T: alloy_contract::private::Transport + ::core::clone::Clone,
11969        P: alloy_contract::private::Provider<T, N>,
11970        N: alloy_contract::private::Network,
11971    > EigenPodInstance<T, P, N> {
11972        /// Creates a new call builder using this contract instance's provider and address.
11973        ///
11974        /// Note that the call can be any function call, not just those defined in this
11975        /// contract. Prefer using the other methods for building type-safe contract calls.
11976        pub fn call_builder<C: alloy_sol_types::SolCall>(
11977            &self,
11978            call: &C,
11979        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
11980            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11981        }
11982        ///Creates a new call builder for the [`GENESIS_TIME`] function.
11983        pub fn GENESIS_TIME(
11984            &self,
11985        ) -> alloy_contract::SolCallBuilder<T, &P, GENESIS_TIMECall, N> {
11986            self.call_builder(&GENESIS_TIMECall {})
11987        }
11988        ///Creates a new call builder for the [`activeValidatorCount`] function.
11989        pub fn activeValidatorCount(
11990            &self,
11991        ) -> alloy_contract::SolCallBuilder<T, &P, activeValidatorCountCall, N> {
11992            self.call_builder(&activeValidatorCountCall {})
11993        }
11994        ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function.
11995        pub fn checkpointBalanceExitedGwei(
11996            &self,
11997            _0: u64,
11998        ) -> alloy_contract::SolCallBuilder<T, &P, checkpointBalanceExitedGweiCall, N> {
11999            self.call_builder(
12000                &checkpointBalanceExitedGweiCall {
12001                    _0,
12002                },
12003            )
12004        }
12005        ///Creates a new call builder for the [`currentCheckpoint`] function.
12006        pub fn currentCheckpoint(
12007            &self,
12008        ) -> alloy_contract::SolCallBuilder<T, &P, currentCheckpointCall, N> {
12009            self.call_builder(&currentCheckpointCall {})
12010        }
12011        ///Creates a new call builder for the [`currentCheckpointTimestamp`] function.
12012        pub fn currentCheckpointTimestamp(
12013            &self,
12014        ) -> alloy_contract::SolCallBuilder<T, &P, currentCheckpointTimestampCall, N> {
12015            self.call_builder(&currentCheckpointTimestampCall {})
12016        }
12017        ///Creates a new call builder for the [`eigenPodManager`] function.
12018        pub fn eigenPodManager(
12019            &self,
12020        ) -> alloy_contract::SolCallBuilder<T, &P, eigenPodManagerCall, N> {
12021            self.call_builder(&eigenPodManagerCall {})
12022        }
12023        ///Creates a new call builder for the [`ethPOS`] function.
12024        pub fn ethPOS(&self) -> alloy_contract::SolCallBuilder<T, &P, ethPOSCall, N> {
12025            self.call_builder(&ethPOSCall {})
12026        }
12027        ///Creates a new call builder for the [`getParentBlockRoot`] function.
12028        pub fn getParentBlockRoot(
12029            &self,
12030            timestamp: u64,
12031        ) -> alloy_contract::SolCallBuilder<T, &P, getParentBlockRootCall, N> {
12032            self.call_builder(
12033                &getParentBlockRootCall {
12034                    timestamp,
12035                },
12036            )
12037        }
12038        ///Creates a new call builder for the [`initialize`] function.
12039        pub fn initialize(
12040            &self,
12041            _podOwner: alloy::sol_types::private::Address,
12042        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
12043            self.call_builder(&initializeCall { _podOwner })
12044        }
12045        ///Creates a new call builder for the [`lastCheckpointTimestamp`] function.
12046        pub fn lastCheckpointTimestamp(
12047            &self,
12048        ) -> alloy_contract::SolCallBuilder<T, &P, lastCheckpointTimestampCall, N> {
12049            self.call_builder(&lastCheckpointTimestampCall {})
12050        }
12051        ///Creates a new call builder for the [`podOwner`] function.
12052        pub fn podOwner(
12053            &self,
12054        ) -> alloy_contract::SolCallBuilder<T, &P, podOwnerCall, N> {
12055            self.call_builder(&podOwnerCall {})
12056        }
12057        ///Creates a new call builder for the [`proofSubmitter`] function.
12058        pub fn proofSubmitter(
12059            &self,
12060        ) -> alloy_contract::SolCallBuilder<T, &P, proofSubmitterCall, N> {
12061            self.call_builder(&proofSubmitterCall {})
12062        }
12063        ///Creates a new call builder for the [`recoverTokens`] function.
12064        pub fn recoverTokens(
12065            &self,
12066            tokenList: alloy::sol_types::private::Vec<
12067                alloy::sol_types::private::Address,
12068            >,
12069            amountsToWithdraw: alloy::sol_types::private::Vec<
12070                alloy::sol_types::private::primitives::aliases::U256,
12071            >,
12072            recipient: alloy::sol_types::private::Address,
12073        ) -> alloy_contract::SolCallBuilder<T, &P, recoverTokensCall, N> {
12074            self.call_builder(
12075                &recoverTokensCall {
12076                    tokenList,
12077                    amountsToWithdraw,
12078                    recipient,
12079                },
12080            )
12081        }
12082        ///Creates a new call builder for the [`setProofSubmitter`] function.
12083        pub fn setProofSubmitter(
12084            &self,
12085            newProofSubmitter: alloy::sol_types::private::Address,
12086        ) -> alloy_contract::SolCallBuilder<T, &P, setProofSubmitterCall, N> {
12087            self.call_builder(
12088                &setProofSubmitterCall {
12089                    newProofSubmitter,
12090                },
12091            )
12092        }
12093        ///Creates a new call builder for the [`stake`] function.
12094        pub fn stake(
12095            &self,
12096            pubkey: alloy::sol_types::private::Bytes,
12097            signature: alloy::sol_types::private::Bytes,
12098            depositDataRoot: alloy::sol_types::private::FixedBytes<32>,
12099        ) -> alloy_contract::SolCallBuilder<T, &P, stakeCall, N> {
12100            self.call_builder(
12101                &stakeCall {
12102                    pubkey,
12103                    signature,
12104                    depositDataRoot,
12105                },
12106            )
12107        }
12108        ///Creates a new call builder for the [`startCheckpoint`] function.
12109        pub fn startCheckpoint(
12110            &self,
12111            revertIfNoBalance: bool,
12112        ) -> alloy_contract::SolCallBuilder<T, &P, startCheckpointCall, N> {
12113            self.call_builder(
12114                &startCheckpointCall {
12115                    revertIfNoBalance,
12116                },
12117            )
12118        }
12119        ///Creates a new call builder for the [`validatorPubkeyHashToInfo`] function.
12120        pub fn validatorPubkeyHashToInfo(
12121            &self,
12122            validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>,
12123        ) -> alloy_contract::SolCallBuilder<T, &P, validatorPubkeyHashToInfoCall, N> {
12124            self.call_builder(
12125                &validatorPubkeyHashToInfoCall {
12126                    validatorPubkeyHash,
12127                },
12128            )
12129        }
12130        ///Creates a new call builder for the [`validatorPubkeyToInfo`] function.
12131        pub fn validatorPubkeyToInfo(
12132            &self,
12133            validatorPubkey: alloy::sol_types::private::Bytes,
12134        ) -> alloy_contract::SolCallBuilder<T, &P, validatorPubkeyToInfoCall, N> {
12135            self.call_builder(
12136                &validatorPubkeyToInfoCall {
12137                    validatorPubkey,
12138                },
12139            )
12140        }
12141        ///Creates a new call builder for the [`validatorStatus_0`] function.
12142        pub fn validatorStatus_0(
12143            &self,
12144            validatorPubkey: alloy::sol_types::private::Bytes,
12145        ) -> alloy_contract::SolCallBuilder<T, &P, validatorStatus_0Call, N> {
12146            self.call_builder(
12147                &validatorStatus_0Call {
12148                    validatorPubkey,
12149                },
12150            )
12151        }
12152        ///Creates a new call builder for the [`validatorStatus_1`] function.
12153        pub fn validatorStatus_1(
12154            &self,
12155            pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
12156        ) -> alloy_contract::SolCallBuilder<T, &P, validatorStatus_1Call, N> {
12157            self.call_builder(
12158                &validatorStatus_1Call {
12159                    pubkeyHash,
12160                },
12161            )
12162        }
12163        ///Creates a new call builder for the [`verifyCheckpointProofs`] function.
12164        pub fn verifyCheckpointProofs(
12165            &self,
12166            balanceContainerProof: <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
12167            proofs: alloy::sol_types::private::Vec<
12168                <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
12169            >,
12170        ) -> alloy_contract::SolCallBuilder<T, &P, verifyCheckpointProofsCall, N> {
12171            self.call_builder(
12172                &verifyCheckpointProofsCall {
12173                    balanceContainerProof,
12174                    proofs,
12175                },
12176            )
12177        }
12178        ///Creates a new call builder for the [`verifyStaleBalance`] function.
12179        pub fn verifyStaleBalance(
12180            &self,
12181            beaconTimestamp: u64,
12182            stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
12183            proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
12184        ) -> alloy_contract::SolCallBuilder<T, &P, verifyStaleBalanceCall, N> {
12185            self.call_builder(
12186                &verifyStaleBalanceCall {
12187                    beaconTimestamp,
12188                    stateRootProof,
12189                    proof,
12190                },
12191            )
12192        }
12193        ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function.
12194        pub fn verifyWithdrawalCredentials(
12195            &self,
12196            beaconTimestamp: u64,
12197            stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
12198            validatorIndices: alloy::sol_types::private::Vec<
12199                alloy::sol_types::private::primitives::aliases::U40,
12200            >,
12201            validatorFieldsProofs: alloy::sol_types::private::Vec<
12202                alloy::sol_types::private::Bytes,
12203            >,
12204            validatorFields: alloy::sol_types::private::Vec<
12205                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
12206            >,
12207        ) -> alloy_contract::SolCallBuilder<T, &P, verifyWithdrawalCredentialsCall, N> {
12208            self.call_builder(
12209                &verifyWithdrawalCredentialsCall {
12210                    beaconTimestamp,
12211                    stateRootProof,
12212                    validatorIndices,
12213                    validatorFieldsProofs,
12214                    validatorFields,
12215                },
12216            )
12217        }
12218        ///Creates a new call builder for the [`version`] function.
12219        pub fn version(&self) -> alloy_contract::SolCallBuilder<T, &P, versionCall, N> {
12220            self.call_builder(&versionCall {})
12221        }
12222        ///Creates a new call builder for the [`withdrawRestakedBeaconChainETH`] function.
12223        pub fn withdrawRestakedBeaconChainETH(
12224            &self,
12225            recipient: alloy::sol_types::private::Address,
12226            amountWei: alloy::sol_types::private::primitives::aliases::U256,
12227        ) -> alloy_contract::SolCallBuilder<
12228            T,
12229            &P,
12230            withdrawRestakedBeaconChainETHCall,
12231            N,
12232        > {
12233            self.call_builder(
12234                &withdrawRestakedBeaconChainETHCall {
12235                    recipient,
12236                    amountWei,
12237                },
12238            )
12239        }
12240        ///Creates a new call builder for the [`withdrawableRestakedExecutionLayerGwei`] function.
12241        pub fn withdrawableRestakedExecutionLayerGwei(
12242            &self,
12243        ) -> alloy_contract::SolCallBuilder<
12244            T,
12245            &P,
12246            withdrawableRestakedExecutionLayerGweiCall,
12247            N,
12248        > {
12249            self.call_builder(
12250                &withdrawableRestakedExecutionLayerGweiCall {
12251                },
12252            )
12253        }
12254    }
12255    /// Event filters.
12256    #[automatically_derived]
12257    impl<
12258        T: alloy_contract::private::Transport + ::core::clone::Clone,
12259        P: alloy_contract::private::Provider<T, N>,
12260        N: alloy_contract::private::Network,
12261    > EigenPodInstance<T, P, N> {
12262        /// Creates a new event filter using this contract instance's provider and address.
12263        ///
12264        /// Note that the type can be any event, not just those defined in this contract.
12265        /// Prefer using the other methods for building type-safe event filters.
12266        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12267            &self,
12268        ) -> alloy_contract::Event<T, &P, E, N> {
12269            alloy_contract::Event::new_sol(&self.provider, &self.address)
12270        }
12271        ///Creates a new event filter for the [`CheckpointCreated`] event.
12272        pub fn CheckpointCreated_filter(
12273            &self,
12274        ) -> alloy_contract::Event<T, &P, CheckpointCreated, N> {
12275            self.event_filter::<CheckpointCreated>()
12276        }
12277        ///Creates a new event filter for the [`CheckpointFinalized`] event.
12278        pub fn CheckpointFinalized_filter(
12279            &self,
12280        ) -> alloy_contract::Event<T, &P, CheckpointFinalized, N> {
12281            self.event_filter::<CheckpointFinalized>()
12282        }
12283        ///Creates a new event filter for the [`EigenPodStaked`] event.
12284        pub fn EigenPodStaked_filter(
12285            &self,
12286        ) -> alloy_contract::Event<T, &P, EigenPodStaked, N> {
12287            self.event_filter::<EigenPodStaked>()
12288        }
12289        ///Creates a new event filter for the [`Initialized`] event.
12290        pub fn Initialized_filter(
12291            &self,
12292        ) -> alloy_contract::Event<T, &P, Initialized, N> {
12293            self.event_filter::<Initialized>()
12294        }
12295        ///Creates a new event filter for the [`NonBeaconChainETHReceived`] event.
12296        pub fn NonBeaconChainETHReceived_filter(
12297            &self,
12298        ) -> alloy_contract::Event<T, &P, NonBeaconChainETHReceived, N> {
12299            self.event_filter::<NonBeaconChainETHReceived>()
12300        }
12301        ///Creates a new event filter for the [`ProofSubmitterUpdated`] event.
12302        pub fn ProofSubmitterUpdated_filter(
12303            &self,
12304        ) -> alloy_contract::Event<T, &P, ProofSubmitterUpdated, N> {
12305            self.event_filter::<ProofSubmitterUpdated>()
12306        }
12307        ///Creates a new event filter for the [`RestakedBeaconChainETHWithdrawn`] event.
12308        pub fn RestakedBeaconChainETHWithdrawn_filter(
12309            &self,
12310        ) -> alloy_contract::Event<T, &P, RestakedBeaconChainETHWithdrawn, N> {
12311            self.event_filter::<RestakedBeaconChainETHWithdrawn>()
12312        }
12313        ///Creates a new event filter for the [`ValidatorBalanceUpdated`] event.
12314        pub fn ValidatorBalanceUpdated_filter(
12315            &self,
12316        ) -> alloy_contract::Event<T, &P, ValidatorBalanceUpdated, N> {
12317            self.event_filter::<ValidatorBalanceUpdated>()
12318        }
12319        ///Creates a new event filter for the [`ValidatorCheckpointed`] event.
12320        pub fn ValidatorCheckpointed_filter(
12321            &self,
12322        ) -> alloy_contract::Event<T, &P, ValidatorCheckpointed, N> {
12323            self.event_filter::<ValidatorCheckpointed>()
12324        }
12325        ///Creates a new event filter for the [`ValidatorRestaked`] event.
12326        pub fn ValidatorRestaked_filter(
12327            &self,
12328        ) -> alloy_contract::Event<T, &P, ValidatorRestaked, N> {
12329            self.event_filter::<ValidatorRestaked>()
12330        }
12331        ///Creates a new event filter for the [`ValidatorWithdrawn`] event.
12332        pub fn ValidatorWithdrawn_filter(
12333            &self,
12334        ) -> alloy_contract::Event<T, &P, ValidatorWithdrawn, N> {
12335            self.event_filter::<ValidatorWithdrawn>()
12336        }
12337    }
12338}